IoT

Cuando Yeelight habla demasiado

By | IoT, Linux | No Comments


El plugin para Homebridge de la marca Yeelight del ecosistema de Mi Home es casi perfecto. Sencillo de instalar y funcional al máximo pero siempre esta en modo "debugging",  y en la consola no paran de lanzarse mensajes de la red hablando entre los dispositivos que tienes logando cosas como estas en el estado de Homebridge:

2018-1-24 06:59:07 > send hb to: 0x0000000004521af0
2018-1-24 06:59:07 > {"id":-1,"method":"get_prop","params":["power"]}
2018-1-24 06:59:17 > send hb to: 0x0000000004521af0
2018-1-24 06:59:17 > {"id":-1,"method":"get_prop","params":["power"]}
2018-1-24 06:59:27 > send hb to: 0x0000000004521af0
2018-1-24 06:59:27 > {"id":-1,"method":"get_prop","params":["power"]}
2018-1-24 06:59:37 > send hb to: 0x0000000004521af0
2018-1-24 06:59:37 > {"id":-1,"method":"get_prop","params":["power"]}
2018-1-24 06:59:47 > send hb to: 0x0000000004521af0
2018-1-24 06:59:47 > {"id":-1,"method":"get_prop","params":["power"]}
2018-1-24 06:59:57 > send hb to: 0x0000000004521af0
2018-1-24 06:59:57 > {"id":-1,"method":"get_prop","params":["power"]}
2018-1-24 07:00:00 > {"id":1,"method":"set_power","params":["on","smooth",500]}
2018-1-24 07:00:00 > {"id":1,"method":"set_hsv","params":[30,68,"smooth",500]}
2018-1-24 07:00:00 > {"id":1,"method":"set_hsv","params":[255,68,"smooth",500]}
2018-1-24 07:00:00 > {"id":1,"method":"set_bright","params":[26,"smooth",500]}

La instalación y configuración del plugin es sencilla:

% sudo npm install -g homebridge-yeelight

La confiruración del archivo config.json

