EOS设备中交换协议的逆向工程



我必须马上说,标题可能有点大声。 我真的只需要从协议中拉出一个命令来控制调光器。 有关如何完成此操作以及最终发生了什么,请继续阅读本文。

因此,有一家德国公司EOS Premium SPA Technology 。 它生产各种用于桑拿的设备。 他们有非常有趣的控制面板,带有触摸屏和高品质的动力装置。 是的,它们确实很昂贵,但似乎证明了自己的合理性。

但是,他们的设备有一个很大的缺点。 功率单元可以控制多千瓦的电炉,但同时它们的照明控制通道也很弱。 仅高达150瓦! 可以直接从遥控器方便地控制照明,打开/关闭照明并调节亮度。 但是150 W非常小! 还有其他用于照明控制的装置在出售中,但是那里的价格非常不人道。
在这方面,该任务似乎是制造一种调光器,该调光器将以更大的功率控制负载,此外还需要低压负载(12 / 24V的LED灯带或24V的卤素灯)。

卤素尽管消耗更多并且容易燃烧,但是在我看来,它们的照明更加令人愉悦。 虽然这是一个品味问题。 通常,这样的任务已经成熟。 该图很好地说明了为什么需要这种照明:



EOS发布了许多控制面板,但最常见的是Emotec和Emotouch III。 我们将处理它们。





我必须说EOS设备中的控制面板是通过常规的4针电话线连接到电源的:



对电路板的快速检查显示,分配了24V电源的两条线,而RS-485接口线上的另外两条。 通常,是标准实施。 A和B行在中间:



使用USB-RS-485转换器连接到线路并将速度设置为从秃头到9600 bps,我们看到了运行字节,但是它们的目的当然是未知的。 在公共领域中找不到交换协议,尽管发送了相应的请求,但制造商本身拒绝提供该协议。
我不得不处理自己的解码:-)

是的,我会立即注意到一个细微差别。 调光器控件仅在动力单元投入运行后才能工作。 当灯泡连接到内置调光器的输出时,这是清晰可见的。 只有在桑拿开始加热后,它才会开始发光。

最初,他们开始将标准系列的速度从9600 bps排序到115200 bps。
以38400的速度令我惊讶的是,命令由两个标准字节0x0A,0x0D分隔。

好吧,这已经是事情了。 让我们做下一个技巧。 让我们根据亮度值查找所需的命令。 突然,它以明文传输。

我们在遥控器上设置值73(0x49):



接下来,我们删除日志并愚蠢地在此寻找该字节:



瞧! 我们找到它,左右寻找字节0x0A,0x0D,尝试选择所需的包。 结果,我们得到以下结构:

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

在实验过程中,发现2和3个字节始终等于0x04,4和5设置亮度百分比,6和7等于0、8-它会变化,这意味着不清楚,9和10-0x0A,0xD。

如实验所示,第一个字节是地址。 它设置所谓的房间号。 事实是,EOS遥控器可以同时控制多个电源单元。 每个都有自己的地址,该地址在此字节中发送。

地址如下:
对于烤箱控制面板:
01-第一个房间
21-第二间
41-第三间
61-第四室
81-第五间
A1-第六间
C1-第七间
E1-第八间

对于蒸汽发生器控制面板:
0E-第一个房间
2E-第二间
4E-第三间
6E-第四间
8E-第五间
AE-第六间
CE-第七间
EE-第八室

实际上,这都是解码。

为了进行检查,可以说是“动力学”,我们迅速将程序放到Delphi上以显示亮度值并扭转滑块。 一切都圆满完成。

之后,我们用C语言开发了一个简单的程序来解码这些数据包,并以硬件启动了所有程序。 设备本身非常简单。 在那里,普通的PWM是在电源键上实现的,但是如果有兴趣,我可以写一篇单独的文章。

Source: https://habr.com/ru/post/zh-CN453234/


All Articles