Diferència entre revisions de la pàgina «Introducció a l'ús del Node-RED»
|  (Es crea la pàgina amb «= Comunicació MQTT entre el NodeRED i la placa IoT-02 = <!-- Assignació de ports per al curs 2023-2024  '''El firmware de la placa IoT-02 per al dia d'avui és e...».) | |||
| Línia 6: | Línia 6: | ||
| '''Al minut 2:20 del primer vídeo de la classe invertida es fa referència a un broker diferent al que tenim programat a la placa.''' | '''Al minut 2:20 del primer vídeo de la classe invertida es fa referència a un broker diferent al que tenim programat a la placa.''' | ||
| − | --> | + | --><!-- | 
| '''Les credencials a utilitzar són aquestes:''' | '''Les credencials a utilitzar són aquestes:''' | ||
| Línia 12: | Línia 12: | ||
|   const int mqtt_port = '''1883''';   |   const int mqtt_port = '''1883''';   | ||
|   const char* mqtt_user = "'''user'''"; |   const char* mqtt_user = "'''user'''"; | ||
| − |   const char* mqtt_password = "'''pass'''"; | + |   const char* mqtt_password = "'''pass'''";--> | 
| <!--[[Assignació de ports per al curs 2022-2023]] | <!--[[Assignació de ports per al curs 2022-2023]] | ||
Revisió de 18:07, 29 oct 2025
Contingut
- 1 Comunicació MQTT entre el NodeRED i la placa IoT-02
- 2 Panell de Control (Dashboard)
- 2.1 Node commutador (switch)
- 2.2 Nodes de text, botó i variables de flux. Canvi de color d'un punt (representació d'un led)
- 2.3 Simulació de generació d'una dada. Aleatorització controlada pel panell de control
- 2.4 Conversió de JSON a text i text a JSON
- 2.5 Passarel·la HTTP a MQTT
- 2.6 Node exec
- 2.7 Enviament de JSON a la placa IoT-02
- 2.8 Recepció de JSON des de la placa IoT-02
 
Comunicació MQTT entre el NodeRED i la placa IoT-02
Subscripció i publicació
Exercici NodeRED-01
Implementeu el vostre flux per rebre l'estat dels tres botons (de manera asíncrona, quan hi ha un canvi) de la placa IoT-02.
Panell de Control (Dashboard)
Cal instal·lar el conjunt de nodes node-red-dashboard
Node commutador (switch)
El node commutador envia un payload personalitzat per a l'estat ON i l'estat OFF.
Exercici NodeRED-02
Poseu 5 commutadors (Control dels 4 leds i l'estat del relé biestable de la placa IoT-02).
Nodes de text, botó i variables de flux. Canvi de color d'un punt (representació d'un led)
El node botó envia un payload personalitzat quan es prem.
Al Value format del node de text:
<font color={{msg.color}} ><i class="fa fa-circle" style="font-size:24px;"></i></font>
Funció FF3399:
msg.color = "#FF3399" return msg;
Funció {R,G,B} -> {0,0,0}:
flow.set("R","00");
flow.set("G","00");
flow.set("B","00");
flow.set("RGB","#"+flow.get("R")+flow.get("G")+flow.get("B"));
msg.color = flow.get("RGB");
return msg;
Funció R -> FF:
flow.set("R","FF");
flow.set("RGB","#"+flow.get("R")+flow.get("G")+flow.get("B"));
msg.color = flow.get("RGB");
return msg;
Funció R -> 00:
flow.set("R","00");
flow.set("RGB","#"+flow.get("R")+flow.get("G")+flow.get("B"));
msg.color = flow.get("RGB");
return msg;
Flux ledMulticolor.nodered.json
Exercici NodeRED-03
Feu una visualització d'un punt que representa un led multicolor. A la placa IoT-02:
- Quan el botó IO0 estigui premut incorpora el color vermell al punt multicolor representat al panell de control del NodeRED
- Quan el botó IO0 no estigui premut treu el color vermell al punt multicolor representat al panell de control del NodeRED
- Quan el botó I34 estigui premut incorpora el color verd al punt multicolor representat al panell de control del NodeRED
- Quan el botó I34 no estigui premut treu el color verd al punt multicolor representat al panell de control del NodeRED
- Quan el botó I35 estigui premut incorpora el color blau al punt multicolor representat al panell de control del NodeRED
- Quan el botó I35 no estigui premut treu el color blau al punt multicolor representat al panell de control del NodeRED
Simulació de generació d'una dada. Aleatorització controlada pel panell de control
En seleccionar el commutador (switch) Randomize comença la generació de dades aleatòries. En deseleccionar-lo s'atura la generació de dades. El node commutador envia un payload personalitzat per a l'estat ON i l'estat OFF.
Codi per al NodeRED que genera dades aleatòries
Funció Randomizing (On/Off):
flow.set("Randomizing",msg.payload);
return msg;
Funció random value in range (20.0,30.0):
msg.payload = parseFloat( (200 + Math.floor(Math.random() * 101))/10); // value between 20.0 and 30.0 return msg;
Exercici NodeRED-04
Importeu el flux 14nodeRedRandomUi i verifiqueu el funcionament.
Conversió de JSON a text i text a JSON
- Funció genero json:
var json00 = {}
json00.nombre = "Joan"
json00.apellido = "Pérez"
json00.edad = 26
msg.payload = json00
return msg;
- Funció genero txt:
var txt = "{\"apellido\":\"Martínez\",\"nombre\":\"Meritxell\",\"edad\":28}"
msg.payload = txt
return msg;
Passarel·la HTTP a MQTT
Apagant led blanc:
Encenent led blanc:
- Funció bridge:
msg.topic = msg.req.query['topic']; msg.payload = msg.req.query['payload']; return msg;
- Funció response:
msg.payload = "Tema: "+msg.req.query['topic']+", missatge: "+msg.req.query['payload']; return msg;
Exercici NodeRED-05
Implementeu el vostre flux per canviar l'estat dels leds i el relé biestable de la placa IoT-02.
Node exec
El node exec executa ordres del sistema operatiu.
Enviament de JSON a la placa IoT-02
- Al codi Arduino es diferencia el tipus bool del tipus int:
 if (szTopic == String("/" + String(sMac) + TOPIC_JSON_LEDS  ).c_str()) {
   JSONVar myObject = JSON.parse(szPayload);
   if (JSON.typeof(myObject) == "undefined") {
     Serial.println("Parsing input failed!");
     return;
   }
   if (myObject.hasOwnProperty("ledW")) {
     digitalWrite(LED_W, (bool)myObject["ledW"]);
   }    
   if (myObject.hasOwnProperty("ledR")) {
     digitalWrite(LED_R, (int)myObject["ledR"]);
   }
   if (myObject.hasOwnProperty("ledY")) {
     digitalWrite(LED_Y, (int)myObject["ledY"]);
   }
   if (myObject.hasOwnProperty("ledG")) {
     digitalWrite(LED_G, (int)myObject["ledG"]);
   }
 }
Recepció de JSON des de la placa IoT-02
Es rep un text. El node JSON converteix el text a un objecte JSON. És un node bidireccional (si entra un objecte JSON surt un text).
Exercici NodeRED-06
Implementeu un sistema SCADA (supervisió i control) que mostri en widgets diferents de tipus rellotge la temperatura, humitat relativa i nivell de llum (des de la placa IoT-02). També una gràfica de la temperatura en funció del temps. A la part de control de la placa IoT-02 hi ha un commutador, quan està activat el relé es posa en estat SET, s'encén el led vermell (i apaga el verd) i apareix SET a la pantalla OLED. Quan es desactiva el commutador el relé es posa en estat RESET, s'encén el led verd (i apaga el vermell) i apareix RESET a la pantalla OLED.
















