dimanche 5 février 2012
ELV Max! Contenu de la config (ligne C:)
Par Fred Senis |
dimanche 5 février 2012 à 11:44 | Informatique
La ligne C: se décompose en 2 champs principaux. Outre l'entête "C:", on retrouve le code d'adressage en hexadécimal sur 6 caractères (donc une fois retransformé, sur 24bits) suivi d'une virgule et à nouveau un contenu encodé en Base64.
C:007ead,7QB+rQAJAQBJRVEwMTEyMjQwAAsABEAAAAAAAAAAAP///////////////////////////wsABEAAAAAAAAAAQf///////////////////////////2h0dHA6Ly93d3cubWF4LXBvcnRhbC5lbHYuZGU6ODAvY3ViZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENFVAAACgADAAAOEENFU1QAAwAAAAAcIA==
Voici donc la ligne correspondant au périphérique 007ead. Dans le cas présent, il s'agit du cube lui-même et je n'en étudierai pas la config tout de suite car peu intéressante, pour le plaisir voici le décodage (les données alphanumériques sont en soulignées, le reste est en hexadécimal) :
ED 007EAD 00 09 01 00 IEQ0112240 00 0B 00 04 40 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 0B 00 04 40 00 00 00 00 00 00 00 41 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF http://www.max-portal.elv.de:80/cube 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 CET 00 00 0A 00 03 00 00 0E 10 CEST 00 03 00 00 00 00 1C 20
On y découvre entre autre l'URL du backend du portail web (l'adresse du frontend est à http://www.max-portal.elv.de/ ).
Intéressons-nous plutôt aux thermostats. La config est là-aussi contenue dans un champ encodé en base64. Celle-ci étant particulièrement longue, je vous en fait grâce et je vais me contenter d'en faire le détail :
Position Champ
0 1 octet = ?
1 3 octets = Adresse
4 1 octet = Type de périphérique (0=Cube?, 1=Thermostat)
5 1 octet = ?
6 10 octets= Numéro de série (IEQXXXXXXX)
16 1 octet = Température de confort
17 1 octet = Température Eco
18 1 octet = Température maximale de réglage (valeur de 'off')
19 1 octet = Température minimal de réglage (valeur de 'on')
20 1 octet = Décalage de réglage température
21 1 octet = Température en cas d'ouverture de fenêtre
22 1 octet = Durée de changement de consigne en cas d'ouverture de fenêtre
23 3 bits = durée du Boost
5 bits = valeur de valve du Boost
24 3 bits = Jour du cycle de détartrage de la valve
5 bits = heure de détartrage de la valve
25 1 octet = position maximum de la valve (255)
26 1 octet = position de départ de la valve (0)
27 début des programmes journaliers (7 groupes = 1 par jour)
Les températures sont exprimées en multiples de 0,5° (Température = Valeur/2)
La liste des jours commence le Samedi(=0 ???) jusqu'au Vendredi (=7)
Le décalage de température est exprimé en multiples de 0,5° à ajouter à -3,5° (Décalage = Valeur/2 - 3.5)
La durée du boost se calcule donc par Durée = (Valeur & 0xE0)>>5 et la valeur de valve par Valve = (Valeur & 0x1F)
Idem pour le détartrage : Jour = (Valeur & 0xE0)>>5 et Heure = (Valeur & 0x1F)
Un programme journalier est constitué de 26 octets, 13 blocs de 2 octets pour être plus précis soit 13 paliers programmables par jour. Sur ses 16bits (composant les 2 octets MSB et LSB), sont encodés 2 grandeurs : la température de consigne et l'heure de fin.
0TTTTTTH.HHHHHHHH
La Température est à nouveau exprimée en multiple de 0,5 tandis que l'heure est exprimée en multiple de 5 minutes
Donc partant du principe qu'on lit les octets un par un, on a :
Température = ((MSB & 0x7E)>>1)/2 Heure de fin = ((MSB & 0x01)*256+LSB)*0.5
Il me reste donc 2 champs dont je n'arrive pas à comprendre la signification (0 et 5).





), à voir lorsqu'on passera






