Ejercicio 1
Hacer un CSV con los datos de temperatura, memoria y CPU que manda vuestra Raspberry PI y guardar en un fichero llamado raspberrypi.csv. Añadir también el campo timestamp al fichero csv.
Para ello tomar los datos publicados en MQTT, ordenarlos y prepararlos para que los pase a un nodo join y los ponga en este orden: timestamp,CPU,Memory,Temperature
Para que los ordene de forma automática el nodo join debemos hacer uso de la propiedad parts como hace el nodo split usando:
- parts.index – para el orden de los elementos del grupo a unir
- parts.id – para indicar que es el mismo grupo
- parts.count – para indicar el nº de mensajes del grupo
También crear un flujo con un nodo inject que cree el fichero con la cabecera: “timestamp,CPU,Memory,Temperature” y que además al hacerlo vacíe el fichero existente.
Crear otro flujo con un nodo inject que lee con “file in” el contenido del fichero y lo mande a la pantalla de debug.
Luego con un botón del dashboard hacer la parte de inicializar el fichero (que aparezca una notificación del dashboard para confirmar que se desea inicializar) y con otro botón del dashboard un flujo que lea el fichero y lo mande al nodo chart del dashboard y hacer las gráficas.
Opcionalmente, hacer un tercer botón que mande por email el fichero csv, como fichero adjunto.
Opcionalmente, hacer un flujo que lea los datos del fichero llamado raspberrypi.csv y obtener los datos de media, máxima y mínima de la temperatura, memoria y CPU y mostrar en el dashboard en un nodo texto.
Opcionalmente, hacer un flujo que agrupe los datos en grupos de 100 y sacar los datos de media, máxima y mínima cada 100 valores y guardar en otro fichero llamado raspberrypi_agrupados.csv con los campos: timestamp,CPU_AVG,CPU_MAX,CPU_MIN,Memory_AVG,Memory_MAX,Memory_MIN,Temperature_AVG,Temperature_MAX,Temperature_MIN
Mandar datos al nodo chart: https://github.com/node-red/node-red-dashboard/blob/master/Charts.md
Código: https://github.com/aprendiendonodered/ejercicio10
Ejercicio 2 – Seguridad
Poner un pin para encender los Reles, de forma que si no hay pin no se puede encender desde el dashboard. Simular una cerradura de forma que al poner el pin correcto se abre y luego a los 5 segundos se cierra.
Mostar en el dashboard el estado de la cerradura.
Crear un tab nuevo en el dashboard llamado pin de seguridad
Basarse en el flujo:
- https://flows.nodered.org/flow/7bcb0b049df4fa3c962294137ebaec19
- https://gist.github.com/robertsLando/7bcb0b049df4fa3c962294137ebaec19
Hacer el flujo como un subflow.
Dashboard
Flujo
Subflow
Código:
- flow: https://github.com/jecrespo/Curso-Node-RED/blob/master/04-Ejercicio%20Final/Ejercicio_3/Ejercicio_3.json
- subflow: https://github.com/jecrespo/Curso-Node-RED/blob/master/04-Ejercicio%20Final/Ejercicio_3/Ejercicio_3-subflow.json
Ejercicio 3 – Email y SMS
Hacer un formulario en el dashboard para mandar un correo electrónico y otro para mandar un SMS usando el servicio de Twilio: https://www.twilio.com/
Dashboard
Flujo
Luego usar esta configuración para enviar un correo y un SMS cuando se pulse el botón de la Raspberry Pi y el relé del nodo remoto 14 esté encendido, viéndolo en un dashboard.
Ejercicio 4 – Predicción de Lluvia con datos AEMET
Hacer un panel de control que muestre la predicción de lluvia de los próximos 7 días de una ciudad usando los datos de AEMET y su API.
Solución: https://github.com/aprendiendonodered/AEMET_Prediccion_Dias
Además mostrar la predicción de temperatura de los próximos 5 días usado el nodo de open weather map https://flows.nodered.org/node/node-red-node-openweathermap
Por último publicar todos los datos por MQTT con el topic: “educantabria/nodo00/santander/predicción/[lluvia/santander]/{dia}/{hora}”
Topics publicados:
- casa/santander/prediccion/lluvia/{dia} – Publica la predicción de lluvia de santander obtenida de AEMET
- casa/santander/prediccion/temperatura/{dia}/{hora} – Publica la predicción de temperatura de santander obtenida de Open Weather