{
"platform": "yeelight",
"name": "Yeelight",
"verboseLogging": false,
"transitions": {
"power": 500,
"brightness": 500,
"color": 500
}

A pesar de haberle dicho que no diga muchas cosas en la configuración, no para de "hablar", esa configuración es ideal si estás buscando algún comportamiento en especial, pero si no, definitivamente está molestando.

Para paliar esto debes comentar un par de líneas del archivo "yee.js".

Lo buscamos en nuestro sistema:

% find . -name "yee.js" -print

Y comentamos las líneas:

     //console.log("send hb to: " + that.did);
y
     //console.log(msg);

Link al fork aquí.

Listos 🙂

Cuando dns-sd no está disponible en tu sistema.

By | Debian, IoT, Linux, Ubuntu | No Comments


Hace muy poco tiempo necesité resolver el nombre y la IP de un servicio de un dispositivo relacionado con el IoT. Se trata de Nature Remo. Un dispositivo capaz de mimetizar cualquier control remoto que trabaje por tecnología de infrarrojos.

En este caso utilicé la instrucción dns-sd. Éste programa no es libre y es el responsable de hacer hablarse entre ellas las máquinas de la manzana (Bonjour).

Esta es la intrucción:

% dns-sd -B _remo._tcp
Browsing for _remo._tcp
DATE: ---Sun 29 Oct 2017---
11:07:03.591 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
11:07:07.835 Add 2 4 local. _remo._tcp. Remo-XXXXXX


% dns-sd -G v4 Remo-XXXXXX.local
DATE: ---Sun 29 Oct 2017---
11:08:56.804 ...STARTING...
Timestamp A/R Flags if Hostname Address TTL
11:08:56.806 Add 2 4 Remo-1FFDEF.local. 192.168.2.20

Y así finalmente obtenemos la ip qué necesitamos.

En linux tenemos la librería Avahi que podremos instalar así:

$ sudo apt-get install libavahi-compat-libdnssd-dev avahi-utils

Tecleando la instrucción:

avahi-browse -a
Obtendremos un listado de todas las máquinas de la red pero no aparecerá el servicio de dispositivo que estamos buscando, se esconde.

Esta es la manera de averiguar el nombre y posteriormente la IP del dispositivo Nature Remo.

% avahi-browse -tl _remo._tcp
+ eth0 IPv4 Remo-1FFDEF _remo._tcp local


% ping Remo-468D83.local
PING Remo-1FFDEF.local (192.168.2.20) 56(84) bytes of data.

Listos. 🙂

Homebridge en MacOSX y Nature Remo

By | Hakintosh, IoT | No Comments

La domótica está en pañales, pero no recién nacida. Un ejemplo de ello es "Nature Remo", definitivamente es uno de los mejores periféricos que permiten controlar cualquier cosa que se deje comandar por un control remoto,  pero "Nature Remo" trabaja casi por libre y la mayoría —por no decir todos—, los nexos de unión con algún asistente de control los hace mediante la aplicación IFTTT (If This, Then That). En definitiva, retales que se unen porque funcionan, pero sin algo que tienda a unificar de una forma elegante... o sí. Una de las aplicaciones reinas de la unificación y que permite crear automatismos que hagan la casa más inteligente es HomeKit de Apple, pero muy pocas marcas pueden pagar la certificación (es irrazonablemente cara)  y lo hacen encareciendo el producto, entre otras cosas. Así pasa con muchos periféricos de tecnología IoT. "Nature Remo" no se queda atrás en ese aspecto y Homebridge se encarga de enlazar todos los dispositivos inteligentes y dotarlos de las características que tienen los accesorios HomeKit.

Resultado de imagen de homekit

Vamos a instalar el servidor Homebridge en un MacOSX y luego añadir la configuración de "Nature Remo". (Parte de la documentación la he conseguido de diversas páginas en japonés puesto que Nature Remo es una start up japonesa que ha llegado a ser una de las oficiales de Google Home).

Sigue este enlace en el que detalla como instalar Homebridge https://github.com/nfarina/homebridge/wiki/Install-Homebridge-on-macOS

Una vez instalado Homebridge, necesitaremos conocer datos de nuestro dispositivo Nature Remo.

% dns-sd -B _remo._tcp
Browsing for _remo._tcp
DATE: ---Sun 29 Oct 2017---
11:07:03.591 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
11:07:07.835 Add 2 4 local. _remo._tcp. Remo-XXXXXX

## Remo-XXXXXXを確認して置き換えて実行する。
% dns-sd -G v4 Remo-XXXXXX.local
DATE: ---Sun 29 Oct 2017---
11:08:56.804 ...STARTING...
Timestamp A/R Flags if Hostname Address TTL
11:08:56.806 Add 2 4 Remo-1FFDEF.local. 192.168.2.20

En este caso: 192.168.2.20

Después de esto necesitamos encontrar la codificación que utiliza el dispositivo que deseemos registrar en HomeKit. Para ello preguntaremos a Nature Remo mediante la instrucción:

% curl -i "http://192.168.2.20/messages" -H "X-Requested-With: curl"
HTTP/1.0 200 OK
Server: Remo/1.0.62-gabbf5bd
Content-Type: application/json
{"format":"us","freq":36,"data":[4339,4448,...]}

Si no te leyera bien y te diera un error 404, trata de encender y apagar el periférico. Lo mismo con el mando, "on" y "off".

Los resultados de la respuesta que te da en pantalla debes de ponerlos en el fichero de configuración de Homebridge:

Y este es un fichero de ejemplo de configuración:

{
"bridge": {
"name": "Homebridge",
"username": "CC:42:4D:A3:CQ:61",
"port": 51826,
"pin": "034-56-185"
},

"description": "Nature Remo Control",

"accessories": [
{
"name": "Room Nature",
"accessory": "NatureRemo",
"host": "192.168.10.34",
"path": "/messages",
"delayBefore": 0,
"delayAfter": 0,
"timeout": 2000,
"retry_interval": 500,
"retry": 3,
"on": {"format":"us","freq":37,"data":[3732,1946,402,525,418,1470,420,544,400,]},
"off": {"format":"us","freq":36,"data":[3732,1945,403,543,398,1471,420,522,418]},
"command_order": [{ "on": ["on"] }, { "off": ["off"] }] }
],
"platforms": [] }

Necesitaremos instalar el plugin de Nature Remo con la línea que sigue:

% sudo npm install -g homebridge-nremo
+ [email protected]

Luego podemos ya acceder al registro en HomeKit. (aunque en japonés, la imagen es altamente descriptiva).

Añadimos accesorio escanendo el código que nos da el servidor HomeKit.

IMG_3617

Registramos Homebridge.

IMG_3618

Nos avisa de que no es un accesorio certificado y le decimos que "a delante".

IMG_3619

Una vez añadido, pulsamos "siguiente" hasta completar todos los pasos.

IMG_3621

Ya podremos hablar con Siri para que accione los dispositivos que hayamos configurado.

Enlace de interés: https://www.imore.com/how-connect-non-homekit-devices-homekit-using-homebridge