domingo, 2 de marzo de 2014

Termostato Z-Wave Horstmann HRT4-ZW


Z-Wave es una manera fácil y relativamente barata de interconectar aparatos en casa, sin cables, y sin recurrir al WIFI.

Por ejemplo, un termostato en un habitación puede comunicarse con un conmutador en la caldera para encender y apagar la calefacción.  Además, tanto termostato como conmutador pueden controlarse desde un nodo central, para cambiar la temperatura de arranque del termostato, o directamente encender o apagar la calefacción. Si además el controlador lo tenemos conectado a internet, podemos, por ejemplo, subir la calefacción desde el trabajo para llegar a casa y estar calentitos.

Todo esto se puede hacer con relativa facilidad con el termostato Horstmann HRT4-ZW  junto con el conmutador ASR-ZW.   El controlador Z-Wave puede ser un simple lapiz USB, como el Z-Wave Aeon Labs Z Stick Series 2, pinchado en una máquina con Ubuntu. Los pasos a seguir:

 Asociar el termostato y el conmutador a la red zwave del controlador

  • Para ello, antes tenemos que disociar conmutador y termostato entre sí (si lo hemos hecho ya, siguiendo las instrucciones del aparato).  Ponemos en ON el dip switch 1 del termostato, giramos la rueda de la temperatura hasta que marque "P", y pulsamos dos veces en la rueda hasta que parpadee "PP".  Ya están reseteadas las conexiones
  • Asociamos el conmutador/receptor a nuestro controlador.  Pulsamos el botón del controlador, para ponerlo en modo "asociar", y pulsamos prolongadamente el botón de "red" del conmutador, hasta que se encienda la luz verde.
  • Asociamos el termostato a nuestro controlador.  Pulsamos el botón del controlador para ponerlo en modo "asociar".  Nos aseguramos de que el dip switch 1 del termostato esté en ON, y giramos la rueda hasta que muestre "L" hacemos un click en la rueda.

 

  Asociar entre sí termostato y conmutador

  •  Seguimos las instrucciones del Horstmann (dip 1 en ON, girar rueda hasta "A", click en rueda, y click prolongado en botón de red del controlador hasta luz verde)


Ahora tenemos que poner en marcha el controlador en nuestro Ubuntu.  Hay que bajarse algunos proyectos por Subversion, y compilarlos.

  

Open-zwave

 Es la librería genérica que permite la conexión con el controlador zwave

  •  Descargar la versión actual del svn de la librería open-zwave , compilarla e instalarla (make install)
  •  Ejecutar MinOZW, una pequeña aplicación que se habrá generado al compilar.  Generará un xml , zwcfg_*.xml con la información de los dispositivos encontrados.  Esto he visto que no es necesario. Además, el MinOZW no genera xml, parece ser sólo una aplicación mínima que usa las librerías y saca un log, para comprobar que todo está correcto.

   

Open Zwave Control Panel

  • Descargar esta aplicación que nos permitirá controlarlo todo desde la web.  Coger la última versión del svn, y compilar (make).  (Ver Actualización al final de esta entrada).   Puede que sea necesario descargar también la libreria libmicrohttp.
  •  En el directorio inicial, donde se ha hecho el "make", hay que copiar el directorio "config" del open-zwave.  Es el que tiene toda la configuración de los dispositivos  zwave.
  •  Copiar también  el archivo zwcfg_*.xml al directorio config recién creado, cambiándole de nombre, de manera que se llame zwcfg.xml (este paso no estoy seguro de que sea necesario)  Confirmado, no es necesario.
  • Ahora ya podemos ejecutar el panel de control con  "./ozwcp -p numpuerto",  y conectarnos al mismo desde un explorador: http://127.0.0.1:puerto/. Si todo ha ido bien, veremos el panel de control vacío.  En "Device name" ponemos nuestro stick , normalmente "/dev/ttyUSB0", y le damos a "Initialize".  Ahora podemos ver nuestros tres aparatos zwave.


  •  Cambiar el Wake-up interval del termostato.  El termostato va a pilas, y por defecto no está en modo "escucha" zwave muy frecuentemente. Es conveniente disminuir el intervalo de tiempo entre escuchas a, por ejemplo 360 segundos, aunque esto repercutirá en una menor duración de las pilas.  Claro que para cambiar el parámetro, el termostato debe estar "despierto" o de lo contrario la orden de encola a la espera de que despierte.  No hay problema.  Si ponemos el dip-switch 1 en "On" y luego otra vez en "Off", el termostato se pondrá en modo escucha.



  •  Otros parámetros configurables o que se pueden consultar, entre ellos los más interesantes, como el encendido/apagado de la caldera, o la temperatura del termostato:




 

Problemas encontrados

  •  En mi ubuntu, el panel de control no compilaba, y tuve que cambiar una linea del Makefile, la que define la variable "DEBUG_CFLAGS", para quitar el parámetro "-WError"
  • Para seleccionar la temperatura de encendido de la calefacción, no hay que poner decimales.  Si lo hacemos, aparecen datos extraños.
  •  La temperatura leída por el termostato parece que se reciba correctamente.


Más cosas
  • Sería interesante poder programar la temperatura del termostato para que cambiase a unas horas determinadas.
  • Para acceso remoto desde internet, es interesante disponer de un servidor web que haga de proxy (yo uso ngnix), y de paso pida una contraseña. 
  • Para el arranque automático del servidor cuando se reinicia la máquina, es muy útil un script para init.d. Si le interesa a alguien, lo cuelgo.  Para instalarlo, hay que copiarlo a /etc/init.d, editarlo para adaptar la configuración al entorno, e instalarlo con update-rc.d ozwcp default y update-rc.d ozwcp enable.
  • El termostato se comercializa también con la marca y modelo Secure SRT-322


Actualización
  • En abril del 2016 he actualizado tanto open-zwave com open-zwave-control-panel.  Ahora están en Git, y el interface web es más moderno y completo.  La mayor parte de lo anterior sigue vigente, salvo que para compilar open-zwave-control-panel he tenido que editar el Makefile, para definir la ubicación de open-zwave.  En concreto, esta línea:    OPENZWAVE := ../open-zwave-master
  • También es posible hacer un script .sh que se ejecute con un cron, para cambiar la temperatura a una hora determinada (por ejemplo, bajarla por la noche).  Básicamente, hace un post a la página del panel de control (Si a alguien le interesa, lo cuelgo).

  • El nuevo panel de control basado en node.js puede instalarse con:  
    • sudo snap install zwave-js-ui --candidate  
    • Y posteriormente se accede con http://localhost:8091
    • Para permitir acceder desde otras máquinas: sudo snap set zwave-js-ui server.host=0.0.0.0


2 comentarios:

  1. muchas gracias por el tutorial , estoy interesado en controlar mi termostato via z-wave, usando jeedom y necesito los componentes a comprar, este termostato puede ser uno de ellos.

    ResponderEliminar
  2. muchas gracias por el tutorial , estoy interesado en controlar mi termostato via z-wave, usando jeedom y necesito los componentes a comprar, este termostato puede ser uno de ellos.

    ResponderEliminar