Uso de Alexa con Domoticz para conocer la temperatura del ACS (o cualquier otra)

@dafegod del grupo «Domoticz a lo spain» de telegram nos explica cómo Alexa comnunica la temperatura del ACS (o de lo que se quiera) con Domoticz

Dividimos esta guía en varios apartados

Requisitos inciales

Para poder seguir este tutorial es necesario tener instalado Node Red en nuestra Raspberry, además de Domoticz, MQTT y demás.

También es fundamental, lógicamente, disponer de un servicio de ALEXA.

Os dejamos el listado de tutoriales para poder instalar lo que necesitéis antes de empezar esta guía:

  1. Material necesario para poner en marcha domoticz
  2. Instalación de domoticz desde cero
  3. Instalación de Mosquitto MQTT Broker en Raspberry Pi 
  4. Configurar MQTT con usuario y contraseña (opcional)
  5. Cargamos MQTT en nuestro domoticz
  6. Instalar Watchdog en domoticz
  7. Crear usuario y contraseña para domoticz (opcional)
  8. Cómo instalar node red en nuestra raspberry pi

Descarga del software necesario

Damos por hecho que ya tenemos el software necesario a consecuencia del seguimiento de los tutoriales anteriores para instalar Node red.

OJO a los que tenéis USER y PASS en MQTT de la raspberry y en MQTT de domoticz. Debéis tenerlo en cuenta a la hora de seguir el tutorial.

Preparamos para configurar Alexa

El primer paso es entrar en Node-Red Home Alexa Skill y crear una cuenta.

Una vez creada la cuenta, hay que logearse y nos vamos a la pestaña Devices:

Una vez en la pestaña Devices, pinchamos en Add Device, en el cuadro que sale y ponemos el nombre (Ojo con el nombre que pones, después se lo tendrás que decir a tu Alexa y ya sabemos como se las gasta nuestra amiga).

La frase que funciona es exactamente esta “Alexa, cual es la temeperatura en...

En Description hay que poner algo o no te deja continuar 😉

Después en la parte de Actions clicamos en Query Current Temp

Después pinchamos en THERMOSTAT (no nos deja clicar en otro lado, porque tiene que ser el mismo Application Type que la Action que escogimos antes) y por último le damos a OK.

Repetimos este proceso para cada sensor de temperatura del que queramos la información en Alexa.

TIP: En la misma página en la pestaña Documentation hay mucha info sobre todo lo que esta skill es capaz de hacer, aunque nosotros nos estamos centrando en pedirle a Alexa información sobre temperaturas: controlar luces, ajustar brillo o incluso con un termostato inteligente subir o bajar la temperatura de una habitación, bueno ya sabes, imaginación al poder.

Configuración de Alexa

Una vez que tengamos la cuenta creada y los Devices creados, vamos a configurar Alexa.

Desde la aplicación Alexa en tu teléfono / tableta busca ‘Node-RED’ en la sección Skills‘.

Asegúrate de que el creador de la misma es Ben Hardill, porque hay otra más.

Una vez habilitada la skill, se te pedirá que vincules tu cuenta. Te pedirá el mismo nombre de usuario y contraseña que utilizaste cuando creaste la cuenta en Node-Red Home Alexa Skill.

Una vez que la cuenta esté vinculada, puedes descubrir los dispositivos que declaraste anteriormente. Puedes hacerlo desde la aplicación o diciendo «Alexa, descubre nuevos dispositivos».

Configuramos Node Red

Abrimos node red (Recuerda que accedemos a ella introduciendo la IP de nuestra raspberry seguido de :1880).

El amigo emme73, se ha currado un flow con todo lo necesario para que Alexa nos diga la temperatura del Device que nosotros le digamos AQUÍ la página del proyecto.

Lo dicho, al lío… entramos en nuestro Node-Red y vamos a Importar un nuevo Flujo (Flow)

Introducimos en el recuadro siguiente texto (lo copiamos con control +c) y lo pegamos en el recuadro (con control + v):

