Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
interface_chauffage_-_local_process_bus_lpb [2017/12/30 19:48] 88.164.131.165 [Protocole] |
interface_chauffage_-_local_process_bus_lpb [2018/04/22 20:42] 88.164.131.165 [Le format de la trame] |
||
---|---|---|---|
Ligne 65: | Ligne 65: | ||
Exemple : 78 11 FF 00 CC 02 00 14 02 05 00 02 1D 00 0F 06 F2 B4 | Exemple : 78 11 FF 00 CC 02 00 14 02 05 00 02 1D 00 0F 06 F2 B4 | ||
- | 78 : Magic Byte - Indique le debut de la trame (Toujours 78) | + | * 78 : Magic Byte - Indique le debut de la trame (Toujours 78) |
- | 11 : Taille - Indique la taille du télégramme sans compter le Magic Byte 0x11 = 0d17 et on a bien 7 octets dans la trame. | + | * 11 : Taille - Indique la taille du télégramme sans compter le Magic Byte 0x11 = 0d17 et on a bien 7 octets dans la trame. |
- | 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 to Set / 6 : Request / 7 : reply to request - 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 : valeur | ||
+ | |||
+ | Les octect 1 et 2 sont inversés entre la demande et la réponse : | ||
+ | |||
+ | Exemple : | ||
+ | * Demande : 053D0064 type 86 | ||
+ | * Réponse : 3D050064 type 87 | ||
+ | |||
+ | Echange suivant +0x20 | ||
+ | |||
+ | * Demande : 053D0064 type A6 | ||
+ | * Réponse : 3D050064 type A7 | ||
+ | |||
+ | * 0F 06 : Valeur du telegramme | ||
+ | * F2 B4 : CRC | ||
+ | |||
+ | ==== 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% | ||
+ | |||
+ | |FC 02 00 14 02 05 00 02 1F 00|Température extérieure| | ||
+ | |CC 02 00 14 02 05 00 02 1D 00|Température chaudière| | ||
+ | |CC 02 00 14 02 3D 2D 02 1C 00|Température ambiante| | ||
+ | |CC 02 00 14 02 31 00 02 10 01"|Température chaudière| | ||
+ | |CC 02 00 14 02 05 00 02 1D 00|?| | ||
+ | |FC 02 00 14 02 31 00 02 22 00|Température ECS| | ||
+ | |CC 02 00 14 27 25 3D 05 16 00|Température ECS fournie par la chaudière lors d'une demande du thermostat| | ||
+ | |CC 02 00 14 02 15 00 01 F8 00|Demande d’arrêt bruleur ?| | ||
+ | |CC 02 00 14 02 15 00 01 FB 32|Bruleur OFF| | ||
+ | |CC 02 00 14 02 15 00 01 F8 05|Bruleur ON| | ||
+ | |CC 02 00 14 02 3D 2D 02 0D 05|Action sur le bouton Entrée/sortie maison du thermostat| | ||
+ | |CC 02 00 14 A3 3D 2D 02 0D 06|Mode Prog 3| | ||
+ | |CC 02 00 14 02 2D 00 02 0F 05|Mode Prog 3 ACK par la chaudière| | ||
+ | |CC 02 00 14 02 3D 2D 02 0D 03|Mode été| | ||
+ | |CC 02 00 14 02 3D 2D 02 0D 03|Mode été ACK par la chaudière| | ||
+ | |FC 02 00 14 02 05 00 00 6C 00|DateTime| | ||
+ | |||
+ | === 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 : ?? |