API HTTP principal de SPM
El tipo de dispositivo es diy_meter(type=diy_meter) y la versión de la interfaz API del dispositivo es 1 (apivers=1).
Transmisión del estado del dispositivo
Cuando cambia el estado del subdispositivo, el TXT DNS debe contener el campo "id", que corresponde al [id del chip] del subdispositivo. El subdispositivo solo transmite el campo modificado. Si se modifica el conmutador del subdispositivo, solo se informa el campo "conmutadores" y no el campo "umbral de sobrecarga_00".
Este ejemplo agrega saltos de línea y espacios para facilitar la lectura, pero en realidad no hay saltos de línea ni espacios.
//All fields broadcast by sub-device
{
"switches": [
{
"outlet":0,
"switch":"on"
},
{
"outlet":1,
"switch":"on"
},
{
"outlet":2,
"switch":"on"
},
{
"outlet":3,
"switch":"on"
}
],
//_00 represents the value of channel 1, _01 represents the value of channel 2, and so on
"current_00":100,
"voltage_00":22000,
"actPow_00":22000,
"reactPow_00":22000,
"apparentPow_00":22000,
"overload_00":
{
"minAP": {
"en": 0,
"val": 110000
},
"maxAP": {
"en": 1,
"val": 10000
},
"minV": {
"en": 1,
"val": 1000
},
"maxV": {
"en": 0,
"val": 22000
},
"maxC": {
"en": 1,
"val": 2000
},
"delayTime": 10
},
"overload_01":{},
"overload_02":{},
"overload_03":{},
"faultState": {
"subDevCom": 0,
"overloadTrig": [
{
"outlet": 0,
"rsn": [1]
},
{
"outlet": 2,
"rsn": [3]
}
],
"cse7761Com": [
1,
0,
1,
1
],
"overTemp": [
0
],
"overLimit": [
{
"outlet": 1,
"rsn": [0]
},
{
"outlet": 3,
"rsn": [1]
}
]
}
}
//If the switch status of the sub-device changes, only the switches field is reported.
{
"switches": [
{
"outlet":0,
"switch":"on"
},
{
"outlet":1,
"switch":"on"
},
{
"outlet":2,
"switch":"on"
},
{
"outlet":3,
"switch":"on"
}
]
}
//Report the PVC status of channel 1 in real time
{
"current_00":100,
"voltage_00":22000,
"actPow_00":22000,
"reactPow_00":22000,
"apparentPow_00":22000,
}
//Sub-device failure
{
"faultState": {
"subDevCom": 0,
"overloadTrig": [
{
"outlet": 0,
"rsn": [1]
},
{
"outlet": 2,
"rsn": [3]
}
],
"cse7761Com": [
1,
0,
1,
1
],
"overTemp": [
1,
0,
1,
0
],
"overLimit": [
{
"outlet": 1,
"rsn": [0]
},
{
"outlet": 3,
"rsn": [1]
}
]
}
}
Atributo | Tipo | Descripción |
---|---|---|
interruptores | Formación | Cambiar el estado de todos los canales |
salida | Número | Número de canal, [0,3] |
cambiar | Cadena | encendido: enciende el interruptor, apagado: apaga el interruptor |
subDevCom | Número | Estado de comunicación del subdispositivo 485. 1: La comunicación es normal, 0: Error de comunicación |
sobrecargaTrig | Formación | Evento de activación de protección contra sobrecarga. Este campo aparece cuando se produce un evento de sobrecarga. |
cse7761Com | Formación | Error de comunicación del subdispositivo cse7761. Los elementos de la matriz son de tipo numérico. La cantidad es 4. Los elementos 0-3 corresponden a los canales 1-4, respectivamente. [0,1] 1: Comunicación normal. 0: Error de comunicación. |
sobretemperatura | Formación | Evento de activación de protección contra sobretemperatura del subdispositivo cse7761. Los elementos de la matriz son de tipo numérico. La cantidad es 4. Los elementos 0-3 corresponden a los canales 1-4, respectivamente. [0,1] 1: Comunicación normal. 0: Error de comunicación. Este campo aparece cuando se produce un evento de activación por sobretemperatura. |
sobreLímite | Formación | Evento de activación de protección por sobrecarga de valor límite. Este campo aparece cuando se produce un evento de sobrecarga de valor límite. |
Obtener el ID del dispositivo
URL: http://[ip]:[puerto]/zeroconf/deviceid
Formato del valor de retorno: json
Método: publicación HTTP
{
"data": {}
}
Objeto vacío, no se requiere ningún atributo.
Cuerpo de la respuesta
{
"seq": 2,
"error": 0,
"data": {
"deviceid": "1000012345"
}
}
Agregar subdispositivo
URL: http://[ip]:[puerto]/zeroconf/add_sub_devices
Formato del valor de retorno: json
Método: publicación HTTP
{
"deviceid": "100000140e",
"data": {}
}
Objeto vacío, no se requiere ningún atributo.
Cuerpo de la respuesta
{
"seq": 2,
"error": 0,
}
Obtener la lista de subdispositivos
URL: http://[ip]:[puerto]/zeroconf/subDevList
Formato del valor de retorno: json
Método: publicación HTTP
{
"deviceid": "100000140e",
"data": {}
}
Objeto vacío, no se requiere ningún atributo.
Cuerpo de la respuesta
{
"seq": 2,
"error": 0,
"data": {
"subDevList": [
{
"subDevId": "123456",
"type": 130
}
]
}
}
Atributo | Tipo | Opcional | Descripción |
---|---|---|---|
subDevId | Cadena | No | ID del chip del subdispositivo |
tipo | Número | No | Tipo de subdispositivo. 130: Subdispositivo de cuatro canales |
Interruptor de encendido/apagado
URL: http://[ip]:[puerto]/zeroconf/switches
Formato del valor de retorno: json
Método: publicación HTTP.
{
"deviceid": "100000140e",
"data": {
"subDevId": "123456",
"switches": [
{
"switch": "on",
"outlet": 0
},
{
"switch": "on",
"outlet": 1
},
{
"switch": "on",
"outlet": 2
},
{
"switch": "on",
"outlet": 3
}
]
}
}
Atributo | Tipo | Opcional | Descripción |
---|---|---|---|
cambiar | Cadena | No | encendido: enciende el interruptor, apagado: apaga el interruptor |
salida | Número | No | Número de canal, [0,3] |
Protección contra sobrecargas
URL: http://[ip]:[puerto]/zeroconf/overload
Formato del valor de retorno: json
Método: publicación HTTP
Cuerpo de la solicitud
{
"deviceid": "100000140e",
"data": {
"subDevId": "123456",
"overload_00":
{
"minAP": {
"en": 0,
"val": 110000
},
"maxAP": {
"en": 1,
"val": 10000
},
"minV": {
"en": 1,
"val": 9000
},
"maxV": {
"en": 0,
"val": 22000
},
"maxC": {
"en": 1,
"val": 2000
},
"delayTime": 10
},
"overload_01":{},
"overload_02":{},
"overload_03":{}
},
}
Atributo | Tipo | Opcional | Descripción |
---|---|---|---|
minAP | Número | No | Potencia mínima, [10,440000], Unidad: 0,01 W |
punto máximo | Número | No | Potencia máxima, [10,440000], Unidad: 0,01 W |
minV | Número | No | Voltaje mínimo, [9000,24000], Unidad: 0,01 V |
Vmáx | Número | No | Voltaje máximo, [9000,24000], Unidad: 0,01 V |
máx. C | Número | No | Corriente máxima, [10,2000], Unidad: 0,01 A |
tiempo de retraso | Número | No | Retraso en el apagado, [0,180] |
en | Número | No | 0: Desactivar la protección contra sobrecarga. 1: Habilitar la protección contra sobrecarga. |
val | Número | No | Límite superior o límite inferior |
Nota:
-_00 representa el valor del canal 1, _01 representa el valor del canal 2, y así sucesivamente.
-Cuando el umbral superior de potencia y voltaje y el umbral inferior están todos abiertos, el umbral superior debe ser mayor que el umbral inferior.
Estoy aquí
URL: http://[ip]:[puerto]/zeroconf/iAmHere
Formato del valor de retorno: json
Método: publicación HTTP
{
"deviceid": "100000140e",
"data": {
"subDevId": "123456"
}
}
Nota:
-Esta función puede encontrar el subdispositivo designado a través de la luz indicadora.
Establecer la hora del dispositivo
URL: http://[ip]:[puerto]/zeroconf/time
Formato del valor de retorno: json
Método: publicación HTTP
{
"deviceid":"1000001234",
"data": {
"timeZone":8,
"date":"2020-12-15T06:31:14.115Z"
}
}
Atributo | Tipo | Opcional | Descripción |
---|---|---|---|
zona horaria | Número | No | La zona horaria, [-12,+14], puede ser un decimal, como 7,5 |
fecha | Cadena | No | UTC |
Nota:
-Los datos históricos de los subdispositivos solo tendrán efecto después de que se configure la información de la zona horaria y no afectan las estadísticas de tiempo único.
Datos históricos del subdispositivo
URL: http://[ip]:[puerto]/zeroconf/historicalData
Formato del valor de retorno: json
Método: publicación HTTP
{
"deviceid": "100000140e",
"data": {
"subDevId": "123456",
"outlet": 3,
"dateStart": "2020-07-10 05:30",
"dateEnd": "2020-07-10 19:10"
}
}
Atributo | Tipo | Opcional | Descripción |
---|---|---|---|
salida | Número | No | Número de canal,[0,3] |
fecha de inicio | Cadena | No | Hora de inicio; formato: “aaaa-mm-dd hh:mm” |
fechaFin | Cadena | No | Hora de finalización, formato: “aaaa-mm-dd hh:mm” |
Respuesta
- Respuesta correcta:
El tipo de contenido del encabezado de respuesta es application/octet-stream
Devuelve datos de un archivo de valores separados por comas (CSV). El archivo contiene líneas de encabezado y de registro normal. El encabezado contiene el nombre correspondiente del campo del registro. Cada línea de registro normal es un registro de datos, y cada registro consta de 9 campos separados por comas.
Los campos en orden de izquierda a derecha son los siguientes:
| Fecha | Hora | Toma de corriente | Corriente (A) | Voltaje (V) | Potencia real (W) | Potencia reactiva (W) | Potencia aparente (W) | Consumo de energía en 5 minutos (W·s) |
p.ej
Los usuarios consultan datos de las 00:00 a las 00:20 del 10 de octubre de 2021.
Date, time, Outlet, Current(A), Voltage(V),Real power(W), Reactive power(W),
Apparent power(W), 5 Minutes Power Consumption(W·s)
2021-10-10 , 0:0:0 , 0 , 0.00, 240.94, 0.56, 0.00, 0.55,172.00
2021-10-10 , 0:5:0 , 0 , 0.00, 241.41, 0.60, 0.00, 0.59,172.00
2021-10-10 , 0:10:0 , 0 , 0.00, 241.13, 0.51, 0.00, 0.55,173.00
2021-10-10 , 0:15:0 , 0 , 0.00, 240.94, 0.58, 0.00, 0.56,173.00
2021-10-10 , 0:20:0 , 0 , 0.00, 240.95, 0.57, 0.00, 0.57,173.00
- Respuesta de error:
Consulte la parte general .
Nota:
-Esta función se lanzará después de la versión de firmware 1.1.0.
-Admite consulta de datos hasta por 1 día.
Por ejemplo, cuando la fecha de inicio es “2020-07-10 05:30”, la fecha de fin se puede completar como “2020-07-11 00:00” como máximo.
Configurar la monitorización en tiempo real Información relacionada
URL: http://[ip]:[puerto]/zeroconf/monitor
Formato del valor de retorno: json
Método: publicación HTTP
{
"deviceid": "100000140e",
"data": {
"url": "http://www.123.com",
"port": 7790,
"subDevId": "123456",
"outlet": 3,
"time":180
}
}
Atributo | Tipo | Opcional | Descripción |
---|---|---|---|
URL | Cadena | No | URL de informes de datos de monitoreo en tiempo real, formato: “ http://www.xxx.com/yyy” |
puerto | Número | No | Puerto de informes de datos de monitoreo en tiempo real, [1024,65535] |
subDevId | Cadena | No | ID del chip del subdispositivo |
salida | Número | No | Número de canal, [0,3] |
tiempo | Número | No | Duración del monitoreo en tiempo real, [1,3600], Unidad segundo |
Nota:
-La URL solo admite conexiones no cifradas y el formato del informe de datos de monitoreo es una solicitud posterior a http.
Informe del dispositivo:
{
"subDevId": 123456,
"outlet": 3,
"current": 100,
"voltage": 22000,
"actPow": 22000,
"reactPow": 22000,
"apparentPow": 22000
}
Atributo | Tipo | Opcional | Descripción |
---|---|---|---|
actual | Número | No | Valor actual en tiempo real, Unidad: 0,01 A |
Voltaje | Número | No | Valor de voltaje en tiempo real, Unidad: 0,01 V |
ActPow | Número | No | Valor de actPow en tiempo real, Unidad: 0,01 W |
reactPow | Número | No | Valor de reactPow en tiempo real, Unidad: 0,01 W |
aparentePow | Número | No | Valor de potencia aparente en tiempo real, Unidad: 0,01 W |
Condiciones de reporte:
-El cambio de corriente supera 0,03 A.
-El cambio de voltaje supera los 5 V.
-La potencia activa, potencia reactiva o variación de potencia aparente supera los 2 W.
Configuración de SSID y contraseña de WiFi
URL: http://[ip]:[puerto]/zeroconf/wifi
Formato del valor de retorno: json
Método: publicación HTTP
{
"deviceid": "100000140e",
"data": {
"ssid": "eWeLink",
"password": "WeLoveIoT"
}
}
Atributo | Tipo | Opcional | Descripción |
---|---|---|---|
SSID | Cadena | No | SSID de la red WiFi a la que se conectará el dispositivo |
contraseña | Cadena | No | Contraseña de la red WiFi a la que se conectará el dispositivo |
Nota:
-La nueva configuración de wifi tendrá efecto la próxima vez que se conecte al wifi.
Firmware OTA
URL: http://[ip]:[puerto]/zeroconf/upgrade
Formato del valor de retorno: json
Método: publicación HTTP
{
"deviceid": "1000xxxxxx",
"data": {
"binList": [
{
"downloadUrl": "http://52.83.223.225:8088/ota/rom/hNLhVpovUgFJcipxmDD8fQv9b2BdJNgT/user1.1024.new.2.bin",
"digest": "56a013b0f2ea151fb337a24025a5abb2f4390d4617c5ec57b27a79c86d6c4174",
"name": "user1.bin"
},
{
"downloadUrl": "http://52.83.223.225:8088/ota/rom/hNLhVpovUgFJcipxmDD8fQv9b2BdJNgT/user2.1024.new.2.bin",
"digest": "62503540c241b4783bdc46026d86035b9d0775e2d48c59e40227be8067cadac6",
"name": "user2.bin"
}
]
}
}
Atributo | Tipo | Opcional | Descripción |
---|---|---|---|
URL de descarga | Cadena | No | La dirección de descarga del nuevo firmware, solo admite el protocolo HTTP, el servidor HTTP debe soportar el encabezado de solicitud Range. |
suma sha256 | Cadena | No | Suma de comprobación SHA256 (hash) del nuevo firmware, se utiliza para verificar la integridad del nuevo firmware descargado. |
nombre | Cadena | No | Nombre del firmware |
Los siguientes códigos de error se agregan al campo de error del cuerpo de la respuesta:
- 404 No encontrado (Error en la descarga).
- 409 Error en la verificación del firmware.
Obtener registros de operaciones del canal
URL: http://[ip]:[puerto]/zeroconf/record
Formato del valor de retorno: json
Método: publicación HTTP
{
"deviceid": "100000140e",
"data": {
"subDevId": "123456",
"rangeStart": 200,
"rangeEnd": 229
}
}
Atributo | Tipo | Opcional | Descripción |
---|---|---|---|
rangoInicio | Número | No | Número de inicio de registros de operaciones, [0,65535] |
final del rango | Número | No | Número final de registros de operaciones, [0,65535] |
Cuerpo de la respuesta
{
"seq": 2,
"error": 0,
"data": {
"record": [
{
"date": "2020-07-29 18:00:05",
"trigType": 1,
"outlet": 1,
"action": 1
},
{
"date": "2020-07-29 18:02:05",
"trigType": 0,
"outlet": 1,
"action": 0
}
]
}
}
Atributo | Tipo | Opcional | Descripción |
---|---|---|---|
fecha | Cadena | No | Hora de funcionamiento; formato: “aaaa-mm-dd hh:mm” |
tipotrig | Número | No | [0,3], 0: disparador de la aplicación; 1: disparador del dispositivo; 2: disparador de protección contra sobrecarga; * 3: * disparador de protección contra sobretemperatura |
salida | Número | No | Número de canal, [0,3] |
acción | Número | No | 0: Canal cerrado; 1: Canal abierto |
Nota:
-Se deben cumplir las condiciones: rangeEnd>=rangeStart y rangeEnd-rangeStart<=29.
Obtener el estado del dispositivo
URL: http://[ip]:[puerto]/zeroconf/getState
Formato del valor de retorno: json
Método: publicación HTTP
p.ej
1. Obtener el estado de la puerta de enlace:
{
"deviceid":"1000001234",
"data": {
}
}
Cuerpo de la respuesta
{
"seq": 2,
"error": 0,
"data": {
"sledOnline":"on",
"ssid": "eWeLink",
"fwVersion": "3.5.0",
"subChipFwVer": "3.5.0",
"deviceid": "100000140e",
"bssid": "xx:xx:xx:xx:xx:xx",
"signalStrength": -10,
"wifiConnected": true/false
}
}
2. Obtener el estado del subdispositivo:
{
"deviceid":"1000001234",
"data": {
"subDevId": "123456"
}
}
Cuerpo de la respuesta
{
"seq": 2,
"error": 0,
"data": {
"fwVersion": "1.1.1",
"switches": [
{
"outlet":0,
"switch":"on"
},
{
"outlet":1,
"switch":"on"
},
{
"outlet":2,
"switch":"on"
},
{
"outlet":3,
"switch":"on"
}
],
"overload_00":
{
"minAP": {
"en": 0,
"val": 110000
},
"maxAP": {
"en": 1,
"val": 10000
},
"minV": {
"en": 1,
"val": 1000
},
"maxV": {
"en": 0,
"val": 22000
},
"maxC": {
"en": 1,
"val": 2000
},
"delayTime": 10
},
"overload_01":{},
"overload_02":{},
"overload_03":{},
"faultState": {
"subDevCom": 0,
"cse7761Com": [
1,
0,
1,
1
]
},
"threshold": {
"actPow":{
"min":10,
"max":440000
},
"voltage":{
"min":10,
"max":440000
},
"current":{
"min":10,
"max":440000
}
}
}
}
Atributo | Tipo | Descripción |
---|---|---|
subDevCom | Número | Estado de comunicación del subdispositivo 485. 1: La comunicación es normal. 0: Error de comunicación. |
cse7761Com | Formación | Error de comunicación del subdispositivo cse7761. Los elementos de la matriz son de tipo numérico. La cantidad es 4. Los elementos 0-3 corresponden a los canales 1-4, respectivamente. [0,1] 1: Comunicación normal. 0: Error de comunicación. |
fwVersion | Cadena | La puerta de enlace es la versión de firmware del chip principal y el subdispositivo es el número de versión de firmware del subdispositivo. |
subChipFwVer | Cadena | La versión de firmware del subchip. |
conectado a wifi | Bool | Comprueba si la conexión wifi está conectada. Si es "falso", los valores de SSID, BSSID y SignalStrength no son válidos. |
límite | Objeto | Rango de umbral. |
ActPow | Objeto | Potencia real, Unidad: 0,01 W |
Voltaje | Objeto | Voltaje, Unidad: 0,01 V |
actual | Objeto | Corriente, Unidad: 0,01 A |
mín. | Número | Mínimo |
máximo | Número | Máximo |
Cambiar al modo eWeLink
URL: http://[ip]:[puerto]/zeroconf/ops_mode
Formato del valor de retorno: json
Método: publicación HTTP
{
"deviceid":"1000001234",
"data": {
"ops_mode": "ewelink"
}
}
Nota:
“ops_mode”: “ewelink” significa volver al modo ewelink.