Home Assistant detectar fallo en base de datos y reiniciar docker

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"
Lenguaje del código: JavaScript (javascript)

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
Lenguaje del código: CSS (css)

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
Lenguaje del código: JavaScript (javascript)

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