[{"id":"27daba02.e77f66","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"5e0f7390.ac76fc","type":"debug","z":"27daba02.e77f66","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":649.9826393127441,"y":204.26743507385254,"wires":[]},{"id":"6ccd7195.dcac4","type":"alexa-home-resp","z":"27daba02.e77f66","x":872.9825706481934,"y":247.26727485656738,"wires":[]},{"id":"fdda0bd5.945698","type":"http request","z":"27daba02.e77f66","name":"dz HTTP API","method":"GET","ret":"obj","url":"","tls":"","x":660.9823989868164,"y":102.26733589172363,"wires":[["f0fb24bf.331568"]]},{"id":"f0fb24bf.331568","type":"function","z":"27daba02.e77f66","name":"create extra info key","func":"var tDev = msg.payload.result[0].Temp;\n\nvar msg = {};\nmsg.extra = {\n \"temperatureReading\": {\n \"value\": tDev\n },\n \"applianceResponseTimestamp\": new Date().toISOString()\n};\n\nmsg.complete = true ;\nreturn msg; \n","outputs":1,"noerr":0,"x":881.9824600219727,"y":102.26729965209961,"wires":[["1c5583e8.3c4fec"]]},{"id":"7dff1d0a.f67854","type":"join","z":"27daba02.e77f66","name":"join Alexa msg with Domoticz reply","mode":"custom","build":"merged","property":"","propertyType":"full","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":377.05187797546387,"y":204.54857444763184,"wires":[["5e0f7390.ac76fc","9ccab27b.fd141"]]},{"id":"1c5583e8.3c4fec","type":"delay","z":"27daba02.e77f66","name":"","pauseType":"delay","timeout":"50","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":380.0520439147949,"y":154.85762977600098,"wires":[["7dff1d0a.f67854"]]},{"id":"9ccab27b.fd141","type":"function","z":"27daba02.e77f66","name":"fix payload key","func":"delete msg.payload;\nmsg.payload = true;\nreturn msg; \n","outputs":1,"noerr":0,"x":642.9998550415039,"y":247.27776908874512,"wires":[["6ccd7195.dcac4"]]},{"id":"ab118bdb.dfa258","type":"function","z":"27daba02.e77f66","name":"convert Alexa Name ==> Domoticz IDX","func":"var lnkUrl = \"http://127.0.0.1:8080/json.htm?type=devices&rid=\" ;\nvar reqRoom = msg.name;\n\n/*\nmap temp devices together using syntax:\n\n\"Device name\" (the same used in Alexa Definition) : Domoticz IDX\nexample\nvar map = {\n \"Kitchen\" : 999,\n \"Bedroom\" : 888\n}\n*/\n\nvar map = {\n \"Device Name\" : 1\n}\n\nvar msg = {};\nmsg.url = lnkUrl + map[reqRoom];\nreturn msg;","outputs":1,"noerr":0,"x":384.0626220703125,"y":103.14242935180664,"wires":[["fdda0bd5.945698"]]},{"id":"e10fdf6f.0e978","type":"alexa-home","z":"27daba02.e77f66","conf":"","device":"36724","acknoledge":false,"name":"","topic":"","x":83,"y":102.26736164093018,"wires":[["7dff1d0a.f67854","ab118bdb.dfa258"]]},{"id":"2ad8fc62.0363f4","type":"comment","z":"27daba02.e77f66","name":"TEMPERATURE","info":"","x":152.05902099609375,"y":47,"wires":[]}]

Y tras pegar el texto clicamos sobre IMPORT:

Nos quedará el flujo con este aspecto:

Hacemos doble click en el nodo que pone Alexa Home y en la ventana que se abre, le damos al lapicito para poner los datos de nuestra cuenta de Node-Red Home Alexa Skill.

Una vez puesto el usuario y contraseña, le damos a ADD, arriba a la derecha.

Una vez introducidos nuestros datos, cuando pulsemos en la flechita al lado del botón de refrescar nos aparecerán nuestros dispositivos, si no aparecieran vuelve a darle al botón
de refrescar hasta que aparezcan.

Elegimos entre los que nos aparezcan el adecuado. Se observa que el nombre del nodo ha cambiado por el nombre del Device elegido.

Si quisiéramos tener más de un Device, damos click sobre el nodo para marcarlo y copiamos con el botón derecho del ratón ó con CTRL+C.

En un sitio vacío, pegamos y ya tenemos un nodo igual con los mismos datos, doble click para editar y buscamos en la pestañita Devices el device que queremos agregar. Le
damos a Done y a continuación ponemos un cable hasta el nodo “convert Alexa Name ==> Domoticz IDX” y otro cable hasta “join Alexa msg with Domoticz reply

Bien, ahora nos vamos al node de la derecha que pone “convert Alexa Name ==> Domoticz IDX”, doble click en el nodo pare entrar a editar.

En la línea 1 vamos a adaptar el puerto de nuestro domoticz en caso de no tener puesto el que viene por defecto y después vamos a tocar tan sólo dos parámetros por device que queramos poner. Viene explicado en perfecto inglés, pero vamos a traducir para que quede más entendible:

En la línea 16, donde pone “Device name” : 1, ponemos el nombre del Device a controlar, incluyendo las comillas, exactamente tal y como lo pusimos cuando lo dimos de alta en la página Node-Red Home Alexa Skill o de lo contrario no funcionará.

Donde está el número, pondremos el IDX del dummy de temperatura a controlar.
Si vamos a poner más Devices, en las líneas 10 y 11, tenemos un ejemplo de como habría que ponerlo, es tan sencillo como poner una coma detrás del IDX y darle a Enter para un salto de línea.

Cuando terminemos, le damos a Done.

Si todo ha salido bien cuando le digas a Alexa: “Alexa, cuál es la temperatura en …” te dirá la temperatura en el Device elegido.

Cómo localizar errores en node red con un ejemplo

Os damos un truquito para vuestra información. Tenemos un node en el listado de la izquierda que se llama DEBUG. Cuando lo llevamos a la pantalla principal, lo conectamos a un node y lo activamos, nos dá mucha información (como un LOG) en la columna de la derecha del todo. Os explicamos con unas cuantas imágenes cómo conseguirlo:

Mantén el cursor pulsando la bola del final del recuadro del mqtt/in y arrástrala hasta la bola del inicio del recuadro del debug:

Clicamos sobre deploy:

Activamos la cucaracha y a la derecha nos aparecerá el debug con info de errores /( y así podremos analizar qué estamos haciendo mal) o info correcta:

Inicio automático de Node RED con Raspberry Pi

Recordar que por defecto Node RED está apagado. Podemos iniciarlo de dos formas diferentes: manual o automático.

Para inicio manual introducimos en puTTY:

node-red-start

Para que Node Red inicie de forma automática (tras caídas de red, o tras apagar y encender la raspberry) lanzamos el siguiente comando en puTTY:

sudo systemctl enable nodered.service

Agradecimientos

Agradecer a nuestros amigos DrBoom y MikiGGG del grupo Domoticz a lo spain” de telegram su gran participación testando y localizando mejoras en este sistema.

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!