Diferència entre revisions de la pàgina «Uso de la base de datos MariaDB desde NodeRED (2023)»

De binefa.com
Salta a la navegació Salta a la cerca
 
(Hi ha 48 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
'''¡¡¡ HACE FALTA ADAPTARLO A MARIA-DB !!!'''
 
 
 
= Acceso =
 
= Acceso =
 
Hay una base de datos creada en el MariaDB con el nombre '''aula206'''
 
Hay una base de datos creada en el MariaDB con el nombre '''aula206'''
Línia 19: Línia 17:
  
 
[[Image:11nodoMariaDbNodeRed.png|center|thumb|Aspecto del nodo MySQL en NodeRED]]
 
[[Image:11nodoMariaDbNodeRed.png|center|thumb|Aspecto del nodo MySQL en NodeRED]]
== Lectura con usuario de InfluxDB con permisos de lectura ==
+
== Configuración de la base de datos en el nodo MySQL ==
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''':
+
* Poner un nodo MySQL en el tapiz Node-RED
$ influx --version
 
InfluxDB shell version: 1.8.0
 
  
[[Image:11influxDbNodeRed01.png|center|thumb|Configuración de InfluxDB para lectura]]
+
* Hacer doble clic sobre el nodo MySQL
  
[[Image:13lecturaInfluxDB.png|center|Lectura de InfluxDB]]
+
[[Image:12nodoMariaDbNodeRed.png|center|thumb|Configuración del nodo MySQL]]
  
[https://www.binefa.cat/training/upcSchool/20200523/13lecturaInfluxDB.nodered.txt Código para NodeRED de lectura de InfluxDB]
+
* Ir al lápiz a la derecha del desplegable ''Add new MySQL database...'' presente en la fila ''Database''
  
Función '''--> timestamp, value''' con dos salidas:
+
[[Image:13nodoMariaDbNodeRed.png|center|thumb|Configuración del nodo MySQL]]
a = msg.payload;
+
 
var val = "";
+
- En '''Host''' escribir la IP local del servidor ('''127.0.0.1'''). Por seguridad, no le permitimos a la base de datos que tenga visibilidad externa.
var lastEntryValue;
+
 
a.forEach(function(entry) {
+
- En '''Port''' escribir el puerto TCP ('''3306''') por defecto de las bases de datos MySQL
    val+="timestamp: "+entry.time+", value: "+entry.value + "\n";
+
 
    lastEntryValue = entry.value;
+
- En '''User''' escribir un usuario con permisos de escritura ('''iot'''), debido a que queremos escribir. Si no hace falta escribir en la base de datos escribiríamos un usuario con permisos de solo lectura (como '''convidat''').
});
+
 
msg.payload = val;
+
- En '''Password''' escribir la contraseña del usuario (para el usuario '''iot''' es '''iot'''. Para el usuario '''convidat''' es '''benvingut''').
var msg_val = {payload : lastEntryValue}
+
 
return [msg,msg_val];
+
- En '''Database''' escribir la base de datos que queremos acceder ('''aula206''')
 +
 
 +
- En '''Charset''' escribir la codificación de carácteres ('''UTF8''')
 +
== Creación de una tabla en la base de datos MySQL ==
 +
[[Image:14nodoMariaDbNodeRed.png|center|Creación de una tabla]]
 +
 
 +
Hay cuatro nodos enlazados: '''inject''', '''function''', '''mysql''' y '''debug'''.
 +
 
 +
* Los nodos '''inject''' y '''debug''' no se modifican. Dejar la configuración por defecto.
 +
 
 +
* El nodo '''mysql''' ha estado configurado en el paso anterior.
 +
 
 +
* El nodo '''function''' se ha configurado de este modo:
 +
 
 +
[[Image:15nodoMariaDbNodeRed.png|center|Creación de una tabla]]
  
== Aleatorización controlada por el panel de control ==
+
* Cambiar el nombre de la tabla substituyendo '''28XX''' por el [[Asignación de puertos para el curso 2022-2023 | número de puerto que se os ha asignado]].
Aprovechando el ejercicio hecho en la introducción al [[Uso del NodeRED (2022) | Uso del NodeRED]], añadiremos una escritura a la base de datos temporal InfluxDB.
+
Función '''CREATE TABLE m28XX_T_RH''':
 +
msg.topic = `
 +
CREATE TABLE m'''28XX'''_T_RH (
 +
  time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 +
  valueT FLOAT,
 +
  valueRH FLOAT,
 +
  PRIMARY KEY (time));
 +
`;
 +
return msg;
  
[[Image:12nodeRedRandomUi.png|center|Generación de datos aleatorios]]
+
== Borrado de una tabla en la base de datos MySQL ==
 +
[[Image:16nodoMariaDbNodeRed.png|center|Borrado de una tabla]]
  
Al seleccionar el conmutador (''switch'') '''Randomize''' comienza la generación de datos aleatorios. Al deseleccionarlo se para la generación de datos.
+
Función '''DROP TABLE m28XX_T_RH''':
 +
msg.topic = `DROP TABLE m28XX_T_RH;`;
 +
return msg;
  
[[Image:14nodeRedRandomUi.png|center|Generación de datos aleatorios]]
+
== Inserción de datos en una tabla de la base de datos MySQL ==
 +
=== Configuración de nodos ''inject'' para generar datos de tipo JSON ===
 +
[[Image:17nodoMariaDbNodeRed.png|center|Nodos ''inject'' para generar datos de tipo JSON]]
 +
Doble clic sobre el nodo ''inject'' (seleccionar la opción '''{}'''):
 +
[[Image:1701nodoMariaDbNodeRed.png|center|Edición del nodo ''inject'' para generar datos de tipo JSON]]
 +
Clic sobre '''...''' (los tres puntos):
 +
[[Image:1702nodoMariaDbNodeRed.png|center|Edición del nodo ''inject'' para generar datos de tipo JSON]]
 +
En formato texto:
 +
{
 +
    "valueT": 17.89,
 +
    "valueRH": 44.32
 +
}
  
[https://binefa.cat/training/upcSchool/20200523/14nodeRedRandomUi.nodered.txt Código para el NodeRED que genera datos aleatorios]
+
=== Inserción de datos de tipo JSON en columnas de la tabla ===
 +
[[Image:18nodoMariaDbNodeRed.png|center|Inserción de datos de tipo JSON en columnas de la tabla]]
  
Función '''Randomizing (On/Off)''':
+
Función '''INSERT DATA''':
  flow.set("Randomizing",msg.payload);
+
  msg.topic = `insert into m28XX_T_RH(valueT,valueRH) values(${msg.payload.valueT},${msg.payload.valueRH})`;
 
  return msg;
 
  return msg;
  
Función '''random value in range (20.0,30.0)''':
+
== Lectura de datos en una tabla de la base de datos MySQL ==
  msg.payload = parseFloat( (200 + Math.floor(Math.random() * 101))/10); // value between 20.0 and 30.0
+
[[Image:19nodoMariaDbNodeRed.png|center|Ejemplo de SELECT para MariaDB]]
 +
Campo '''msg.topic''' del nodo ''inject'' para hacer un '''SELECT''':
 +
[[Image:20nodoMariaDbNodeRed.png|center|Nodo ''inject'' para enviar un ''query'' de tipo ''SELECT'' a MariaDB]]
 +
 
 +
Campo '''msg.topic''' del nodo ''inject'' con nombre '''SELECT''' en formato texto:
 +
select UNIX_TIMESTAMP(time) as time, valueT, valueRH from m28XX_T_RH
 +
 
 +
== Creación de una tabla vista en la base de datos MySQL ==
 +
[[Image:21nodoMariaDbNodeRed.png|center|Creación de una tabla vista partiendo de otra tabla en una base de datos MariaDB]]
 +
 
 +
Función '''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;
 
  return msg;
 +
== Tratamiento de datos leídos de la tabla ==
  
== Escritura con usuario de InfluxDB con permisos de lectura y escritura ==
+
[[Image:22nodoMariaDbNodeRed.png|center|Tratamiento de datos leídos de la tabla]]
  
[[Image:15nodeRedRW.png|center|Configuración de InfluxDB para lectura]]
+
Añadir salidas a la función (en '''Outputs''' se ha cambiado de 1 a 3 salidas):
  
 +
[[Image:23nodoMariaDbNodeRed.png|center|Añadir salidas a la función]]
  
[[Image:16nodeRedRW.png|center|Escritura a InfluxDB]]
+
Código de la función '''Tratamiento datos / Últimas entradas''':
  
 +
[[Image:24nodoMariaDbNodeRed.png|center|Código de la función '''Tratamiento datos / Últimas entradas''']]
  
[[Image:17nodeRedRW.png|center|Escritura a InfluxDB]]
+
Función '''Tratamiento datos / Últimas entradas''' en modo texto:
 +
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}];
  
