SPM-Główny interfejs API HTTP
Typ urządzenia to diy_meter(type=diy_meter), a wersja interfejsu API urządzenia to 1 (apivers=1).
Transmisja stanu urządzenia
Gdy zmienia się stan podurządzenia, tekst DNS musi zawierać pole „id”, które jest identyfikatorem chipa podurządzenia. Podurządzenie rozgłasza tylko zmienione pole. Jeśli przełącznik podurządzenia ulegnie zmianie, zgłaszane jest tylko pole switch, a pole „progowe przeciążenie_00” nie jest zgłaszane.
W tym przykładzie dodano podziały wierszy i spacje, aby ułatwić czytanie, ale w rzeczywistości nie ma podziałów wierszy ani spacji.
//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]
}
]
}
}
Atrybut | Typ | Opis |
---|---|---|
przełączniki | Szyk | Status przełącznika wszystkich kanałów |
wylot | Numer | Numer kanału, [0,3] |
przełącznik | Smyczkowy | on: włącz przełącznik, off: wyłącz przełącznik |
subDevCom | Numer | Stan komunikacji podurządzenia 485. 1: Komunikacja jest prawidłowa, 0: Błąd komunikacji |
przeciążenieTrig | Szyk | Zdarzenie wyzwalające zabezpieczenie przed przeciążeniem. To pole pojawia się w przypadku wystąpienia zdarzenia przeciążenia. |
cse7761Com | Szyk | Błąd komunikacji podurządzenia cse7761. Elementy tablicy są typu liczbowego. Ich liczba wynosi 4. Elementy 0–3 to odpowiednio kanały 1–4. [0,1] 1: Komunikacja jest prawidłowa. 0: Błąd komunikacji. |
przegrzanie | Szyk | Zdarzenie wyzwalające zabezpieczenie przed przegrzaniem podurządzenia cse7761. Elementy tablicy są typu liczbowego. Liczba wynosi 4. Elementy 0–3 oznaczają odpowiednio kanały 1–4. [0,1] 1: Komunikacja jest prawidłowa. 0: Błąd komunikacji. To pole pojawia się w przypadku wystąpienia zdarzenia wyzwalającego przegrzanie. |
przekroczenie limitu | Szyk | Zdarzenie wyzwalające ochronę przed przeciążeniem wartością graniczną. To pole pojawia się w przypadku wystąpienia zdarzenia przeciążenia wartością graniczną. |
Pobierz identyfikator urządzenia
URL: http://[ip]:[port]/zeroconf/deviceid
Format wartości zwracanej: json
Metoda: HTTP post
{
"data": {}
}
Obiekt pusty, nie jest wymagany żaden atrybut.
Ciało odpowiedzi
{
"seq": 2,
"error": 0,
"data": {
"deviceid": "1000012345"
}
}
Dodaj podurządzenie
URL: http://[ip]:[port]/zeroconf/add_sub_devices
Format wartości zwracanej: json
Metoda: HTTP post
{
"deviceid": "100000140e",
"data": {}
}
Obiekt pusty, nie jest wymagany żaden atrybut.
Ciało odpowiedzi
{
"seq": 2,
"error": 0,
}
Pobierz listę podurządzeń
URL: http://[ip]:[port]/zeroconf/subDevList
Format wartości zwracanej: json
Metoda: HTTP post
{
"deviceid": "100000140e",
"data": {}
}
Obiekt pusty, nie jest wymagany żaden atrybut.
Ciało odpowiedzi
{
"seq": 2,
"error": 0,
"data": {
"subDevList": [
{
"subDevId": "123456",
"type": 130
}
]
}
}
Atrybut | Typ | Fakultatywny | Opis |
---|---|---|---|
podIdentyfikator urządzenia | Smyczkowy | NIE | Identyfikator chipa podurządzenia |
typ | Numer | NIE | Typ podurządzenia. 130: Podurządzenie czterokanałowe |
Przełącznik WŁ./WYŁ.
URL: http://[ip]:[port]/zeroconf/switches
Format wartości zwracanej: json
Metoda: HTTP post.
{
"deviceid": "100000140e",
"data": {
"subDevId": "123456",
"switches": [
{
"switch": "on",
"outlet": 0
},
{
"switch": "on",
"outlet": 1
},
{
"switch": "on",
"outlet": 2
},
{
"switch": "on",
"outlet": 3
}
]
}
}
Atrybut | Typ | Fakultatywny | Opis |
---|---|---|---|
przełącznik | Smyczkowy | NIE | on: włącz przełącznik, off: wyłącz przełącznik |
wylot | Numer | NIE | Numer kanału, [0,3] |
Zabezpieczenie przed przeciążeniem
URL: http://[ip]:[port]/zeroconf/overload
Format wartości zwracanej: json
Metoda: HTTP post
Treść żądania
{
"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":{}
},
}
Atrybut | Typ | Fakultatywny | Opis |
---|---|---|---|
minAP | Numer | NIE | Min. moc, [10,440000], Jednostka: 0,01 W |
maxAP | Numer | NIE | Maksymalna moc, [10,440000], Jednostka: 0,01 W |
minV | Numer | NIE | Napięcie min., [9000,24000], Jednostka: 0,01 V |
maxV | Numer | NIE | Maks. napięcie ładowania, [9000,24000], Jednostka: 0,01 V |
maxC | Numer | NIE | Prąd maksymalny, [10,2000], Jednostka: 0,01 A |
opóźnienieCzasu | Numer | NIE | Opóźnienie wyłączenia, [0,180] |
pl | Numer | NIE | 0: Wyłącz ochronę przed przeciążeniem. 1: Włącz ochronę przed przeciążeniem. |
wartość | Numer | NIE | Górna granica lub dolna granica |
Notatka:
-_00 reprezentuje wartość kanału 1, _01 reprezentuje wartość kanału 2 itd.
- Jeśli zasilanie, górny próg napięcia i dolny próg są otwarte, górny próg musi być większy od dolnego progu.
Jestem tutaj
URL: http://[ip]:[port]/zeroconf/iAmHere
Format wartości zwracanej: json
Metoda: HTTP post
{
"deviceid": "100000140e",
"data": {
"subDevId": "123456"
}
}
Notatka:
- Funkcja ta umożliwia odnalezienie wskazanego urządzenia podrzędnego za pomocą wskaźnika świetlnego.
Ustaw czas urządzenia
URL: http://[ip]:[port]/zeroconf/time
Format wartości zwracanej: json
Metoda: HTTP post
{
"deviceid":"1000001234",
"data": {
"timeZone":8,
"date":"2020-12-15T06:31:14.115Z"
}
}
Atrybut | Typ | Fakultatywny | Opis |
---|---|---|---|
strefa czasowa | Numer | NIE | Strefa czasowa [-12,+14] może być liczbą dziesiętną, np. 7,5 |
data | Smyczkowy | NIE | UTC |
Notatka:
- Dane historyczne podurządzeń zaczną obowiązywać dopiero po ustawieniu informacji o strefie czasowej i nie mają wpływu na statystyki jednorazowe.
Dane historyczne podurządzenia
URL: http://[ip]:[port]/zeroconf/historicalData
Format wartości zwracanej: json
Metoda: HTTP post
{
"deviceid": "100000140e",
"data": {
"subDevId": "123456",
"outlet": 3,
"dateStart": "2020-07-10 05:30",
"dateEnd": "2020-07-10 19:10"
}
}
Atrybut | Typ | Fakultatywny | Opis |
---|---|---|---|
wylot | Numer | NIE | Numer kanału, [0,3] |
data rozpoczęcia | Smyczkowy | NIE | Godzina rozpoczęcia; format: „rrrr-mm-dd gg:mm” |
data zakończenia | Smyczkowy | NIE | Czas zakończenia, format: „rrrr-mm-dd gg:mm” |
Odpowiedź
- Prawidłowa odpowiedź:
Typ zawartości nagłówka odpowiedzi to application/octet-stream
Zwraca dane w formacie CSV (Comma-Separated Values). Plik zawiera wiersze nagłówka i zwykłego rekordu. Nagłówek tytułu zawiera odpowiadającą mu nazwę pola rekordu. Każdy wiersz zwykłego rekordu to rekord danych, a każdy rekord składa się z 9 pól rozdzielonych przecinkami.
Pola w kolejności od lewej do prawej wyglądają następująco:
| Data | Czas | Gniazdko | Prąd (A) | Napięcie (V) | Moc czynna (W) | Moc bierna (W) | Moc pozorna (W) | Pobór mocy w ciągu 5 minut (W·s) |
np
Użytkownicy wyszukiwali dane w godzinach 00:00 – 00:20 w dniu 10 października 2021 r.
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
- Odpowiedź na błąd:
Zobacz część ogólną .
Notatka:
- Funkcja ta zostanie udostępniona po wprowadzeniu wersji oprogramowania 1.1.0.
-Obsługa zapytań dotyczących danych do 1 dnia.
np. gdy dateStart wynosi „2020-07-10 05: 30”, dateEnd można wypełnić maksymalnie jako „2020-07-11 00: 00”.
Skonfiguruj informacje powiązane z monitorowaniem w czasie rzeczywistym
URL: http://[ip]:[port]/zeroconf/monitor
Format wartości zwracanej: json
Metoda: HTTP post
{
"deviceid": "100000140e",
"data": {
"url": "http://www.123.com",
"port": 7790,
"subDevId": "123456",
"outlet": 3,
"time":180
}
}
Atrybut | Typ | Fakultatywny | Opis |
---|---|---|---|
adres URL | Smyczkowy | NIE | Adres URL raportowania danych monitorowania w czasie rzeczywistym, format: „ http://www.xxx.com/yyy” |
port | Numer | NIE | Port raportowania danych monitorowania w czasie rzeczywistym, [1024,65535] |
podIdentyfikator urządzenia | Smyczkowy | NIE | Identyfikator chipa podurządzenia |
wylot | Numer | NIE | Numer kanału, [0,3] |
czas | Numer | NIE | Czas trwania monitorowania w czasie rzeczywistym, [1,3600], jednostka sekunda |
Notatka:
- Adres URL obsługuje wyłącznie połączenia niezaszyfrowane, a format raportu danych monitorujących to żądanie http/post.
Raport urządzenia:
{
"subDevId": 123456,
"outlet": 3,
"current": 100,
"voltage": 22000,
"actPow": 22000,
"reactPow": 22000,
"apparentPow": 22000
}
Atrybut | Typ | Fakultatywny | Opis |
---|---|---|---|
aktualny | Numer | NIE | Wartość prądu w czasie rzeczywistym, jednostka: 0,01 A |
woltaż | Numer | NIE | Wartość napięcia w czasie rzeczywistym, jednostka: 0,01 V |
actPow | Numer | NIE | Wartość actPow w czasie rzeczywistym, jednostka: 0,01 W |
reactPow | Numer | NIE | Wartość reactPow w czasie rzeczywistym, jednostka: 0,01 W |
pozornyPow | Numer | NIE | Wartość mocy pozornej w czasie rzeczywistym, jednostka: 0,01 W |
Warunki raportowania:
- Zmiana prądu przekracza 0,03 A.
-Zmiana napięcia przekracza 5 V.
- Zmiana mocy czynnej, mocy biernej lub mocy pozornej przekracza 2 W.
Ustawienie SSID i hasła WiFi
URL: http://[ip]:[port]/zeroconf/wifi
Format wartości zwracanej: json
Metoda: HTTP post
{
"deviceid": "100000140e",
"data": {
"ssid": "eWeLink",
"password": "WeLoveIoT"
}
}
Atrybut | Typ | Fakultatywny | Opis |
---|---|---|---|
SSID | Smyczkowy | NIE | SSID sieci Wi-Fi, z którą połączy się urządzenie |
hasło | Smyczkowy | NIE | Hasło sieci WiFi, z którą połączy się urządzenie |
Notatka:
- Nowe ustawienia Wi-Fi zaczną obowiązywać po następnym nawiązaniu połączenia z siecią Wi-Fi.
Oprogramowanie układowe OTA
URL: http://[ip]:[port]/zeroconf/upgrade
Format wartości zwracanej: json
Metoda: HTTP post
{
"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"
}
]
}
}
Atrybut | Typ | Fakultatywny | Opis |
---|---|---|---|
pobierzUrl | Smyczkowy | NIE | Adres pobierania nowego oprogramowania sprzętowego obsługuje wyłącznie protokół HTTP, serwer HTTP musi obsługiwać nagłówek żądania Range. |
suma sha256 | Smyczkowy | NIE | Suma kontrolna SHA256 (hash) nowego oprogramowania sprzętowego, używana do weryfikacji integralności pobranego nowego oprogramowania sprzętowego. |
nazwa | Smyczkowy | NIE | Nazwa oprogramowania sprzętowego |
Do pola błędu w treści odpowiedzi dodawane są następujące kody błędów:
- 404 Nie znaleziono (pobieranie nie powiodło się).
- 409 Weryfikacja oprogramowania sprzętowego nie powiodła się.
Uzyskaj zapisy operacji kanałowych
URL: http://[ip]:[port]/zeroconf/record
Format wartości zwracanej: json
Metoda: HTTP post
{
"deviceid": "100000140e",
"data": {
"subDevId": "123456",
"rangeStart": 200,
"rangeEnd": 229
}
}
Atrybut | Typ | Fakultatywny | Opis |
---|---|---|---|
zakresStart | Numer | NIE | Liczba początkowa rekordów operacji, [0,65535] |
koniec zakresu | Numer | NIE | Liczba końcowych rekordów operacji, [0,65535] |
Ciało odpowiedzi
{
"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
}
]
}
}
Atrybut | Typ | Fakultatywny | Opis |
---|---|---|---|
data | Smyczkowy | NIE | Czas pracy; format: „rrrr-mm-dd gg:mm” |
typ trygonometryczny | Numer | NIE | [0,3], 0: Wyzwalacz APP; 1: Wyzwalacz urządzenia; 2: Wyzwalacz zabezpieczenia przed przeciążeniem; * 3: * Wyzwalacz zabezpieczenia przed przegrzaniem |
wylot | Numer | NIE | Numer kanału, [0,3] |
działanie | Numer | NIE | 0: Kanał zamknięty; 1: Kanał otwarty |
Notatka:
- Muszą być spełnione warunki: rangeEnd>=rangeStart i rangeEnd-rangeStart<=29.
Pobierz stan urządzenia
URL: http://[ip]:[port]/zeroconf/getState
Format wartości zwracanej: json
Metoda: HTTP post
np
1. Uzyskaj status bramy:
{
"deviceid":"1000001234",
"data": {
}
}
Ciało odpowiedzi
{
"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. Uzyskaj status podurządzenia:
{
"deviceid":"1000001234",
"data": {
"subDevId": "123456"
}
}
Ciało odpowiedzi
{
"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
}
}
}
}
Atrybut | Typ | Opis |
---|---|---|
subDevCom | Numer | Status komunikacji podurządzenia 485. 1: Komunikacja jest prawidłowa. 0: Błąd komunikacji. |
cse7761Com | Szyk | Błąd komunikacji podurządzenia cse7761. Elementy tablicy są typu liczbowego. Ich liczba wynosi 4. Elementy 0–3 to odpowiednio kanały 1–4. [0,1] 1: Komunikacja jest prawidłowa. 0: Błąd komunikacji. |
Wersja fw | Smyczkowy | Bramka to wersja oprogramowania sprzętowego głównego układu, a podurządzenie to numer wersji oprogramowania sprzętowego podurządzenia. |
Wersja FwFutra podukładu | Smyczkowy | Wersja oprogramowania układowego pod-chipu. |
wifiCinnected | Bool | Sprawdź, czy Wi-Fi jest połączone. Jeśli wartość jest fałszywa, wartości ssid, bssid i signalStrength są nieprawidłowe. |
próg | Obiekt | Zakres progowy. |
actPow | Obiekt | Moc rzeczywista, jednostka: 0,01 W |
woltaż | Obiekt | Napięcie, jednostka: 0,01 V |
aktualny | Obiekt | Prąd, Jednostka: 0,01A |
min | Numer | Minimum |
maks | Numer | Maksym |
Przełącz na tryb eWeLink
URL: http://[ip]:[port]/zeroconf/ops_mode
Format wartości zwracanej: json
Metoda: HTTP post
{
"deviceid":"1000001234",
"data": {
"ops_mode": "ewelink"
}
}
Notatka:
“ops_mode”: “ewelink” oznacza powrót do trybu ewelink.