Flasheo del CC2530 a Zigbee 2 Tasmota y su vinculación con domoticz

dafegod del grupo de telegram «Domoticz a lo spain» nos cuenta cómo flashear un CC2530 para introducirlo en domoticz mediante Zigbee 2 Tasmota.

Para facilitaros el flasheo, distribuimos el tutorial en distintos apartados:

Introducción

Este tutorial se basa en la Info recopilada de varios sitios y mi propia experiencia para desarrollarlo, gracias al usuario Juan Fco Sabater @juanfcosabateroca por ser mi conejillo de indias.

Material y software necesario

HAY QUE FIJARSE BIEN, TENEMOS QUE PONER EL FIRM COORDINADOR, si venimos de zigbee to mqtt, al loro, porque tendremos el firm en modo router, y no nos vale.

Parece ser que el  CC2531 (el del Usb), también se le puede meter el firm tasmota, pero tenemos que soldar unos pines en los orificios que vienen en el dispositivo y buscar la equivalencia (aquí) de los pines, porque no funciona el usb, y lo conectariamos a los pines del ESP mediante cables dupont.

Flasheo del CC2530 en LINUX (mediante puTTY)

Abrimos puTTY e instalamos las siguientes dependencias:

sudo apt-get install libusb-1.0 libboost-all-dev git

A continuación, se clona el repositorio de la herramienta y se compila, pero no se instala

Clonamos:

git clone https://github.com/dashesy/cc-tool.git

Abrimos la carpeta:

cd cc-tool                                                                                           

Compilamos:

./bootstrap script
./configure
make

Nos bajamos el firm coordinador de Koenkk.

Descomprimimos el firm de Koenkk y los archivos resultantes los movemos a la carpeta del cc-tool con el comando:

mv CC2530ZNP-Prod.bin CC2530ZNP-Prod.hex /home/TU_USUARIO/cc-tool

Conectamos el Ccdebugger con cinco cables dupont hembra:

GND * *

P22   * *  P21

          * *

RST  *  *

VCC * *

 

Lanzamos el comando para instalar el firm en el CC2530:

sudo ./cc-tool -e -w CC2530ZNP-Prod.hex

Hay un método para flashear sin el CC Debugger, con un ESP8266, pero yo no lo he probado porque tengo el debuggeador, si lo haces con el EsP82 siéntete libre de contarnos como lo has hecho y lo añadimos aquí para público conocimiento.

Flasheo del CC2530 en WINDOWS

Compilación del Zigbee to Tasmota

Como no viene incluido por defecto el zigbee, vamos a usar el tasmocompiler.

El tasmocompiler, lo tengo instalado en docker, a través de Kitematic.

Se abre kitematic y se lanza el tasmocompiler, si está en la misma máquina desde la que trabajamos entramos a él desde el navegador poniendo en la dirección localhost:3000.

Si está en otra máquina p.e. Raspberry, pondremos la direción de la Rasp:3000

Vamos rellenando los pasos con nuestros datos y en el paso 3 marcamos el check de Zigbee

En el paso 5 marco la opción development (por aquello de la hora y fecha correctas), version del core, la última, idioma, el que necesitemos/queramos, versión de la placa wemos (o la que sea), velocidad  80 MHz y pulsamos en Compilar.

Cuando termine de compilar, nos descargamos el .bin, pulsando en descargas.

Si no tienes docker, puedes compilar desde Win2 con platformio o similar y tambien puedes compilar online con Gitpod.

Pero como soy muy buena gente, he subido un .bin de un wemos compilado en el grupo de Telegram, pon en el buscador wemos-zigbee2tasmota1.bin

Flasheo del Z2M

Usamos el Tasmotizer, poniendo en consola tasmotizer.py o el tasmotizador que nos venga mejor según nuestro sistema operativo y flasheamos.

Conexionado

Conectamos el D7 al P03; D8 alP02, el 3v3 al VCC arriba izquierda y el GND al GND arriba izqda.

Configuración del Tasmota

Damos red al TASMOTA

