Rechercher par mot-clé
Gestion simple des thermostats ZigBee
Dans ce tutoriel développeur, on va voir comment dialoguer avec un thermostat ZigBee.
Pour éviter d’entrer dans la complexité, je ne vais vous présenter que les attributs indispensables au pilotage d’un thermostat ZigBee.
Lors d’un appairage un thermostat se présente avec le Device ID : 0x0301
Le cluster correspondant à la fonction « thermostat » (HVAC) est le : 0x0201
La liste des commandes à utiliser (Read attributes / Write Attribues ) se trouve ici : https://zigate.fr/documentation/commandes-zigate/
Voici la liste des attributs indispensables :
Température interne du thermostat
Cluster : 0x0201
Attribut : 0x0000
Type attribut : 0x29 (INT16)
Droits : Read only
Pour avoir accès à l’information, il suffit d’utiliser la commande Read Attribute (0x0100)
Lecture des données
Voici un exemple de données à envoyer avec la commande Read Attribute (0x0100)
02 = address mode
E4 9F = short Address
01 = source endpoint
01 = destination endpoint
02 01 = cluster id
00 = direction (to client)
00 = manufacturer specific (No)
00 00 = manufacturer id
01 = number of attributes
00 00 = attribut
Voici un exemple de réponse d’un thermostat :
01 81 02 00 0F CA 4B E4 9F 01 02 01 00 00 00 29 00 02 09 E1 B7 03
Type: 0x8102 (Attribute Report)
SQN: 0x4B
Src Addr: 0xE49F
Src Ep: 0x01
Cluster ID: 0x0201 (HVAC: Thermostat)
Attribute ID: 0x0000
Attribute Type: 0x29 (INT16)
Attribute Size: 0x0002
Datas : 09 E1 = 2529 = 25.29 °C
Status: 0x00
Régler le mode du thermostat
Cluster : 0x0201
Attribut : 0x001C
Type attribut : 0x30(Enum-8)
Droits : Read / Write
Voici les modes normalement disponibles ( dépend du thermostat)
0x00 = OFF
0x03 = COOLING
0x04 = HEATING
Lecture des données
Voici un exemple de données à envoyer avec la commande Read Attribute (0x0100)
02 = address mode
E4 9F = short Address
01 = source endpoint
01 = destination endpoint
02 01 = cluster id
00 = direction (to client)
00 = manufacturer specific (No)
00 00 = manufacturer id
01 = number of attributes
00 1C = attribut
Voici un exemple de réponse d’un thermostat :
01 81 02 00 0E 2E 4E 01 58 01 02 01 00 1C 00 30 00 01 04 9F 03
Type: 0x8102 (Attribute Report)
SQN: 0x4E
Src Addr: 0x0158
Src Ep: 0x01
Cluster ID: 0x0201 (HVAC: Thermostat)
Attribute ID: 0x001C
Attribute Type: 0x30 (8-bit Enumeration)
Attribute Size: 0x0001
Data: 0x04 (Heating)
Status: 0x00
Ecriture des données
Exemple d’écriture de la donnée avec la commande Write Attribute (0x0110)
02 = address mode
67 33 = short Address
01 = source endpoint
01 = destination endpoint
02 01 = cluster id
00 = direction (to client)
00 = manufacturer specific (No)
00 00 = manufacturer id
01 = number of attributes
00 1C = attribut
30 = attribute type
00 = Data
(message encodé) –> 01 02 11 13 02 10 10 7A 02 12 67 33 02 11 02 11 02 12 02 11 02 10 02 10 02 10 02 10 02 11 02 10 1C 30 02 10 03
Configurer le seuil du thermostat (chaud / froid)
Cluster : 0x0201
Attribut : 0x0011 (cooling setpoint) 0x0012 (Heating setpoint)
Type attribut : 0x29 (ENUM-8)
Droits : Read / Write
Lecture des données
Voici un exemple de données à envoyer avec la commande Read Attribute (0x0100)
02 = address mode
67 33 = short Address
01 = source endpoint
01 = destination endpoint
02 01 = cluster id
00 = direction (to client)
00 = manufacturer specific (No)
00 00 = manufacturer id
01 = number of attributes
00 12 = attribut
Voici un exemple de réponse d’un thermostat :
01 81 02 00 0F 4A 01 67 33 01 02 01 00 12 00 29 00 02 08 34 94 03
Type: 0x8102 (Attribute Report)
SQN: 0x4E
Src Addr: 0x0158
Src Ep: 0x01
Cluster ID: 0x0201 (HVAC: Thermostat)
Attribute ID: 0x0012
Attribute Type: 0x29 (INT16)
Attribute Size: 0x0002
Data: 08 94 = 2196 = 21.96°C
Status: 0x00
Ecriture des données
Exemple d’écriture de la donnée avec la commande Write Attribute (0x0110)
02 = address mode
67 33 = short Address
01 = source endpoint
01 = destination endpoint
02 01 = cluster id
00 = direction (to client)
00 = manufacturer specific (No)
00 00 = manufacturer id
01 = number of attributes
00 12 = attribut
29 = attribute type
09 60 = Data
(message encodé) –> -> 01 02 11 13 02 10 11 02 15 02 12 67 33 02 11 02 11 02 12 02 11 02 10 02 10 02 10 02 10 02 11 02 10 12 29 02 19 60 03
Cette commande vous permet d’envoyer le seuil à votre thermostat :
Attribut : 0x0012 pour le seuil de chauffage
Attribut : 0x0011 pour le seuil de froid
Les attributs utiles gérés par la ZiGate
0x0000
Cluster | Attribut | Type | Read/Write | Commentaire |
0x201 | 0x0000 | INT16 | Read only | Permet d’interroger la température interne du Thermostat |
0x201 | 0x0008 | UINT8 | Read only | Permet de connaître le niveau de chauffe/froid géré par le thermostat. En général, cela s’appuie sur l’algo de régulation de l’appareil. valeur de 0 à 100 (pourcentage) |
0x201 | 0x0011 (cool) / 0x0012 (heat) | INT16 | Read / Write | Permet de lire et écrire le seuil de déclenchement du chauffage/clim si la pièce est occupée. |
0x201 | 0x0013 (cool) /0x0014 (heat) | INT16 | Read / Write | Permet de lire et écrire le seuil de déclenchement du chauffage/clim si la pièce est inoccupée. |
0x201 | 0x001B | Enum8 | Read/Write |
Permet de lire et écrire le système opérationnel du thermostat. 0x00 : cooling only |
0x201 | 0x001C | Enum8 | Read/Write |
Dépend de la commande 0x001B Permet de lire et écrire le mode du thermostat 0x00 : OFF |
Voici les fonctions essentielles (pour moi) du thermostat. Il existe surement d’autres fonctionnalités comme la gestion d’un calendrier et le paramétrage de l’algorithme de régulation.