[https://www.binefa.cat/training/upcSchool/20200523/18nodeRedRW.nodered.txt Código de NodeRED para la escritura desde el panel de control]
+
== Aleatorización controlada por el panel de control ==
 +
Aprovechando el ejercicio hecho en la introducción al [[Uso del NodeRED (2023) | Uso del NodeRED]], añadiremos otro valor de aleatorización y haremos una escritura a la base de datos MariaDB.
  
[[Image:18nodeRedRW.png|center|Escritura a InfluxDB]]
+
[[Image:25nodoMariaDbNodeRed.png|center|Generación de datos aleatorios]]
  
<!--
+
Al seleccionar el conmutador (''switch'') '''Randomize''' comienza la generación de datos aleatorios. Al deseleccionarlo se para la generación de datos.
[https://www.binefa.cat/training/upcSchool/20190427/nodeRed/random01_Influxdb_out_node_Flow.png Visualización del flujo NodeRed con un nodo InfluxDB]
 
  
[https://www.binefa.cat/training/upcSchool/20190427/nodeRed/random01_Influxdb_out_node_Cfg01.png Configuración del nodo InfluxDB de salida]
+
[[Image:26nodoMariaDbNodeRed.png|center|Generación de datos aleatorios]]
  
[https://www.binefa.cat/training/upcSchool/20190427/nodeRed/random01_Influxdb_out_node_Cfg00.png Configuración del servidor InfluxDB para ser usado por el nodo de salida]
+
[https://www.binefa.cat/training/upcSchool/2023/20230415/26nodeRedRandomUi.nodered.json Código para el NodeRED que genera dos datos aleatorios]
-->
 
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.
 
  
 +
Función '''Randomizing (On/Off)''':
 +
flow.set("Randomizing",msg.payload);
 +
return msg;
  
$ influx -username masteri40 -password upcschool
+
Función '''random JSON value in range {"T": <20.0,30.0>,"RH": <45.0,55.0>}''':
Connected to http://localhost:8086 version 1.7.6
+
  var randomT = parseFloat((200 + Math.floor(Math.random() * 101)) / 10); // value between 20.0 and 30.0
InfluxDB shell version: 1.8.0
+
  var randomRH = parseFloat((450 + Math.floor(Math.random() * 101)) / 10); // value between 45.0 and 55.0
> '''use aulaVirtual2020'''
+
  var jsonR = {};
Using database aulaVirtual2020
+
  jsonR["T"] = randomT;
> '''select * from m05_nAleat'''
+
  jsonR["RH"] = randomRH;
name: m05_nAleat
+
   
  time                value
+
  var msg_jsonR = { payload: jsonR };
----                -----
+
  var msg_valT = { payload: randomT };
1589883858824341140 20
+
  var msg_valRH = { payload: randomRH };
> '''select * from m05_nAleat'''
+
   
name: m05_nAleat
+
  return [msg_jsonR, msg_valT, msg_valRH];
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 síncrona de múltiples datos asíncronos al mismo tiempo. Uso del formato de datos '''json''' =
  
= Escritura de múltiples datos al mismo tiempo. Uso del formato de datos '''json''' =
+
[[Image:27nodoMariaDbNodeRed.png|center|Uso del formato de datos '''json''']]
  
[[Image:19nodeRedJson.png|center|Uso de Json en InfluxDB]]
 
  
[https://www.binefa.cat/training/upcSchool/20200523/19nodeRedJson.nodered.txt Código en NodeRED para el uso de Json en InfluxDB]
+
[https://www.binefa.cat/training/upcSchool/2023/20230415/27nodeRedJson.nodered.json Código en NodeRED para el uso de Json en MariaDB]
  
 
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''):
 
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''):
Línia 146: Línia 187:
 
  return msg;
 
  return msg;
  
  $ influx -username convidat -password benvingut
+
Función '''INSERT INTO m28XX_T_RH_P_LDR(valueT,valueRH,valueP,valueLDR)''':
  Connected to http://localhost:8086 version 1.7.6
+
  msg.topic = `insert into m28XX_T_RH_P_LDR(valueT,valueRH,valueP,valueLDR) values(${msg.payload.T},${msg.payload.RH},${msg.payload.P},${msg.payload.LDR})`;
  InfluxDB shell version: 1.8.0
+
return msg;
  > '''use aulaVirtual2020'''
+
 
  Using database aulaVirtual2020
+
Consulta a MariaDB desde el terminal del VPS:
  > '''select * from m05_json_00'''
+
convidat@vps656540:~$ '''mysql -u convidat -p'''
  name: m05_json_00
+
Enter password: ''(la contraseña es '''benvingut''')''
  time               LDR  P      RH  T
+
  Welcome to the MariaDB monitor. Commands end with ; or \g.
  ----               --- -     --   -
+
  Your MariaDB connection id is 133
  1589965283616685236 47.3 1007.2 74.6 24.7
+
Server version: 10.3.38-MariaDB-0+deb10u1 Debian 10
  1589965290073574911 89.4 1003.5 48.2 21.3
+
  > quit
+
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
  $
+
   
 +
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 +
 +
MariaDB [(none)]> '''use aula206;'''
 +
  Reading table information for completion of table and column names
 +
You can turn off this feature to get a quicker startup with -A
 +
   
 +
Database changed
 +
MariaDB [aula206]> '''select * from m28XX_T_RH_P_LDR_v;'''
 +
  +------------+--------+---------+--------+----------+
 +
  | time       | valueT | valueRH | valueP | valueLDR |
 +
  +------------+--------+---------+--------+----------+
 +
  | 1681149647 |  24.7 |    74.6 | 1007.2 |    47.3 |
 +
  | 1681149886 |  21.3 |    48.2 | 1003.5 |    89.4 |
 +
+------------+--------+---------+--------+----------+
 +
2 rows in set (0.000 sec)
 +
 +
  MariaDB [aula206]> '''quit'''
 +
  Bye

Revisió de 18:08, 10 abr 2023

Acceso[modifica]

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[modifica]

Instalación[modifica]

Instalación de los nodos de MariaDB (MySQL) en NodeRED

Hace falta instalar el conjunto de nodos node-red-node-mysql

Aspecto del nodo MySQL en NodeRED

Configuración de la base de datos en el nodo MySQL[modifica]

  • Poner un nodo MySQL en el tapiz Node-RED
  • Hacer doble clic sobre el nodo MySQL
Configuración del nodo MySQL
  • Ir al lápiz a la derecha del desplegable Add new MySQL database... presente en la fila Database
Configuración del nodo MySQL

- En Host escribir la IP local del servidor (127.0.0.1). Por seguridad, no le permitimos a la base de datos que tenga visibilidad externa.

- En Port escribir el puerto TCP (3306) por defecto de las bases de datos MySQL

- En User escribir un usuario con permisos de escritura (iot), debido a que queremos escribir. Si no hace falta escribir en la base de datos escribiríamos un usuario con permisos de solo lectura (como convidat).

- En Password escribir la contraseña del usuario (para el usuario iot es iot. Para el usuario convidat es benvingut).

- En Database escribir la base de datos que queremos acceder (aula206)

- En Charset escribir la codificación de carácteres (UTF8)

Creación de una tabla en la base de datos MySQL[modifica]

Creación de una tabla

Hay cuatro nodos enlazados: inject, function, mysql y debug.

  • Los nodos inject y debug no se modifican. Dejar la configuración por defecto.
  • El nodo mysql ha estado configurado en el paso anterior.
  • El nodo function se ha configurado de este modo:
Creación de una tabla

Función 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;

Borrado de una tabla en la base de datos MySQL[modifica]

Borrado de una tabla

Función DROP TABLE m28XX_T_RH:

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

Inserción de datos en una tabla de la base de datos MySQL[modifica]

Configuración de nodos inject para generar datos de tipo JSON[modifica]

Nodos inject para generar datos de tipo JSON

Doble clic sobre el nodo inject (seleccionar la opción {}):

Edición del nodo inject para generar datos de tipo JSON

Clic sobre ... (los tres puntos):

Edición del nodo inject para generar datos de tipo JSON

En formato texto:

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

Inserción de datos de tipo JSON en columnas de la tabla[modifica]

Inserción de datos de tipo JSON en columnas de la tabla

Función INSERT DATA:

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

Lectura de datos en una tabla de la base de datos MySQL[modifica]

Ejemplo de SELECT para MariaDB

Campo msg.topic del nodo inject para hacer un SELECT:

Nodo inject para enviar un query de tipo SELECT a MariaDB

Campo msg.topic del nodo inject con nombre SELECT en formato texto:

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

Creación de una tabla vista en la base de datos MySQL[modifica]

Creación de una tabla vista partiendo de otra tabla en una base de datos MariaDB

Función 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;

Tratamiento de datos leídos de la tabla[modifica]

Tratamiento de datos leídos de la tabla

Añadir salidas a la función (en Outputs se ha cambiado de 1 a 3 salidas):

Añadir salidas a la función

Código de la función Tratamiento datos / Últimas entradas:

Código de la función Tratamiento datos / Últimas entradas

Función Tratamiento datos / Últimas entradas en modo texto:

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}];

Aleatorización controlada por el panel de control[modifica]

Aprovechando el ejercicio hecho en la introducción al Uso del NodeRED, añadiremos otro valor de aleatorización y haremos una escritura a la base de datos MariaDB.

Generación de datos aleatorios

Al seleccionar el conmutador (switch) Randomize comienza la generación de datos aleatorios. Al deseleccionarlo se para la generación de datos.

Generación de datos aleatorios

Código para el NodeRED que genera dos datos aleatorios

Función Randomizing (On/Off):

flow.set("Randomizing",msg.payload);
return msg;

Función random JSON value in range {"T": <20.0,30.0>,"RH": <45.0,55.0>}:

var randomT = parseFloat((200 + Math.floor(Math.random() * 101)) / 10); // value between 20.0 and 30.0
var randomRH = parseFloat((450 + Math.floor(Math.random() * 101)) / 10); // value between 45.0 and 55.0
var jsonR = {};
jsonR["T"] = randomT;
jsonR["RH"] = randomRH;

var msg_jsonR = { payload: jsonR };
var msg_valT = { payload: randomT };
var msg_valRH = { payload: randomRH };

return [msg_jsonR, msg_valT, msg_valRH];

Escritura síncrona de múltiples datos asíncronos al mismo tiempo. Uso del formato de datos json[modifica]

Uso del formato de datos json


Código en NodeRED para el uso de Json en MariaDB

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;

Función INSERT INTO m28XX_T_RH_P_LDR(valueT,valueRH,valueP,valueLDR):

msg.topic = `insert into m28XX_T_RH_P_LDR(valueT,valueRH,valueP,valueLDR) values(${msg.payload.T},${msg.payload.RH},${msg.payload.P},${msg.payload.LDR})`;
return msg;

Consulta a MariaDB desde el terminal del VPS:

convidat@vps656540:~$ mysql -u convidat -p
Enter password: (la contraseña es benvingut)
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 133
Server version: 10.3.38-MariaDB-0+deb10u1 Debian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use aula206;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A 

Database changed
MariaDB [aula206]> select * from m28XX_T_RH_P_LDR_v;
+------------+--------+---------+--------+----------+
| time       | valueT | valueRH | valueP | valueLDR |
+------------+--------+---------+--------+----------+
| 1681149647 |   24.7 |    74.6 | 1007.2 |     47.3 |
| 1681149886 |   21.3 |    48.2 | 1003.5 |     89.4 |
+------------+--------+---------+--------+----------+
2 rows in set (0.000 sec)

MariaDB [aula206]> quit
Bye