C贸mo agregu茅 un nuevo dispositivo al SmartThings Hub, parte 1

En este art铆culo quiero hablar sobre mi experiencia en el desarrollo del denominado controlador de dispositivos para SmartThings. La tarea consist铆a en agregar un dispositivo universal basado en el protocolo Z-Wave, Z-Uno , as铆 como el procesamiento de dispositivos secundarios conectados a 茅l.



La introducci贸n al desarrollo me llev贸 bastante tiempo, pero despu茅s de aclarar un estudio cuidadoso de la mayor parte de la documentaci贸n, el desarrollo posterior ya no requiri贸 mucho esfuerzo. Como resultado de esto, se decidi贸 escribir este art铆culo para facilitar el trabajo del usuario de habla rusa.

Todo el proceso de desarrollo se lleva a cabo en la aplicaci贸n web SmartThings IDE del lenguaje GroThy. Es m谩s conveniente realizar las pruebas desde un dispositivo m贸vil, sin embargo, es posible crear simuladores de dispositivos en el mismo entorno de desarrollo. En el caso de probar el shell gr谩fico, ya es necesario usar la aplicaci贸n m贸vil SmartThings Classic ( Android , iOS ).

Un dispositivo enchufable es una placa que le permite agregar control a casi cualquier dispositivo en Z-Wave. Adem谩s, los dispositivos conectados pueden tener un n煤mero diferente (hasta 32 unidades). En consecuencia, a nivel de software, todos los tipos de dispositivos conectados tambi茅n deben procesarse y controlar la salida a la aplicaci贸n.

Lista de tipos procesados:

  • Switch Binary: dispositivos con solo dos posiciones: encendido / apagado
  • Switch Multinivel: dispositivos que se pueden apagar o encender con diferentes significados. Por ejemplo, un d铆mero.
  • Sensor multinivel: sensores que env铆an valores no binarios. Por ejemplo, un sensor de temperatura.
  • Medidor: dispositivos como un contador
  • Notificaci贸n: los sensores binarios ser谩n de este tipo. Por ejemplo, un interruptor de l谩minas.
  • Termostato: una clase separada de equipos que se encarga de trabajar con el termostato


Estructura del documento


Se pueden distinguir dos bloques l贸gicos:

  • Descripci贸n y metainformaci贸n sobre el manejador. Esto incluye informaci贸n sobre el dispositivo, c贸mo se debe dibujar la IU y otra informaci贸n. Se asigna por el m茅todo metadata() .


  • Los m茅todos de manejador son la l贸gica del manejador. Son responsables de la "comunicaci贸n" con el dispositivo.

    Por separado, podemos distinguir el m茅todo parse (), que interpreta los comandos recibidos del dispositivo.

Describir茅 con m谩s detalle el prop贸sito y el contenido de cada bloque durante la serie de art铆culos.

Metadatos


Como puede ver en el nombre del m茅todo, este contiene metainformaci贸n.

Consideremos en orden lo que se incluye en este bloque:

Definici贸n ()


En este m茅todo, los argumentos indican tres cosas, respectivamente: el nombre del controlador, el espacio de nombres y el nombre del autor.

  • El nombre del controlador se usar谩 en el futuro al publicar y al crear dispositivos secundarios.
  • El espacio de nombres se usa cuando se buscan controladores por nombre para asegurarse de que se encuentre el correcto, por ejemplo, entre los controladores con el mismo nombre. SmartThings recomienda usar su apodo en github.
  • El nombre del autor se completa con su nombre.

  definition(name: "Your device", namespace: "yournamespace", author: "your name") {} 

Las siguientes variables se pueden declarar en el cuerpo del m茅todo: attribute, capability, command, fingerprint . Adem谩s, consideraremos con m谩s detalle qu茅 es y cu谩ndo se aplica.

Conexi贸n y huellas digitales


Conectamos nuestro dispositivo. En nuestro caso, se utilizar谩 SmartThings V2 Hub y Z-Uno .

En el momento de agregar un nuevo dispositivo Z-Wave o ZigBee, el concentrador intentar谩 reconocer a qu茅 tipo de dispositivo intentan conectarse y comenzar谩 a buscar el controlador m谩s relevante. Lo elegir谩 por "Huellas digitales". Si el concentrador no encuentra coincidencias en los controladores personalizados, intentar谩 usar una de las plantillas est谩ndar m谩s cercanas.

Las "huellas digitales" se configuran en el controlador para indicar qu茅 tipos de dispositivos admite. La documentaci贸n oficial dice que ser谩n diferentes para dispositivos Z-Wave y dispositivos ZigBee, consideraremos la implementaci贸n para Z-Wave.

Los dispositivos de protocolo Z-Wave almacenan informaci贸n sobre su fabricante, tipo de dispositivo, sus capacidades, etc. Durante la llamada "entrevista" con el dispositivo, ST recopila esta informaci贸n en la descripci贸n sin formato de Z-Wave. Un ejemplo de tal l铆nea:

 zw:Ss type:2101 mfr:0086 prod:0102 model:0064 ver:1.04 zwv:4.05 lib:03 cc:5E,86,72,98,84 ccOut:5A sec:59,85,73,71,80,30,31,70,7A role:06 ff:8C07 ui:8C07 

El valor de cada clave se utiliza para completar la "huella digital". Una descripci贸n detallada de cada art铆culo se puede encontrar aqu铆 . Consideraremos aquellos que se utilizar谩n en nuestro controlador.

Para encontrar esta l铆nea con informaci贸n, debe ir a la pesta帽a 'Mis dispositivos' y hacer clic en el dispositivo que nos interesa (antes de eso, el dispositivo debe agregarse a la red).



mfr es un valor de 16 bits que contiene la ID del fabricante. Puede encontrar una lista de fabricantes y sus ID aqu铆 .

prod : un valor de 16 bits que contiene ID de tipo de producto: una ID de tipo de dispositivo 煤nico.

El modelo es un valor de 16 bits que contiene la ID del producto.

inClusters : un valor de 8 bits que establece la necesidad de una clase de comando particular. Por ejemplo, si necesitamos indicar que nuestro controlador funcionar谩 con MultiChannel CC, debe escribir su c贸digo 0x60. La lista de disponibles para SmartThings CC se puede encontrar aqu铆 .

Estas cuatro teclas son suficientes para que el concentrador comprenda exactamente a qu茅 dispositivo pertenece este controlador. Un ejemplo de c贸mo se usan conmigo:

 fingerprint mfr: "0115", prod: "0110", model: "0001", inClusters: "0x60" fingerprint mfr: "0115", prod: "0111", inClusters: "0x60" 

Un dispositivo puede tener una mayor cantidad de par谩metros, en cuyo caso puede conectarse con 茅xito a este controlador, sin embargo, si al menos uno de ellos no coincide con la huella digital declarada, el dispositivo ignorar谩 este controlador.

Smartthings recomienda agregar informaci贸n sobre el fabricante (mfr) y el modelo (prod, modelo) en la huella digital, para excluir los casos en que la elecci贸n del procesador no sea obvia. Por ejemplo, cuando las huellas digitales de una de las plantillas o ejemplos utilizados por defecto coincidan con las suyas.

Ubicaci贸n en c贸digo
 metadata { definition(...) { ... fingerprint mfr: "0115", prod: "0110", model: "0001", inClusters: "0x60" fingerprint mfr: "0115", prod: "0111", inClusters: "0x60" } ... } 


Se planea un ciclo completo de art铆culos, hasta el lanzamiento. Espero que esta informaci贸n te ayude en el desarrollo.

Source: https://habr.com/ru/post/es427923/


All Articles