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
0x01 : cooling with reheat
0x02 : heating only
0x03 : heating with reheat
0x04 : cooling and heating
0x05 : cooling and reheat with reheat

0x201 0x001C Enum8 Read/Write

Dépend de la commande 0x001B Permet de lire et écrire le mode du thermostat

0x00 : OFF
0x03 : Cool
0x04 : Heat

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.

 

Translate »