API HTTP principal do SPM
O tipo de dispositivo é diy_meter(type=diy_meter) e a versão da interface da API do dispositivo é 1 (apivers=1).
Transmissão de status do dispositivo
Quando o status do subdispositivo muda, o DNS TXT deve conter o campo "id", que é o [chip id] do subdispositivo. O subdispositivo transmite apenas o campo alterado. Se o switch do subdispositivo for alterado, apenas o campo switches é reportado, e o campo threshold overload_00 não é reportado.
Este exemplo adiciona quebras de linha e espaços para facilitar a leitura, mas na verdade não há quebras de linha nem espaços.
//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 | Descrição |
---|---|---|
interruptores | Variedade | Mudar o status de todos os canais |
tomada | Número | Número do canal, [0,3] |
trocar | Corda | on: ligar o interruptor, off: desligar o interruptor |
subDevCom | Número | Status de comunicação do subdispositivo 485. 1: Comunicação normal, 0: Erro de comunicação |
sobrecargaTrig | Variedade | Evento de disparo de proteção contra sobrecarga. Este campo aparece quando há um evento de sobrecarga. |
cse7761Com | Variedade | Erro de comunicação do subdispositivo cse7761. Os elementos da matriz são do tipo Number. A quantidade é 4. Os elementos 0-3 são canais 1-4, respectivamente. [0,1] 1: Comunicação normal. 0: Erro de comunicação. |
temperatura excessiva | Variedade | Evento de disparo da proteção contra superaquecimento do subdispositivo cse7761. Os elementos do array são do tipo Number. A quantidade é 4. Os elementos 0-3 são canais 1-4, respectivamente. [0,1] 1: Comunicação normal. 0: Erro de comunicação. Este campo aparece quando há um evento de disparo por superaquecimento. |
acima do limite | Variedade | Evento de disparo da proteção contra sobrecarga de valor limite. Este campo aparece quando há um evento de sobrecarga de valor limite. |
Obter o ID do dispositivo
URL: http://[ip]:[porta]/zeroconf/deviceid
Formato do valor de retorno: json
Método: postagem HTTP
{
"data": {}
}
Objeto vazio, nenhum atributo é necessário.
Corpo de resposta
{
"seq": 2,
"error": 0,
"data": {
"deviceid": "1000012345"
}
}
Adicionar subdispositivo
URL: http://[ip]:[porta]/zeroconf/add_sub_devices
Formato do valor de retorno: json
Método: postagem HTTP
{
"deviceid": "100000140e",
"data": {}
}
Objeto vazio, nenhum atributo é necessário.
Corpo de resposta
{
"seq": 2,
"error": 0,
}
Obtenha a lista de subdispositivos
URL: http://[ip]:[porta]/zeroconf/subDevList
Formato do valor de retorno: json
Método: postagem HTTP
{
"deviceid": "100000140e",
"data": {}
}
Objeto vazio, nenhum atributo é necessário.
Corpo de resposta
{
"seq": 2,
"error": 0,
"data": {
"subDevList": [
{
"subDevId": "123456",
"type": 130
}
]
}
}
Atributo | Tipo | Opcional | Descrição |
---|---|---|---|
subDevId | Corda | Não | ID do chip do subdispositivo |
tipo | Número | Não | Tipo de subdispositivo. 130: Subdispositivo de quatro canais |
Interruptor liga/desliga
URL: http://[ip]:[porta]/zeroconf/switches
Formato do valor de retorno: json
Método: HTTP post .
{
"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 | Descrição |
---|---|---|---|
trocar | Corda | Não | on: ligar o interruptor, off: desligar o interruptor |
tomada | Número | Não | Número do canal, [0,3] |
Proteção contra sobrecarga
URL: http://[ip]:[porta]/zeroconf/overload
Formato do valor de retorno: json
Método: postagem HTTP
Corpo da solicitação
{
"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 | Descrição |
---|---|---|---|
minAP | Número | Não | Potência mínima, [10.440000], Unidade: 0,01 W |
maxAP | Número | Não | Potência máx., [10.440000], Unidade: 0,01 W |
minV | Número | Não | Tensão mínima, [9000,24000], Unidade: 0,01 V |
máx. V | Número | Não | Tensão máx., [9000,24000], Unidade: 0,01 V |
maxC | Número | Não | Corrente máx., [10,2000], Unidade: 0,01 A |
tempo de atraso | Número | Não | Atraso para desligar, [0,180] |
em | Número | Não | 0: Desabilita proteção contra sobrecarga. 1: Habilite a proteção contra sobrecarga. |
vale | Número | Não | Limite superior ou limite inferior |
Observação:
-_00 representa o valor do canal 1, _01 representa o valor do canal 2 e assim por diante.
-Quando o limite superior de potência, tensão e limite inferior estiverem todos abertos, o limite superior deverá ser maior que o limite inferior.
Eu estou aqui
URL: http://[ip]:[porta]/zeroconf/iAmHere
Formato do valor de retorno: json
Método: postagem HTTP
{
"deviceid": "100000140e",
"data": {
"subDevId": "123456"
}
}
Observação:
-Esta função pode encontrar o subdispositivo designado através da luz indicadora.
Definir hora do dispositivo
URL: http://[ip]:[porta]/zeroconf/time
Formato do valor de retorno: json
Método: postagem HTTP
{
"deviceid":"1000001234",
"data": {
"timeZone":8,
"date":"2020-12-15T06:31:14.115Z"
}
}
Atributo | Tipo | Opcional | Descrição |
---|---|---|---|
fuso horário | Número | Não | Fuso horário, [-12,+14], pode ser um decimal, como 7,5 |
data | Corda | Não | UTC |
Observação:
- Os Dados Históricos dos Subdispositivos só entrarão em vigor depois que as informações de fuso horário forem definidas e não afetam as estatísticas de tempo único.
Dados históricos do subdispositivo
URL: http://[ip]:[porta]/zeroconf/historicalData
Formato do valor de retorno: json
Método: postagem HTTP
{
"deviceid": "100000140e",
"data": {
"subDevId": "123456",
"outlet": 3,
"dateStart": "2020-07-10 05:30",
"dateEnd": "2020-07-10 19:10"
}
}
Atributo | Tipo | Opcional | Descrição |
---|---|---|---|
tomada | Número | Não | Número do canal,[0,3] |
data de início | Corda | Não | Hora de início; formato: “aaaa-mm-dd hh:mm” |
dataFim | Corda | Não | Horário de término, formato: “aaaa-mm-dd hh:mm” |
Resposta
- Resposta correta:
O tipo de conteúdo do cabeçalho de resposta é application/octet-stream
Retorna dados de arquivo com valores separados por vírgula (CSV). O arquivo contém linhas de cabeçalho e de registro normal. O cabeçalho do título contém o nome correspondente do campo de registro. Cada linha de registro normal é um registro de dados, e cada registro consiste em 9 campos, separados por vírgulas.
Os campos na ordem da esquerda para a direita são os seguintes:
| Data | hora | Tomada | Corrente (A) | Tensão (V) | Potência real (W) | Potência reativa (W) | Potência aparente (W) | Consumo de energia em 5 minutos (W·s) |
por exemplo
Os usuários consultam dados das 00:00 às 00:20 do dia 10 de outubro 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
- Resposta de erro:
Consulte a parte geral .
Observação:
-Esta função será lançada após a versão de firmware 1.1.0.
-Suporte a consulta de dados por até 1 dia.
Por exemplo, quando a data de início for “2020-07-10 05:30”, a data de término poderá ser preenchida como “2020-07-11 00:00” no máximo.
Configurar monitoramento em tempo real Informações relacionadas
URL: http://[ip]:[porta]/zeroconf/monitor
Formato do valor de retorno: json
Método: postagem HTTP
{
"deviceid": "100000140e",
"data": {
"url": "http://www.123.com",
"port": 7790,
"subDevId": "123456",
"outlet": 3,
"time":180
}
}
Atributo | Tipo | Opcional | Descrição |
---|---|---|---|
URL | Corda | Não | URL de relatório de dados de monitoramento em tempo real, formato:” http://www.xxx.com/yyy” |
porta | Número | Não | Porta de relatórios de dados de monitoramento em tempo real, [1024,65535] |
subDevId | Corda | Não | ID do chip do subdispositivo |
tomada | Número | Não | Número do canal, [0,3] |
tempo | Número | Não | Duração do monitoramento em tempo real, [1,3600], unidade de segundo |
Observação:
-A URL suporta apenas conexões não criptografadas, e o formato do relatório de dados de monitoramento é solicitação http post.
Relatório do dispositivo:
{
"subDevId": 123456,
"outlet": 3,
"current": 100,
"voltage": 22000,
"actPow": 22000,
"reactPow": 22000,
"apparentPow": 22000
}
Atributo | Tipo | Opcional | Descrição |
---|---|---|---|
atual | Número | Não | Valor de corrente em tempo real, Unidade: 0,01 A |
tensão | Número | Não | Valor de tensão em tempo real, Unidade: 0,01 V |
ActPow | Número | Não | Valor actPow em tempo real, unidade: 0,01 W |
reactPow | Número | Não | Valor reactPow em tempo real, unidade: 0,01 W |
aparentePow | Número | Não | Valor de potência aparente em tempo real, unidade: 0,01 W |
Condições de relato:
-A variação de corrente excede 0,03 A.
-A variação de tensão excede 5 V.
-A potência ativa, potência reativa ou variação de potência aparente excede 2 W.
Configuração de SSID e senha do WiFi
URL: http://[ip]:[porta]/zeroconf/wifi
Formato do valor de retorno: json
Método: postagem HTTP
{
"deviceid": "100000140e",
"data": {
"ssid": "eWeLink",
"password": "WeLoveIoT"
}
}
Atributo | Tipo | Opcional | Descrição |
---|---|---|---|
SSID | Corda | Não | SSID da rede WiFi à qual o dispositivo irá se conectar |
senha | Corda | Não | Senha da rede WiFi à qual o dispositivo irá se conectar |
Observação:
-A nova configuração de Wi-Fi entrará em vigor na próxima vez que o Wi-Fi for conectado.
Firmware OTA
URL: http://[ip]:[porta]/zeroconf/upgrade
Formato do valor de retorno: json
Método: postagem 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 | Descrição |
---|---|---|---|
URL de download | Corda | Não | O endereço de download do novo firmware suporta apenas o protocolo HTTP, o servidor HTTP deve suportar o cabeçalho de solicitação Range. |
sha256sum | Corda | Não | Soma de verificação SHA256 (hash) do novo firmware, é usada para verificar a integridade do novo firmware baixado. |
nome | Corda | Não | Nome do firmware |
Os seguintes códigos de falha são adicionados ao campo de erro do corpo da resposta:
- 404 Não encontrado (falha no download).
- 409 Falha na verificação do firmware.
Obter registros de operação do canal
URL: http://[ip]:[porta]/zeroconf/record
Formato do valor de retorno: json
Método: postagem HTTP
{
"deviceid": "100000140e",
"data": {
"subDevId": "123456",
"rangeStart": 200,
"rangeEnd": 229
}
}
Atributo | Tipo | Opcional | Descrição |
---|---|---|---|
intervaloIniciar | Número | Não | Número inicial de registros de operação, [0,65535] |
fim do intervalo | Número | Não | Número final de registros de operação, [0,65535] |
Corpo de resposta
{
"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 | Descrição |
---|---|---|---|
data | Corda | Não | Horário de funcionamento; formato: “aaaa-mm-dd hh:mm” |
Tipo de gatilho | Número | Não | [0,3], 0: gatilho do APP; 1: gatilho do dispositivo; 2: gatilho de proteção contra sobrecarga; * 3: * gatilho de proteção contra superaquecimento |
tomada | Número | Não | Número do canal, [0,3] |
Ação | Número | Não | 0: Canal fechado; 1: Canal aberto |
Observação:
-As condições precisam ser atendidas: rangeEnd>=rangeStart e rangeEnd-rangeStart<=29.
Obter estado do dispositivo
URL: http://[ip]:[porta]/zeroconf/getState
Formato do valor de retorno: json
Método: postagem HTTP
por exemplo
1. Obtenha o status do gateway:
{
"deviceid":"1000001234",
"data": {
}
}
Corpo de resposta
{
"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. Obtenha o status do subdispositivo:
{
"deviceid":"1000001234",
"data": {
"subDevId": "123456"
}
}
Corpo de resposta
{
"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 | Descrição |
---|---|---|
subDevCom | Número | Status de comunicação do subdispositivo 485. 1: Comunicação normal. 0: Erro de comunicação. |
cse7761Com | Variedade | Erro de comunicação do subdispositivo cse7761. Os elementos da matriz são do tipo Number. A quantidade é 4. Os elementos 0-3 são canais 1-4, respectivamente. [0,1] 1: Comunicação normal. 0: Erro de comunicação. |
Versão fw | Corda | O gateway é a versão do firmware do chip principal, e o subdispositivo é o número da versão do firmware do subdispositivo. |
subChipFwVer | Corda | A versão do firmware do subchip. |
wifiConectado | Bool | Verifique se o Wi-Fi está conectado. Se for falso, os valores de SSID, BSSID e SignalStrength são inválidos. |
limite | Objeto | Faixa de limiar. |
ActPow | Objeto | Potência real, unidade: 0,01 W |
tensão | Objeto | Voltagem, Unidade: 0,01 V |
atual | Objeto | Corrente, Unidade: 0,01A |
min | Número | Mínimo |
máx. | Número | Máx. |
Mudar para o modo eWeLink
URL: http://[ip]:[porta]/zeroconf/ops_mode
Formato do valor de retorno: json
Método: postagem HTTP
{
"deviceid":"1000001234",
"data": {
"ops_mode": "ewelink"
}
}
Observação:
“ops_mode”: “ewelink” significa retornar ao modo ewelink.