API HTTP principale de SPM
Le type d'appareil est diy_meter(type=diy_meter) et la version de l'interface API de l'appareil est 1 (apivers=1).
Diffusion de l'état de l'appareil
Lorsque l'état du sous-périphérique change, le texte DNS doit contenir le champ « id », qui correspond à l'identifiant de la puce du sous-périphérique. Le sous-périphérique diffuse uniquement le champ modifié. Si le commutateur du sous-périphérique est modifié, seul le champ « switches » est signalé, et le champ « seuil overload_00 » n'est pas signalé.
Cet exemple ajoute des sauts de ligne et des espaces pour faciliter la lecture, mais il n'y a en fait aucun saut de ligne ni espace.
//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]
}
]
}
}
Attribut | Taper | Description |
---|---|---|
commutateurs | Tableau | État de commutation de tous les canaux |
sortie | Nombre | Numéro de canal, [0,3] |
changer | Chaîne | on : allumer l'interrupteur, off : éteindre l'interrupteur |
sous-comité du développement | Nombre | État de communication du sous-périphérique 485. 1 : Communication normale, 0 : Erreur de communication |
surchargeTrig | Tableau | Événement déclencheur de protection contre les surcharges. Ce champ apparaît en cas de surcharge. |
cse7761Com | Tableau | Erreur de communication du sous-périphérique cse7761. Les éléments du tableau sont de type numérique. La quantité est de 4. Les éléments 0 à 3 correspondent respectivement aux canaux 1 à 4. [0,1] 1 : Communication normale. 0 : Erreur de communication. |
surchauffe | Tableau | Événement déclencheur de protection contre la surchauffe du sous-appareil cse7761. Les éléments du tableau sont de type numérique. La quantité est de 4. Les éléments 0 à 3 correspondent respectivement aux canaux 1 à 4. [0,1] 1 : Communication normale. 0 : Erreur de communication. Ce champ apparaît en cas d'événement déclencheur de surchauffe. |
dépassement de limite | Tableau | Événement déclencheur de protection contre les surcharges de valeur limite. Ce champ apparaît en cas de surcharge de valeur limite. |
Obtenir l'identifiant de l'appareil
URL : http://[ip]:[port]/zeroconf/deviceid
Format de la valeur de retour : json
Méthode : HTTP post
{
"data": {}
}
Objet vide, aucun attribut n'est requis.
Corps de la réponse
{
"seq": 2,
"error": 0,
"data": {
"deviceid": "1000012345"
}
}
Ajouter un sous-appareil
URL : http://[ip]:[port]/zeroconf/add_sub_devices
Format de la valeur de retour : json
Méthode : HTTP post
{
"deviceid": "100000140e",
"data": {}
}
Objet vide, aucun attribut n'est requis.
Corps de la réponse
{
"seq": 2,
"error": 0,
}
Obtenir la liste des sous-appareils
URL : http://[ip]:[port]/zeroconf/subDevList
Format de la valeur de retour : json
Méthode : HTTP post
{
"deviceid": "100000140e",
"data": {}
}
Objet vide, aucun attribut n'est requis.
Corps de la réponse
{
"seq": 2,
"error": 0,
"data": {
"subDevList": [
{
"subDevId": "123456",
"type": 130
}
]
}
}
Attribut | Taper | Facultatif | Description |
---|---|---|---|
subDevId | Chaîne | Non | ID de la puce du sous-appareil |
taper | Nombre | Non | Type de sous-appareil. 130 : Sous-appareil à quatre canaux |
Interrupteur marche/arrêt
URL : http://[ip]:[port]/zeroconf/switches
Format de la valeur de retour : json
Méthode : HTTP post .
{
"deviceid": "100000140e",
"data": {
"subDevId": "123456",
"switches": [
{
"switch": "on",
"outlet": 0
},
{
"switch": "on",
"outlet": 1
},
{
"switch": "on",
"outlet": 2
},
{
"switch": "on",
"outlet": 3
}
]
}
}
Attribut | Taper | Facultatif | Description |
---|---|---|---|
changer | Chaîne | Non | on : allumer l'interrupteur, off : éteindre l'interrupteur |
sortie | Nombre | Non | Numéro de canal, [0,3] |
Protection contre les surcharges
URL : http://[ip]:[port]/zeroconf/overload
Format de la valeur de retour : json
Méthode : HTTP post
Corps de la requête
{
"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":{}
},
}
Attribut | Taper | Facultatif | Description |
---|---|---|---|
minAP | Nombre | Non | Puissance minimale, [10 440 000], unité : 0,01 W |
maxAP | Nombre | Non | Puissance max., [10 440 000], Unité : 0,01 W |
minV | Nombre | Non | Tension minimale, [9000,24000], unité : 0,01 V |
maxV | Nombre | Non | Tension max. [9000,24000], unité : 0,01 V |
maxC | Nombre | Non | Courant max., [10,2000], Unité : 0,01 A |
délai | Nombre | Non | Délai d'extinction, [0,180] |
en | Nombre | Non | 0 : Désactiver la protection contre les surcharges. 1 : Activer la protection contre les surcharges. |
val | Nombre | Non | Limite supérieure ou limite inférieure |
Note:
-_00 représente la valeur du canal 1, _01 représente la valeur du canal 2, et ainsi de suite.
-Lorsque le seuil supérieur de puissance, de tension et le seuil inférieur sont tous ouverts, le seuil supérieur doit être supérieur au seuil inférieur.
Je suis là
URL : http://[ip]:[port]/zeroconf/iAmHere
Format de la valeur de retour : json
Méthode : HTTP post
{
"deviceid": "100000140e",
"data": {
"subDevId": "123456"
}
}
Note:
-Cette fonction permet de trouver le sous-appareil désigné grâce au voyant lumineux.
Régler l'heure de l'appareil
URL : http://[ip]:[port]/zeroconf/time
Format de la valeur de retour : json
Méthode : HTTP post
{
"deviceid":"1000001234",
"data": {
"timeZone":8,
"date":"2020-12-15T06:31:14.115Z"
}
}
Attribut | Taper | Facultatif | Description |
---|---|---|---|
fuseau horaire | Nombre | Non | Le fuseau horaire, [-12,+14], peut être un nombre décimal, comme 7,5 |
date | Chaîne | Non | UTC |
Note:
-Les données historiques des sous-appareils ne prendront effet qu'une fois les informations de fuseau horaire définies et n'affecteront pas les statistiques ponctuelles.
Données historiques du sous-appareil
URL : http://[ip]:[port]/zeroconf/historicalData
Format de la valeur de retour : json
Méthode : HTTP post
{
"deviceid": "100000140e",
"data": {
"subDevId": "123456",
"outlet": 3,
"dateStart": "2020-07-10 05:30",
"dateEnd": "2020-07-10 19:10"
}
}
Attribut | Taper | Facultatif | Description |
---|---|---|---|
sortie | Nombre | Non | Numéro de canal, [0,3] |
date de début | Chaîne | Non | Heure de début ; format : « aaaa-mm-jj hh:mm » |
dateFin | Chaîne | Non | Heure de fin, format : « aaaa-mm-jj hh:mm » |
Réponse
- Réponse correcte :
Le type de contenu de l'en-tête de réponse est application/octet-stream
Renvoie les données d'un fichier CSV (valeurs séparées par des virgules). Le fichier contient un en-tête et des lignes d'enregistrement normales. L'en-tête de titre contient le nom du champ d'enregistrement correspondant. Chaque ligne d'enregistrement normale est un enregistrement de données, et chaque enregistrement est composé de neuf champs, séparés par des virgules.
Les champs dans l'ordre de gauche à droite sont les suivants :
| Date | heure | Prise | Courant (A) | Tension (V) | Puissance réelle (W) | Puissance réactive (W) | Puissance apparente (W) | Consommation électrique sur 5 minutes (W·s) |
par exemple
Les utilisateurs interrogent les données de 00h00 à 00h20 le 10 octobre 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
- Réponse d'erreur :
Se référer à la partie générale .
Note:
-Cette fonction sera publiée après la version 1.1.0 du firmware.
-Prise en charge des données de requête jusqu'à 1 jour.
Par exemple, lorsque la date de début est « 2020-07-10 05: 30 », la date de fin peut être renseignée au maximum comme « 2020-07-11 00: 00 ».
Configurer la surveillance en temps réel Informations connexes
URL : http://[ip]:[port]/zeroconf/monitor
Format de la valeur de retour : json
Méthode : HTTP post
{
"deviceid": "100000140e",
"data": {
"url": "http://www.123.com",
"port": 7790,
"subDevId": "123456",
"outlet": 3,
"time":180
}
}
Attribut | Taper | Facultatif | Description |
---|---|---|---|
URL | Chaîne | Non | URL de rapport des données de surveillance en temps réel, format : « http://www.xxx.com/yyy » |
port | Nombre | Non | Port de rapport de données de surveillance en temps réel, [1024,65535] |
subDevId | Chaîne | Non | ID de la puce du sous-appareil |
sortie | Nombre | Non | Numéro de canal, [0,3] |
temps | Nombre | Non | Durée de surveillance en temps réel, [1,3600], Unité seconde |
Note:
-L'URL ne prend en charge que les connexions non chiffrées et le format du rapport de données de surveillance est une requête http post.
Rapport de l'appareil :
{
"subDevId": 123456,
"outlet": 3,
"current": 100,
"voltage": 22000,
"actPow": 22000,
"reactPow": 22000,
"apparentPow": 22000
}
Attribut | Taper | Facultatif | Description |
---|---|---|---|
actuel | Nombre | Non | Valeur actuelle en temps réel, unité : 0,01 A |
tension | Nombre | Non | Valeur de tension en temps réel, unité : 0,01 V |
actPow | Nombre | Non | Valeur actPow en temps réel, unité : 0,01 W |
réagirPow | Nombre | Non | Valeur reactPow en temps réel, unité : 0,01 W |
apparentPow | Nombre | Non | Valeur de puissance apparente en temps réel, unité : 0,01 W |
Conditions de déclaration :
-La variation de courant dépasse 0,03 A.
-La variation de tension dépasse 5 V.
-La puissance active, la puissance réactive ou la variation de puissance apparente dépasse 2 W.
Configuration du SSID et du mot de passe Wi-Fi
URL : http://[ip]:[port]/zeroconf/wifi
Format de la valeur de retour : json
Méthode : HTTP post
{
"deviceid": "100000140e",
"data": {
"ssid": "eWeLink",
"password": "WeLoveIoT"
}
}
Attribut | Taper | Facultatif | Description |
---|---|---|---|
ssid | Chaîne | Non | SSID du réseau WiFi auquel l'appareil se connectera |
mot de passe | Chaîne | Non | Mot de passe du réseau WiFi auquel l'appareil se connectera |
Note:
-Le nouveau paramètre Wi-Fi prendra effet la prochaine fois que le Wi-Fi sera connecté.
Micrologiciel OTA
URL : http://[ip]:[port]/zeroconf/upgrade
Format de la valeur de retour : json
Méthode : 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"
}
]
}
}
Attribut | Taper | Facultatif | Description |
---|---|---|---|
URL de téléchargement | Chaîne | Non | L'adresse de téléchargement du nouveau firmware prend uniquement en charge le protocole HTTP, le serveur HTTP doit prendre en charge l'en-tête de requête Range. |
somme sha256 | Chaîne | Non | Somme de contrôle SHA256 (hachage) du nouveau firmware, elle est utilisée pour vérifier l'intégrité du nouveau firmware téléchargé. |
nom | Chaîne | Non | Nom du micrologiciel |
Les codes d’échec suivants sont ajoutés au champ d’erreur du corps de la réponse :
- 404 Non trouvé (Téléchargement échoué).
- 409 La vérification du micrologiciel a échoué.
Obtenir les enregistrements d'opérations de canal
URL : http://[ip]:[port]/zeroconf/record
Format de la valeur de retour : json
Méthode : HTTP post
{
"deviceid": "100000140e",
"data": {
"subDevId": "123456",
"rangeStart": 200,
"rangeEnd": 229
}
}
Attribut | Taper | Facultatif | Description |
---|---|---|---|
plageDébut | Nombre | Non | Nombre de débuts d'enregistrements d'opération, [0,65535] |
plageFin | Nombre | Non | Nombre final d'enregistrements d'opérations, [0,65535] |
Corps de la réponse
{
"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
}
]
}
}
Attribut | Taper | Facultatif | Description |
---|---|---|---|
date | Chaîne | Non | Durée de fonctionnement ; format : « aaaa-mm-jj hh:mm » |
trigType | Nombre | Non | [0,3], 0 : déclencheur APP ; 1 : déclencheur de l'appareil ; 2 : déclencheur de protection contre les surcharges ; * 3 : * déclencheur de protection contre les surchauffes |
sortie | Nombre | Non | Numéro de canal, [0,3] |
action | Nombre | Non | 0 : Canal fermé ; 1 : Canal ouvert |
Note:
-Les conditions doivent être remplies : rangeEnd>=rangeStart et rangeEnd-rangeStart<=29.
Obtenir l'état de l'appareil
URL : http://[ip]:[port]/zeroconf/getState
Format de la valeur de retour : json
Méthode : HTTP post
par exemple
1. Obtenir l’état de la passerelle :
{
"deviceid":"1000001234",
"data": {
}
}
Corps de la réponse
{
"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. Obtenir l'état du sous-appareil :
{
"deviceid":"1000001234",
"data": {
"subDevId": "123456"
}
}
Corps de la réponse
{
"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
}
}
}
}
Attribut | Taper | Description |
---|---|---|
sous-comité du développement | Nombre | État de communication du sous-périphérique 485. 1 : la communication est normale. 0 : erreur de communication. |
cse7761Com | Tableau | Erreur de communication du sous-périphérique cse7761. Les éléments du tableau sont de type numérique. La quantité est de 4. Les éléments 0 à 3 correspondent respectivement aux canaux 1 à 4. [0,1] 1 : Communication normale. 0 : Erreur de communication. |
fwVersion | Chaîne | La passerelle est la version du micrologiciel de la puce principale et le sous-appareil est le numéro de version du micrologiciel du sous-appareil. |
sous-ChipFwVer | Chaîne | La version du firmware de la sous-puce. |
wifiCinected | Booléen | Vérifiez si le Wi-Fi est connecté. Si la valeur est « false », les valeurs de SSID, BSSID et SignalStrength sont invalides. |
seuil | Objet | Plage de seuil. |
actPow | Objet | Puissance réelle, unité : 0,01 W |
tension | Objet | Tension, unité : 0,01 V |
actuel | Objet | Courant, unité : 0,01 A |
min | Nombre | Minimum |
max | Nombre | Max |
Passer en mode eWeLink
URL : http://[ip]:[port]/zeroconf/ops_mode
Format de la valeur de retour : json
Méthode : HTTP post
{
"deviceid":"1000001234",
"data": {
"ops_mode": "ewelink"
}
}
Note:
« ops_mode » : « ewelink » signifie revenir au mode ewelink.