Paso 11: El software para el módulo de ESP8266 - parte 4 "funciones principales"
Como dije antes, hay 2 versiones del software.
La versión "master" lee el consumo de energía del panel solar, sistema de monitoreo y decide cuándo encender o apagar un aire acondicionado.
La versión de "esclavo" recibe órdenes de la versión "master".
Las funciones adicionales del maestro:
1) actualizar el valor de consumo de energía
Para actualizar el consumo de energía un temporizador se utiliza para accionar cada 60 segundos una conexión para el monitor de panel solar en setup():
Esto exige cada 60 segundos la rutina de interrupción triggerGetPower(). Como las rutinas de interrupción deben ser corto y no demorar otras funciones, no es posible iniciar la actualización directamente desde aquí. En su lugar la bandera powerUpdateTriggered se establece en true, que eso dice la función loop() que una actualización es necesaria. Como las rutinas de interrupción deben ser corto y no demorar otras funciones, no es posible iniciar la actualización directamente desde aquí. En su lugar
En el loop()
comprueba esta bandera y llama a la getPowerVal().
getPowerVal() se conecta mediante una conexión TCP con el monitor de panel solar y recibe el último valor de consumo de energía en un objeto JSON. El valor de la energía se almacena en una matriz con una capacidad de 10 valores.
Si se dispone de valores de 10 se llama la función checkPower() para decidir si es necesario conectar dispositivos adicionales al consumo excesivo de electricidad.
Si se almacenan más de 10 valores, el valor más antiguo se descarta y se almacena el nuevo valor.
2) comprobar el promedio de consumo de energía
En checkPower() se crea el promedio de los últimos valores de 10 potencia. Durante días ventosos y nublados, la producción de energía de los paneles solares puede saltar rápidamente de algunos vatios a varios 100 vatios. Usando el promedio de los últimos 10 valores evita encender y apagar el aire acondicionado cada minuto (que no es bueno para el aire acondicionado).
Dependiendo del resultado y el control actual se realicen acciones de estado de lazo:
Este lazo de control está utilizando solo aire acondicionado que consumen excesiva energía. En el código fuente se puede ver otro lazo de control que utiliza 2 aircons consumir energía excesiva. Todavía estoy probando este bucle y aún no es completamente funcional.