反向UART通信协议

逆向工程 硬件 串行通讯 协议
2021-06-12 19:45:24

我的目标是构建一个用于三星 AC AR24HSFSAWKN 的自定义 wifi 模块。我有这样一个官方模块SWL-B70F,我正在尝试对其与主 AC 板的通信进行逆向工程。这只是为了挑战,也是我第一次尝试这种 hack。


AC 手册中,我确定了以下引脚排列:

CN51 - WI-FI MODULE
#1 : WIFI UART SIGNAL1
#2 : WIFI UART SIGNAL2
#3 : WIFI RESET SIGNAL
#4 : GND
#5 : DC 12V
#6 : N.C

拆卸模块后,我在一个臂板内找到了第二块,我确定它是降压稳压器(12V -> 5V)。在稳压器板上,我将一些电线连接到 UART 线 + GND 到 RX 引脚上的 2 条 ftdi 电缆,因此我可以在两个方向上转储帧。我已经用不同的tty波特率多次启动了设备我认为 9600 波特是正确的,因为其他没有给出好的模式。现在我以下面的交流结束。我发现了一些常见的模式。我想帧以d0(or d0c002)开头并以e0. 似乎有一个消息计数器、一个固定分隔符、一个有效负载和一个校验和:<start> <????> <counter> <sep?> <payload> <CheckSum8 Xor> <end>发送一条消息时,另一条线路上会发送一条类似的消息,可能是一条ack消息。

我可以通过实际的 wifi 模块发送 xml 命令。作为测试,我发送了一个OFF命令,导致以下交换:

OFF 命令:

# try 1
-> d0c002 12 000000000038 fe 1204060201f074010f 5f e0
<- d0c002 12 000000000038 fe 1205060201f074010f 5e e0

# try 2
-> d0c002 12 000000000047 fe 1204060201f074010f 20 e0
<- d0c002 12 000000000047 fe 1205060201f074010f 21 e0

# try 3
-> d0c002 12 000000000058 fe 1204060201f074010f 3f e0
<- d0c002 12 000000000058 fe 1205060201f074010f 3e e0

另一个可能的命令是 get DeviceState,它返回以下 XML(但没有触发与主板的任何交换,我想这些值在初始化时存储在 wifi 模块中):

?xml version="1.0" encoding="utf-8" ?> 
<Response Type="DeviceState" Status="Okay"> 
  <DeviceState> 
    <Device DUID="F8042ED83EA0" GroupID="AC" ModelID="AC" > 
      <Attr ID="AC_FUN_ENABLE" Type="RW" Value="Enable"/> 
      <Attr ID="AC_FUN_POWER" Type="RW" Value="Off"/> 
      <Attr ID="AC_FUN_OPMODE" Type="RW" Value="Auto"/> 
      <Attr ID="AC_FUN_TEMPSET" Type="RW" Value="21"/> 
      <Attr ID="AC_FUN_COMODE" Type="RW" Value="Off"/> 
      <Attr ID="AC_FUN_ERROR" Type="RW" Value="NULL"/> 
      <Attr ID="AC_FUN_TEMPNOW" Type="R" Value="23"/> 
      <Attr ID="AC_FUN_SLEEP" Type="RW" Value="0"/> 
      <Attr ID="AC_FUN_WINDLEVEL" Type="RW" Value="Auto"/> 
      <Attr ID="AC_FUN_DIRECTION" Type="RW" Value="Fixed"/> 
      <Attr ID="AC_ADD_AUTOCLEAN" Type="RW" Value="Off"/> 
      <Attr ID="AC_ADD_SETKWH" Type="RW" Value="255"/> 
      <Attr ID="AC_ADD_CLEAR_FILTER_ALARM" Type="RW" Value="240"/> 
      <Attr ID="AC_ADD_APMODE_END" Type="W" Value="0"/> 
      <Attr ID="AC_ADD_STARTWPS" Type="RW" Value="Default"/> 
      <Attr ID="AC_ADD_SPI" Type="RW" Value="Off"/> 
      <Attr ID="AC_OUTDOOR_TEMP" Type="R" Value="71"/> 
      <Attr ID="AC_COOL_CAPABILITY" Type="R" Value="68"/> 
      <Attr ID="AC_WARM_CAPABILITY" Type="R" Value="80"/> 
      <Attr ID="AC_SG_WIFI" Type="W" Value="Connected"/> 
      <Attr ID="AC_SG_INTERNET" Type="W" Value="Disconnected"/> 
      <Attr ID="AC_ADD2_USEDWATT" Type="R" Value="65024"/> 
      <Attr ID="AC_ADD2_VERSION" Type="RW" Value="65024"/> 
      <Attr ID="AC_SG_MACHIGH" Type="W" Value="216"/> 
      <Attr ID="AC_SG_MACMID" Type="W" Value="62"/> 
      <Attr ID="AC_SG_MACLOW" Type="W" Value="160"/> 
      <Attr ID="AC_SG_VENDER01" Type="W" Value="248"/> 
      <Attr ID="AC_SG_VENDER02" Type="W" Value="4"/> 
      <Attr ID="AC_SG_VENDER03" Type="W" Value="46"/> 
      <Attr ID="AC_ADD2_PANEL_VERSION" Type="R" Value="150224"/> 
      <Attr ID="AC_ADD2_OUT_VERSION" Type="R" Value="1246985"/> 
      <Attr ID="AC_FUN_MODEL" Type="R" Value="5"/> 
      <Attr ID="AC_ADD2_OPTIONCODE" Type="R" Value="53432"/> 
      <Attr ID="AC_ADD2_USEDPOWER" Type="R" Value="58933"/> 
      <Attr ID="AC_ADD2_USEDTIME" Type="R" Value="265675"/> 
      <Attr ID="AC_ADD2_CLEAR_POWERTIME" Type="RW" Value="254"/> 
      <Attr ID="AC_ADD2_FILTERTIME" Type="RW" Value="500"/> 
      <Attr ID="AC_ADD2_FILTER_USE_TIME" Type="R" Value="10000"/> 
    </Device> 
  </DeviceState> 
