Puesta en funcionamiento
Esta sección describe como realizar una primera prueba del programador de sin necesidad de montar toda la electrónica y así poder ver el funcionamiento.
Para realizar esta prueba sólo se necesita lo siguiente:
Una placa ESP32-C3 Supermini o similar.
Una instalación disponible de un broker MQTT, por ejemplo Mosquitto
Una instalación de HomeAssistant
Los pasos son los siguientes:
Cargar el firmware precompilado en la placa ESP32-C3.
Configurar la red Wifi y el servidor MQTT mediante la consola serie.
Configurar HomeAssistant importando el panel de control en formato de YAML desde el navegador Web.
Firmware
En el repositorio de GitHub o en la sección Material y referencias están disponibles
algunas versiones del firmware precompilado. El firmware precompilado se puede
programar con el software esptool de Espressif. Para programarlo se puede
usar directamente esptool o el script de programación que se incluye
en el repositorio esp-upload.sh
. Este script
de programación también está incluido con el fichero comprimido (ZIP) del
firmware.
Nota
Las instrucciones mostradas son para el sistema operativo GNU/Linux. Para otros sistemas operativos se debe adaptar el comando de programación.
Los pasos son los siguientes:
Descargar una versión de esptool .
Descomprimir el fichero ZIP del firmware disponible en la sección Firmware
Conectar la placa ESP32-C3 Supermini al puerto USB del ordenador.
Desde el directorio donde se descomprimió el firmware, ejecutar el script de programación de la siguiente forma: bash esp-upload.sh
Alternativamente, si se desea realizar la programación con esptool directamente, se debe ejecutar de la siguiente forma:
esptool --chip esp32c3 --port "/dev/ttyACM0" --baud 921600 \
--before default_reset --after hard_reset write_flash \
-z --flash_mode dio --flash_freq 80m --flash_size 4MB \
0x0 "riego.ino.bootloader.bin" \
0x8000 "riego.ino.partitions.bin" \
0xe000 "boot_app0.bin" \
0x10000 "riego.ino.bin"
Consola
Una vez cargado el firmware en la placa ESP32-C3 se habilita en el puerto serie
/dev/ttyACM0
una consola con un menú de configuración. Con este menú es
posible configurar la red Wifi, el servidor MQTT y guardar la configuración en
la memoria no-volátil del microcontrolador.
Para conectar a la consola puede usar cualquier terminal serie con la siguiente configuración:
115200 baudios
8 bits de datos
Sin paridad
1 bit de parada
Para que se admitan los comandos, en el programa terminal serie tiene que
configurar como terminador de línea en salto de línea: \n
(nueva línea).
Enviando un salto de línea por el terminal aparece el menú de configuración .
En el siguiente vídeo se muestra la conexión desde el monitor serie del entorno
Arduino:
Ejemplo de conexión serie y menú de configuración
Mediante la configuración por consola se puede hacer lo siguiente:
Configuración de la red Wifi.
Configuración del servidor MQTT.
Borrar toda la configuración y programación almacenada en la memoria no-volátil (NVS).
Hay que configurar la red Wifi y el servidor MQTT para que HomeAssistant detecte y añada el dispositivo automáticamente. Usando la consola serie siga los pasos siguientes:
Envie un salto de línea intro para ver el menú.
Envíe el caracter w e intro para configurar la red Wifi. Configure al menos una red.
Envíe el caracter m e intro para configurar el servidor MQTT: usuario, contraseña y dirección IP/Nombre.
Envíe el caracter s e intro para guardar los cambios en la memoria NVS.
Envíe el caracter r e intro para reiniciar la placa.
HomeAssistant
HomeAssistant detectará automáticamente el programador sólo si la integración MQTT está configurada correctamente. Revise en su instalación de HomeAssistant la siguiente configuración:
En HomeAssistant acceda al menú: Ajustes → Dispositivos y servicios → Integraciones → Añadir integración → MQTT.
Asegurarse de que la integración MQTT está configurada y funcionando correctamente.
Si la configuración de red del programador es correcta, el sistema MQTT-discovery de HomeAssistant automatiza parte del proceso de configuración. Con este método el programador debe aparecer en el listado de dispositivos de la integración MQTT de HomeAssistant.
Aunque el dispositivo se añade automáticamente, no se auto-configura ningún panel de control. En este proyecto se incluye un fichero de configuración YAML correspondiente a un dashboard completo. Este panel de control hay que importarlo manualmente desde la interfaz Web de HomeAssistant siguiendo los siguientes pasos.
En HomeAssistant ir al menú y pulsar el botón indicado: Ajustes → Paneles de control
Pulsar el botón Añadir panel de control y seleccionar Nuevo panel de control desde cero
Tras crearlo, seleccionarlo en el menú izquierdo de HomeAssistant y ponerlo en edición mediante el botón editar situado en la parte superior derecha.
Después de entrar en modo edición, seleccionar en el menu superior izquierdo Editor de configuración en bruto
Copiar y pegar el contenido del fichero dashboard.yaml en el editor de configuración en bruto. El contenido se muestra a continuación, también puede descargarlo y abrirlo con un editor de texto.
views:
- title: Estado
badges: []
cards:
- type: entities
entities:
- entity: switch.riego_valvula_1
name: Válvula 1
- entity: switch.riego_valvula_2
name: Válvula 2
- entity: switch.riego_valvula_3
name: Válvula 3
- entity: switch.riego_valvula_4
name: Válvula 4
state_color: true
title: Válvulas
show_header_toggle: false
- type: history-graph
entities:
- entity: switch.riego_valvula_1
name: V1
- entity: switch.riego_valvula_2
name: V2
- entity: switch.riego_valvula_3
name: V3
- entity: switch.riego_valvula_4
name: V4
title: Riegos
- type: entities
entities:
- entity: sensor.riego_prog_01
name: Prog. 01
- entity: sensor.riego_prog_02
name: Prog. 02
- entity: sensor.riego_prog_03
name: Prog. 03
- entity: sensor.riego_prog_04
name: Prog. 04
- entity: sensor.riego_prog_05
name: Prog. 05
- entity: sensor.riego_prog_06
name: Prog. 06
- entity: sensor.riego_prog_07
name: Prog. 07
- entity: sensor.riego_prog_08
name: Prog. 08
- entity: sensor.riego_prog_09
name: Prog. 09
- entity: sensor.riego_prog_10
name: Prog. 10
title: Horarios
- show_name: true
show_icon: true
type: button
tap_action:
action: toggle
entity: switch.riego_pantalla
icon: mdi:monitor-screenshot
name: Pantalla
- type: gauge
entity: sensor.riego_bateria
name: Bateria
min: 10
max: 16
needle: true
severity:
green: 12
yellow: 11
red: 1
- type: gauge
entity: sensor.riego_temperatura_interna
name: Temp. CPU
- type: entity
entity: sensor.riego_dias_encendido
name: Horas/Ciclo
- type: entity
entity: sensor.riego_debug
name: Debug
icon: mdi:card-text-outline
- title: Programación
path: programacion
badges: []
cards:
- type: entities
entities:
- entity: number.riego_duracion_v1
name: Válvula 1
- entity: number.riego_duracion_v2
name: Válvula 2
- entity: number.riego_duracion_v3
name: Válvula 3
- entity: number.riego_duracion_v4
name: Válvula 4
title: Duración Manual
show_header_toggle: false
- type: entities
entities:
- entity: switch.riego_prog_01
name: Prog. 01
- entity: switch.riego_prog_02
name: Prog. 02
- entity: switch.riego_prog_03
name: Prog. 03
- entity: switch.riego_prog_04
name: Prog. 04
- entity: switch.riego_prog_05
name: Prog. 05
- entity: switch.riego_prog_06
name: Prog. 06
- entity: switch.riego_prog_07
name: Prog. 07
- entity: switch.riego_prog_08
name: Prog. 08
- entity: switch.riego_prog_09
name: Prog. 09
- entity: switch.riego_prog_10
name: Prog. 10
title: Programas Activos
show_header_toggle: false
state_color: true
- show_name: true
show_icon: true
type: button
tap_action:
action: toggle
entity: button.riego_guardar_programas
name: Guardar programación
- type: entity
entity: number.riego_desfase_horario
name: Desfase horario
- type: entities
entities:
- entity: select.riego_cambiar_programa
name: Selecciona programa
- entity: number.riego_hora
- entity: number.riego_minutos
- entity: number.riego_duracion
- entity: number.riego_intervalo_dias
- entity: number.riego_valvula
title: Cambiar programa
- type: entities
entities:
- entity: sensor.riego_prog_01
name: Prog. 01
- entity: sensor.riego_prog_02
name: Prog. 02
- entity: sensor.riego_prog_03
name: Prog. 03
- entity: sensor.riego_prog_04
name: Prog. 04
- entity: sensor.riego_prog_05
name: Prog. 05
- entity: sensor.riego_prog_06
name: Prog. 06
- entity: sensor.riego_prog_07
name: Prog. 07
- entity: sensor.riego_prog_08
name: Prog. 08
- entity: sensor.riego_prog_09
name: Prog. 09
- entity: sensor.riego_prog_10
name: Prog. 10
title: Horarios
La configuración anterior presenta dos paneles de control como los mostrados en las siguientes imágenes:
Pantalla OLED y pulsadores
La pantalla y los pulsadores permiten interactuar de forma manual y ver el estado del programador. Estos componentes opcionales son fáciles de conectar directamente a la placa ESP32-C3 Supermini sin usar la placa PCB incluida en el proyecto. De esta forma puede realizar una prueba más exhaustiva.
La pantalla es una OLED-SDD1306 de 128x64 píxeles con interfaz I2C como la mostrada en la imagen:
Para realizar la conexión puede revisar el esquemático
esquemático.pdf
del cual se obtiene
la siguiente tabla con los pines de la placa ESP32-C3 Supermini
y los componentes a conectar:
Componente |
PIN |
Nota |
---|---|---|
Pulsador Start |
9 |
Conectar un extremo a GND |
Pulsador Select |
10 |
Conectar un extremo a GND |
LED |
5 |
Salida en alto |
Pantalla OLED: SDA |
6 |
|
Pantalla OLED: SCL |
7 |
Actualizaciones OTA
La versión actual del firmware tiene activa la actualización OTA, es decir, se puede actualizar el firmware por Wifi. Para actualizarlo se usa la herramienta de Espressif espota.py que está incluida en Arduino-Core-ESP32. Esta herramienta funciona en línea de comandos y es necesario conocer la IP del dispositivo para realizar la actualización.
El comando para actualizar por Wifi es el siguiente:
python3 espota.py -r -i 192.168.1.X -p 8266 -f riego.ino.bin
Advertencia
En la versión actual están activas las actualizaciones OTA sin autenticación. Véase BUGS & TODO con el listado de tareas pendientes.