meiju
meiju copied to clipboard
如何适配未支持的美的设备?
首先在这里感谢 @mac-zhou @blindlight86 @vividmuse 等各位大佬对美的美的设备协议和美居APP接口的不懈努力,此插件的只要功能即将美的设备的读写命令通过yaml转换为HA实体。美的设备的读写命令是通过字节(byte)数组传输的,因此适配美的设备需要一点编程基础。
当前阶段,本插件仅支持yaml配置,后续会支持通过UI集成
- Yaml配置
# configuration.yaml meiju: # 单个账号 username: 18866668888 # 美居APP账号 password: abcdefghijk # 美居APP密码 devices: # 设备列表 - device_id: 160123456789001 # 设备ID host: 192.168.1.101 # 设备IP - device_id: 160123456789002 host: 192.168.1.102 # 多个账号 accounts: - username: 18866668881 # 账号1 - username: 18866668882 # 账号2 devices: # 设备列表 customizes: # 设备自定义
-
customizes:
根据设备类型或SN8(型号)为设备解析命令成HA实体的配置,类似于HA的template
,可以为设备添加不同类型的实体以展示状态和控制设备-
get_extra: {10: 0x31}
配置查询状态命令索引为10的byte值为0x31
,部分设备为0x03
或其他 -
set_extra: {10: 0x21}
配置控制设备命令索引为10的byte值为0x21
-
sensors:
添加sensor传感器实体-
byte: 11
表示该实体的状态在状态byte数组的第12位上(索引为11) -
dict:
字典或数组,映射状态值 -
state_template:
实体状态模板 -
attrs_template:
实体属性模板,返回字典 - 上述选项其他实体通用
-
-
binary_sensors:
添加二元传感器实体,同sensors
-
state_template:
实体状态模板,返回布尔
-
-
switches:
添加开关实体-
on_value: 0x01
byte位上的值等于此值时表示开 -
off_value: 0x00
byte位上的值等于此值时表示关 -
on_extra:
打开时设置额外的byte数据,字典类型 -
off_extra:
关闭时设置额外的byte数据,字典类型
-
-
selects:
添加下拉选择实体,如:模式-
set_extra:
选中选项时设置额外的byte数据 -
options:
下拉选项,字典类型,key为byte位上的值- value为字符串时,表示显示的选项名称
-
name:
选项名称 -
extra:
选中时额外的byte数据,字典类型
-
-
numbers:
添加数值实体,如:目标温度-
max:
最大值 -
min:
最小值 -
step:
步长,默认1
-
-
- Lua脚本为美居APP编解码设备命令的程序,在lua脚本中可以找到每个设备属性/功能对应的byte位是多少,以及值的含义
- 通过
meiju.get_lua
服务获取设备的lua脚本 - 通过vscode或其他IDE格式化lua代码,插件的
lua
目录下有常用设备的lua - 分析lua文件中各byte位的含义,不同设备的lua规范不一致,因此需要有编程基础
- byte数组的前10位(索引0-9)为头信息,其中第10位(索引为9)为命令类型(
0x02
控制0x03
读取) - byte数组的第11位(索引10)为请求/响应类型,各设备可能不一样,参考
get_extra
set_extra
- 第12位开始通常为各属性或功能的值,部分lua会把头信息移除,因此这些lua中命令body的起始索引是从1或0开始
- lua文件中可能会根据设备的具体型号来使用不同的byte值,通常使用设备的
modelNumber
或sn8
来区分,这两种型号可以在info实体的属性中找到
- byte数组的前10位(索引0-9)为头信息,其中第10位(索引为9)为命令类型(
- 通过
- JS插件为美居APP中设备控制页面的代码,在js插件代码中可以找到不同型号的设备有哪些功能及选项,比如有哪些模式。
- 通过
meiju.get_plugin
服务获取设备的JS插件代码
- 通过
- 目前该自定义插件仍在开发中,主要开发工作为将lua及js中的命令通过yaml转换成HA实体。由于个人精力的原因,适配不同设备是个漫长的过程,希望有编程能力的同学可以参考以上内容和
device_customizes.yaml
一起参与适配。