</Response> 

启动日志中存在一些值,例如AC_ADD2_USEDTIME, AC_ADD2_OPTIONCODE, AC_ADD2_USEDPOWER, AC_ADD2_FILTER_USE_TIME=> d0c002 39 000000000009 fe 14032d3201fef601fef403150224f303130709f501053902 d0b8(AC_ADD2_OPTIONCODE) e0040000 e635 e404000 40dcb(AC_ADD2_USEDPOWER) e801fee90103e602 2710(AC_ADD2_FILTER_USE_TIME) 93 e0

框架可以拆分为:

14032d3201fef601fef403150224f303130709f50105
3902 d0b8 
e004 0000e635 
e404 00040dcb
e801 fee90103
e602 2710

e004, e404,e602可能是一些字段标题?

校验和是CheckSum8 Xor第一个字节的:d0c00212000000000047fe1204060201f074010f->20

此外,第一次交换 ( 0000/ 00fc) 再也没有出现过,所以应该是某种握手。

接下来我将尝试移除wifi模块,并重放与它的通信,模拟AC。


问题:

  1. 我的方法论和假设是否有效?
  2. 帧中的第二个字段可能是什么(似乎是唯一值0f 12 18 1c 1e 22 30)?
  3. 我是否正确拆分帧?
  4. 您对如何解码剩余消息和反转完整协议有一些建议吗?
  5. 它看起来像其他地方已知的东西吗?
  6. 任何其他提示:)

非常感谢!


完整的启动日志:

#-> WIFI TO AC
#<- AC TO WIFI

