Webmin
Webmin es una herramienta de configuración de sistemas accesible vía web para sistemas Unix, como GNU/Linux y OpenSolaris. Con él se pueden configurar aspectos internos de muchos sistemas operativos, como usuarios, cuotas de espacio, servicios, archivos de configuración, apagado del equipo, etcétera, así como modificar y controlar muchas aplicaciones libres, como el servidor web Apache, PHP, MySQL, DNS, Samba, DHCP, entre otros.
Instalar con apt desde el repositorio de webmin. Comandos:
sudo sh -c 'echo "deb http://download.webmin.com/download/repository sarge contrib" > /etc/apt/sources.list.d/webmin.list'
cd /home/pi
wget https://download.webmin.com/jcameron-key.asc
sudo cat jcameron-key.asc | gpg --dearmor >jcameron-key.gpg
sudo cp jcameron-key.gpg /etc/apt/trusted.gpg.d
rm jcameron-key.*
sudo apt-get install apt-transport-https
sudo apt update
sudo apt install webmin
sudo /etc/webmin/start
sudo systemctl enable webmin
Para comprobar que se ha instalado acceder desde un navegador a https://ip_address:10000
Navegar por las opciones de webmin y hacer:
- Ver recursos usados
- Ver procesos ejecutándose
- Ver los cron jobs configurados
- Ver los logs
- Ver los usuarios y grupos
- Ver los servidores instalados
- Ver la configuración de red
Node-RED
Ejecutar el comando para instalar y actualizar: bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
Pulsar “y” a las preguntas en la instalación.
Para ejecutar Node-RED en el arranque: sudo systemctl enable nodered.service
Para iniciar el servicio: sudo systemctl start nodered.service
En caso de problemas ver el log con: node-red-log
Una vez instalado entrar en http://ip_address:1880
Navegar por Node-RED y poner el nodo inject y debug, unirlos y hacer deploy. Visualizar la pestaña de debug al pulsar sobre el nodo inject.
Añadir un nodo función y poner este código javascript:
// Create a Date object from the payload
var date = new Date(msg.payload);
// Change the payload to be a formatted Date string
msg.payload = date.toString();
// Return the message so it can be sent on
return msg;
Ahora se ve la fecha en un formato legible para humanos.
Instalar la librería moment https://flows.nodered.org/node/node-red-contrib-moment desde el gestor de paletas y sustituir el nodo función por un nodo moment.
First flow: https://nodered.org/docs/tutorials/first-flow
SQLite
Instalar SQLite:
- sudo apt update
- sudo apt install sqlite3
Instalar SQLite Browser:
- sudo apt update
- sudo apt install sqlitebrowser
Usaremos SQLite como BBDD local y luego pasar datos a una BBD cloud. Así disponemos de un sistema de almacenamiento local en lugar de una BBDD más compleja o un fichero en local en un formato como json, que es más simple y menos funcional.
Crear una nueva base de datos desde sqlitebrowser llamada datosxx.db en /home/pi/BBDD, siendo xx el número de las Raspberry Pi asignada.
Mediante comandos ejecutar:
- cd /home/pi
- mkdir BBDD
- cd BBDD
- sqlite3 datosxx.db
$sqlite3 datos15.db
SQLite version 3.7.15.2 2013-01-09 11:53:05
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
Crear una tabla llamada datos_aleatorios con tres campos, tal y como muestra la imagen:
- id (Clave primaria, autoincremento, único)
- fecha (tipo texto)
- dato (tipo texto)
Desde la hoja de datos probar a insertar algunos datos
Mediante comandos ejecutar desde la consola de SQLite:
CREATE TABLE "datos_aleatorios" ( "id" INTEGER UNIQUE, "fecha" TEXT, "dato" TEXT, PRIMARY KEY("id" AUTOINCREMENT) );
Comandos SQLite
- .help – ayuda
- .database – listas nombres y ficheros de las bases de datos
- .exit – salir
- .tables – muestra las tablas
- CLI sqlite: https://www.sqlite.org/cli.html
Si queremos usar un interfaz web sencillo para visualizar y hacer operaciones sencillas usar: https://github.com/coleifer/sqlite-web
Para instalar ejecutar los comandos:
- sudo pip install sqlite-web
- sqlite_web –host 0.0.0.0 prueba.db
Insertar Datos Aleatorios desde Node-RED
Conectarse a Node-RED: http://ip_address:1880
Copiar este texto y pegar en Node-RED en Menú – Import – Clipboard
[{"id":"35d3814e6567ee71","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"cf5e958c1024f743","type":"sqlite","z":"35d3814e6567ee71","mydb":"2542c44b886edf9f","sqlquery":"msg.topic","sql":"","name":"","x":600,"y":100,"wires":[["1be92c5ab1762656"]]},{"id":"e760762917e72c6d","type":"inject","z":"35d3814e6567ee71","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"15","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":190,"y":100,"wires":[["09e0bc6424dbe364"]]},{"id":"09e0bc6424dbe364","type":"change","z":"35d3814e6567ee71","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"\"INSERT INTO datos_aleatorios ('fecha','dato') VALUES ('\"&$now('[M01]/[D01]/[Y0001] [H01]:[m01]:[s01]','+0200')&\"','\"&$random()&\"')\"","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":100,"wires":[["cf5e958c1024f743"]]},{"id":"1be92c5ab1762656","type":"debug","z":"35d3814e6567ee71","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":590,"y":200,"wires":[]},{"id":"2542c44b886edf9f","type":"sqlitedb","db":"/home/pi/BBDD/datos15.db","mode":"RWC"}]
Y pulsar en Deploy para cargar el flujo.
Resolver los errores, revisar los nodos del flujo creado.
- Instalar la librería node-red-node-sqlite desde el menú Manage palette
- Poner la ruta al fichero que contiene la base de datos
Este flujo inserta cada 15 segundos un dato aleatorio en la tabla de la base de datos creada.
Comprobar que graba los datos aleatorios en la BBDD recién creada.
Ver este ejemplo de uso básico de SQL, importar el código y ejecutarlo: https://flows.nodered.org/flow/b44c896fb2d16c6920e3a70861fe06ac
Pingback: Paso a Paso: Instalación Servicios Raspberry Pi -
Pingback: Diario del Curso IoT, Smart Cities y Node-RED | Aprendiendo Arduino
Pingback: Diario Curso: Raspberry Pi y Node-RED. 2ª ed | Aprendiendo Arduino