
Mantenimineto de una casa inteligente
Resulta que no puede simplemente configurar una casa inteligente y esperar que todo siga funcionando sin problemas. Una cierta cantidad de mantenimiento de rutina es esencial.
Si tiene automatizaciones que no se ejecutan con mucha frecuencia, vale la pena activarlas de vez en cuando para asegurarse de que sigan funcionando. Las cámaras son un buen ejemplo. He escrito sobre la complicada configuración de mi cámara, y definitivamente es algo que necesita una prueba ocasional. Tiendo a vigilar bastante las cámaras, ya que pueden ser el eslabón más débil: las cámaras IP Wifi tienen una tendencia a desconectarse ocasionalmente.
Una de mis cámaras está configurada para enviar notificaciones cada vez que detecta a una persona, incluso cuando estoy en casa y es probable que esa persona sea yo. Debido a su posición, se activa cada semana cuando llega el momento de sacar los contenedores, pero las falsas alarmas valen la pena como comprobación de cordura de que la pila completa de Zoneminder -> zmEventNotification -> Home Assistant -> AppDaemon -> Pushover es trabajando según lo previsto.
Los dispositivos que funcionan con baterías suelen ser el eslabón más débil. Cuando era usuario de Samsung SmartThings, los sensores ocasionalmente se desconectaban. Hasta ahora he tenido bastante suerte con mis sensores ZWave, aunque uno de mis sensores de contacto de puerta dejó de funcionar. Era un sensor multipropósito y todavía informaba la temperatura correctamente, por lo que no sospeché que algo andaba mal. Como estaba en una puerta que rara vez uso, podría haber estado fuera de acción durante meses antes de que finalmente me diera cuenta. Ahora me aseguro de verificar los sensores periódicamente si no están asociados con automatizaciones que veo que funcionan regularmente.
También descubrí que algunos de mis sensores de batería ZWave informan constantemente que el nivel de la batería es del 100%. Esto, aparentemente, no es infrecuente. Es otra razón para vigilar los sensores.
Me hizo pensar en cómo puedo automatizar algunas de estas comprobaciones. Obviamente, no puedo automatizar la apertura de una puerta para ver si el sensor funciona correctamente, pero puedo automatizar una verificación para ver si el sensor está vivo. Las entidades ZWave en Home Assistant tienen un atributo llamado ReceivedTS que es la marca de tiempo de la última señal recibida de la entidad. Para aquellas entidades que deberían informar regularmente, es bastante trivial escribir un pequeño programa AppDaemon para verificar que se haya recibido una señal dentro de un período de tiempo determinado. Puedo configurar AppDaemon para que ejecute el código en un intervalo regular y envíe una notificación si no se ha recibido una señal durante un período de tiempo determinado.
Excepto que no es tan fácil. Eso solo funciona para ciertos tipos de dispositivos ZWave. Por ejemplo, tengo una toma de corriente ZWave, y eso solo se actualiza cuando se enciende o se apaga. Eso significa que no es tan simple como verificar todos los dispositivos ZWave: tendría que mantener una lista de entidades o poner una lógica complicada para determinar cuáles son relevantes. Para mis propósitos actuales, estoy interesado en cualquier sensor con un atributo de nivel de batería; todos mis sensores de batería deberían informar regularmente.
Luego está la cuestión de con qué frecuencia verificar y con qué frecuencia enviar notificaciones. Si hay un problema y sé que va a persistir por un tiempo hasta que pueda solucionarlo, no quiero recibir una notificación cada hora. Diariamente probablemente esté bien; actuaría como un recordatorio, al menos.
Realicé una verificación rápida en AppDaemon que hace el trabajo, verificando una vez al día para confirmar que los sensores han informado en las últimas 12 horas:
import appdaemon.plugins.hass.hassapi as hass from datetime import datetime, timedelta, time class ZwaveMonitor(hass.Hass): def initialize( self ): self .log( 'ZWave Monitor app initialising' ) self .handle = self .run_daily( self .check_zwave, time( 7 , 0 , 0 )) def check_zwave( self , kwargs): results = self .get_state( 'zwave' ) for sensor in results: if 'battery_level' in results[sensor][ 'attributes' ]: received = results[sensor][ 'attributes' ][ 'receivedTS' ] receivedtime = datetime.strptime(received[ 0 : 19 ], '%Y-%m-%d %H:%M:%S' ) if receivedtime < datetime.now() - timedelta(hours = 12 ): detail = "{} last received at: {}" . format (sensor, received) self .call_service( 'notify/pushover' , message = detail, title = 'ZWave Sensor Issue' ) |
Sin embargo, hay otro sensor con problemas, y ese es mi sensor de temperatura de RF exterior. Para eso, necesitaría la propiedad last_updated de la entidad, que también puede ser leída por AppDaemon. Sin embargo, en lugar de simplemente cambiar mi guión rápido y sucio, estoy pensando en formas de construir un sistema de monitoreo más genérico.
En esta etapa, no estoy seguro de si intentar construirlo todo dentro de Home Assistant o enviar datos a una herramienta de monitoreo especializada. La ventaja de HA es que ya sabe cómo enviar las notificaciones que necesito, pero por otro lado, también se podría usar una herramienta de monitoreo adecuada más allá de HA.
Alimentos en los que pensar y otro proyecto para ir a la lista …