menú

Protocolo API del MODO DIY

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

BÁSICO3
RFR3
MINIR2

MINIR3

El firmware 3.5.0 hace referencia a este artículo
El firmware 3.3.0 se refiere al protocolo API v1.4
https://github.com/itead/Sonoff_Devices_DIY_Tools

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

B02-BL-A60

B05-BL-A19

B05-BL-A60

El firmware 1.4.0 hace referencia a este artículo

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:

  1. Ingresar al modo de emparejamiento compatible (AP) presionando prolongadamente el botón de emparejamiento durante 5 segundos después de encender
  2. 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
  3. El navegador visita http://10.10.7.1/
  4. Completar el SSID y la contraseña de la red WiFi existente
  5. 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:

  1. Encendido;
  2. 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)
  3. El indicador LED parpadeará continuamente
  4. 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
  5. Abra el navegador y acceda a http://10.10.7.1/
  6. A continuación, complete el SSID y la contraseña del WiFi con el que se habría conectado el dispositivo.
  7. Éxito, ahora el dispositivo está en modo DIY.

Ejemplo de regulador de intensidad DIY de un solo canal (D1) que ingresa al modo DIY:

  1. Encendido;
  2. 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)
  3. 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":

  1. Encendido;
  2. 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.
  3. El indicador LED parpadeará rápidamente.
  4. Conecte SPM-Main a su enrutador mediante un cable Ethernet; para ello, dispone de uno de los siguientes métodos de conexión.
  5. Escriba la dirección IP de SPM-Main en el navegador de su computadora y acceda.
  6. A continuación, introduzca el SSID y la contraseña de WiFi.
  7. ¡É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":

  1. Encendido;
  2. 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).
  3. El “destello rápido” indica que el dispositivo ingresa al modo de emparejamiento compatible (AP).
  4. 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
  5. Abra el navegador y acceda a http://10.10.7.1/
  6. A continuación, complete el SSID y la contraseña del WiFi con el que se habría conectado el dispositivo.
  7. É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 :

  1. 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]”;
  2. Cadenas opcionales:
    datos2 =[información del dispositivo]”, “ datos3 =[información del dispositivo]”, “ datos4 =[información del dispositivo]”
  3. 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).
  4. 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:

    1. Busque en la LAN todos los dispositivos con el tipo de servicio _ewelink._tcp a través del registro PTR de DNS.
    2. Obtenga el nombre de host y el puerto del servicio del dispositivo analizando el registro DNS SRV del dispositivo. (El puerto predeterminado es 8081).
    3. Obtenga la dirección IP del dispositivo a través del registro DNS A o por otros medios.
    4. 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

    BÁSICO3
    RFR3
    MINI/MINIR2

    MINIR3

    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 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?

    Anterior
    API de iHost
    Próximo
    API BASICR3/RFR3/MINIR2
    Recientemente modificado: 2025-08-19