Ingeniería inversa del protocolo de intercambio en equipos EOS



Debo decir de inmediato, el titular es quizás un poco ruidoso. Realmente necesitaba extraer solo un comando del protocolo para controlar el atenuador. Sobre cómo se hizo esto y qué sucedió al final, sigue leyendo en el artículo.

Por lo tanto, existe una empresa alemana como EOS Premium SPA Technology . Produce una amplia gama de equipos para saunas. Tienen paneles de control bastante interesantes, con pantallas táctiles, una unidad de potencia de alta calidad. Es cierto que son bastante caros, pero parecen justificarse.

Sin embargo, hay una gran desventaja en su equipo. Las unidades de potencia pueden controlar hornos eléctricos de varios kilovatios, pero al mismo tiempo tienen un canal de control de iluminación muy débil. ¡Solo hasta 150 vatios! La iluminación se puede controlar cómodamente directamente desde el control remoto, encender / apagar y ajustar el brillo. ¡Pero 150 W es MUY pequeño! Hay unidades adicionales para el control de iluminación a la venta, pero el precio allí es muy inhumano.
En este sentido, la tarea parecía hacer un atenuador que controlara la carga con más potencia y, además, carga de bajo voltaje (tira de LED en 12 / 24V o lámparas halógenas en 24V).

Halógenos, aunque consumen más y son propensos al agotamiento, pero en mi opinión, la iluminación de ellos es más agradable. Aunque esto es cuestión de gustos. En general, tal tarea ha madurado. La razón por la cual se necesita dicha iluminación se ilustra bien en esta imagen:



EOS lanza muchos paneles de control, pero los más comunes son Emotec y Emotouch III. Nos ocuparemos de ellos.





Debo decir que el panel de control en el equipo EOS está conectado a la unidad de alimentación a través de un cable telefónico convencional de 4 pines:



Una inspección rápida de la placa mostró que se asignaron dos cables para alimentación de 24 V y los otros dos en la interfaz RS-485. En general, una implementación estándar. Las líneas A y B están en el medio:



Después de conectarnos a la línea usando el convertidor USB-RS-485 y establecer la velocidad a 9600 bps desde la calva, vimos bytes en ejecución, pero su propósito, por supuesto, era desconocido. El protocolo de intercambio no se encontró en el dominio público, y el propio fabricante se negó a proporcionarlo, aunque se les envió una solicitud correspondiente.
Tuve que lidiar con la decodificación yo mismo :-)

Sí, notaré de inmediato un matiz. El control del atenuador solo funciona después de poner en funcionamiento la unidad de potencia. Esto es claramente visible cuando la lámpara está conectada a la salida del atenuador incorporado. Comienza a brillar solo después de que la sauna comienza a calentarse.

Inicialmente, comenzaron a clasificar las velocidades de 9600 a 115200 bps de la serie estándar.
Y a una velocidad de 38400 me llamó la atención que los comandos están separados por dos bytes estándar 0x0A, 0x0D.

Bueno, esto ya es algo. Hagamos el siguiente truco. Busquemos el comando que necesitamos por el valor de brillo. De repente se transmite en claro.

Establecemos el valor 73 (0x49) en el control remoto:



A continuación, eliminamos el registro y buscamos estúpidamente este byte allí:



Voila! Lo encontramos, miramos de izquierda a derecha los bytes 0x0A, 0x0D, tratando de seleccionar el paquete que necesitamos. Y como resultado, obtenemos esta estructura:

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

Durante los experimentos, se encontró que 2 y 3 bytes son siempre iguales a 0x04, 4 y 5 establecen el brillo en porcentaje, 6 y 7 son iguales a 0, 8 - cambia, lo que significa que no está claro, 9 y 10 - 0x0A, 0xD.

Como lo han demostrado los experimentos, el primer byte es la dirección. Establece el llamado número de habitación. El hecho es que los controles remotos EOS pueden controlar varias unidades de potencia al mismo tiempo. Cada uno tiene su propia dirección, que se transmite en este byte.

Las direcciones son las siguientes:
Para paneles de control del horno:
01 - primera habitación
21 - segunda habitación
41 - tercer cuarto
61 - cuarto cuarto
81 - quinta habitación
A1 - sexta habitación
C1 - séptima habitación
E1 - octava sala

Para paneles de control de generador de vapor:
0E - primera habitación
2E - segunda habitación
4E - tercera habitación
6E - cuarto cuarto
8E - quinta habitación
AE - sexta habitación
CE - séptima habitación
EE - octava habitación

En realidad, todo esto es decodificación.

Para verificar, por así decirlo en la "dinámica", lanzamos rápidamente el programa en Delphi para mostrar el valor de brillo y giramos el control deslizante. Todo se cumple con claridad.

Después de eso, desarrollamos en C un programa simple para decodificar estos paquetes y lanzamos todo en hardware. El dispositivo en sí es bastante simple. Allí, PWM ordinario se implementa en una tecla de encendido, pero si estoy interesado, puedo escribir un artículo separado al respecto.

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


All Articles