Buenas hoy os explico como resolví un problema que se presentaba esporádicamente una vez cada seis meses mas o menos , Home Assistant se quedaba sin conexión con mysql y por lo tanto no funcionaba toda la parte del recorder hasta que no se reiniciaba HA , para ello lo primero es crear un sensor que lea el fichero home-assistant.log y cuente las veces que encuentra la cadena ‘Lost connection to MySQL server’
- platform: command_line
name: errores_conexion
command: "grep -c 'Lost connection to MySQL server' home-assistant.log"
Le daremos los valores en el customize.yaml
sensor.errores_conexion_db:
friendly_name: Errores de conexión a la dB
icon: mdi:database-alert
A partir de ahí crearemos la automatizaciones que gestionaran esta parte
- id: alerta fallo conexion base de datos
initial_state: 'on'
alias: alerta fallo conexion base de datos
trigger:
- platform: state
entity_id: sensor.errores_conexion_db
condition:
- condition: numeric_state
entity_id: sensor.errores_conexion_db
above: 1
below: 10
action:
- service: notify.notif_telegram_bot
data_template:
message: "\U0001f648\U0001f648 Error conexión base de datos , total : *{{ states.sensor.errores_conexion_db.state }}* \U0001f648\U0001f648"
- id: alerta fallo conexion base de datos y reinicio dockers
initial_state: 'on'
alias: alerta fallo conexion base de datos y reinicio dockers
trigger:
- platform: state
entity_id: sensor.errores_conexion_db
condition:
- condition: numeric_state
entity_id: sensor.errores_conexion_db
above: 10
below: 25
action:
- service: notify.notif_telegram_bot
data_template:
message: "\U0001f648\U0001f648 Error conexión base de datos , total : *{{ states.sensor.errores_conexion_db.state }}* , reinicio dockers inicio \U0001f648\U0001f648"
- service: switch.turn_off
entity_id: switch.lamp_sensores
- service: switch.turn_off
entity_id: switch.wordpress_1
- service: switch.turn_off
entity_id: switch.traccar
- delay: 00:00:03
- service: switch.turn_on
entity_id: switch.lamp_sensores
- delay: 00:00:07
- service: switch.turn_on
entity_id: switch.wordpress_1
- service: switch.turn_on
entity_id: switch.traccar
- service: notify.notif_telegram_bot
data_template:
message: "\U0001f648\U0001f648 Error conexión base de datos , total : *{{ states.sensor.errores_conexion_db.state }}* , reinicio dockers fin \U0001f648\U0001f648"
- id: alerta fallo conexion base de datos y reinicio HA
initial_state: 'on'
alias: alerta fallo conexion base de datos y reinicio HA
trigger:
- platform: state
entity_id: sensor.errores_conexion_db
condition:
- condition: numeric_state
entity_id: sensor.errores_conexion_db
above: 25
action:
- service: notify.notif_telegram_bot
data_template:
message: "\U0001f648\U0001f648 Error conexión base de datos , total : *{{ states.sensor.errores_conexion_db.state }}* , reinicio HA inicio \U0001f648\U0001f648"
- service: switch.turn_off
entity_id: switch.lamp_sensores
- service: switch.turn_off
entity_id: switch.wordpress_1
- service: switch.turn_off
entity_id: switch.traccar
- delay: 00:00:03
- service: switch.turn_on
entity_id: switch.lamp_sensores
- delay: 00:00:07
- service: switch.turn_on
entity_id: switch.wordpress_1
- service: switch.turn_on
entity_id: switch.traccar
- service: notify.notif_telegram_bot
data_template:
message: "\U0001f648\U0001f648 Error conexión base de datos , total : *{{ states.sensor.errores_conexion_db.state }}* , reinicio HA fin \U0001f648\U0001f648"
- service: homeassistant.restart
Al arrancar siempre da un error de conexión por lo que este inicial no lo tendremos en cuenta
Básicamente las automatizaciones se dividen en función del numero de errores :
>1 a 10 errores dan un aviso por telegram , de > 10 a 25 errores para los dockers que están afectados por el base de datos como puede ser traccar y wordpress , para mysql , arranca mysql dejando un tiempo de margen para que arranque y arranca entonces traccar y wordpress , > 25 errores hace lo mismo que en el anterior pero al acabar el proceso reinicia home assistant , lo he probado forzando eliminando el docker de lamp y funciona perfectamente