Una vez flasheado y habiendo dejado el dispositivo conectado al pc un par de minutos, desenchufamos el USB TTL y volvemos a conectarlo al ordenador SIN presionar el pulsador y buscamos redes WIFI en nuestro entorno. Debería aparecer una red identificada como Tasmota – xxxx (Tasmota seguido de 4 dígitos)

Al conectarnos a él posiblemente el ordenador nos avisará de que no disponemos de internet, y nos abrirá una página donde buscar las redes Wifi que el dispositivo que acabamos de flashear detecta. Seleccionaremos la que nos interesa. Estableceremos la contraseña y le daremos a GUARDAR.

Esperaremos unos segundos a que se reinicie el dispositivo y buscaremos el dispositivo en nuestra red Wifi para ver con qué IP se ha alojado. Para ello, tienes distintos sistemas. Te explicamos en este enlace cómo localizar la IP mediante FING.

Configuramos nuestro nuevo TASMOTA

Nos conectamos de nuevo a nuestra red Wifi con el ordenador si no lo había hecho ya de manera automática al desconectarse del Tasmota.

Entramos en nurestro dispositivo mediante IP y seleccionamos Configuración > Configuración plantilla.

Entramos en la web de configuración de tasmota y ponemos tal cual la imagen y grabamos, o podemos poner esta plantilla:

{"NAME":"Zigbee","GPIO":[0,0,0,0,0,0,0,0,0,166,0,165,0],"FLAG":0,"BASE":18}

Ahora seleccionamos Consola

En la consola de Tasmota, si todo ha ido bien, nos debe salir:
ZIG: Zigbee started
ZIG: No zigbee devices data in Flash

Si sale un error, ponemos en consola lo siguiente (menos lo rojo):

SerialLog 0 (← es un cero)

Añadimos dispositivos

Ponemos en la consola:

 ZbPermitJoin 99 

Es el modo búsqueda hasta que se reinicie el Tasmota, y ponemos los dispositivos en modo emparejamiento, pulsando en el pulsador con un pincho durante cinco segundos (depende del dispositivo) y una vez vinculados todos, reiniciamos.

En cambio si ponemos:

 ZbPermitJoin 1 

El modo búsqueda estará activo 60 segundos. Perfecto para vincular un sólo dispositivo.

 

Renombrado de dispositivos

Ponemos en consola:

 ZbName 0x01D2, Detector Dos
  • Donde ZbName es el operador
  • Donde 0x01D2, es el device, no olvidar la coma
  • Donde Detector Dos es el friendlyname

 

Quitar dispositivos

Ponemos en la consola:

 ZbForget device 

ó

ZbForget friendlyname

 

Listar dispositivos vinculados

Ponemos en la consola:

 ZbStatus1

 

Info detallada de cada dispositivo

Ponemos en la consola:

ZbStatus2

Para el detector de movimiento Aquara

Modificar el tiempo de Occupancy

Con ZbOccupancy configuramos el tiempo de espera después de la deteccción.

La variable <x>: establece el tiempo de espera del dispositivo

Valores posibles para <x>

  • 0: sin tiempo de espera.
  • n: el número de segundos de espera. Los valores posibles son 15, 30, 45, 60, 75, 90, 105, 120.
  • -1: aplica el valor predeterminado de tu dispositivo

Ejemplo:

ZbOccupancy 0x26A4, 15

donde:

  • ZbOccupancy <——-es el comando
  • 0x26A8, ←——-es tu dispositivo
  • 15 ←——– tiempo de espera

Pues ya tenemos lista la primera parte del tutorial, tenemos nuestro Zigbee2Tasmota totalmente funcional, pero no podemos hacer nada todavía con esa información, hasta que no la integremos en nuestro sistema domótico.

Integración en domoticz

Establecemos la primera comunicación con domoticz

Consideraciones previas

Para cada sensor necesitaremos un dummie por cada dato que queramos tener en Domoticz, siempre teniendo en cuenta la limitación que tenemos en las Rules ya que cada Tasmota soporta solamente tres Rules, pero con 1000 caracteres cada una por lo que disponemos de 3000 caracteres en cada dispositivo tasmotizado.

