Diferència entre revisions de la pàgina «Uso de la base de datos MariaDB desde NodeRED (2023)»
m |
|||
Línia 14: | Línia 14: | ||
= Nodos MariaDB en NodeRed = | = Nodos MariaDB en NodeRed = | ||
[[Image:10influxDbNodeRed00.png|center|thumb|Instalación de los nodos de InfluxDB en NodeRED]] | [[Image:10influxDbNodeRed00.png|center|thumb|Instalación de los nodos de InfluxDB en NodeRED]] | ||
+ | |||
+ | [[Image:10MariaDbNodeRed00.png|center|thumb|Instalación de los nodos de InfluxDB en NodeRED]] | ||
[https://flows.nodered.org/node/node-red-node-mysql Hace falta instalar el conjunto de nodos ''node-red-node-mysql''] | [https://flows.nodered.org/node/node-red-node-mysql Hace falta instalar el conjunto de nodos ''node-red-node-mysql''] |
Revisió del 14:05, 10 abr 2023
¡¡¡ HACE FALTA ADAPTARLO A MARIA-DB !!!
Contingut
Acceso
Hay una base de datos creada en el MariaDB con el nombre aula206
El usuario iot con contraseña iot tiene permisos de escritura y lectura sobre la base datos aula206
El usuario convidat con contraseña benvingut tiene permisos de lectura sobre la base datos aula206
El MariaDB en el VPS del Máster es un recurso compartido. Vamos a compartir la misma base de datos (aula206), los datos que vamos a introducir los diferenciaremos por el nombre de la tabla. Vamos a poner un prefijo identificativo al nombre de la tabla. Cambiad el número 28XX por el número de puerto que se os ha assignado.
Explicación detallada en uso de MariaDB en el VPS del Máster de Industria 4.0
Nodos MariaDB en NodeRed
Hace falta instalar el conjunto de nodos node-red-node-mysql
Lectura con usuario de InfluxDB con permisos de lectura
Cuando se usen los nodos InfluxDB del NodeRED se tiene que especificar la versión de InfluxDB. En nuestro caso es la 1.8.0:
$ influx --version InfluxDB shell version: 1.8.0
Código para NodeRED de lectura de InfluxDB
Función --> timestamp, value con dos salidas:
a = msg.payload; var val = ""; var lastEntryValue; a.forEach(function(entry) { val+="timestamp: "+entry.time+", value: "+entry.value + "\n"; lastEntryValue = entry.value; }); msg.payload = val; var msg_val = {payload : lastEntryValue} return [msg,msg_val];
Aleatorización controlada por el panel de control
Aprovechando el ejercicio hecho en la introducción al Uso del NodeRED, añadiremos una escritura a la base de datos temporal InfluxDB.
Al seleccionar el conmutador (switch) Randomize comienza la generación de datos aleatorios. Al deseleccionarlo se para la generación de datos.
Código para el NodeRED que genera datos aleatorios
Función Randomizing (On/Off):
flow.set("Randomizing",msg.payload); return msg;
Función 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;
Escritura con usuario de InfluxDB con permisos de lectura y escritura
Código de NodeRED para la escritura desde el panel de control
Una vez puesto en marcha (botón ON apretado) los datos se almacenan a InfluxDB. Para parar la alimentación de la base de datos apretar el botón OFF. Paralelamente se pueden ver los datos introducidos al campo nAleat en tiempo real.
$ influx -username masteri40 -password upcschool Connected to http://localhost:8086 version 1.7.6 InfluxDB shell version: 1.8.0 > use aulaVirtual2020 Using database aulaVirtual2020 > select * from m05_nAleat name: m05_nAleat time value ---- ----- 1589883858824341140 20 > select * from m05_nAleat name: m05_nAleat time value ---- ----- 1589883858824341140 20 1589917797335467035 25.8 1589917798315048933 24.9 1589917799300711846 27.9 1589917800302525288 25.9 1589917801303458891 22.1 1589917802303580896 27.1 1589917803305577403 22.6 1589917804304937828 28.7 1589917805305797039 22.1 1589917806319523948 20.3 1589917807308901024 21.5 1589917808330402290 26.5 > quit $
Para hacer la lectura de los datos era suficiente ser usuario con permisos exclusivos de lectura (usuario convidat).
Escritura de múltiples datos al mismo tiempo. Uso del formato de datos json
Código en NodeRED para el uso de Json en InfluxDB
Función T:24.7,RH:74.6,P:1007.2,LDR:47.3 (esta función se ejecuta al desplegar el flujo, debido a la configuración del nodo inject):
flow.set("IoT-02_RH",74.6); flow.set("IoT-02_T",24.7); flow.set("IoT-02_P",1007.2); flow.set("IoT-02_LDR",47.3); return msg;
Función T:21.3,RH:48.2,P:1003.5,LDR:89.4:
flow.set("IoT-02_RH",48.2); flow.set("IoT-02_T",21.3); flow.set("IoT-02_P",1003.5); flow.set("IoT-02_LDR",89.4); return msg;
Función --> json:
var json00 = {}; json00.RH = flow.get("IoT-02_RH"); json00.T = flow.get("IoT-02_T"); json00.P = flow.get("IoT-02_P"); json00.LDR = flow.get("IoT-02_LDR"); msg.payload = json00; return msg;
$ influx -username convidat -password benvingut Connected to http://localhost:8086 version 1.7.6 InfluxDB shell version: 1.8.0 > use aulaVirtual2020 Using database aulaVirtual2020 > select * from m05_json_00 name: m05_json_00 time LDR P RH T ---- --- - -- - 1589965283616685236 47.3 1007.2 74.6 24.7 1589965290073574911 89.4 1003.5 48.2 21.3 > quit $