WikiElectronique

Wiki sur l'électronique et l'informatique

Outils pour utilisateurs

Outils du site


interface_chauffage_-_local_process_bus_lpb

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
interface_chauffage_-_local_process_bus_lpb [2017/12/30 19:49]
88.164.131.165 [Le format de la trame]
interface_chauffage_-_local_process_bus_lpb [2019/02/12 22:21]
88.164.131.165 [Le format de la trame]
Ligne 69: Ligne 69:
   * FF : Destination - Adresse de destination du telegramme (0xFF Broadcast à touts les périphériques sur le bus)   * FF : Destination - Adresse de destination du telegramme (0xFF Broadcast à touts les périphériques sur le bus)
   * 00 : Expéditeur - Adresse de l'​expediteur du telegramme   * 00 : Expéditeur - Adresse de l'​expediteur du telegramme
-  * CC 02 00 14 02 05 00 02 1D 00 Nom du telegramme ​(Reste à preciser- Toujours de 10 octects +  * CC : Flag d'​envoi ou de réception ?  
-  * 0F 06 : Valeur du telegramme+  * 02 : inconnu 
 +  * 00 : inconnu 
 +  * 14 : inconnu 
 +  * 02 : type ? 2 : info / 3 : Set / 4: ACK / 5: NACK / 6 : Request / 7 : reply to request / 8 : Error - Le type est augmenté de 0x20 entre chaque échange 
 +  * 05 : (cmd & 0x00ff0000) >> 16; 
 +  * 00 : (cmd & 0xff000000) >> 24; 
 +  * 02 : (cmd & 0x0000ff00) >> 8; 
 +  * 1D : (cmd & 0x000000ff); 
 +  * 00 0F 06 : Valeur 
 +  * F2 B4 : CRC 
 + 
 +Les octets 1 et 2 sont inversés entre la demande et la réponse : 
 + 
 +Exemple :  
 +  * Demande : 053D0064 type 86 
 +  * Réponse : 3D050064 type 87 
 + 
 +Échange suivant +0x20 
 + 
 +  * Demande : 053D0064 type A6 
 +  * Réponse : 3D050064 type A7 
 + 
 + 
 + 
 +==== Calcul ​du CRC ==== 
 + 
 +Le CRC se calcule avec l'​ensemble des reçus  
 + 
 +<code csharp>​ 
 +        public static string CRC_LPB(byte[] bytes) 
 +        { 
 +            int crc = 0; 
 +            int len = bytes.Length-1;​ 
 +            crc = (257 - len) * 256 + len - 2; 
 + 
 +            if (bytes != null && bytes.Length > 0) 
 +            { 
 +                for(int i=0;​i<​(len-1);​i++) 
 +                { 
 +                    crc += bytes[i]; 
 +                } 
 +            } 
 +            return String.Format("​{0:​X2}",​ crc); 
 +        } 
 +</​code>​
   ​   ​
 +  Si bytes[] = {0x78,​0x11,​0xFF,​0x00,​0xCC,​0x02,​0x00,​0x14,​0x02,​0x05,​0x00,​0x02,​0x1D,​0x00,​0x0F,​0x06,​0xF2,​0xB4}
 +  ​
 +  Alors crc = F2B4 
 +==== Liste des télégramme et décodage ==== 
 +
 +La majorité des informations ci dessous sont issu de tests (reverse engineering) et ne sont pas donc pas fiables à 100%
 +
 +|0005021F|Température extérieure|
 +|0005021D|Température chaudière|
 +|2D3D021C|Température ambiante|
 +|00310210|Température chaudière 2 ?|
 +|0005021E|Température retour chaudière|
 +|00310222|Température ECS|
 +|3D250516|Température ECS fournie par la chaudière lors d'une demande du thermostat|
 +|001501FB|Bruleur OFF|
 +|001501F8|Bruleur ON|
 +|2D3D020D|Le thermostat indique dans quel mode il se trouve(1)|
 +|002D020F|ACK Mode|
 +|050504B3|Mode été|
 +|050504B2|Mode fin été ?|
 +|0005006C|DateTime|
 +
 +(1) : 
 +
 +=== Décodage températures === 
 +Toutes les températures se décodent de la même manière.
 +
 +Exemple : 78 11 FF 00 FC 02 00 14 02 31 00 02 22 00 **0A 7B** F3 85 
 +
 +On récupère la valeur (Ici il s'agit d'une information de température de l'ECS)
 +On convertir cette valeur en entier : 0x0A7B = d2683 
 +On divise par 64 par avoir la valeur en °C : 2683 / 64 = 41°C
 +
 +=== Décodage DateTime === 
 +
 +Exemple 78 17 FF 00 FC 02 00 14 02 05 00 00 6C 00 **75 0C 1F 07 10 0E 1A 00** EE 07 
 +
 +  * 75 : 1900 + 0x75 (117) = 2017 (année)
 +  * 0C : 12 (mois) ​
 +  * 1F : 31 (jour)
 +  * 07 : 7eme jour de la semaine donc dimanche
 +  * 10 : 16 (heure)
 +  * 0E : 14 (min)
 +  * 1A : 26 (secondes ?)
 +  * 00 : ??
interface_chauffage_-_local_process_bus_lpb.txt · Dernière modification: 2019/02/12 22:21 par 88.164.131.165