Para saber cuántos caracteres tenemos, no uséis el notepad, usad el Sublime Text, o el Kwrite o incluso el Word y normalmente en la parte baja del editor nos aparece ese dato.

Por ejemplo, un detector de movimiento Aquara con luminosidad son aprox 275 caracteres. Un sensor de puertas 165 caracteres.

Teniendo en cuenta esta limitación, he obviado meter los datos de la batería y el de calidad de señal de conexión, pero si los necesitas (o te sobran caracteres), los puedes meter.

Un par de ejemplos de comandos útiles para gestionar las Rules.

  • Backlog RuleN <——— Para ver las Rules actuales
  • RuleN ” <———— Para borrar la Rule
  • RuleN 1 ———— Para activar la Rule. Si es la Rule 2 sería Rule2 1 y lo mismo para la Rule 3 y 1
  • RuleN 0 ————- Para desactivar la Rule.

Cada Rule, puede contener muchas rules y cada rule debe empezar con un ON y terminar con un ENDON

Establecemos la primera comunicación con domoticz

Como os comentábamos en el apartado de Material y software necesario, para poder vincular nuestro dispositivo recién flasheado a domoticz, necesitamos tener MQTT cargado en nuestra raspberry y MQTT cargado en nuestro domoticz. Si todavía no lo has hecho no puedes continuar con el tutorial porque el dispositivo no será capaz de conectar. Por ello, sigue los siguientes tutoriales clicando sobre ellos y vuelve luego para continuar a partir de este punto:

  1. Instalación de Mosquitto MQTT Broker en Raspberry Pi
  2. Cargamos MQTT en nuestro domoticz

Una vez cargado MQTT en raspberry y MQTT cargado en hardware de domoticz, vamos a crear los Dummys/Dispositivos en nuestro domoticz para darle entrada a nuestro nuevo flasheo.

Para ello, vamos a domoticz y entramos en Setup > Hardware ó Configuración > Hardware (si lo tenemos en español).

Creamos un nuevo Sensor Virtual. Si esta es la primera vez que introducimos un dispositivo creamos un hardware tipo Dummy. Si ya lo tenemos creado y nos aparece en la lista superior NO CREAMOS OTRO, sino que pulsamos directamente sobre Create Virtual Sensors. En caso de que sea tu primera vez, crear el hardware introduciendo los siguientes datos en los campos inferiores, sino pasa al siguiente paso. Fíjate en las siguientes imágenes si tienes dudas.

En este caso no tenemos creado ningún hardware tipo Dummy en el listado superior, por ello creamos uno:

Sin embargo, en este otro casi SÍ tenemos un hardware tipo dummy creado en el listado, por ello NO CREAMOS OTRO, ya que creamos nuestro nuevo dummy desde él:

A partir de aquí continuamos tanto los que teníamos ya creado este hardware por haber añadido dispositivos anteriormente como los que por primera vez acaban de crearlo. Clicamos sobre Create Virtual Sensors:

Si ya tenías integrado el Zigbee2MQTT o el Conbee, te puedes ahorrar los pasos de abajo pues ya tendrás los dummies creados,tan sólo te harán falta tus IDX. Es más incluso si tienes algún DZEvents creado, te va a funcionar de igual modo, es una gozada.

Para un detector de puertas/ventanas creamos un dummie interruptor y una vez creado le damos a editar y lo ponemos como door contact. Apúntate el IDX.

Para un detector de movimiento con sensor de luminosidad, creamos un dummie interruptor y una vez creado, le damos a editar y lo ponemos como Motion Sensor. Del mismo modo creamos un dummie tipo Lux. Apúntate los IDX.

No tengo más dispositivos zigbee, pero para bombillas, imagino que habrá que crear interruptores normales, pues necesitamos un on/off y para sensores de temperatura y/o humedad, pues dummies de temperatura/humedad (luego es cuestión de ir buscando en la consola de Tasmota el valor adecuado para asociarlo a nuestro IDX y obtener la información. Luego en la rule usaremos nvalue para on/off ó 1/0 y usaremos svalue para datos variables).

