Categoria Big Data

porRicardo Jorge

TensorFlow.js – introdução a machine learning

Neste artigo sobre TensorFlow.js – introdução a machine learning, será feita uma introdução a este poderoso Framework para machine learning ( ou Aprendizado de máquina em português ).

Até bem recentemente, apenas começar a escrever sua primeira linha de código de aprendizado de máquina exigia um grande investimento inicial em tempo e dinheiro.

A boa notícia é que para iniciar o aprendizado de máquina, nunca foi tão fácil.

Na verdade, se você está lendo este artigo, significa que já tem as ferramentas de que precisa para mergulhar de cabeça.

Agora você pode aprender a estrutura de aprendizado de máquina TensorFlow diretamente no seu navegador, usando Javascript.

O TensorFlow.js foi lançado no Google I / O 2018.

Executar o aprendizado de máquina no navegador abre um mundo de casos de uso e é uma ótima oportunidade de usar Javascript para aprender sobre os conceitos e estruturas de aprendizado de máquina.

Dando os primeiros passos

Tudo que você precisa para executar o Tensorflow.js é seu navegador WEB.

É fácil perder de vista toda a conversa sobre transpiladores, empacotadores e demais ferramentas, mas tudo que você precisa é um navegador da WEB para executar TensorFlow.js.

O código que você desenvolve localmente é o mesmo código que você poderá enviar aos usuários para executar em seus navegadores.

Se você é novo no Javascript ou se já faz um tempo desde que escreveu qualquer código de front-end, algumas das mudanças recentes nas linguagens podem confundi-lo.

Um pouco da história do Javascript

À medida que nossas expectativas para os aplicativos da web aumentaram na última década, o ecossistema de front-end explodiu em complexidade.

A linguagem Javascript, em particular, amadureceu muito como linguagem de programação, adotando uma série de mudanças com visão de futuro para a linguagem, enquanto continua a oferecer suporte a uma das maiores bases de usuários de qualquer linguagem de programação.

Novas alterações nas especificações da linguagem Javascript são referenciadas com acrônimos como ES5, ES6, ES2015, E2016.

ES significa ECMAScript e Javascript é baseado neste padrão. 5 e 6 eram tradicionalmente usados ​​para se referir a versões do padrão, mas hoje em dia os anos são usados ​​para maior clareza.

Nem todos os navegadores WEB suportam da mesma forma as várias versões de ECMAScript e alguns problemas de compatibilidade podem ocorrer.

Por que os modelos de código em JavaScript

Muitos modelos foram implementados em Python porque Python é uma escolha popular entre cientistas de dados e tem o melhor suporte em termos de funções.

No entanto, a ampla adoção do aprendizado profundo ( deep learning ) em todos os tipos de aplicativos atraiu desenvolvedores de diferentes origens em linguagens de programação.

Além disso, as práticas de implementação de modelos tornaram-se mais bem compreendidas e amplamente disponíveis, permitindo que mais desenvolvedores construam seu próprio modelo que se adapta melhor a sua aplicação.

Felizmente, o TensorFlow foi projetado para oferecer suporte a diferentes vinculações de linguagem, em particular, programação Python, C, R, JavaScript e Java ™.

Como cada linguagem oferece seu próprio conjunto de vantagens, os desenvolvedores têm seus motivos para escolher a linguagem de programação.

Portanto, é importante permitir que os desenvolvedores permaneçam com seus ambientes de programação familiares, em vez de exigir que eles aprendam uma nova linguagem.

Por que APIs de alto nível ?

Codificar um modelo em uma API de alto nível permite que você seja mais produtivo, concentrando-se no design de alto nível e evitando as porcas e parafusos da implementação de baixo nível.

O código é muito mais curto e fácil de ler e manter.

O que são os Tensores ?

Os tensores são os principais blocos de construção do TensorFlow.

Eles são contêineres de dados n-dimensionais. Você pode pensar neles como arrays multidimensionais em linguagens como PHP, JavaScript e outras.

O que isso significa é que você pode usar tensores como valores escalares, vetoriais e matriciais, uma vez que são uma generalização deles.

Cada tensor contém as seguintes propriedades

  • rank – número de dimensões
  • shape – tamanho de cada dimensão
  • dtype – tipo de dados dos valores

Conclusão : TensorFlow.js é um Framework que permite inúmeras possibilidades e neste artigo foi feita apenas uma breve introdução, deixando links para materiais que podem ser consultados para uma experiência mais completa sobre este assunto.

É importante conhecer e saber que existem várias opções, quando o assunto é “aprendizado de máquina”.


Material consultado :

Hello World with Tensorflow.js

Coding a deep learning model using TensorFlow.js

Getting Started with TensorFlow.js

Introduction to Tensorflow.js and Machine Learning


Artigos relacionados :

Pare de chamar tudo de Inteligência Artificial

IoT o que fazer após a instalação?

IoT e os dados dos sensores e do CLP


Image by Gerd Altmann from Pixabay
porRicardo Jorge

Pare de chamar tudo de Inteligência Artificial

Neste artigo sobre Pare de chamar tudo de Inteligência Artificial, abordaremos o uso algumas vezes exagerado, deste termo tão comum em nosso dia a dia.

Este artigo é uma versão e o artigo original e completo pode ser visto aqui.

Os sistemas de inteligência artificial estão longe de serem avançados o suficiente para substituir os humanos em muitas tarefas que envolvem raciocínio, conhecimento do mundo real e interação social.

Eles estão mostrando competência de nível humano em habilidades de reconhecimento de padrões de baixo nível, mas no nível cognitivo eles estão meramente imitando a inteligência humana, não se engajando profunda e criativamente, diz Michael I. Jordan, um pesquisador líder em IA e aprendizado de máquina.

