Geração de eventos para atuação do disposivo IoT via Node-Red
Transcript of Geração de eventos para atuação do disposivo IoT via Node-Red
![Page 1: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/1.jpg)
Geraçãodeeventosparaatuaçãododisposi1voIoTviaNode-Red
![Page 2: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/2.jpg)
Obje1vos
• AssinaroGalileonumcanalMQTT(alteraçãodecódigonoeclipse).– paradigmapublish-subscribe
• CriarinterfaceparaenviodosdadossobreoNode-Red.• ProcessarosdadosrecebidospeloGalileo,egerarcomportamentos
condicionais.• ConstruirestruturaparaenviodedadosaotópicoemqueoGalileofoi
subscrito.• Construirpequenaaplicaçãowebparainteraçãodousuário.Ousuário
poderávariaraintensidadedeumLEDu1lizandoum‘slider’emumapáginaHTML(funcionanocelulartambém).
• Alterarocódigodoeclipseparaintegraçãocomoprojetodeluminosidade.
![Page 3: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/3.jpg)
ServiçoWeb
• Umaaplicaçãoauto-con1da,iden1ficadaporumURI(UniformResourceIden5fier),cujasinterfaceseligaçõessãodefinidas,descritaselocalizadasporartefatosqueu1lizamalinguagemXML(ExtensibleMarkupLanguage)ouJSON(JavaScriptObjectNota1on).
• DevesercapazdeinteragircomoutrasaplicaçõesatravésdatrocademensagensXML/JSONu1lizandoosprotocolosdecomunicaçãopadrãoatualmentedisponíveisnaInternet.
• Fazcomqueosrecursosdaaplicaçãodoso`wareestejamdisponíveissobrearededeumaformanormalizada.
• REST(Representa1onalStateTransfer)ouRESTfullsãopadrõesarquiteturaisquepermitemdefinireimplementarserviçosweb.
![Page 4: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/4.jpg)
ServiçoWeb
![Page 5: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/5.jpg)
Paradigmapublish-subscribe
• Padrãoarquiteturalusadoparaacomunicaçãoassíncronadeváriosprocessos
![Page 6: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/6.jpg)
FuncionamentogeraldoMQTTMessageQueueTelemetryTransport(MQTT)• OMQTTéumprotocololevedeaplicaçãoqueu1lizaoprotocolodetransporte
TCPcomoviadecomunicaçãodedadosparaIoT.• Oconceitoébaseadonapublicaçãodedadosapar1rdeumpublisher,enaleitura
dosdadosapar1rdainscriçãonumcanal.• ClientesMQTTpodemfuncionar,simultaneamente,comopublisheresubscriber.• Osistemademonitoramentoderespostaséinstanciadoemmul5thread,portanto
osprocessosdeinscriçãoepublicaçãosãoindependentes.
![Page 7: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/7.jpg)
AssinandoGalileonumcanalMQTT(subscriber)• ParaseefetuarainscriçãoénecessárioterumclienteMQTTinstanciado,
devidamenteconfiguradocomobrokerMQTT(host)easinformaçõesdousuário.– Aconexãoestabelecidacomobrokeru1lizaoprotocolodetransporteTCP,epossuia
seguinteestrutura: tcp://organiza5on_id.messaging.internetoAhings.ibmcloud.com:1883Ondeorganiza5on_idéprovenientedacriaçãodasuaorganizaçãoIoTnoIBMBluemix.
• Ascredenciaisdousuáriosãoformadaspeloiddaorganização,1pododisposi1voeiddodisposi1vo,comaseguinteestrutura:– d:organiza5on_id:device_type:device_id(formatostring)– d:zis8fm:Intel_Galileo:984FEE018B08(Exemplo)
![Page 8: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/8.jpg)
AssinandoGalileonumcanalMQTT(subscriber)• Apósacriaçãodoclienteénecessárioconfigurarafunçãocallbacks(),que
temoobje1vodegerenciartodoosistemademensagensderesposta,incluindoasmensagenscomoconteúdodotópicoinscrito.
• Aoreceberumaatualizaçãonotópicoobrokerenviaumamensagemparaosclientesinscritos,alertandoaexistênciadenovosdadosnotópico.
• Destaformaafunçãocallbacks()recebeano1ficaçãodaatualização.Paratratarosdadosrecebidospelobrokerénecessárioimplementarumafunçãocomcabeçalhoprédeterminadoereferencia-lanaconfiguraçãodocallbacks().
• Portantotodosostratamentosdasmensagensserãoefetuadosnafunçãomgsarrvd().• Onomedafunçãopodeserescolhidopeloprogramador,porémo
cabeçalhodeveserman1do.
![Page 9: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/9.jpg)
AssinandoGalileonumcanalMQTT(subscriber)• Demaneirageralosbrokersimplementamosistemademodoqueo
subscriberdevaassinarocanalcomomesmonomeondeosdadosestãosendopublicados.Ouseja,tantoparapublicaçãoquantoparaassinaçãou1liza-seomesmonomedecanal.
• NoentantoobrokerdoBluemixfuncionacomumpadrãodiferente,ondetodosospublishersdevempublicaremtópicoscomosubcaminho“evt”eseinscreveremtópicoscomsubcaminho“cmd”.
• Onde:• iot-2-éoprefixodostópicosu1lizadopeloBluemix• evt-indicaocanalparapublicaçãodeeventos• cmd–indicaocanalparau1lizaçãodecomandos(subscriber)• status–nomedadoaoeventoocorrido(podeserescolhidopelo
usuário)• fmt–indicaqueopróximoparâmetrodeterminao1podedadosque
serápublicado
![Page 10: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/10.jpg)
AssinandoGalileonumcanalMQTT(subscriber)• Apósacriaçãodosdevidoscanais,edainstânciadeumcliente,basta
efetuarocomandoparaseinscrevernotópico:
• Destaformaocliente,apar1rdafunçãocallbacks(),passaarecebertodasasmensagensdeatualizaçãonocanal.
• Nãohánecessidadedemanterumloopsobreafunçãodeassinação,poisosistemamul5threadjácuidadessetrabalho.
• InformaçõessobreabibliotecaMQTTu1lizadanoeclipse:hjp://www.eclipse.org/paho/files/mqjdoc/Cclient/
_m_q_t_t_client_8h.html#aad27d07782991a4937ebf2f39a021f83
![Page 11: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/11.jpg)
ClonandoaaplicaçãoexemplonoNode-Red• ParacopiaraaplicaçãobastaabriroNode-Redreferenteasuaaplicação
IoTecolarnoclipboard(vistonaaulapassada)asinformaçõesdoarquivowebapp.jsondisponibilizadonoMoodle.
• Aestruturaresultantedeveráestarparecidacomaseguinte:OBS:NãoseesqueçamdeeliminarosblocosIoTdaaplicaçãoexemploeconectarosblocosdasuaaplicação!!!
![Page 12: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/12.jpg)
InterfacepararespostaviaNode-Red• Apósaconfiguraçãododisposi1voIoT,énecessárioconfiguraraaplicação
noNode-RedparaqueosdadossejamredirecionadosparaocanalnoqualoGalileofoiassinado.
• Dentrodapáginadaaplicação,noNode-Red,selecioneoblocoIBMIOTnaabaoutput.
• Talcomponenterepresentaocanaldesaídadedadosparaodisposi1voIoTconectado,destaforma,todososdadosinseridosnoblocoserãoenviadosdevoltaparaoGalileo.
• Umadasconfiguraçõesmaisimportantesdocomponentedesaídaéopadrãodosdadosdesaída.Alémderepresentaroformato(JSON)énecessárioescreveraestruturagenéricadesaída,representandooselementosestá1cosdamesma.
![Page 13: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/13.jpg)
Tratamentodosdadospararesposta• ParaefetuararespostaparaoGalileoénecessárioqueexistamdados,
está1cosoudinâmicos.• Éinteressanteapossibilidadedegerardadosapar1rdecondicionais
feitassobreosdadosdeentrada,ouseja,casoumvalorultrapasseumlimiteaaplicaçãoatribuiovalor‘1’paraumaflag,queseráenviadadevoltaparaoGalileo,possibilitandoqueosdadossejamposteriormenteinterpretadospelodisposi1vo,gerandoatuaçõesdesejadas.
• Paraexemplificarfoiconstruídoumblocodefunçãoqueanalisaosdadosdeentrada,egeraumacondiçãobooleanadeacordocomoresultado.Paraissoanalisemosoblocochamado‘condi5on’naaplicaçãoexemplo.
![Page 14: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/14.jpg)
Definiçãodeestruturaparadadosderesposta• Apósobtermosdadosapar1rdoscondicionaispodemosenvia-losde
voltaparaodisposi1voIoT.• Noentanto,énecessárioconstruiraestruturadesaídaapar1rdosdados
ob1dos.Paraissoanalisemosobloco‘buildoutput’:
• Relembrandoqueocampo‘Data’docomponentedesaídafoiconfiguradocom:{"payload":{}}.
• Demaneirageralaestruturaacimarepresentaaexistênciadeumobjetocomapropriedade‘payload’,quetemcomoatributoumaoutraestruturaJSONgenérica(representadopelaschavesvazias).
• Dentrodetalestruturagenéricaépossívelincluirquantoscamposforemnecessários,semquehajanecessidadedealterarocabeçalhodedados.
![Page 15: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/15.jpg)
Executandoaaplicaçãoexemplo• Comoresultadodasequenciadesenvolvidaserápossívelvisualizaros
dadosenviadospelaaplicaçãoapar1rdoterminaldoGalileo.• Demaneirageralosdadosrecebidosserão0e1repe1dos
alternadamente.• OBS:Osdadosconfiguradosanteriormenteremetemàpropriedade
‘autocontrol’.Apropriedade‘ledstate’seráavaliadaposteriormente.
![Page 16: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/16.jpg)
Construindoumaaplicaçãowebparacontroledodisposi1vo• Aaplicaçãowebqueseráconstruídatemcomointuitoobterdadosa
par1rdavariaçãodeumslider.• Osdadosob1dosserãoenviadosparaoGalileo,paracontrolara
luminosidadedeumLED.• ParaconstruiraaplicaçãoWebu1lizaremosconceitosdeHTML,
JavaScriptejQuery.• Demaneirageralaconstruçãodaaplicaçãoéfeitapelosseguintesblocos
doNode-Red:
• Aestruturaédadapor:• RequisiçãoGETHTTPqueobtémasreferênciasparaapáginaWeb.• Construçãodeumtemplatecominterfacegráfica(HTML)e
manipulaçãodedados(JavaScriptejQuery)• TransferênciadosdadosintroduzidosnainterfaceparaoNode-Red
![Page 17: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/17.jpg)
Construindoaplicaçãowebparacontroledodisposi1vo• Observando-seobloco‘hVpin’pode-sedeterminarqualocomplemento
daURLquedisponibilizaraaaplicação.
• ParaalterarocódigoreferenteaaquisiçãodosdadosviaHTML,oualterarolayoutdapáginaweb,bastaeditarocódigodobloco‘PageTemplate’
• PortantoaURLdeacessoparaaaplicaçãowebserádadapelocomplemento/webapp(configuradopelodesenvolvedor).• Nome_app.mybluemix.net/webapp
Interfacewebdaaplicaçãoexemplo
![Page 18: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/18.jpg)
Construindoaplicaçãowebparacontroleremoto• Demaneirageraloconteúdodobloco‘PageTemplate’define:
• OmétodoparaobterovaloratualdoslidereefetuarumarequisiçãoparaatualizarovalordavariávelnoNode-Red
• Construçãodeumformulárioquedefineaexistênciadeumbotãodo1po“Submit”eum“slider”.Edefinequalométodoseráchamadoaoclicarnobotão,apar1rdocampo‘ac5on’noformulário.
• IMPORTANTE!!• Paraqueaaplicaçãoexemplofuncioneemsuaorganização,é
necessáriotrocaronomedaaplicaçãonasURLsinseridasnobloco“PageTemplate”
• Nocasoexemploonomedaaplicaçãoépad-iot-cloud,mude-aparaonomedesuaaplicação
![Page 19: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/19.jpg)
Resultados• Aoexecutaraaplicaçãofinalserápossívelvariarovalordoslidere
observaronovovalorsendoimpressonoterminaldoGalileo.• Alémdisso,haveráoacionamentoPWMdaportadigital11nogalileo,de
acordocomovalorintroduzidonaaplicaçãoweb.• SeránecessárioconectarumLEDnaportadigital11paraveroresultado
prá1co.(OcódigoparaatuaçãodoLEDjáestáimplementadonocódigoexemploparaoeclipse).
• Portantopropõe-sequeseu1lizeocódigoexemploparaimplementar
melhoriasemsuaaplicaçãodosensordeluminosidade.
![Page 20: Geração de eventos para atuação do disposivo IoT via Node-Red](https://reader033.fdocumentos.tips/reader033/viewer/2022051315/627ab9a2008aed01a963a284/html5/thumbnails/20.jpg)
Referências• hjp://mitsuruog.github.io/what-mqj/(websocketMQTT)• hjp://tech.scargill.net/a-node-red-websockets-web-page/• hjps://www.ibm.com/developerworks/cloud/library/cl-rtchat-app/• hjp://l0l.org.uk/2014/01/simple-node-red-web-page/
• HTML– hjp://www.w3schools.com/
• Node-Red– hjp://nodered.org/docs/