Rétro-ingénierie du protocole d'échange dans les équipements EOS



Je dois dire tout de suite, le titre est peut-être un peu bruyant. J'avais vraiment besoin de retirer une seule commande du protocole pour contrôler le gradateur. À propos de la façon dont cela a été fait et de ce qui s'est finalement produit, lisez l'article.

Il existe donc une telle société allemande EOS Premium SPA Technology . Elle produit une large gamme d'équipements pour saunas. Ils ont des panneaux de contrôle assez intéressants, avec des écrans tactiles, une unité d'alimentation de haute qualité. Certes, ils sont assez chers, mais ils semblent se justifier.

Cependant, il y a un gros inconvénient dans leur équipement. Les unités de puissance peuvent contrôler des fours électriques de plusieurs kilowatts, mais en même temps, elles ont un canal de contrôle d'éclairage très faible. Jusqu'à 150 watts seulement! L'éclairage peut être facilement contrôlé directement à partir de la télécommande, allumez / éteignez et réglez la luminosité. Mais 150 W, c'est TRÈS petit! Il y a des unités supplémentaires pour le contrôle de l'éclairage en vente, mais le prix est très inhumain.
À cet égard, la tâche a semblé faire un gradateur qui contrôlerait la charge avec une plus grande puissance et, en outre, une charge à basse tension (bande LED sur 12 / 24V ou lampes halogènes sur 24V).

Les halogènes, bien qu'ils consomment plus et soient sujets à l'épuisement professionnel, mais à mon avis, l'éclairage d'eux est plus agréable. Bien que ce soit une question de goût. En général, une telle tâche a mûri. Pourquoi un tel éclairage est nécessaire est bien illustré dans cette image:



EOS publie de nombreux panneaux de contrôle, mais les plus courants sont Emotec et Emotouch III. Nous allons les traiter.





Je dois dire que le panneau de commande de l'équipement EOS est connecté à l'unité d'alimentation via un câble téléphonique 4 broches classique:



Une inspection rapide de la carte a montré que deux fils étaient attribués pour une alimentation 24 V, et les deux autres sur la ligne d'interface RS-485. En général, une implémentation standard. Les lignes A et B sont au milieu:



Après avoir connecté à la ligne à l'aide du convertisseur USB-RS-485 et réglé la vitesse à 9600 bps à partir de la calvitie, nous avons vu courir des octets, mais leur objectif, bien sûr, était inconnu. Le protocole d'échange n'a pas été trouvé dans le domaine public, et le fabricant lui-même a refusé de le fournir, bien qu'une demande correspondante leur ait été envoyée.
J'ai dû gérer le décodage moi-même :-)

Oui, je noterai immédiatement une nuance. La commande du gradateur ne fonctionne qu'après la mise en service du bloc d'alimentation. Ceci est clairement visible lorsque la lampe est connectée à la sortie du gradateur intégré. Il ne commence à briller qu'après que le sauna commence à chauffer.

Initialement, ils ont commencé à trier les vitesses de 9600 à 115200 bps de la série standard.
Et à une vitesse de 38400, il m'a frappé que les commandes sont séparées par deux octets standard 0x0A, 0x0D.

Eh bien, c'est déjà quelque chose. Faisons le tour suivant. Cherchons la commande dont nous avons besoin par la valeur de luminosité. Soudain, il est transmis en clair.

Nous définissons la valeur 73 (0x49) sur la télécommande:



Ensuite, nous supprimons le journal et recherchons bêtement cet octet:



Voila! Nous le trouvons, regardez à gauche et à droite pour les octets 0x0A, 0x0D, en essayant de sélectionner le package dont nous avons besoin. Et en conséquence, nous obtenons cette structure:

0x0E 0x04 0x04 0x49 0x49 0x00 0x00 0xD1 0x0A 0x0D

Au cours des expériences, il a été constaté que 2 et 3 octets sont toujours égaux à 0x04, 4 et 5 définissent la luminosité en pourcentage, 6 et 7 sont égaux à 0, 8 - cela change, ce qui signifie qu'il n'est pas clair, 9 et 10 - 0x0A, 0xD.

Comme les expériences l'ont montré, le premier octet est l'adresse. Il définit le soi-disant numéro de chambre. Le fait est que les télécommandes EOS peuvent contrôler plusieurs unités d'alimentation en même temps. Chacun a sa propre adresse, qui est transmise dans cet octet.

Les adresses sont les suivantes:
Pour les panneaux de commande du four:
01 - première chambre
21 - deuxième chambre
41 - troisième chambre
61 - quatrième chambre
81 - cinquième chambre
A1 - sixième chambre
C1 - septième chambre
E1 - huitième salle

Pour les panneaux de commande du générateur de vapeur:
0E - première chambre
2E - deuxième chambre
4E - troisième chambre
6E - quatrième chambre
8E - cinquième chambre
AE - sixième chambre
CE - septième chambre
EE - huitième salle

En fait, tout cela est en train de décoder.

Pour vérifier, pour ainsi dire dans la "dynamique", nous avons rapidement lancé le programme sur Delphi pour afficher la valeur de luminosité et tourné le curseur. Tout se remplit clairement.

Après cela, nous avons développé en C un programme simple pour décoder ces paquets et tout lancé en matériel. L'appareil lui-même est assez simple. Là, le PWM ordinaire est implémenté sur une touche d'alimentation, mais si cela m'intéresse, je peux ensuite écrire un article séparé à ce sujet.

Source: https://habr.com/ru/post/fr453234/


All Articles