Jordan é professor do departamento de engenharia elétrica e ciência da computação e do departamento de estatística da Universidade da Califórnia em Berkeley.

Ele observa que a imitação do pensamento humano não é o único objetivo do aprendizado de máquina – o campo da engenharia que está por trás do progresso recente em IA – ou mesmo o melhor objetivo.

Em vez disso, o aprendizado de máquina pode servir para aumentar a inteligência humana, por meio da análise meticulosa de grandes conjuntos de dados, da mesma forma que um mecanismo de busca aumenta o conhecimento humano organizando a web.

O aprendizado de máquina também pode fornecer novos serviços aos humanos em domínios como saúde, comércio e transporte, reunindo informações encontradas em vários conjuntos de dados, encontrando padrões e propondo novos cursos de ação.

“As pessoas estão ficando confusas sobre o significado da IA ​​nas discussões sobre tendências tecnológicas - que existe algum tipo de pensamento inteligente nos computadores que é responsável pelo progresso e que está competindo com os humanos”, diz ele. “Não temos isso, mas as pessoas estão falando como se tivéssemos.”

Afinal, Jordan deveria saber a diferença. O IEEE Fellow é uma das maiores autoridades mundiais em aprendizado de máquina.

Em 2016, ele foi classificado como o cientista da computação mais influente por um programa que analisou publicações de pesquisa, informou a Science.

Jordan ajudou a transformar o aprendizado de máquina não supervisionado, que pode encontrar estrutura em dados sem rótulos preexistentes, de uma coleção de algoritmos não relacionados a um campo intelectualmente coerente, explica o  Engineering and Technology History Wiki.

A aprendizagem não supervisionada desempenha um papel importante em aplicações científicas onde há uma ausência de teoria estabelecida que possa fornecer dados de treinamento rotulados.

As contribuições de Jordan renderam-lhe muitos prêmios, incluindo o Prêmio Ulf Grenander em Teoria Estocástica e Modelagem da American Mathematical Society deste ano (2021). No ano passado, ele recebeu a medalha IEEE John von Neumann por suas contribuições para o aprendizado de máquina e ciência de dados.

Nos últimos anos, ele tem a missão de ajudar cientistas, engenheiros e outros a compreender todo o escopo do aprendizado de máquina.

Ele diz acreditar que os desenvolvimentos no aprendizado de máquina refletem o surgimento de um novo campo da engenharia.

Jordan traça paralelos com o surgimento da engenharia química no início de 1900 a partir dos fundamentos da química e da mecânica dos fluidos, observando que o aprendizado de máquina se baseia em décadas de progresso na ciência da computação, estatística e teoria de controle. Além disso, diz ele, é a primeira área da engenharia humano cêntrica, voltada para a interface entre as pessoas e a tecnologia.

“Embora as discussões de ficção científica sobre IA e superinteligência sejam divertidas, elas são uma distração”, diz ele. “Não tem havido foco suficiente no problema real, que é construir sistemas baseados em aprendizado de máquina em escala planetária que realmente funcionem, agreguem valor aos humanos e não ampliem as desigualdades.”

Esclarecendo a Inteligência Artificial

Em 2019, Jordan escreveu “Artificial Intelligence – The Revolution Hasn Happened Yet”, publicado na Harvard Data Science Review.

Ele explica no artigo que o termo IA é mal compreendido não apenas pelo público, mas também pelos tecnólogos.

Na década de 1950, quando o termo foi cunhado, ele escreve, as pessoas aspiravam a construir máquinas de computação que possuíssem inteligência de nível humano.

Essa aspiração ainda existe, diz ele, mas o que aconteceu nas décadas que se seguiram é algo diferente.

Os computadores não se tornaram inteligentes “per se”, mas forneceram recursos que aumentam a inteligência humana, escreve ele.

Além disso, eles se destacaram em recursos de reconhecimento de padrões de baixo nível que poderiam ser realizados em princípio por humanos, mas com grande custo.

Os sistemas baseados em aprendizado de máquina são capazes de detectar fraudes em transações financeiras em grande escala, por exemplo, catalisando assim o comércio eletrônico. Eles são essenciais na modelagem e controle de cadeias de suprimentos na manufatura e na área de saúde.

Eles também ajudam corretores de seguros, médicos, educadores e cineastas.

Apesar de tais desenvolvimentos serem chamados de “tecnologia de IA”, ele escreve, os sistemas subjacentes não envolvem raciocínio ou pensamento de alto nível.

Os sistemas não formam os tipos de representações e inferências semânticas de que os humanos são capazes.

Eles não formulam e perseguem objetivos de longo prazo.

“Em um futuro previsível, os computadores não serão capazes de se equiparar aos humanos em sua capacidade de raciocinar abstratamente sobre as situações do mundo real”, escreve ele. “Precisaremos de interações bem pensadas de humanos e computadores para resolver nossos problemas mais urgentes. Precisamos entender que o comportamento inteligente de sistemas de grande escala surge tanto das interações entre os agentes quanto da inteligência dos agentes individuais. ”

Além disso, ele enfatiza, a felicidade humana não deve ser deixada de lado ao desenvolver tecnologia. “Temos uma oportunidade real de conceber algo historicamente novo: uma disciplina de engenharia centrada no homem”, escreve Jordan.

A perspectiva de Jordan inclui uma discussão revitalizada do papel da engenharia nas políticas públicas e na pesquisa acadêmica.

Ele ressalta que, quando as pessoas falam sobre ciências sociais, parece atraente, mas o termo engenharia social parece pouco atraente.

O mesmo vale para a ciência do genoma versus engenharia do genoma.

“Acho que permitimos que o termo engenharia diminuísse na esfera intelectual”, diz ele.

O termo ciência é usado em vez de engenharia quando as pessoas desejam se referir à pesquisa visionária. Frases como “apenas engenharia” não ajudam.

