Descripción general del modo "hazlo tú mismo" de SONOFF
¿Quieres controlar el dispositivo SONOFF con tu propia app o plataforma de domótica? ¡El modo "hazlo tú mismo" te ayuda!
El Modo DIY está diseñado para usuarios y desarrolladores de domótica IoT que deseen controlar el dispositivo SONOFF a través de una plataforma de código abierto o un cliente HTTP local, en lugar de la aplicación eWeLink. En el Modo DIY, cuando el dispositivo se conecta a la red, publica sus servicios y capacidades según el estándar mDNS/DNS-SD. Antes de publicar el servicio, el dispositivo ha habilitado el servidor HTTP en el puerto declarado por el registro DNS SRV. El dispositivo expone las capacidades mediante una API RESTful basada en HTTP. Los usuarios pueden obtener información del dispositivo y controlarlo mediante una solicitud API HTTP.
Dispositivo compatible
Clase de producto | Dispositivo | Nota sobre la versión del firmware |
---|---|---|
Enchufe de bricolaje de un solo canal | El firmware 3.5.0 hace referencia a este artículo El firmware 1.4.0 hace referencia a este artículo | |
Atenuador de un solo canal para bricolaje | D1 | El firmware 3.5.0 hace referencia a este artículo |
Medidor de energía inteligente | SPM-Principal | El firmware 1.2.0 hace referencia a este artículo |
Bombilla LED inteligente | El firmware 1.4.0 hace referencia a este artículo |
Modo eWeLink y modo DIY
Los dispositivos SONOFF [1] pueden funcionar en modo eWeLink o en modo DIY. En el modo eWeLink, el dispositivo está conectado a la nube eWeLink y controlado por la aplicación eWeLink, mientras que en el modo DIY, el dispositivo publica su servicio de capacidad y está controlado por una solicitud HTTP Post.
Los pasos para ingresar al modo DIY y conectarse a una red WiFi existente:
- Ingresar al modo de emparejamiento compatible (AP) presionando prolongadamente el botón de emparejamiento durante 5 segundos después de encender
- Conexión del punto de acceso denominado ITEAD-XXXXXXXXXX con la contraseña predeterminada 12345678 a través de un teléfono móvil o PC
- El navegador visita http://10.10.7.1/
- Completar el SSID y la contraseña de la red WiFi existente
- Ingresando al modo DIY exitosamente con la red WiFi específica conectada.
Ejemplo de un enchufe DIY de un solo canal (BASICR3, RFR3, MINI/MINIR2, MINIR3) que ingresa al modo DIY:
- Encendido;
- Mantenga presionado el botón durante 5 segundos para ingresar al modo de emparejamiento compatible (AP)
Consejos para el usuario: Si el dispositivo se ha emparejado con la aplicación eWeLink, es necesario reiniciar el dispositivo presionando prolongadamente el botón de emparejamiento durante 5 segundos, luego presione otros 5 segundos para ingresar al modo de emparejamiento compatible (AP) - El indicador LED parpadeará continuamente
- Desde la configuración WiFi del teléfono móvil o PC, se encontrará un punto de acceso del dispositivo llamado ITEAD-XXXXXXXXXX , conéctelo con la contraseña predeterminada 12345678
- Abra el navegador y acceda a http://10.10.7.1/
- A continuación, complete el SSID y la contraseña del WiFi con el que se habría conectado el dispositivo.
- Éxito, ahora el dispositivo está en modo DIY.
Ejemplo de regulador de intensidad DIY de un solo canal (D1) que ingresa al modo DIY:
- Encendido;
- Mantenga presionado el botón de emparejamiento del control remoto RM433 durante 5 segundos para ingresar al modo de emparejamiento compatible (AP).
Consejos para el usuario: Si el dispositivo se ha emparejado con la aplicación eWeLink, es necesario reiniciar el dispositivo presionando prolongadamente el botón de emparejamiento del control remoto RM433 durante 5 segundos, luego presione otros 5 segundos para ingresar al modo de emparejamiento compatible (AP) - La luz regulable que está conectada con D1 parpadeará continuamente (saltará rápidamente del 100% al 1%, del 1% al 100%…)
Los pasos del 4 al 7 son los mismos que en el ejemplo del enchufe DIY de un solo canal.
Ejemplo de medidor de potencia inteligente (SPM-Main) que ingresa al modo "Hágalo usted mismo":
- Encendido;
- Mantenga presionado el botón en SPM-Main durante 5 segundos para ingresar al modo de emparejamiento Bluetooth.
Consejos para el usuario: Si el dispositivo se ha emparejado con la aplicación eWeLink, es necesario reiniciar el dispositivo presionando prolongadamente el botón de emparejamiento durante 5 segundos para ingresar al modo de emparejamiento Bluetooth. - El indicador LED parpadeará rápidamente.
- Conecte SPM-Main a su enrutador mediante un cable Ethernet; para ello, dispone de uno de los siguientes métodos de conexión.
- Escriba la dirección IP de SPM-Main en el navegador de su computadora y acceda.
- A continuación, introduzca el SSID y la contraseña de WiFi.
- ¡Éxito! El dispositivo ya está en modo "hazlo tú mismo".
Ejemplo de bombilla LED inteligente (B02-BL-A60, B05-BL-A19, B05-BL-A60) que entra en modo "hazlo tú mismo":
- Encendido;
- Cuando la luz esté encendida, presione el interruptor de luz 5 veces repetidamente en un intervalo de cada 1 s (Apagado-ENCENDIDO-Apagado-ENCENDIDO-Apagado-ENCENDIDO-Apagado-ENCENDIDO-Apagado-ENCENDIDO).
- El “destello rápido” indica que el dispositivo ingresa al modo de emparejamiento compatible (AP).
- Desde la configuración WiFi del teléfono móvil o PC, se encontrará un punto de acceso del dispositivo llamado ITEAD-XXXXXXXXXX , conéctelo con la contraseña predeterminada 12345678
- Abra el navegador y acceda a http://10.10.7.1/
- A continuación, complete el SSID y la contraseña del WiFi con el que se habría conectado el dispositivo.
- Éxito, ahora el dispositivo está en modo DIY.
Nota:
- La configuración del usuario se limpiará una vez que se cambie el modo de operación de uno a otro.
- El enrutador o AP WiFi debe funcionar en 2,4 GHz y admitir el servicio mDNS.
- Significado del parpadeo del LED
Parpadeo único rápido: el dispositivo no se conecta a la red WiFi;
Parpadeo doble rápido: el dispositivo se conecta al WiFi correctamente y puede detectarse a través de mDNS y responder a la solicitud de la red LAN. - Una vez que el dispositivo ya está en modo DIY, la página de configuración WiFi de http://10.10.7.1/ no es accesible.
- Si se ingresó un SSID o contraseña de WiFi incorrectos, el dispositivo no podrá conectarse a la red WiFi específica; con un mecanismo de tiempo de espera de 20 segundos, el dispositivo dejará de conectarse a la red WiFi; intente nuevamente con los pasos de ejemplo del 1 al 7.
- La actualización de firmware oficial solo está disponible en la aplicación eWeLink.
- Se puede acceder al protocolo v1.4 a través de https://github.com/itead/Sonoff_Devices_DIY_Tools
Mecanismo de descubrimiento de LAN en modo "hazlo tú mismo"
El descubrimiento de LAN en modo DIY implementa el protocolo DNS de multidifusión IETF y el protocolo de descubrimiento de servicios basado en DNS. [2] – [8]
Proceso de publicación de información del servicio mDNS del dispositivo
El dispositivo publica su propio servicio (es decir, la capacidad del dispositivo) de acuerdo con el protocolo de descubrimiento estándar mDNS/DNS-SD cuando el dispositivo está conectado a una LAN (red de área local).
La definición de campos es la siguiente:
Atributo | Descripción | Ejemplo |
---|---|---|
Dirección IP | La dirección IP de LAN se obtiene a través de DHCP en lugar de la dirección de enlace local de IPv4/IPv6 | |
Nombre de host | El nombre de host debe ser único en la LAN; Formato: eWeLink_[ID del dispositivo] | eWeLink_10000000d0 |
Tipo de servicio | _ewelink._tcp | |
Nombre de la instancia de servicio | El nombre de la instancia de servicio debe ser único en la LAN; Máx.: 63 bytes (21 caracteres UTF8) | Lo mismo que el nombre de host |
Registro TXT | Una o más cadenas; No se excedieron los 255 bytes para cada cadena; No se excedieron los 1300 bytes para todo el registro TXT; |
Nota de registro TXT :
- El registro TXT debe contener las siguientes cadenas:
“ txtvers = 1”, “ id = [ID del dispositivo]”, “ type = [tipo de dispositivo]”, “ apivers = [versión de la interfaz API del dispositivo]”, “ seq = [Número de serie del registro TXT]”, “ data1 = [información del dispositivo]”; - Cadenas opcionales:
“ datos2 =[información del dispositivo]”, “ datos3 =[información del dispositivo]”, “ datos4 =[información del dispositivo]” - “ seq =[número de secuencia del registro TXT]” indica el orden de actualización de los registros TXT (el orden en que se actualiza el estado del dispositivo). Se recomienda que sea un entero positivo que aumente de 1 (se restablece a 1 al reiniciar el dispositivo).
- Cuando la información del dispositivo supera los 249 bytes, los primeros 249 bytes deben almacenarse en datos1 y los bytes restantes se dividen entre la longitud de 249, que se almacenan en datos2, datos3 y datos4. El formato completo de la información del dispositivo es un objeto JSON.
Para el ejemplo de registro de texto mDNS de BASICR3, RFR3, MINI:
data1= {“switch”:”on”,”inicio”:”mantener”,”pulse”:”on”,”pulseWidth”:2000,”rssi”:-67,”fwVersion”:”3.5.0”}
Ejemplo de registro de texto mDNS para D1 (Dimmer):
data1= {“interruptor”: “activado”,”modo”: 0”,”brillo”: 50”,”brilloMín”:0”,”brilloMáx”:255”,”inicio”: “activado”,”rssi”:-67”,”fwVersion”:”3.5.0”}
Para el ejemplo de registro de texto mDNS de SPM-Main:
data1= {“subDevId”: “123456”,”interruptores”: [{“interruptor”: “activado”,”salida”: 0},{“interruptor”: “activado”,”salida”: 1},{“interruptor”: “activado”,”salida”: 2},{“interruptor”: “activado”,”salida”: 3}]}
Para el ejemplo de registro txt de mDNS de MINIR3:
data1= {“interruptores”:[{“interruptor”:”encendido”,”salida”:0},{“interruptor”:”apagado”,”salida”:1},{“interruptor”:”apagado”,”salida”:2},{“interruptor”:”apagado”,”salida”:3}],”sledOnline”:”encendido”}
Ejemplo de registro de texto para B02-BL-A60, B05-BL-A19, B05-BL-A60:
data1= {“switch”: “off”,”startup”: “off”,”pulse”: “off”,”pulseWidth”: 500,”ssid”: “eWeLink”,”otaUnlock”: false,”fwVersion”: “3.5.0”,”deviceid”: “100000140e”,”bssid”: “ec:17:2f:3d:15:e”,”signalStrength”: -25}
Siempre que cambia el contenido que no sea seq, como por ejemplo si se modifica el nombre de la instancia de servicio, se actualiza la información del dispositivo, etc., el dispositivo debe multidifundir el registro DNS correspondiente (incluido el seq incrementado) de acuerdo con el estándar mDNS/DNS-SD.
Proceso de descubrimiento para el servicio del dispositivo
El proceso de descubrimiento debe seguir el protocolo de descubrimiento mDNS/DNS-SD para descubrir el dispositivo Sonoff DIY Mode con el tipo de servicio “_ewelink._tcp” cuando su aplicación o cliente se conecta a Internet (WiFi o Ethernet);
Aquí está el proceso de descubrimiento:
- Busque en la LAN todos los dispositivos con el tipo de servicio _ewelink._tcp a través del registro PTR de DNS.
- Obtenga el nombre de host y el puerto del servicio del dispositivo analizando el registro DNS SRV del dispositivo. (El puerto predeterminado es 8081).
- Obtenga la dirección IP del dispositivo a través del registro DNS A o por otros medios.
- Obtenga la información de “ID del dispositivo”, “Tipo de servicio”, “versión de la interfaz API del dispositivo” e “información del dispositivo” mediante el análisis del registro TXT DNS del dispositivo.
Nota:
Cuando el “tipo de dispositivo” del servicio del dispositivo no coincide con el “tipo de dispositivo” de su aplicación o cliente, o la versión de la interfaz API del dispositivo del servicio del dispositivo es superior a la de su aplicación o cliente, la aplicación o el cliente no deben analizar la “información del dispositivo” y llamar a la interfaz API del dispositivo, sino solicitar a los usuarios el motivo específico por el cual el dispositivo no se puede controlar a través de LAN y sugerir actualizar la aplicación o el cliente.
La aplicación o el cliente obtienen la dirección IP del dispositivo a través del registro DNS A cuando se está a punto de llamar a la interfaz API del dispositivo.
Protocolo de control de API RESTful (HTTP POST)
El dispositivo debe abrir el servidor HTTP en el puerto declarado por el registro SRV de DNS antes de publicar sus servicios. El dispositivo publica las capacidades mediante una API RESTful basada en HTTP. Debido a la seguridad de la LAN y a la capacidad de procesamiento limitada del dispositivo, este documento recomienda que el dispositivo proporcione una interfaz HTTP en lugar de HTTPS.
El tipo de dispositivo y la versión de la interfaz API de cada producto se muestran a continuación:
Producto | tipo | apivers |
---|---|---|
enchufe de bricolaje | 1 | |
D1 | luz de bricolaje | 1 |
SPM-Principal | medidor de bricolaje | 1 |
B02-BL-A60 B05-BL-A19 B05-BL-A60 | luz de bricolaje | 1 |
Formato de solicitud y respuesta de API RESTful
URL: http://[ip]:[puerto]/[ruta]
Formato del valor de retorno: json
Método: publicación HTTP
La solicitud de API RESTful funciona con el método POST y el cuerpo de solicitud con formato JSON.
{
"deviceid": "100000140e",
"data": {
"switch": "on"
}
}
Atributo | Tipo | Ejemplo | Opcional | Descripción |
---|---|---|---|---|
ID del dispositivo | Cadena | 100000140e | Sí | El ID del dispositivo para esta solicitud. |
datos | Objeto | {"encender"} | No | Tipo de objeto. Configuración de información específica del dispositivo al controlarlo. Objeto vacío al consultar la información del dispositivo. |
La respuesta de API RESTful funciona con un código de respuesta HTTP 200 OK y un cuerpo de respuesta con formato JSON.
{
"seq": 2,
"error": 0,
"data": {
"signalStrength": -67
}
}
Atributo | Tipo | Opcional | Descripción |
---|---|---|---|
secuencia | Número | No | El orden de actualización del estado del dispositivo (también el orden de actualización del registro TXT) |
error | Número | No | Si el dispositivo configura correctamente la información del dispositivo especificado. – 0: con éxito – 400: La operación falló y la solicitud se formateó incorrectamente. El cuerpo de la solicitud no tiene un formato JSON válido. – 401: La operación falló y la solicitud no fue autorizada. El cifrado de información del dispositivo está habilitado, pero la solicitud no está cifrada. – 404: La operación falló y el dispositivo no existe. El dispositivo no admite el ID de dispositivo solicitado. – 422: La operación falló y los parámetros de la solicitud no son válidos. Por ejemplo, el dispositivo no admite la configuración de información específica. |
datos | Objeto | No | Tipo de objeto, devuelve información específica del dispositivo cuando se verifica la información del dispositivo |
Nota:
- Debido a la capacidad informática del dispositivo, el intervalo de tiempo de cada solicitud HTTP no debe ser inferior a 200 ms.
- El puerto predeterminado: 8081
Referencia
[1] Los dispositivos SONOFF se refieren a BASICR3 , RFR3 , MINI , D1 en esta página
[2] Protocolo DNS de multidifusión: IETF RFC 6762
[3] Protocolo de descubrimiento de servicios basado en DNS: IETF RFC 6763
[4] Redes de configuración cero: Zeroconf
[5] Descubrimiento y conectividad de red de Apple Bonjour
[6] Descubrimiento de servicios de red de Android
[7] Wikipedia Redes de configuración cero
[8] ¿Cómo se compara Zeroconf con Viiv/DLNA/DHWG/UPnP?