ESP32 LoRa for dummys - Dashboard de control de TinyGS (NOC en Node-RED)
(En construcción)
Se puede configurar un panel de control o Dashboard de las estaciones TinyGS con NodeRed
NodeRed es un software que puede configurarse en:
- un ordenador personal
- un dispositivo independiente
- la nube.
- Directamente en el ordenador como una aplicación mas
- Sobre Docker
INSTALAR DOCKER DESKTOP
Lo primero que tenemos que hacer es bajarnos el software de Docker, donde vamos a instalar Node-Red, para nuestra plataforma desde aquí que es bastante pesado (>500/600 MB => 1,74 / 2 GB).
La versión actual de Docker Desktop es la 4.34.3 (octubre, 2024) y requiere como mínimo la v12 de MacOS (Monterey), no funcionando para versiones anteriores como Big Sur la (11) o Catalina (10), lo que viene siendo un ejemplo mas de la obsolescencia programada que Apple lleva hasta cotas inimaginables.
Ante el problema leo que parece que la versión 4.16.2 del 12-1-2023 todavía funciona con BigSur pero no con Catalina. Me pongo a buscarla y localizo la versión 4.15 que parece que funciona con las versiones de macOS BigSur y Catalina en https://desktop.docker.com/mac/main/amd64/93002/Docker.dmg así que la instalo, pese a que de forma periódica me avisa que debo actualizarla y que tambien haga lo mismo con mi SO.
Al arrancar Docker Desktop pide autorización (accede a directorios protegidos del sistema), lo acepto y abre un tutorial que en este momento no lo voy a seguir pues estoy para otros temas.
Node-RED es una herramienta de programación para conectar dispositivos de hardware, API y servicios en línea de formas nuevas e interesantes. Proporciona un editor basado en navegador que facilita la conexión de flujos utilizando la amplia gama de nodos en la paleta que se pueden implementar en su tiempo de ejecución con un solo clic. En el terminal del sistema ejecutamos:
docker run -it -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red
mynodered es el nombre que se le ha dado al container (--name mynodered ) y 1880 el puerto asinado (-p 1880:1880) creado en Docker. Para más información del comando ejecuato puede teclear en el terminal docker run --help
Se puede comprobar que se ha instalado correctamente desde un browser
http://127.0.0.1:1880/
Algunos comandos de consola de docker:
- docker -v nos informa de la versión instalada Docker version 20.10.21, build baeda1f
- docker run ejecuta un comando en un nuevo container del docker.
- docker exec ejecuta un comando en un container que se está ejecutando en el docker.
- docker ps nos informa de los contenedores que están en ejecución
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
519b151b0aa8 nodered/node-red "./entrypoint.sh" 2 hours ago Up 2 hours (healthy) 0.0.0.0:1880->1880/tcp mynodered
Algunos comandos más:
Para volver a conectar a la terminal (para ver el registro) ejecute:
docker attach mynodered
Si necesita reiniciar el contenedor (por ejemplo, después de reiniciar o reiniciar el demonio Docker):
docker start mynodered
Si quiere parar el contenedor
docker stop mynodered
En Docker podemos comprobar que se ha realizado la instalación de NODE-RED
Desde el terminal de Docker instalar node-red-dashboard con el comando: npm install node-red-dashboard
Instalación de Node-RED-DASHBOARD De la misma forma instalar:
- node-red-contrib-ui-media con el comando: npm install node-red-contrib-ui-media
- node-red-node-mysql mediante el comando: npm install node-red-node-mysql. Con npm install mysqljs/mysql se puede comprobar la instalación y con npm fund la estructura
- npm install mysql ¿?
Con IFTT ("IF This, Then That") es una web muy usada desde hace años que permite configuran acciones entre distintas aplicaciones los avisos, aquí se hace una pequeña introducción. (no acabo de entender los valores que hay que pasar como parámetros, lo miraré mas adelante)https://maker.ifttt.com/trigger/TinyGS/with/key/[clave%20de%20IFTTT]?value1={{{payload}}}
Para almacenar los datos procedentes del servidor TinyGS en nuestro sistema para poder ser mostrados en el Dashboard necesitamos una base de datos. En este caso se usa MySQL que es un sistema de gestión de bases de datos relacionales (RDBMS) de código abierto desarrollado por MySQL AB, que posteriormente adquirió Sun Microsystems y luego Oracle Corporation. Utiliza SQL (lenguaje de consulta estructurado) para consultar y administrar bases de datos. MySQL es ampliamente reconocido por su rendimiento, escalabilidad y facilidad de uso.
En este punto debemos:
- Instalar node-red-node-mysql en el container mynodered (Ya lo hemos hecho)
- Crear la BBDD MySQL en nuestro sistema (Se dá por hecho, pero como no lo tenemos instalado pues procedemos a ello y lo explicamos)
- Crear la tabla que vamos a usar (lo que realmente se plantea en este punto)
- Configurar en el esquema de flujo la base de datos (no indica nada pues se supone)
2- Para ello vamos a Chapter 2 Installing MySQL y seleccionamos nuestro sistema operativo, pues mysql funciona directamente sobre el sistema operativo. La versión actual es la 8.4 y de nuevo nos encontramos con la obsolescencia programada pues exige unas determinadas versiones del sistema operativo para poder funcionar. Esto no es nada nuevo así que buscamos una compatible con nuestro SO y procesador en MySQL Product Archives que en nuestro caso es la 8.0.28 y la descargamos e instalamos (ocupa unos 700 MB y solicita autorización, y que definamos una contraseña para el usuario root, debemos apuntarla), si encuentra un tutorial pues mejor en nuestro caso usamos este
Instalando MySQL para poder almacenar en nuestro sistemas los datos recibidos por TinyGS |
en sistemas como Linux o macOS deberá definir variables, p.e. en MacOS:
alias mysql=/usr/local/mysql/bin/mysqlalias mysqladmin=/usr/local/mysql/bin/mysqladmin
En macOS si vamos a Preferencia del sisemas podemos comprobar que está ainsalado mySQL |
Y podemos comprobar que está arrancado |
export PATH="/usr/local/mysql/bin:$PATH"
source ~/.bash_profilemysql -u root -p
Enter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 8Server version: 8.0.28 MySQL Community Server - GPLCopyright (c) 2000, 2022, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>
Los comandos que admite mysql> son (Observe que todos los comandos comienzan en la primera linea y terminan con ;
- ? (\?) Synonym for `help'.
- clear (\c) Clear the current input statement.
- connect (\r) Reconnect to the server. Optional arguments are db and host.
- delimiter (\d) Set statement delimiter.
- edit (\e) Edit command with $EDITOR.
- ego (\G) Send command to mysql server, display result vertically.
- exit (\q) Exit mysql. Same as quit.
- go (\g) Send command to mysql server.
- help (\h) Display this help.
- nopager (\n) Disable pager, print to stdout.
- notee (\t) Don't write into outfile.
- pager (\P) Set PAGER [to_pager]. Print the query results via PAGER.
- print (\p) Print current command.
- prompt (\R) Change your mysql prompt.
- quit (\q) Quit mysql.
- rehash (\#) Rebuild completion hash.
- source (\.) Execute an SQL script file. Takes a file name as an argument.
- status (\s) Get status information from the server.
- system (\!) Execute a system shell command.
- tee (\T) Set outfile [to_outfile]. Append everything into given outfile.
- use (\u) Use another database. Takes database name as argument.
- charset (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
- warnings (\W) Show warnings after every statement.
- nowarning (\w) Don't show warnings after every statement.
- resetconnection(\x) Clean session context.
- query_attributes Sets string parameters (name1 value1 name2 value2 ...) for the next query to pick up.
Tambien podemos ejecutar comandos de mysqladmin como por ejemplo para ver la versión o los valores de las variables :
mysqladmin version -u root -p
/usr/local/mysql/bin/mysqladmin Ver 8.0.28 for macos11 on x86_64 (MySQL Community Server - GPL)
Copyright (c) 2000, 2022, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
mysqladmin variables -u root -p
...
Bueno ya hemos instalado MySQl, ya lo tenemos en funcionamiento, ahora debemos crear nuestra base de datos en la que vamos a crear las tablas y despues vamos a visualizar todas las que hay creadas:
mysql> create database mydatabase;
Query OK, 1 row affected (0,00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydatabase |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0,01 sec)
Seleccionamos la que hemos creado "mydatabase" y procedemos a crear la tabla con el comando CREATE y el ALTER
use mydatabase;
Database changed
CREATE TABLE `tinygs` (`dtg` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,`station_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,`frame` varchar(512) CHARACTER SET ascii NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Opens of the house''s main door';
ALTER TABLE `tinygs`ADD PRIMARY KEY (`dtg`,`station_id`);
Podemos comprobar que efectivamente se ha creado la tabla con
mysql> show tables;
+----------------------+
| Tables_in_mydatabase |
+----------------------+
| tinygs |
+----------------------+
1 row in set (0,00 sec)
Parte del flujo donde hay que modificar el nombre de la BBDD, pero no identifica este nodo y unos cuantos mas cuando se importan los flujos |
Importar los flujos
Primero hay que copiar el flujo desde github y después pegarlo en Node-Red (navegador)
Copiar los flujos desde https://github.com/McOrts/taller-lora-sat-groundstation/blob/main/nodered/nodered_dashboard4TINYGS.json
Pegar en la pantalla del navegador donde tenemos abierto Node-Red
Aspecto del flujo cargado |
- Servidor MQTT
- Servidor MySQL
- Llamada a IFTTT
Comentarios
Publicar un comentario