“Acho que é importante lembrar que, apesar de todas as coisas maravilhosas que a ciência fez pela espécie humana, é realmente a engenharia - civil, elétrica, química e outras áreas da engenharia - que aumentou mais direta e profundamente a felicidade humana.”

Artigos relacionados :

IoT e os dados dos sensores e do CLP

IoT o que fazer após a instalação?

IoT na Agricultura 4.0 – A Tecnologia a Serviço do Campo


Image by Gerd Altmann from Pixabay
porRicardo Jorge

COVID-19 Dados Reflexões e Estatísticas

Neste artigo sobre COVID-19 Dados Reflexões e Estatísticas, teremos uma abordagem diferente dos demais artigos já publicados neste Blog.

É claro que todos nós já percebemos o impacto mundial causado por esta pandemia do coronavírus, mas desejo aproveitar este espaço para colocar alguns dados coletados dos sites About Corona e WHO (OMS) onde é possível avaliar o status do Brasil, perante outras nações no que diz respeito a esta pandemia.

Espero que isto possa contribuir para melhor entendermos porque tanto se fala sobre este vírus, mas também percebermos que ainda há muito por ser feito, mesmo no âmbito mundial.

COVID-19 um pouco de história

Em 31 de dezembro de 2019, a Organização Mundial da Saúde (OMS) foi alertada sobre vários casos de pneumonia na cidade de Wuhan, província de Hubei, na República Popular da China. Tratava-se de uma nova cepa (tipo) de coronavírus que não havia sido identificada antes em seres humanos.

Uma semana depois, em 7 de janeiro de 2020, as autoridades chinesas confirmaram que haviam identificado um novo tipo de coronavírus. Os coronavírus estão por toda parte. Eles são a segunda principal causa de resfriado comum (após rinovírus) e, até as últimas décadas, raramente causavam doenças mais graves em humanos do que o resfriado comum.

Ao todo, sete coronavírus humanos (HCoVs) já foram identificados: HCoV-229E, HCoV-OC43, HCoV-NL63, HCoV-HKU1, SARS-COV (que causa síndrome respiratória aguda grave), MERS-COV (que causa síndrome respiratória do Oriente Médio) e o, mais recente, novo coronavírus (que no início foi temporariamente nomeado 2019-nCoV e, em 11 de fevereiro de 2020, recebeu o nome de SARS-CoV-2). Esse novo coronavírus é responsável por causar a doença COVID-19.

A OMS tem trabalhado com autoridades chinesas e especialistas globais desde o dia em que foi informada, para aprender mais sobre o vírus, como ele afeta as pessoas que estão doentes, como podem ser tratadas e o que os países podem fazer para responder.

A Organização Pan-Americana da Saúde (OPAS) tem prestado apoio técnico aos países das Américas e recomendado manter o sistema de vigilância alerta, preparado para detectar, isolar e cuidar precocemente de pacientes infectados com o novo coronavírus.

Dados obtidos do site : PAHO

Reflexões sobre saúde e qualidade de vida

É importante entender que, embora o coronavírus seja um assunto muito divulgado nas Redes Sociais e na mídia em geral, existem muitos outros focos de atenção que deveriam estar em nossos radares, durante e após esta pandemia.

Imaginar que basta tomar a vacina e tudo voltará ao normal, parece ser algo distante da realidade para muitas pessoas no mundo.

O motivo é que várias outras ameaças continuarão a existir, mas que são pouco divulgadas ou pouco percebidas, porque não afetam a maioria das pessoas com melhores condições sócio econômicas.

Contudo, isto não significa que não sejam importantes e que não deveriam ser tanto ou mais divulgadas do que a pandemia de COVID-19.

Alguns dados importantes e tristes ao mesmo tempo :

Como podemos ver, em apenas 4 tópicos acima, ainda temos muito com o que nos preocuparmos e também com o que contribuirmos para melhorar.

Usando tecnologia para entender nosso mundo

Como eu mencionei no início deste artigo, elaborei um pequeno “Flow” usando Node-RED para obter dados sobre COVID-19, selecionando alguns países e assim poder comparar com o Brasil.

Conhecer, comparar e entender o que acontece, é o primeiro passo para definir o que pode e deve ser feito.

Cada um, como cidadão, terá sua visão e assim uma forma de contribuição.

Após a execução do “Flow”, o resultado é uma tela similar a que é vista abaixo.

As coletas anteriores podem ser vistas aqui.

Observação : nem todos os países atualizam os dados com a mesma frequência.


Abaixo, segue o “Flow” Node RED usado para estas coletas.

Na versão 3, existem informações adicionais como :

  • Percentual de vacinados, que é obtida do site WHO / OMS.
  • Dados sobre território dos países
  • Informação sobre Renda Per Capita, obtida deste link no site Wikipédia.

Blog atualizado em 24/05/2021

Encontrou algum erro ou tem uma ideia para melhorar o código, envie sua sugestão!


Flow – versão 3