-> 00fc
<- 0000
-> d0c002 12 000000000000 fe 12040601010f7401f0 64 e0
<- d0c002 12 000000000000 fe 12050601010f7401f0 65 e0
-> d0c002 18 000000000001 fe 14040c170115180105190127fd0102 37 e0
<- d0c002 18 000000000001 fe 14050c170115180105190127fd0102 36 e0
-> d0c002 1e 000000000002 fe 140412fa01f8fb0104fc012ef701d8f8013ef901a0 6d e0
<- d0c002 1e 000000000002 fe 140512fa01f8fb0104fc012ef701d8f8013ef901a0 6c e0
-> d0c002 18 000000000003 fe 14040c170115180105190127fd0102 35 e0
<- d0c002 18 000000000003 fe 14050c170115180105190127fd0102 34 e0
-> d0c002 1e 000000000004 fe 140412fa01f8fb0104fc012ef701d8f8013ef901a0 6b e0
<- d0c002 1e 000000000004 fe 140512fa01f8fb0104fc012ef701d8f8013ef901a0 6a e0
-> d0c002 18 000000000005 fe 14040c170115180105190127fd0102 33 e0
<- d0c002 18 000000000005 fe 14050c170115180105190127fd0102 32 e0
-> d0c002 1e 000000000006 fe 140412fa01f8fb0104fc012ef701d8f8013ef901a0 69 e0
<- d0c002 1e 000000000006 fe 140512fa01f8fb0104fc012ef701d8f8013ef901a0 68 e0
-> d0c002 30 000000000006 fe 1207240201f04101324301e24401126201006301c2ea01fe5a01155c0117730100f70400000000 ce e0
<- d0c002 30 000000000006 fe 1206240201f04101324301e24401126201006301c2ea01fe5a01155c0117730100f70400000000 cf e0
-> d0c002 1c 000000000008 fe 13021032004000440043007500760077007800 80 e0
<- d0c002 26 000000000008 fe 13031a3201234001ff4401f043010f7501f07601497702004478020050 3f e0
-> d0c002 22 000000000009 fe 1402163200f600f400f300f5003900 e000e400e800e900e600 2b e0
<- d0c002 39 000000000009 fe 14032d3201fef601fef403150224f303130709f501053902d0b8e0040000e635e40400040dcbe801fee90103e6022710 93 e0
-> d0c002 0f 00000000000a fe 14040337010f c3 e0
<- d0c002 0f 00000000000a fe 14050337010f c2 e0
-> d0c002 18 00000000000b fe 14040c170115180105190127fd0102 3d e0
<- d0c002 18 00000000000b fe 14050c170115180105190127fd0102 3c e0
-> d0c002 22 00000000000c fe 1402163200f600f400f300f5003900 e000e400e800e900e600 2e e0
<- d0c002 39 00000000000c fe 14032d3201fef601fef403150224f303130709f501053902d0b8e0040000e635e40400040dcbe801fee90103e6022710 96 e0
-> d0c002 1e 00000000000d fe 140412fa01f8fb0104fc012ef701d8f8013ef901a0 62 e0
<- d0c002 1e 00000000000d fe 140512fa01f8fb0104fc012ef701d8f8013ef901a0 63 e0
-> d0c002 0f 00000000000e fe 1404033801f0 37 e0
<- d0c002 0f 00000000000e fe 1405033801f0 36 e0
-> d0c002 0f 00000000000f fe 14040337010f c6 e0
<- d0c002 0f 00000000000f fe 14050337010f c7 e0
-> d0c002 0f 000000000010 fe 14040337010f d9 e0
<- d0c002 0f 000000000010 fe 14050337010f d8 e0
-> d0c002 18 000000000011 fe 14040c170115180105190127fd0102 27 e0
<- d0c002 18 000000000011 fe 14050c170115180105190127fd0102 26 e0
-> d0c002 1e 000000000012 fe 140412fa01f8fb0104fc012ef701d8f8013ef901a0 7d e0
<- d0c002 1e 000000000012 fe 140512fa01f8fb0104fc012ef701d8f8013ef901a0 7c e0
-> d0c002 0f 000000000013 fe 1404033801f0 2a e0
<- d0c002 0f 000000000013 fe 1405033801f0 2b e0
-> d0c002 0f 000000000014 fe 14040337010f dd e0
<- d0c002 0f 000000000014 fe 14050337010f dc e0
-> d0c002 0f 000000000015 fe 1404033801f0 2c e0
<- d0c002 0f 000000000015 fe 1405033801f0 2d e0
-> d0c002 0f 000000000016 fe 14040337010f df e0
<- d0c002 0f 000000000016 fe 14050337010f de e0
-> d0c002 0f 000000000017 fe 1404033801f0 2e e0
<- d0c002 0f 000000000017 fe 1405033801f0 2f e0
-> d0c002 0f 000000000018 fe 14040337010f d1 e0
<- d0c002 0f 000000000018 fe 14050337010f d0 e0
-> d0c002 0f 000000000019 fe 1404033801f0 20 e0
<- d0c002 0f 000000000019 fe 1405033801f0 21 e0
-> d0c002 0f 00000000001a fe 14040337010f d3 e0
<- d0c002 0f 00000000001a fe 14050337010f d2 e0

Wifi模块ARM板 在此处输入图片说明

1个回答

从我的问题:

  1. 它似乎工作:)
  2. 是消息长度
  3. 或多或少 ;)
  4. 参见下面的程序
  5. 仍然想知道它是否是“通用/标准协议”?

程序

我已经从 AC 中移除了该模块并构建了一个简单的假 AC 服务器。

据我所知,一旦发送消息,就必须返回响应。我已经使用 XML 命令与它交换了一些消息,查看发送回 AC(我的虚拟 AC 服务器)的消息,并且可以解码大部分消息。然后我将一些消息直接发送回模块,就像 AC 发送它们一样,并查看存储在模块中的新值。

我最终得到了以下协议。还有一些点需要澄清,但大部分工作已经完成。

下一步,我将编写一个能够将消息翻译为人类可读的守护进程,并将模块连接回 AC,然后在玩不同函数的同时嗅探以查找是否有一些“新”消息。

消息格式

每条消息可以分解如下:

╔═══════╦══════════╦════════╦══════════════╦═════╦════════════════════════════════╦══════════╦═════╗
║ start ║ version? ║ length ║   counter    ║ sep ║            payload             ║ checksum ║ end ║
╠═══════╬══════════╬════════╬══════════════╬═════╬════════════════════════════════╬══════════╬═════╣
║ d0c0  ║       02 ║     12 ║ 000000000000 ║ fe  ║ 12040601010f7401f0             ║       64 ║ e0  ║
║ d0c0  ║       02 ║     12 ║ 000000000000 ║ fe  ║ 12050601010f7401f0             ║       65 ║ e0  ║
║ d0c0  ║       02 ║     18 ║ 000000000001 ║ fe  ║ 14040c170115180105190127fd0102 ║       37 ║ e0  ║
║ d0c0  ║       02 ║     18 ║ 000000000001 ║ fe  ║ 14050c170115180105190127fd0102 ║       36 ║ e0  ║
║ …     ║          ║        ║              ║     ║                                ║          ║     ║
╚═══════╩══════════╩════════╩══════════════╩═════╩════════════════════════════════╩══════════╩═════╝
  • 字段start, end, sep,version?似乎是静态的
  • Counter 每条新消息都在递增
  • 当两张卡中的一张收到消息时,它会发回相同的消息但增加ack
  • checksumCheckSum 8 Xor所有列前
  • length, 从这里到消息结束(包括checksumend

有效载荷

每个有效载荷可以分解为commandsub

╔══════╦═════════╦══════════╦════════════════════════════════════════════════════════════════════════════════════════╗
║ type ║ command ║ register ║                                        value(s)                                        ║
╠══════╬═════════╬══════════╬════════════════════════════════════════════════════════════════════════════════════════╣
║ 1204 ║ 06      ║ 0101     ║ 0f74010f                                                                               ║
║ 1205 ║ 06      ║ 0101     ║ f074010f                                                                               ║
║ 1204 ║ 09      ║ f704     ║ 5445535474010f                                                                         ║
║ 1403 ║ 2d      ║ 3201     ║ fef601fef403150224f303130709f501053902d0b8e0040000e635e40400040dcbe801fee90103e6022710 ║
╚══════╩═════════╩══════════╩════════════════════════════════════════════════════════════════════════════════════════╝

类型

  • 1204: 用户命令
  • 1205: ack - 用户命令
  • 1206:来自 AC 的值
  • 1207: ack - 来自 AC 的值
  • 1302: 重启?寄存器
  • 1303:来自 AC 的值(OutDoor?)
  • 1304: 放
  • 1305: 确认 - 设置
  • 1402: 单位计数器
  • 1403:???确认?
  • 1404:wifi模块状态
  • 1405:???确认?

1204 命令

  • 06 设置整数
  • 09 设置字符串
AC_FUN_ENABLE
╔═════════╦═════════╦══════════╦════════╦═══════╦════════╗
║         ║ command ║ register ║ length ║ value ║  end   ║
╠═════════╬═════════╬══════════╬════════╬═══════╬════════╣
║ Enable  ║      06 ║       01 ║     01 ║ f0    ║ 74010f ║
║ Disable ║      06 ║       01 ║     01 ║ 0f    ║ 74010f ║
╚═════════╩═════════╩══════════╩════════╩═══════╩════════╝
AC_FUN_POWER
╔═════╦═════════╦══════════╦════════╦═══════╦════════╗
║     ║ command ║ register ║ length ║ value ║  end   ║
╠═════╬═════════╬══════════╬════════╬═══════╬════════╣
║ Off ║      06 ║       02 ║     01 ║ f0    ║ 74010f ║
║ On  ║      06 ║       02 ║     01 ║ 0f    ║ 74010f ║
╚═════╩═════════╩══════════╩════════╩═══════╩════════╝
AC_FUN_OPMODE
╔══════╦═════════╦══════════╦════════╦═══════╦════════╗
║      ║ command ║ register ║ length ║ value ║  end   ║
╠══════╬═════════╬══════════╬════════╬═══════╬════════╣
║ Cool ║      06 ║       43 ║     01 ║ 12    ║ 74010f ║
║ Dry  ║      06 ║       43 ║     01 ║ 22    ║ 74010f ║
║ Wind ║      06 ║       43 ║     01 ║ 32    ║ 74010f ║
║ Heat ║      06 ║       43 ║     01 ║ 42    ║ 74010f ║
║ Auto ║      06 ║       43 ║     01 ║ e2    ║ 74010f ║
╚══════╩═════════╩══════════╩════════╩═══════╩════════╝
AC_FUN_COMODE
╔═══════════╦═════════╦══════════╦════════╦═══════╦════════╗
║           ║ command ║ register ║ length ║ value ║  end   ║
╠═══════════╬═════════╬══════════╬════════╬═══════╬════════╣
║ Off       ║      06 ║       44 ║     01 ║ 12    ║ 74010f ║
║ TurboMode ║      06 ║       44 ║     01 ║ 22    ║ 74010f ║
║ Smart     ║      06 ║       44 ║     01 ║ 32    ║ 74010f ║
║ Sleep     ║      06 ║       44 ║     01 ║ 42    ║ 74010f ║
║ Quiet     ║      06 ║       44 ║     01 ║ 52    ║ 74010f ║
║ SoftCool  ║      06 ║       44 ║     01 ║ 62    ║ 74010f ║
║ WindMode1 ║      06 ║       44 ║     01 ║ 82    ║ 74010f ║
║ WindMode2 ║      06 ║       44 ║     01 ║ 92    ║ 74010f ║
║ WindMode3 ║      06 ║       44 ║     01 ║ a2    ║ 74010f ║
╚═══════════╩═════════╩══════════╩════════╩═══════╩════════╝
AC_FUN_TEMPSET(从 16°C 到 28°C)
╔══════╦═════════╦══════════╦════════╦═══════╦════════╗
║      ║ command ║ register ║ length ║ value ║  end   ║
╠══════╬═════════╬══════════╬════════╬═══════╬════════╣
║ 16°C ║      06 ║ 5a       ║     01 ║ 10    ║ 74010f ║
║ 17°C ║      06 ║ 5a       ║     01 ║ 11    ║ 74010f ║
║ …    ║         ║          ║        ║       ║        ║
║ 28°C ║      06 ║ 5a       ║     01 ║ 1c    ║ 74010f ║
╚══════╩═════════╩══════════╩════════╩═══════╩════════╝
AC_FUN_WINDLEVEL
╔═══════╦═════════╦══════════╦════════╦═══════╦════════╗
║       ║ command ║ register ║ length ║ value ║  end   ║
╠═══════╬═════════╬══════════╬════════╬═══════╬════════╣
║ Auto  ║      06 ║       62 ║     00 ║    00 ║ 74010f ║
║ Low   ║      06 ║       62 ║     01 ║    12 ║ 74010f ║
║ Mid   ║      06 ║       62 ║     01 ║    14 ║ 74010f ║
║ High  ║      06 ║       62 ║     01 ║    16 ║ 74010f ║
║ Turbo ║      06 ║       62 ║     01 ║    18 ║ 74010f ║
╚═══════╩═════════╩══════════╩════════╩═══════╩════════╝
AC_FUN_DIRECTION
╔══════════╦═════════╦══════════╦════════╦═══════╦════════╗
║          ║ command ║ register ║ length ║ value ║  end   ║
╠══════════╬═════════╬══════════╬════════╬═══════╬════════╣
║ Off      ║      06 ║       63 ║     01 ║ 12    ║ 74010f ║
║ Indirect ║      06 ║       63 ║     01 ║ 21    ║ 74010f ║
║ Direct   ║      06 ║       63 ║     01 ║ 31    ║ 74010f ║
║ Center   ║      06 ║       63 ║     01 ║ 41    ║ 74010f ║
║ Wide     ║      06 ║       63 ║     01 ║ 51    ║ 74010f ║
║ Left     ║      06 ║       63 ║     01 ║ 61    ║ 74010f ║
║ Right    ║      06 ║       63 ║     01 ║ 71    ║ 74010f ║
║ Long     ║      06 ║       63 ║     01 ║ 81    ║ 74010f ║
║ SwingUD  ║      06 ║       63 ║     01 ║ 92    ║ 74010f ║
║ SwingLR  ║      06 ║       63 ║     01 ║ a2    ║ 74010f ║
║ Rotation ║      06 ║       63 ║     01 ║ b2    ║ 74010f ║
║ Fixed    ║      06 ║       63 ║     01 ║ c2    ║ 74010f ║
╚══════════╩═════════╩══════════╩════════╩═══════╩════════╝
AC_FUN_SLEEP

TODO:验证

╔═════╦═════════╦══════════╦════════╦═══════╦════════╗
║     ║ command ║ register ║ length ║ value ║  end   ║
╠═════╬═════════╬══════════╬════════╬═══════╬════════╣
║   0 ║      06 ║       73 ║     01 ║ 00    ║ 74010f ║
║ 255 ║      06 ║       73 ║     01 ║ ff    ║ 74010f ║
╚═════╩═════════╩══════════╩════════╩═══════╩════════╝
AC_FUN_ERROR
╔════════════════════════════════════════════════════════════════════════╦════════════╦══════════╦════════╦══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╦════════╗
║                                                                        ║ command??? ║ register ║ length ║                                                                    value                                                                     ║  end   ║
╠════════════════════════════════════════════════════════════════════════╬════════════╬══════════╬════════╬══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╬════════╣
║ NULL                                                                   ║ 09         ║ f7       ║     04 ║ 4e554c4c                                                                                                                                     ║ 74010f ║
║ TEST                                                                   ║ 09         ║ f7       ║     04 ║ 54455354                                                                                                                                     ║ 74010f ║
║ MY_ERROR_MESSAGE                                                       ║ 15         ║ f7       ║     10 ║ 4d59204552524f52204d455353414745                                                                                                             ║ 74010f ║
║ 0123456789012345678901234567890123456789012345678901234567890123456789 ║ 4b         ║ f7       ║     46 ║ 30313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839 ║ 74010f ║
╚════════════════════════════════════════════════════════════════════════╩════════════╩══════════╩════════╩══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╩════════╝

1206 命令

╔══════════════════╦═════════╦══════════╦════════╦══════════╗
║                  ║ command ║ register ║ length ║  value   ║
╠══════════════════╬═════════╬══════════╬════════╬══════════╣
║ Multi_valued     ║      24 ║          ║        ║          ║
║ AC_FUN_POWER     ║         ║ 02       ║     01 ║ f0       ║
║ ?                ║         ║ 41       ║     01 ║ 32       ║
║ AC_FUN_OPMODE    ║         ║ 43       ║     01 ║ e2       ║
║ AC_FUN_COMODE    ║         ║ 44       ║     01 ║ 12       ║
║ AC_FUN_WINDLEVEL ║         ║ 62       ║     01 ║ 00       ║
║ AC_FUN_DIRECTION ║         ║ 63       ║     01 ║ c2       ║
║ ?                ║         ║ ea       ║     01 ║ fe       ║
║ AC_FUN_TEMPSET   ║         ║ 5a       ║     01 ║ 15       ║
║ AC_FUN_TEMPNOW   ║         ║ 5c       ║     01 ║ 17       ║
║ AC_FUN_SLEEP     ║         ║ 73       ║     01 ║ 00       ║
║ AC_FUN_ERROR     ║         ║ f7       ║     04 ║ 00000000 ║
╚══════════════════╩═════════╩══════════╩════════╩══════════╝

1302 命令

重启?

╔═══════════════════════════╦═════════╦══════════╦════════╦═══════╗
║                           ║ command ║ register ║ length ║ value ║
╠═══════════════════════════╬═════════╬══════════╬════════╬═══════╣
║ Multi_valued              ║      10 ║          ║        ║       ║
║ AC_ADD_AUTOCLEAN          ║         ║       32 ║     00 ║       ║
║ AC_ADD_SETKWH             ║         ║       40 ║     00 ║       ║
║ AC_ADD_CLEAR_FILTER_ALARM ║         ║       44 ║     00 ║       ║
║ AC_ADD_STARTWPS           ║         ║       43 ║     00 ║       ║
║ AC_ADD_SPI                ║         ║       75 ║     00 ║       ║
║ AC_OUTDOOR_TEMP           ║         ║       76 ║     00 ║       ║
║ AC_COOL_CAPABILITY        ║         ║       77 ║     00 ║       ║
║ AC_WARM_CAPABILITY        ║         ║       78 ║     00 ║       ║
╚═══════════════════════════╩═════════╩══════════╩════════╩═══════╝

1303 命令

╔═══════════════════════════╦═════════╦══════════╦════════╦═══════╗
║                           ║ command ║ register ║ length ║ value ║
╠═══════════════════════════╬═════════╬══════════╬════════╬═══════╣
║ Multi_valued              ║ 1a      ║          ║        ║       ║
║ AC_ADD_AUTOCLEAN          ║         ║       32 ║     01 ║ 23    ║
║ AC_ADD_SETKWH             ║         ║       40 ║     01 ║ ff    ║
║ AC_ADD_CLEAR_FILTER_ALARM ║         ║       44 ║     01 ║ f0    ║
║ AC_ADD_STARTWPS           ║         ║       43 ║     01 ║ 0f    ║
║ AC_ADD_SPI                ║         ║       75 ║     01 ║ f0    ║
║ AC_OUTDOOR_TEMP           ║         ║       76 ║     01 ║ fe    ║
║ AC_COOL_CAPABILITY        ║         ║       77 ║     02 ║ 0044  ║
║ AC_WARM_CAPABILITY        ║         ║       78 ║     02 ║ 0050  ║
╚═══════════════════════════╩═════════╩══════════╩════════╩═══════╝

1304 命令

  • 06 设置整数
AC_ADD_AUTOCLEAN
╔═════╦═════════╦══════════╦════════╦═══════╦════════╗
║     ║ command ║ register ║ length ║ value ║  end   ║
╠═════╬═════════╬══════════╬════════╬═══════╬════════╣
║ On  ║      06 ║       32 ║     01 ║    22 ║ 74010f ║
║ Off ║      06 ║       32 ║     01 ║    23 ║ 74010f ║
╚═════╩═════════╩══════════╩════════╩═══════╩════════╝
AC_ADD_SETKWH
╔═════╦═════════╦══════════╦════════╦═══════╦════════╗
║     ║ command ║ register ║ length ║ value ║  end   ║
╠═════╬═════════╬══════════╬════════╬═══════╬════════╣
║ 0   ║      06 ║       40 ║     01 ║ 00    ║ 74010f ║
║ …   ║         ║          ║        ║       ║        ║
║ 255 ║      06 ║       40 ║     01 ║ ff    ║ 74010f ║
╚═════╩═════════╩══════════╩════════╩═══════╩════════╝
AC_ADD_CLEAR_FILTER_ALARM
╔═════╦═════════╦══════════╦════════╦═══════╦════════╗
║     ║ command ║ register ║ length ║ value ║  end   ║
╠═════╬═════════╬══════════╬════════╬═══════╬════════╣
║ 0   ║      06 ║       44 ║     01 ║ 00    ║ 74010f ║
║ …   ║         ║          ║        ║       ║        ║
║ 255 ║      06 ║       44 ║     01 ║ ff    ║ 74010f ║
╚═════╩═════════╩══════════╩════════╩═══════╩════════╝
AC_ADD_SPI
╔═════╦═════════╦══════════╦════════╦═══════╦════════╗
║     ║ command ║ register ║ length ║ value ║  end   ║
╠═════╬═════════╬══════════╬════════╬═══════╬════════╣
║ On  ║      06 ║       75 ║     01 ║ 0f    ║ 74010f ║
║ …   ║         ║          ║        ║       ║        ║
║ Off ║      06 ║       75 ║     01 ║ f0    ║ 74010f ║
╚═════╩═════════╩══════════╩════════╩═══════╩════════╝
AC_ADD_APMODE_END
╔═══╦═════════╦══════════╦════════╦═══════╦═════╗
║   ║ command ║ register ║ length ║ value ║ end ║
╠═══╬═════════╬══════════╬════════╬═══════╬═════╣
║ … ║         ║          ║        ║       ║     ║
╚═══╩═════════╩══════════╩════════╩═══════╩═════╝
AC_ADD_STARTWPS
╔════════╦═════════╦══════════╦════════╦═══════╦═════╗
║        ║ command ║ register ║ length ║ value ║ end ║
╠════════╬═════════╬══════════╬════════╬═══════╬═════╣
║ Direct ║ …       ║          ║        ║       ║     ║
║ …      ║         ║          ║        ║       ║     ║
╚════════╩═════════╩══════════╩════════╩═══════╩═════╝
AC_OUTDOOR_TEMP
╔═══╦═════════╦══════════╦════════╦═══════╦═════╗
║   ║ command ║ register ║ length ║ value ║ end ║
╠═══╬═════════╬══════════╬════════╬═══════╬═════╣
║ … ║         ║          ║        ║       ║     ║
╚═══╩═════════╩══════════╩════════╩═══════╩═════╝
AC_COOL_CAPABILITY
╔═══╦═════════╦══════════╦════════╦═══════╦═════╗
║   ║ command ║ register ║ length ║ value ║ end ║
╠═══╬═════════╬══════════╬════════╬═══════╬═════╣
║ … ║         ║          ║        ║       ║     ║
╚═══╩═════════╩══════════╩════════╩═══════╩═════╝
AC_WARM_CAPABILITY
╔═══╦═════════╦══════════╦════════╦═══════╦═════╗
║   ║ command ║ register ║ length ║ value ║ end ║
╠═══╬═════════╬══════════╬════════╬═══════╬═════╣
║ … ║         ║          ║        ║       ║     ║
╚═══╩═════════╩══════════╩════════╩═══════╩═════╝
AC_ADD2_USEDWATT
╔═══╦═════════╦══════════╦════════╦═══════╦═════╗
║   ║ command ║ register ║ length ║ value ║ end ║
╠═══╬═════════╬══════════╬════════╬═══════╬═════╣
║ … ║         ║          ║        ║       ║     ║
╚═══╩═════════╩══════════╩════════╩═══════╩═════╝
AC_ADD2_VERSION
╔═══╦═════════╦══════════╦════════╦═══════╦═════╗
║   ║ command ║ register ║ length ║ value ║ end ║
╠═══╬═════════╬══════════╬════════╬═══════╬═════╣
║ … ║         ║          ║        ║       ║     ║
╚═══╩═════════╩══════════╩════════╩═══════╩═════╝

1402 命令

当收到消息时,Wifi 模块也响应:

-> 1404 0c1701 15180105190127fd0102 ->1404 12fa01 f8fb0104fc012ef701d8f8013ef901a0

╔═════════════════════════╦═════════╦══════════╦════════╦═══════════╗
║                         ║ command ║ register ║ length ║  comment  ║
╠═════════════════════════╬═════════╬══════════╬════════╬═══════════╣
║ Multi_valued            ║      16 ║          ║        ║           ║
║ AC_ADD2_USEDWATT        ║         ║ 32       ║     00 ║ ?         ║
║ AC_ADD2_VERSION         ║         ║ f6       ║     00 ║ Confirmed ║
║ AC_ADD2_PANEL_VERSION   ║         ║ f4       ║     00 ║ ?         ║
║ AC_ADD2_OUT_VERSION     ║         ║ f3       ║     00 ║ ?         ║
║ AC_FUN_MODEL            ║         ║ f5       ║     00 ║ ?         ║
║ AC_ADD2_OPTIONCODE      ║         ║ 39       ║     00 ║ ?         ║
║ AC_ADD2_USEDPOWER       ║         ║ e0       ║     00 ║ ?         ║
║ AC_ADD2_USEDTIME        ║         ║ e4       ║     00 ║ ?         ║
║ AC_ADD2_CLEAR_POWERTIME ║         ║ e8       ║     00 ║ ?         ║
║ AC_ADD2_FILTERTIME      ║         ║ e9       ║     00 ║ ?         ║
║ AC_ADD2_FILTER_USE_TIME ║         ║ e6       ║     00 ║ ?         ║
╚═════════════════════════╩═════════╩══════════╩════════╩═══════════╝

1403 命令

从 AC 到 Wifi。当收到消息时,Wifi 模块也响应:

-> 1404 0c 170115180105190127fd0102(尚未解码)

-> 1404 12 fa01f8fb0104fc012ef701d8f8013ef901a0

╔═════════════════════════╦═════════╦══════════╦════════╦══════════╦═════════════════════════════════════╗
║                         ║ command ║ register ║ length ║  value   ║               comment               ║
╠═════════════════════════╬═════════╬══════════╬════════╬══════════╬═════════════════════════════════════╣
║ Multi_valued            ║ 2d      ║          ║        ║          ║                                     ║
║ AC_ADD2_USEDWATT        ║         ║ 32       ║     01 ║ fe       ║                                     ║
║ AC_ADD2_VERSION         ║         ║ f6       ║     01 ║ fe       ║                                     ║
║ AC_ADD2_PANEL_VERSION   ║         ║ f4       ║     03 ║ 150224   ║ (Raw value in XML)                  ║
║ AC_ADD2_OUT_VERSION     ║         ║ f3       ║     03 ║ 130709   ║ (Raw value in XML)                  ║
║ AC_FUN_MODEL            ║         ║ f5       ║     01 ║ 05       ║                                     ║
║ AC_ADD2_OPTIONCODE      ║         ║ 39       ║     02 ║ d0b8     ║                                     ║
║ AC_ADD2_USEDPOWER       ║         ║ e0       ║     04 ║ 0000e635 ║                                     ║
║ AC_ADD2_USEDTIME        ║         ║ e4       ║     04 ║ 00040dcb ║                                     ║
║ AC_ADD2_CLEAR_POWERTIME ║         ║ e8       ║     01 ║ fe       ║                                     ║
║ AC_ADD2_FILTERTIME      ║         ║ e9       ║     01 ║ 03       ║ (00:00 01:180 02:300 03:500 04:700) ║
║ AC_ADD2_FILTER_USE_TIME ║         ║ e6       ║     02 ║ 2710     ║                                     ║
╚═════════════════════════╩═════════╩══════════╩════════╩══════════╩═════════════════════════════════════╝

1404 命令

  • 03 通知
  • 06 设置整数
  • 0c 设置多值
  • 12 设置多值
AC_SG_WIFI
╔═════╦═════════╦══════════╦════════╦═══════╦═════╗
║     ║ command ║ register ║ length ║ value ║ end ║
╠═════╬═════════╬══════════╬════════╬═══════╬═════╣
║ On  ║      03 ║       37 ║     01 ║ 0f    ║     ║
║ Off ║      03 ║       37 ║     01 ║ f0    ║     ║
╚═════╩═════════╩══════════╩════════╩═══════╩═════╝
AC_SG_INTERNET
╔═════╦═════════╦══════════╦════════╦═══════╦═════╗
║     ║ command ║ register ║ length ║ value ║ end ║
╠═════╬═════════╬══════════╬════════╬═══════╬═════╣
║ On  ║      03 ║       38 ║     01 ║ 0f    ║     ║
║ Off ║      03 ║       38 ║     01 ║ f0    ║     ║
╚═════╩═════════╩══════════╩════════╩═══════╩═════╝
AC_ADD2_FILTERTIME
╔═════╦═════════╦══════════╦════════╦═══════╦════════╗
║     ║ command ║ register ║ length ║ value ║  end   ║
╠═════╬═════════╬══════════╬════════╬═══════╬════════╣
║   0 ║      06 ║ e9       ║     01 ║    00 ║ 74010f ║
║ 180 ║      06 ║ e9       ║     01 ║    01 ║ 74010f ║
║ 300 ║      06 ║ e9       ║     01 ║    02 ║ 74010f ║
║ 500 ║      06 ║ e9       ║     01 ║    03 ║ 74010f ║
║ 700 ║      06 ║ e9       ║     01 ║    04 ║ 74010f ║
╚═════╩═════════╩══════════╩════════╩═══════╩════════╝
0c
╔══════════════╦═════════╦══════════╦════════╦═══════╗
║              ║ command ║ register ║ length ║ value ║
╠══════════════╬═════════╬══════════╬════════╬═══════╣
║ Multi_valued ║ 0c      ║          ║        ║       ║
║ ?            ║         ║ 17       ║     01 ║    15 ║
║ ?            ║         ║ 18       ║     01 ║    05 ║
║ ?            ║         ║ 19       ║     01 ║    27 ║
║ ?            ║         ║ fd       ║     01 ║    02 ║
╚══════════════╩═════════╩══════════╩════════╩═══════╝
12
╔════════════════╦═════════╦══════════╦════════╦═══════╗
║                ║ command ║ register ║ length ║ value ║
╠════════════════╬═════════╬══════════╬════════╬═══════╣
║ Multi_valued   ║      12 ║          ║        ║       ║
║ AC_SG_VENDER01 ║         ║ fa       ║     01 ║ f8    ║
║ AC_SG_VENDER02 ║         ║ fb       ║     01 ║ 04    ║
║ AC_SG_VENDER03 ║         ║ fc       ║     01 ║ 2e    ║
║ AC_SG_MACHIGH  ║         ║ f7       ║     01 ║ d8    ║
║ AC_SG_MACMID   ║         ║ f8       ║     01 ║ 3e    ║
║ AC_SG_MACLOW   ║         ║ f9       ║     01 ║ a0    ║
╚════════════════╩═════════╩══════════╩════════╩═══════╝