https://github.com/Taosky/homebridge-lirc-aircon

可以直接看README,下面讲的比较啰嗦。

过程

因为转移到HomeBridge,找了一圈没找到MQTT协议(之前HomeAssistant用的)的插件,后来发现一个有些类似的但是很奇怪的插件,好在代码终于能看懂,就修改了一下。

首先之前的插件是用的每个按键单独指令的控制方法,而平常用的空调都是一个指令发送所有数据。原先是 “加减2度”这种调整温度的方法,关机开机的操作也都是单独的,删除了其中转换温度差的过程,修改为直接发送对应温度相应指令。

其次原来是用的‘htu21d’或是‘dht22’这两个传感器,再通过i2c-tool获得的房间温度,而我其实用的是‘DS18B20’。于是修改为command形式的获取温度信息,也不用专门配置别的工具了。

最后删除了一堆配置参数和湿度控制华氏度之类的东西。

配置

首先要确保你的指令名字和我是一样的,比如制热24摄氏度是heat_24,制冷19摄氏度是cool_19,关闭是off,就是确保以下命令工作:

  • OFF MODE: irsend SEND_ONCE YOUR_DEVICE_NAME off
  • HEAT MODE: irsend SEND_ONCE YOUR_DEVICE_NAME heat_CELSIUS_TEMP (ex: heat_24)
  • COOL MODE: irsend SEND_ONCE YOUR_DEVICE_NAME cool_CELSIUS_TEMP (ex: cool_19)

这样之后其实只要设置红外设备名字ir:{"name": ""}就行了。

temp节点用于设置获得房间温度的命令,multiple是除数,比如命令结果的是16500,就需要设置为1000来得到温度数值16.5摄氏度,没办法获得温度需要删除整个temp,房间温度将会默认为20摄氏度。

最高温度、最低温度取决于你录制的空调温度区键,比如我把16-30摄氏度的制冷制热全部录制了一遍,defaultSetpoint是启动HomeBridge时默认设定温度。

{
  "accessories": [
    {
      "accessory": "aircon-ir-remote",
      "name": "Air Conditioner",
      "minSetpoint": 16,
      "defaultSetpoint": 20,
      "maxSetpoint": 30,
      "ir": {
        "name": "lirc_device_name"
      },
      "temp": {
        "command": "cat /sys/bus/w1/devices/28-01131650xxx/w1_slave |grep t= | cut -d '=' -f 2",
        "multiple": 1000
      }
    }
  ]
}