[{"id":"1b35239f.67dcdc","type":"tab","label":"COVID-19","disabled":false,"info":""},{"id":"8cecea9a.393958","type":"inject","z":"1b35239f.67dcdc","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"15 21 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":130,"y":240,"wires":[["5f3b6ebb.187e5"]]},{"id":"e28fcea8.5235b","type":"json","z":"1b35239f.67dcdc","name":"","property":"payload","action":"","pretty":true,"x":530,"y":100,"wires":[["3b331cf6.603b34"]]},{"id":"ffb139b8.592478","type":"http request","z":"1b35239f.67dcdc","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://corona-api.com/countries","tls":"","persist":false,"proxy":"","authType":"","x":370,"y":100,"wires":[["e28fcea8.5235b"]]},{"id":"ba7a1fef.62ec3","type":"debug","z":"1b35239f.67dcdc","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":850,"y":100,"wires":[]},{"id":"3b331cf6.603b34","type":"function","z":"1b35239f.67dcdc","name":"","func":"var brasilTime = new Date().toLocaleString(\"pt-BR\", {timeZone: \"America/Sao_Paulo\"});\n\nvar d = new Date(brasilTime);\n\nvar diaSemanaA = new Array('Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb');\nvar curDiaSemanaA = diaSemanaA[d.getDay()];\n\nvar curHour = d.getHours();\nvar curMin = d.getMinutes();\nvar curDay = d.getDate();\nvar curMonth = d.getMonth() + 1;\nvar curYear = d.getFullYear();\n\nif (curMin < 10) {\n        curMin = \"0\" + curMin;\n}\n\nif (curHour < 10) {\n    curHour = \"0\" + curHour;\n}\n\nvar cur_date = curDiaSemanaA + \" \" + curDay + \"/\" + curMonth + \"/\" + curYear + \" - \" + curHour + \":\" + curMin;\n\nmsg.cur_date = cur_date;\n\n// Site OMS utiliza ISO3 ( 3 digitios ) para identificar os paises\n// Site About Corona utiliza 2 digitos para identificar os paises\n// A ordem dos paises deve ser a mesma para os 2 sites\n//\n\nvar countries_code = [\"BR\", \"US\", \"MX\", \"AR\", \"CL\", \"GB\", \"IT\", \"ES\", \"PT\", \"BE\", \"DE\", \"FR\", \"ZA\", \"RU\", \"IN\", \"CN\"];\nvar countries_iso3 = [\"BRA\", \"USA\", \"MEX\", \"ARG\", \"CHL\", \"GBR\", \"ITA\", \"ESP\", \"PRT\", \"BEL\", \"DEU\", \"FRA\", \"ZAF\", \"RUS\", \"IND\", \"CHN\"];\n\n/*\nBrasil\t\t    8515767\nUSA\t\t        8081867\nMexico\t\t    1972550\nArgentina\t    2780400\nChile\t\t    756096\nUK\t\t        240000\nItalia\t\t    301340\nEspanha\t\t    505990\nPortugal\t    92090\nBelgica\t\t    30689\nAlemanha\t    349380\nFrança\t\t    551500\nAfrica do Sul\t1213090\nRussia\t\t    17098246\nIndia\t\t    2973190\nChina\t\t    9424702\n*/\n\nvar countries_territory = [\"8.515.767\", \"8.081.867\", \"1.972.550\", \"2.780.400\", \"756.096\", \"240.000\", \"301.340\", \"505.990\", \"92.090\", \"30.689\", \"349.380\", \"551.500\", \"1.213.090\", \"17.098.246\", \"2.973.190\", \"9.424.702\"];\nvar countries_per_capita = [\"11.075\", \"65.111\", \"10.118\", \"9.887\", \"15.399\", \"41.030\", \"32.946\", \"29.961\", \"23.030\", \"45.175\", \"46.563\", \"41.760\", \"6.100\", \"11.162\", \"2.171\", \"10.098\"];\n\nvar countries_arr = [];\n\nvar d_rate,r_rate,c_million,confirmed,recovered,critical,deaths,population,percent;\n\nvar countriesLen = countries_code.length;\n\nvar covidLen = msg.payload.data.length;\n\nvar vaccinated_arr = flow.get('vaccinated_arr') || {};\nvar vaccines_arr = flow.get('vaccines_arr') || {};\n\nvar vaccinated,vaccines;\n\nfor (n = 0; n <countriesLen; n++) {\n    \n    for (i = 0; i < covidLen; i++) {\n        if(msg.payload.data[i].code == countries_code[n]) {\n\n            population = msg.payload.data[i].population;\n            deaths = msg.payload.data[i].latest_data.deaths;\n            percent = (deaths / population) * 100;\n            msg.payload.data[i].percent = percent.toPrecision(2);\n\n            msg.payload.data[i].territory = countries_territory[n];\n            msg.payload.data[i].per_capita = countries_per_capita[n];\n\n            msg.payload.data[i].population = msg.payload.data[i].population.toLocaleString('pt-BR');\n            msg.payload.data[i].latest_data.deaths = msg.payload.data[i].latest_data.deaths.toLocaleString('pt-BR');\n            d_rate = msg.payload.data[i].latest_data.calculated.death_rate;\n            msg.payload.data[i].latest_data.calculated.death_rate = d_rate.toPrecision(4);\n            r_rate = msg.payload.data[i].latest_data.calculated.recovery_rate;\n            msg.payload.data[i].latest_data.calculated.recovery_rate = r_rate.toPrecision(4);\n            c_million = msg.payload.data[i].latest_data.calculated.cases_per_million_population;\n            msg.payload.data[i].latest_data.calculated.cases_per_million_population = c_million.toLocaleString('pt-BR');\n            confirmed = msg.payload.data[i].latest_data.confirmed;\n            msg.payload.data[i].latest_data.confirmed = confirmed.toLocaleString('pt-BR');\n            recovered = msg.payload.data[i].latest_data.recovered;\n            msg.payload.data[i].latest_data.recovered = recovered.toLocaleString('pt-BR');\n            critical = msg.payload.data[i].latest_data.critical;\n            msg.payload.data[i].latest_data.critical = critical.toLocaleString('pt-BR');\n\n            if(vaccinated_arr[n]===undefined) {\n                vaccinated = 0;\n            } else {\n                vaccinated = vaccinated_arr[n];\n            }\n\n            if(vaccines_arr[n]===undefined) {\n                vaccines = 0;\n            } else {\n                vaccines = vaccines_arr[n];\n            }\n            \n            vaccinated = (vaccinated / population) * 100;\n\n            msg.payload.data[i].vaccinated = vaccinated.toPrecision(2);\n            msg.payload.data[i].vaccines = vaccines.toLocaleString('pt-BR');\n            \n            countries_arr.push(JSON.parse(JSON.stringify(msg.payload.data[i])));\n        }\n    }\n}\n\nmsg.payload = countries_arr;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":680,"y":100,"wires":[["ba7a1fef.62ec3","981ebf4a.016de"]]},{"id":"981ebf4a.016de","type":"ui_template","z":"1b35239f.67dcdc","group":"ac573138.1cb5b","name":"Covid-19 - Estatísticas","order":1,"width":"26","height":"16","format":"<style>\ntable {\n  border-collapse: collapse;\n  width: 100%;\n}\n\nth, td {\n  padding: 8px;\n  text-align: left;\n  border-bottom: 1px solid #ddd;\n}\n\ntr:nth-child(even) {background-color: #e6ffcc;}\n\ntr:nth-child(odd) {background-color: #bfff80;}\n\nth {\n  background-color: black;\n  color: white;\n  text-align: center;\n}\n\n}\n</style>\n<center>\n    <h2>Informações COVID-19</h2>\n    <br>\n    <h4>Estes dados são obtidos dos sites <a href=\"https://about-corona.net\" target=\"_blank\">About Corona</a> e <a href=\"https://covid19.who.int/info/\" target=\"_blank\">WHO (OMS)</a></h4>\n    <br>\n</center>\n<table id=\"table\">\n <tr>\n <th>Pais</th>\n <th>Território km2</th>\n <th>Per Capita US$</th>\n <th>Habitantes</th>\n <th>Mortes</th>\n <th>% Populacional</th>\n <th>Confirmados</th>\n <th>Recuperados</th>\n <th>Críticos</th>\n <th>Taxa de mortalidade</th>\n <th>Taxa de recuperados</th>\n <th>Casos por milhão</th>\n <th>Doses aplicadas</th>\n <th>% vacinados</th>\n </tr>\n <tbody>\n <tr ng-repeat=\"row in msg.payload\">\n <td>{{::row.name}}</td>\n <td>{{::row.territory}}</td>\n <td>{{::row.per_capita}}</td>\n <td>{{::row.population}}</td>\n <td>{{::row.latest_data.deaths}}</td>\n <td>{{::row.percent}}</td>\n <td>{{::row.latest_data.confirmed}}</td>\n <td>{{::row.latest_data.recovered}}</td>\n <td>{{::row.latest_data.critical}}</td>\n <td>{{::row.latest_data.calculated.death_rate}}</td>\n <td>{{::row.latest_data.calculated.recovery_rate}}</td>\n <td>{{::row.latest_data.calculated.cases_per_million_population}}</td>\n <td>{{::row.vaccines}}</td>\n <td>{{::row.vaccinated}}</td>\n </tr>\n </tbody>\n</table>\n<p><br><br><b>Coleta feita em :</b> {{msg.cur_date}}</p>","storeOutMessages":false,"fwdInMessages":true,"templateScope":"local","x":880,"y":180,"wires":[[]]},{"id":"a83a28ee.7e39b8","type":"http request","z":"1b35239f.67dcdc","name":"","method":"GET","ret":"bin","paytoqs":"ignore","url":"https://covid19.who.int/who-data/vaccination-data.csv","tls":"","persist":false,"proxy":"","authType":"","x":330,"y":340,"wires":[["52c552ca.e6991c"]]},{"id":"52c552ca.e6991c","type":"file","z":"1b35239f.67dcdc","name":"","filename":"/home/pi/who_vaccination.csv.gz","appendNewline":false,"createDir":false,"overwriteFile":"true","encoding":"none","x":320,"y":420,"wires":[["f353a813.660b08"]]},{"id":"f353a813.660b08","type":"exec","z":"1b35239f.67dcdc","command":"/home/pi/who.sh","addpay":"","append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":600,"y":420,"wires":[[],[],[]]},{"id":"b73c490b.639498","type":"csv","z":"1b35239f.67dcdc","name":"","sep":",","hdrin":true,"hdrout":"none","multi":"mult","ret":"\\r\\n","temp":"","skip":"0","strings":true,"include_empty_strings":"","include_null_values":"","x":290,"y":160,"wires":[["3ba823a8.2337dc"]]},{"id":"5f3b6ebb.187e5","type":"file in","z":"1b35239f.67dcdc","name":"","filename":"/home/pi/who_vaccination.csv","format":"utf8","chunk":false,"sendError":false,"encoding":"none","x":510,"y":240,"wires":[["b73c490b.639498"]]},{"id":"3ba823a8.2337dc","type":"function","z":"1b35239f.67dcdc","name":"","func":"//\n// Site OMS utiliza ISO3 para identificar os paises\n//\n// A ordem dos paises deve ser a mesma ordem da coleta do site About Corona\n//\n\nvar countries_iso3 = [\"BRA\", \"USA\", \"MEX\", \"ARG\", \"CHL\", \"GBR\", \"ITA\", \"ESP\", \"PRT\", \"BEL\", \"DEU\", \"FRA\", \"ZAF\", \"RUS\", \"IND\", \"CHN\"];\n\nvar vaccinated_arr = [];\nvar vaccinated;\n\nvar vaccines_arr = [];\nvar vaccines;\n\nvar countriesLen = countries_iso3.length;\n\nvar covidLen = msg.payload.length;\n\nfor (n = 0; n <countriesLen; n++) {\n    \n    for (i = 0; i < covidLen; i++) {\n        if(msg.payload[i].ISO3 == countries_iso3[n]) {\n\n            vaccinated = msg.payload[i].PERSONS_VACCINATED_1PLUS_DOSE;\n            vaccines = msg.payload[i].TOTAL_VACCINATIONS;\n            \n            if(vaccinated === undefined) {\n                vaccinated = 0;\n            }\n\n            if(vaccines === undefined) {\n                vaccines = 0;\n            }\n\n            vaccinated_arr.push(vaccinated);\n            vaccines_arr.push(vaccines);\n        }\n    }\n}\n\nflow.set('vaccinated_arr',vaccinated_arr);\nflow.set('vaccines_arr',vaccines_arr);\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":420,"y":160,"wires":[["ffb139b8.592478"]]},{"id":"f7e44017.8c1f2","type":"inject","z":"1b35239f.67dcdc","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":300,"wires":[["a83a28ee.7e39b8","344d13a7.c349dc"]]},{"id":"344d13a7.c349dc","type":"delay","z":"1b35239f.67dcdc","name":"","pauseType":"delay","timeout":"8","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":300,"y":280,"wires":[["5f3b6ebb.187e5"]]},{"id":"cad7a71a.ef5328","type":"comment","z":"1b35239f.67dcdc","name":"Estatísticas COVID-19 - Versão 3","info":"Nesta versão temos o percentual de vacinados e a indormação é obtidia do site OMS ( https://covid19.who.int/info/ )","x":170,"y":40,"wires":[]},{"id":"9fe3cedb.7b7a7","type":"inject","z":"1b35239f.67dcdc","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"10 21 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":130,"y":340,"wires":[["a83a28ee.7e39b8"]]},{"id":"ac573138.1cb5b","type":"ui_group","name":"COVID-19","tab":"42287a7d.74e004","order":2,"disp":true,"width":"26","collapse":true},{"id":"42287a7d.74e004","type":"ui_tab","name":"COVID","icon":"dashboard","disabled":false,"hidden":false}]

Assuntos relacionados :

Node-RED – apresentação


Image by Pete Linforth from Pixabay

porRicardo Jorge

IoT e os dados dos sensores e do CLP

Neste artigo sobre IoT e os dados dos sensores e do CLP, abordaremos o uso adequado destas duas fontes de dados, para obtermos um conjunto poderoso de informações sobre nosso ambiente em operação.

Também poderemos perceber que existem dois caminhos possíveis para uma implementação IoT, sendo um a partir dos dados já existentes, sendo coletados pelo CLP, e os dados complementares, que serão capturados por sensores específicos.

Quando se trata de coletar dados para IIoT, devemos focar na qualidade e também na quantidade.

Necessitamos ter dados que permitam a análise e a tomada de decisões tanto no curto, como também no longo prazo.

Deep Data versus Big Data

Basta pesquisar sobre IIoT e você encontrará muitas informações sobre a utilidade de Big Data e análise preditiva.

De acordo com um artigo da Forbes, “Embora o volume, a velocidade e a variedade que o Big Data oferece possam sem dúvida revelar efeitos importantes que escapam ao olho humano e aos métodos tradicionais de pesquisa empírica, essa é simplesmente a primeira etapa no processo de criação de valiosos insights que derivam de intervenções baseadas em evidências.

Prever resultados é útil, mas explicá-los e compreender suas causas, é muito mais valioso, tanto de uma perspectiva teórica quanto prática.”

O autor, neste caso, estava se referindo aos processos de recursos humanos (RH) em sua obra, mas suas afirmações são tão válidas para o chão de fábrica quanto para o departamento de seleção e recrutamento.

Big Data consiste em capturar as vastas quantidades de dados que já estão disponíveis e analisá-los.

Em outras palavras, olhar para os dados de uma maneira diferente.

Muitos dos dados serão úteis, mas alguns não, e isto também se aplica aos resultados.

Enquanto isto, Deep Data levam essa análise a um nível mais granular.

Ao eliminar dados que não são relevantes para um determinado curso de investigação e focar em fluxos, as tendências preditivas que resultam da análise de dados profundos ( Deep Data ) tendem a ser mais precisas no geral.

Dados dos sensores versus Dados do CLP

Os dados dos sensores, são todos os dados de um sensor específico em uma máquina, considerados dentro de um período de tempo designado.

O sensor é projetado para monitorar algo específico, como uma vibração, que pode dizer ao operador que a máquina está ligada ou desligada.

Esses dados podem ou não ser significativos quando revisados ​​ou analisados.

Um CLP é capaz de extrair uma grande quantidade de tipos de dados que, juntamente com os dados do sensor, fornecem uma imagem mais completa do que está acontecendo em qualquer máquina.

Este CLP pode monitorar entradas e saídas de e para uma máquina e pode tomar decisões lógicas quando necessário, com base na programação.

Por que utilizar os dois conjuntos de dados é o ideal

A chave para análises e resultados de alta qualidade é ser capaz de ter uma plataforma que possa capturar dados profundos do CLP e também os dados dos sensores, que monitoram itens mais específicos que podem não estar disponíveis através do CLP.

Por exemplo, como observado acima, embora um sensor possa fornecer os limites de vibração em uma determinada máquina ou parte de uma máquina, os dados do CLP dessa mesma máquina, podem incluir parâmetros para sinalizar que uma falha está prestes a ocorrer na produção.

Com os dados do CLP, vem a capacidade de controlar as operações, incluindo a sequência de atividades em que uma máquina pode estar envolvida, o correto tempo para certas tarefas ocorrerem e assim por diante.

Quando os dados obtidos pelo CLP, mostram que um desses elementos programados está operando de maneira inadequada, o operador pode responder mais rapidamente do que se tivesse que investigar manualmente um problema de forma isolada.

A lógica interna ao CLP pode ser programada para garantir que os dados retornados correspondam ao estado desejado e que a máquina esteja funcionando em um nível ideal.

Isso gera uma informação mais precisa, do que apenas saber se uma máquina está vibrando ou não.

Ter os dois conjuntos de dados analisados ​​e entregues ao usuário, fornece muito mais informações do que os sensores por conta própria, permitindo ao operador a flexibilidade de coletar os dados necessários em tempo hábil para evitar paralisações dispendiosas e problemas de manutenção.

Em vez disso, o tempo de inatividade planejado e a manutenção preditiva proativa podem ocorrer, aumentando a eficiência e melhorando os resultados financeiros.

Conclusão

Existe mais de uma abordagem e metodologia para implementação de IoT / IIoT em sua empresa e para seu negócio.

Conforme o estágio no qual você esteja, ou até mesmo o nível de investimento possível e desejável, uma abordagem será melhor do que outra.

Caso já tenha CLPs e inversores instalados e queria iniciar rapidamente e com um investimento mínimo, uma opção é fazer o acesso aos dados já existentes nestes dispositivos. Isto será útil para validar seus conceitos e obter as métricas iniciais para um projeto maior e melhor definido.

Qualquer que seja o caminho adotado, o uso de IoT trará, com os devidos cuidados, os resultados esperados.


Artigos relacionados :

Modbus e Profibus os protocolos da indústria

Indústria 4.0 e a Internet das Coisas Industrial – IIoT

Indústria 4.0 – Introdução


Este artigo foi baseado neste link.


Image by Gerd Altmann from Pixabay
porRicardo Jorge

IoT o que fazer após a instalação?

Neste artigo sobre IoT o que fazer após a instalação?, serão abordados os tópicos básicos que devem ser avaliados por quem deseja ter bons resultados através da implementação de IoT.

Inúmeros são os artigos falando sobre a importância e os benefícios de IoT, mas pouco é comentado sobre o que deve ser feito após a implementação de uma solução IoT e principalmente o que deve ser preparado antes da implementação, para que tudo faça sentido e traga os resultados esperados.

IoT está relacionado com sensores e a obtenção dos dados sobre o ambiente onde estes sensores estão ou serão instalados.

De posse destes dados e com as metodologias e ferramentas adequadas, a tomada de decisão será facilitada, ampliada e melhorada.

Leia mais sobre a importância dos sensores, neste outro artigo IoT e os dados dos sensores e do CLP.

É claro que existem dispositivos IoT associados a atuadores, mas os dados são provenientes da quantidade e da qualidade dos sensores existentes em seu ambiente.

Quando falamos sobre metodologia, mesmo algo simples como 5W2H pode ser um excelente ponto de partida.

Não basta acreditar nas promessas que a tecnologia IoT trará para você ou para seu negócio.

Você precisa definir critérios para o antes e o pós implementação.

Você tomaria uma decisão importante, a partir de uma única informação?

Usando 5W2H, podemos definir alguns pontos básicos, como :

  • Who? (Quem?)
    • será o fornecedor e o responsável pela implementação
    • fará a operação deste sistema em minha empresa
  • What? (O quê?)
    • devo monitorar e automatizar em meu ambiente
  • Where? (Onde?)
    • no meu ambiente, devo iniciar a implementação de IoT
    • Você já tem CLPs e inversores que podem ser usados ?
  • When? (Quando?)
    • desejo ter os primeiros resultados desta implementação
  • Why? (Por que?)
    • preciso implementar IoT em meu ambiente
  • How? (Como?)
    • Serão implementados os sensores em meu ambiente
      • Posso utilizar os CLPs existentes
      • Devo instalar sensores “do zero”
    • Treinar minha Equipe e integrar com meu ERP
    • a implementação trará os resultados desejados
    • será feita a gestão de todo o ecossistema de IoT em meu ambiente
  • How Much?(Quanto?)
    • Qual será o ROI e o TCO desta implementação

Na lista acima, temos alguns pontos de partida para nosso estudo, mas estes pontos devem ser ajustados para cada necessidade específica.

time-money

Decisão deveria estar associada a informação!

Para ilustrar a importância dos sensores e, através de uma rápida pesquisa pela Internet, podemos ver que um veículo convencional tem entre 60 a 100 sensores.

Enquanto isso, uma aeronave conta com aproximadamente 50.000 sensores e coleta em média 2.5 terabytes de dados por dia.

Quando implementamos IoT, a coleta de dados será iniciada!

Sendo assim, o tratamento e a análise destes dados, precisam estar definidos desde o início da implementação, sob pena do processo ficar incompleto e não trazer os resultados esperados e possíveis de serem atingidos.

IoT tem total relação com o negócio e com a análise dos dados obtidos e não só com tecnologia, como muitas vezes é visto e divulgado !

Como podemos ver, é preciso estar preparado para coletar e salvar os dados provenientes das várias fontes ( sensores / CLP ), pois eles serão usados para nosso sistema de tomada de decisão.

Em uma fase posterior a coleta, estes dados serão tratados por algum processo de Big Data e serão usados para o controle dos atuadores do ambiente e, melhorando a gestão dos processos produtivos.

Posteriormente, os dados serão integrados com o ERP da empresa, para melhorar a tomada de decisão já no nível do negócio.

E você? Já definiu o que fazer, após a instalação de um sistema IoT em sua empresa?

Deixe seus comentários aqui em nosso Blog.


Artigos relacionados :

Séries históricas e IoT – conheça planeje e decida

IoT – segurança e integridade dos dados

IoT e os dados dos sensores e do CLP

Modbus e Profibus os protocolos da indústria

Como desenvolver vender e ter sucesso com IoT


Image by methodshop from Pixabay
Image by Peggy und Marco Lachmann-Anke from Pixabay
porRicardo Jorge

Séries históricas e IoT – conheça planeje e decida

O artigo Séries históricas e IoT – conheça planeje e decida fará uma introdução sobre a importânica do armazenamento adequado, dos dados provenientes dos coletores IoT.

Praticamente todo dispositivo IoT faz alguma coleta baseada em tempo, que pode ser da ordem de segundos, minutos ou horas.

Tudo depende do processo sendo monitorado e das especificações do hardware do dispositivo IoT além da forma de comunicação deste dispositivo com o ponto central para onde as coletas serão enviadas e armazenadas.

Devido a esta característica de coleta por tempo, nada melhor do que utilizarmos um sistema ( Banco de Dados ), que salve e recupere os dados de uma maneira fácil, simples e rápida, baseada no momento da coleta.

Banco de Dados de Série Histórica

Um Banco de Dados de Série Histórica, também denominado Banco de Dados de Série Temporal, é um sistema desenvolvido para um armazenamento eficiente de dados que utilizam uma referência de tempo, para sua identificação.

Esta referência de tempo é conhecida como timestamp, e costuma ser uma contagem em segundos ou até em milisegundos, à partir de uma data conhecida e / ou pré determinada.

Por exemplo, nos sistemas Linux, BSD e Unix, é a contagem de segundos desde 01/01/1970 às 00:00:00 horas UTC.

Os Bancos de Dados de Série Temporal também são conhecidos como NoSQL, embora alguns destes Bancos tenham capacidade de pesquisa através de sentenças SQL padrão.

Devido a velocidade com a qual os dados coletados podem chegar ao ponto de armazenamento, estes Bancos de Dados de Série Temporal precisam lidar com grandes volumes de dados e devem ter a capacidade de serem escaláveis para adequar suas necessidades de armazenamento e performance, conforme o ambiente necessitar.

Exemplos de uso

Podemos citar 2 exemplos práticos de uso do armazenamento de coletas IoT em bancos de Dados de Série Histórica:

  • Nosso coletor de telemetria para compressores de ar
  • O atual projeto do monitor Off-Grid

No caso do coletor para telemetria, os dados são enviados contendo informações como :

  • Timestamp da coleta
  • Temperatura do compressor
  • Tempo ativo do compressor
  • Número de partidas do compressor

Já para o protótipo do monitor Off-Grid, temos :

  • Timestamp da coleta
  • Tensão do banco de de baterias
  • Temperatura do ambiente onde estão as baterias
  • Tempo de carga da(s) bateria(s)
  • Tempo de descarga da(s) bateria(s)
  • Watts em uso ( atual)
  • Corrente ( atual)

Existem outras coletas, mas as mostradas acima são apenas um exemplo.

Um ponto a ser destacado nas coletas baseadas em tempo, é que através de pesquisas e / ou de gráficos, fica muito fácil perceber a relação entre os eventos coletados.

Isto é normalmente utilizado no que chamamos de “causa raiz”.

Com o relacionamento dos eventos, sincronizados pelo momento da coleta ( “timestamp” ) conseguimos perceber o que ocorreu antes ( “causa” ) e qual efeito gerou no sistema / ambiente.

Séries históricas e IoT

Através desta introdução, é possível notar a importãncia do correto armazenamento dos dados coletados.

Com as coletas, será possível conhecer melhor o ambiente monitorado, fazendo uma gestão adequada e tomando as ações necessárias nos casos onde existam exceções.

Parte destas ações, poderão ser automatizadas usando Inteligência Artifical e Análise dos dados ( Analytics ), permitidindo que os atuadores IoT sejam acionados para corrigir os processos em tempo real.

Observação : um dispositivo IoT pode ser composto por um coletor e um atuador, sendo o coletor responsável por coletar e enviar os dados e o atuador, responsável por acionar algum processo ( abrir / fechar uma válvula, ligar / desligar algo, etc. ).

E você, como faz a gestão de seus coletores IoT ?

Referências :

Banco de Dados Temporais

Artigos relacionados :

arduino – Monitor para energia solar e eólica – Parte 2

IoT – segurança e integridade dos dados

STEM e a importância para sua carreira

Indústria 4.0 e a Internet das Coisas Industrial – IIoT



Image by 🎄Merry Christmas 🎄 from Pixabay

porRicardo Jorge

Node-RED – apresentação

Conhecendo Node-RED

Node-RED é uma ferramenta de desenvolvimento baseada em fluxos e foi originalmente criada pela IBM para interconexão de dispositivos de hardware, APIs e serviços online, tendo como foco aplicações IoT.

Todo o acesso ao ambiente de desenvolvimento é feito através de uma interface WEB.

Através desta interface, é possível desenvolver inúmeras aplicações utilizando várias bibliotecas já disponíveis, denominadas “nós”, ou programando diretamente em JavaScript.

Utilizo Node-RED faz alguns anos tanto para prototipagem, como em produção, juntamente com MQTT, JSON, arduino, Raspberry, “família” ESP8266, mosquitto e muitas outras ferramentas e recursos.

Acesse o site Node-RED e saiba mais.

Devido a sua versatilidade, inúmeros projetos focados em IoT utilizam Node-RED.

Mas nem só de IoT vive o Node-RED, já que, através do uso de APIs e acesso a serviços online, é possível criar muita coisa interessante.

Posso citar alguns casos de uso ( próprio ) :

  • Integração com Twitter
  • Gerenciador de bot para Telegram
  • Sistema de automação residencial
  • Conector para armazenamento de dados ( bancos de série histórica )
  • Automação de processos, como por exemplo : rotinas de backup

Devido a forma de programação ser orientada por fluxos, tudo o que você “escreve” e desenvolve, fica auto documentado de maneira visual.

É claro que existem algumas técnicas para evitar a “poluição” visual e facilitar o entendimento do fluxo.

Nos próximos artigos, abordaremos mais detalhes e formas de uso de Node-RED.

Fique ligado !