Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何适配未支持的美的设备? #1

Open
al-one opened this issue Jul 8, 2022 · 0 comments
Open

如何适配未支持的美的设备? #1

al-one opened this issue Jul 8, 2022 · 0 comments
Labels

Comments

@al-one
Copy link
Contributor

al-one commented Jul 8, 2022

首先在这里感谢 @mac-zhou @blindlight86 @vividmuse 等各位大佬对美的美的设备协议和美居APP接口的不懈努力,此插件的只要功能即将美的设备的读写命令通过yaml转换为HA实体。美的设备的读写命令是通过字节(byte)数组传输的,因此适配美的设备需要一点编程基础。

当前阶段,本插件仅支持yaml配置,后续会支持通过UI集成

  1. 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: # 设备自定义
  2. 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
  3. 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值,通常使用设备的modelNumbersn8来区分,这两种型号可以在info实体的属性中找到
  4. JS插件为美居APP中设备控制页面的代码,在js插件代码中可以找到不同型号的设备有哪些功能及选项,比如有哪些模式。
  5. 目前该自定义插件仍在开发中,主要开发工作为将lua及js中的命令通过yaml转换成HA实体。由于个人精力的原因,适配不同设备是个漫长的过程,希望有编程能力的同学可以参考以上内容和device_customizes.yaml一起参与适配。
@al-one al-one added the FAQ label Jul 8, 2022
@hasscc hasscc locked and limited conversation to collaborators Jul 8, 2022
@al-one al-one pinned this issue Jul 19, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

1 participant