Le ruego al atrevido que lo consiga, que nos lo comunique para aportarlo al tutorial.

Al aceptar y clicar sobre OK veremos que nos aparece un mensaje que nos indica que ya podemos localizar el nuevo Dummy en el apartado de devices.

Para localizar el Dummy nos vamos a Setup > Devices ó Configuración > Dispositivos (según idioma):

Clicamos sobre Idx para ordenarlos por orden descendente (de mayor a menor) y así localizamos nuestro nuevo IDX. Deberemos anotar este valor para introducirlo posteriormente en la configuración de Tasmota:

Finalizamos al configuración y comprobamos su funcionamiento con domoticz

Una vez tenemos cargado el módulo correcto en Tasmota (que es donde nos hemos quedado en la configuración anterior) y tenemos creados los IDXs en Domoticz, vamos a configurar la comunicación con nuestra raspberry y domoticz.

Para ello entramos de nuevo en Configuración y seleccionamos Configuración MQTT

Introducimos la IP de nuestra Raspberry/Domoticz, y si tenemos USER y PASS en MQTT en la raspberry lo añadimos también aquí, y grabamos. Si no tenemos USER y PASS de MQTT en la raspberry los campos Usuario y Clave NO LOS TOCAMOS:

Toda esta integración la vamos a trabajar en la consola de Tasmota y lo haremos a través de las Rules de Tasmota.

Vamos a poner nuestra primera Rule, partiendo de los mensajes que nos llegan a la consola cuando nuestro dispositivo Zigbee (detector de movimiento Aquara) nos manda datos.

Por ejemplo en la siguiente captura vamos a centrarnos en lo que remarco en rojo y los datos que nos interesan son Illuminance y Occupancy (en azul). El resto de datos los obviamos, por el tema del ahorro de caracteres.

19:46:08 MQT: tele/zigbee2tasmota/SENSOR = {«ZbReceived»:{«0x26A4»:{«Device»:»0x26A4″,»Name»:» Detector Dos»,»Illuminance«:7,»Occupancy«:1, XXXXX YYYYY ZZZZZ}}}

Para tener un detector de presencia con datos de Lux en Domoticz, creamos la siguiente regla

Rule1 ON ZbReceived#0x26A4#Occupancy=1 DO publish domoticz/in {"idx":222, "nvalue":1} ENDON ON 
ZbReceived#0x26A4#Occupancy=0 DO publish domoticz/in {"idx":222, "nvalue":0} ENDON ON
ZbReceived#0x26A4#Illuminance DO publish domoticz/in {"idx":223, "svalue":"%value%"} ENDON

Los campos en rojo son los que tienes que cambiar según tus necesidades, a saber:

  • Rule1 ——-el número de regla
  • 0x26A4 ——- el número de tu dispositivo zigbee
  • «idx»:222 ———- El número de tu IDX

Los campos en azul los cambiamos según lo que nos diga el mensaje de la consola, ya que según el tipo de dispositivo estos pueden variar.

Para activar la regla ponemos:

 Rule1 1

En el momento que haya un cambio de estado, si la regla la hemos hecho correctamente, veremos los mensajes de los recuadros rojos en la consola de tasmota

En nuestro Domoticz veremos lo siguiente:

Para meterle más reglas a la rule ponemos en consola RuleN + la nueva regla

Para meterle más reglas a la rule ponemos en consola RuleN + la nueva regla.

Ejemplo para un detector de puertas:

Rule1 + ON 
ZbReceived#0xA196#Contact=1 DO publish domoticz/in {"idx":271, "nvalue":1} ENDON ON
ZbReceived#0xA196#Contact=0 DO publish domoticz/in {"idx":271, "nvalue":0} ENDON

Para cualquier duda o consulta tienes disponible el grupo de telegram «Domoticz a lo Spain» para entrar, ponerte cómodo y participar cuanto quieras.

Clica aquí para entrar en él

Cualquier duda, sugerencia o comentario será bien recibida en la web!