Ús de la base de dades MariaDB des de NodeRED

De binefa.com
Salta a la navegació Salta a la cerca

Accés

Ha d'haver una base de dades creada al MariaDB amb el nom aula508

L'usuari iot amb contrasenya iot té permisos d'escriptura i lectura sobre la base de dades aula508

L'usuari convidat amb contrasenya benvingut té permisos de lectura sobre la base de dades aula508

Explicació detallada a Ús de MariaDB per emmagatzemar dades de la Internet de les Coses

Nodes MariaDB a NodeRed

Instal·lació

Instal·lació des nodes de MariaDB (MySQL) a NodeRED

cal instal·lar el conjunt de nodes node-red-node-mysql

Aspecte del node MySQL a NodeRED

Configuració de la base de dades al node MySQL

  • Poseu un node MySQL al tapís Node-RED
  • Feu doble clic sobre el node MySQL
Configuració del node MySQL
  • Aneu al llapis a la dreta del desplegable Add new MySQL database... present a la fila Database
Configuració del nodo MySQL

- A Host escriviu la IP local del servidor (127.0.0.1). Per seguretat, no permetem a la base de dades que tingui visibilitat externa.

- A Port escriviu el port TCP (3306) per defecte de las bases de dades MySQL

- A User escriviu un usuari amb permisos d'escriptura (iot), perquè volem escriure. Si no calmescriure a la base de dades escriuríem un usuari amb permisos de tan sols lectura (com convidat).

- A Password escriviu la contrasenya de l'usuari (per a l'usuari iot és iot. Per a l'usuari convidat és benvingut).

- A Database escriviu la base de dades que volem accedir (aula508)

- A Charset escriviu la codificació de caràcters (UTF8)

Creació d'una taula a la base de dades MySQL

Creació d'una taula

Hi ha quatre nodes enllaçats: inject, function, mysql i debug.

  • Els nodes inject i debug no es modifiquen. Deixeu la configuració per defecte.
  • El node mysql ha estat configura al pas anterior.
  • El node function s'ha configurat així:
Creació d'una taula

Funció CREATE TABLE m28XX_T_RH:

msg.topic = `
CREATE TABLE m28XX_T_RH (
 time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 valueT FLOAT,
 valueRH FLOAT,
 PRIMARY KEY (time));
`;
return msg;

Esborrat d'una taula a la base de dades MySQL

Esborrat d'una taula

Funció DROP TABLE m28XX_T_RH:

msg.topic = `DROP TABLE m28XX_T_RH;`;
return msg;

Inserció de dades a una taula de la base de dades MySQL

Configuració de nodes inject per a generar dades de tipus JSON

Nodes inject per a generar dades de tipus JSON

Doble clic sobre el nodo inject (seleccioneu l'opció {}):

Edició del node inject per a generar dades de tipus JSON

Cliqueu sobre ... (els tres puntos):

Edició del node inject per a generar dades de tipus JSON

En format text:

{
   "valueT": 17.89,
   "valueRH": 44.32
}

Inserció de dades de tipus JSON a columnes de la taula

Inserció de dades de tipus JSON a columnes de la taula

Funció INSERT DATA:

msg.topic = `insert into m28XX_T_RH(valueT,valueRH) values(${msg.payload.valueT},${msg.payload.valueRH})`;
return msg;

Lectura de dades a una taula de la base de dades MySQL

Exemple de SELECT per a MariaDB

Camp msg.topic del node inject per a fer un SELECT:

Node inject per a trametre un query de tipus SELECT a MariaDB

Camp msg.topic del node inject amb nom SELECT en format text:

select UNIX_TIMESTAMP(time) as time, valueT, valueRH from m28XX_T_RH

Creació d'una taula vista a la base de dades MySQL

Creació d'una taula vista a partir d'una altra taula a una base de dades MariaDB

Funció CREATE VIEW m28XX_T_RH_v:

msg.topic = `CREATE VIEW m28XX_T_RH_v AS select UNIX_TIMESTAMP(time) as time, valueT, valueRH from m28XX_T_RH;`;
return msg;

Tractament de dades llegides a la taula

Tractament de dades llegides a la taula

Afegiu sortides a la funció (a Outputs s'ha canviat d'1 a 3 sortides):

Afegiu sortides a la funció

Codi de la funció Tratamiento datos / Últimas entradas:

Codi de la funció Tratamiento datos / Últimas entradas

Funció Tratamiento datos / Últimas entradas en modo text:

var a = msg.payload;
var val = "";
var lastEntryValueT, lastEntryValueRH;
a.forEach(function (entry) {
   val += "timestamp: " + entry.time + ", valueT: " + entry.valueT + ", valueRH: " + entry.valueRH + "\r";
   lastEntryValueT = entry.valueT;
   lastEntryValueRH = entry.valueRH;
});
msg.payload = val;
var msg_valT = { payload: lastEntryValueT };
return [msg, msg_valT, { payload: lastEntryValueRH}];