Automatización de lavandería: información y notificaciones

Esta es una publicación invitada del usuario y colaborador de Home Assistant, Nolan Gilley.

En nuestra casa, lavar la ropa ha sido una lucha desde hace bastante tiempo. Nuestra lavadora y secadora carecen de timbre, lo que provoca que se olvide la ropa y se genere un desorden apestoso que debe volverse a lavar. Decidí crear una solución monitoreando yo mismo la lavadora y la secadora con algunos dispositivos electrónicos baratos.

Como ávido usuario de Home Assistant, decidí que sería la aplicación perfecta para administrar la interfaz de usuario y el sistema de notificaciones. Ahora todo lo que necesitaba era una forma de controlar la lavadora y la secadora. Intenté usar sensores de sonido pero no los encontré confiables. Terminé optando por un acelerómetro adjunto a la parte posterior de cada aparato. También agregué interruptores de láminas magnéticos en las puertas de la lavadora y secadora para detectar si las puertas están abiertas o cerradas. Conecté los acelerómetros y los interruptores de láminas a un Moteino, un clon de arduino con un transceptor de RF. El Moteino puede realizar la lógica para determinar en qué estado se encuentran los dispositivos y comunicar esos datos de forma inalámbrica con otro Moteino que esté conectado vía serie a mi Raspberry Pi. La Raspberry Pi lee los datos de serie y los repite a través de MQTT para que los utilice Home Assistant. Esto es genial porque no tengo que ejecutar Home Assistant en Raspberry Pi. Puedo ejecutarlo en una máquina más rápida y apuntar el componente MQTT a mi Raspberry Pi.

Después de tomar algunos datos de muestra de los acelerómetros mientras cada dispositivo estaba en funcionamiento, decidí trazar los datos para ayudar a determinar los umbrales adecuados de cuándo los dispositivos estaban funcionando o apagados. Tuve que hacer esto para obtener rangos precisos para que la lavadora no activara el sensor de la secadora o viceversa. En el siguiente gráfico puedes ver la aceleración en la dirección x del acelerómetro conectado a la lavadora. Aquí es fácil ver cuando la lavadora está en funcionamiento. Utilicé la misma técnica para el acelerómetro de la secadora.

Gráfico que muestra los datos del acelerómetro.

Lo siguiente fue simplemente integrar todo con Home Assistant. Pude usar el componente MQTT para leer los estados de la lavadora y la secadora desde Moteino y mostrarlos en Home Assistant.

Estado de la secadora y lavadora en Home Assistant

A continuación, escribí scripts que se ejecutan cada vez que la lavadora o secadora completa una carga. Esto lo activa el componente de automatización. Cuando se completa la lavandería, hago que las luces de la casa se pongan rojas y me notifiquen a través de PushBullet. Una vez que se lava la ropa, se ejecuta otro script que hace que las luces vuelvan a la normalidad. Hasta ahora ha sido muy útil y muy confiable.

Arriba a la izquierda: interruptor de láminas. Abajo a la izquierda: moteino. Derecha: Acelerómetro.

Materiales usados:

El boceto del Moteino está disponible aquí.

Configuración del asistente doméstico:

La sintaxis de automatización y script aquí utiliza un formato obsoleto y que ya no es compatible.

mqtt:   broker: 192.168.1.100   port: 1883   keepalive: 60   qos: 0  sensor:   platform: mqtt   name: "Dryer Status"   state_topic: "sensor/dryer"   unit_of_measurement: ""  sensor 2:   platform: mqtt   name: "Washer Status"   state_topic: "sensor/washer"   unit_of_measurement: ""  automation:   alias: "Dryer complete"    platform: state   state_entity_id: sensor.dryer_status   state_from: "Running"   state_to: "Complete"    execute_service: script.turn_on   service_entity_id: script.dryer_complete  automation 2:   alias: "Dryer emptied"    platform: state   state_entity_id: sensor.dryer_status   state_from: "Complete"   state_to: "Empty"    execute_service: script.turn_on   service_entity_id: script.dryer_cleared  script:   dryer_complete:     alias: "Dryer Complete Script"     sequence:       - alias: "Pushbullet Notification"         execute_service: notify.notify         service_data:           message: "The dryer has finished its cycle, please empty it!"       - alias: "Living Room Lights Red"         execute_service: scene.turn_on         service_data:           entity_id: scene.red       - delay:           seconds: 1       - alias: "Living Room Lights Off"         execute_service: light.turn_off         service_data:           entity_id: group.living_room       - delay:           seconds: 1       - alias: "Living Room Lights Red"         execute_service: scene.turn_on         service_data:           entity_id: scene.red    dryer_cleared:     alias: "Dryer Cleared Script"     sequence:       - alias: "Living Room Lights Off"         execute_service: light.turn_off         service_data:           entity_id: group.living_room       - delay:           seconds: 1       - alias: "Living Room Lights Normal"         execute_service: scene.turn_on         service_data:           entity_id: scene.normal 

Recursos utilizados: