20
Geração de eventos para atuação do disposi1vo IoT via Node-Red

Geração de eventos para atuação do disposivo IoT via Node-Red

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Geração de eventos para atuação do disposivo IoT via Node-Red

Geraçãodeeventosparaatuaçãododisposi1voIoTviaNode-Red

Page 2: Geração de eventos para atuação do disposivo IoT via Node-Red

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

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

ServiçoWeb

Page 5: Geração de eventos para atuação do disposivo IoT via Node-Red

Paradigmapublish-subscribe

•  Padrãoarquiteturalusadoparaacomunicaçãoassíncronadeváriosprocessos

Page 6: Geração de eventos para atuação do disposivo IoT via Node-Red

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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/

[email protected]