『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 13567|回复: 13

lirc与红外二极管 三元钱搞定空调遥控完整控制接入homebridge

[复制链接]

2

主题

31

帖子

300

积分

论坛技术达人

积分
300
金钱
264
HASS币
0
发表于 2017-11-23 23:13:49 | 显示全部楼层 |阅读模式
把sonoff和温湿度传感器接入homekit以后就开始研究如何把空调也完整的接入homekit(支持模式控制,温度调整),爬墙找到了很多资料,多数都是通过小米空调伴侣和博联黑豆做“桥”接入可控制温度和模式的,或者通过lirc只能控制开关无法控制模式和温度,,,然而我只是想控制个空调,,,不想破费一百大洋去买个那玩意,最终经过研究找出解决方案,电子市场购买一只红外发射二极管和一只红外接收管 共花费三块钱。

此处非常感谢@893399065https://bbs.hassbian.com/thread-887-1-1.html帖子,在前期给予了我很大的参考。不过那个帖子里面方法只能连接到hass 无法以空调climate组件形式连接到homebridge上,进而也不能通过homekit进行控制。
关于lirc的设置和安装,空调码的录制 可参考上面的帖子。

思路:通过翻看home-assistant.io官网的components库,找到了一个叫做”MQTT HAVC“的组件,然后用俩小时时间研究了一下node.js和MQTT协议,用MQTT做桥 在树莓派上跑一个node.js的mqtt客户端去控制shell发送irsend命令,从而完整的控制空调模式和温度,由于风速等在homekit上还暂时不支持,所以也就没写进脚本内。由于是以climate组件形式接入homeassistant的,所以可以直接通过homebridge进行homekit做完整控制。这个组件目前工作在optimistic mode,so他不从mqtt客户端获取状态更改,所有操作他会记住并默认操作成功。(反正红外遥控发出去信号了也反馈不了是否执行成功了,所以这个也无所谓)

先说一下脚本大概结构,订阅mqtt的study/ac/mode/set和study/ac/temperature/set主题,分别接收模式和温度设置。
如果接收到的mqtt消息为heat/cool/auto/idle(模式选择)  那么就把对应状态写入mode0,并且irsend他们对应我所设置的空调码(这个空调码里面是带有温度信息的,根据自己的需求更改,比如heat你想打开时候默认24度 那么就把24度heat模式的空调码的控制KEY写入替代下面的“KEY_I" 以此类推
if (payload === 'heat') {
    console.log(`Now Mode '${payload}'`)
    mode0 = "heat";
    spawn('irsend', ['SEND_ONCE', 'ac', 'KEY_I'])
  }

关于温度设定,假设如果接收到的mqtt消息为17.0,那么首先会查询mode0的信息,如果mode0= heat 那么就执行heat17.0的irsend,如果mode0=cool 那么就执行cool17.0的irsend,以此类推,诸位用的时候把对应温度和状态的irsend参数写入对应的位置替代掉我的KEY和BTN,我感觉我的脚本写的蛮通俗易懂也蛮臃肿的,用了好多if elseif套着if,所以诸位应该都能看懂,,,,当然如果有哪位大神能通过我的想法精简一下我的脚本,俺也不胜感激。如果你的空调控制范围不是17~30度,那么你要根据需要增减脚本里面判断温度数值的语句。
mqtt用户名和密码改成你自己的,hostname如果不是跑在本机上的根据你的需要更改,我是用树莓派本机跑的所以就127.0.0.1
别忘记npm install mqtt
最后node aircon.js
用screen在后台开一个窗口执行,这样就不受关掉ssh窗口的影响了。

homeassistant里面添加组件
climate:  - platform: mqtt    name: Study    modes:      - off      - cool      - heat    mode_command_topic: "study/ac/mode/set"    temperature_command_topic: "study/ac/temperature/set"
但是homeassistant里面climate组件貌似不太好用,功能那么多也用不上(其实是懒,因为多一个功能就要把这个功能对应所有温度和模式的空调码录一遍) 调温度调完要等好几秒才会反馈给mqtt,所以在homeassistant里面的控制我还是使用@893399065的方式进行控制。

最后放上效果图
IMG_0326.jpg IMG_0327.PNG IMG_0328.PNG

不过另外还有个问题想问一下有么有大神能搞定,主页那Home下面显示的简介,Bedroom空调温度能不能不让他显示在简介里面?或者把Outside的温度传感器数据放上去?有没有大神知道这个是哪里设置的问题?

aircon.js.zip

1.32 KB, 下载次数: 77

评分

参与人数 2金钱 +24 收起 理由
lidicn + 12 严重支持!
+ 12 谢谢分享!

查看全部评分

回复

使用道具 举报

2

主题

31

帖子

300

积分

论坛技术达人

积分
300
金钱
264
HASS币
0
 楼主| 发表于 2017-11-23 23:19:13 | 显示全部楼层
homeassistant组件信息貌似上面格式没了,重新发一下,顺便吐槽一下yaml对空格和缩进要求一不留神就报错。
climate:
  - platform: mqtt
    name: Study
    modes:
      - off
      - cool
      - heat
    mode_command_topic: "study/ac/mode/set"
    temperature_command_topic: "study/ac/temperature/set"
回复

使用道具 举报

123

主题

4664

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16442
金钱
11693
HASS币
45
发表于 2017-11-23 23:40:07 | 显示全部楼层
非常好的帖子,感谢分享!
回复

使用道具 举报

2

主题

31

帖子

300

积分

论坛技术达人

积分
300
金钱
264
HASS币
0
 楼主| 发表于 2017-11-23 23:45:25 | 显示全部楼层
下一步打算完善一下开空调选择模式时候,会自动调整到上次关空调时候的温度,而不是直接跳转到默认温度。并如果通过传统遥控器控制空调,lirc接收到信号能反馈给mqtt 同步状态到homeassistant进而也会同步到homekit
回复

使用道具 举报

10

主题

270

帖子

2261

积分

超级版主

Rank: 8Rank: 8

积分
2261
金钱
1971
HASS币
61

教程狂人

QQ
发表于 2018-1-14 23:56:43 | 显示全部楼层
我告诉你我有一个曲线救国的办法加入不用mqtt能加入hk而且超级快。会写python最好你直接写个插件就完了,不会写的方法也有就是有点Low。你在ha加一个generic_climate这个组件,但是它不连任何配备,只是让他能在hk里能显示。然后再在ha里里根据它的状态设置一个自动化,这样就可以在hk里控制了。但是这东西我试过,用多了ha会卡我也不知道为什么
回复

使用道具 举报

4

主题

148

帖子

516

积分

高级会员

Rank: 4

积分
516
金钱
368
HASS币
0
发表于 2018-1-15 21:41:46 | 显示全部楼层
先收藏后学习
回复

使用道具 举报

2

主题

31

帖子

300

积分

论坛技术达人

积分
300
金钱
264
HASS币
0
 楼主| 发表于 2018-1-19 15:29:50 | 显示全部楼层
893399065 发表于 2018-1-14 23:56
我告诉你我有一个曲线救国的办法加入不用mqtt能加入hk而且超级快。会写python最好你直接写个插件就完了,不 ...

会写node.js,python会写一丢丢但是不熟悉,改天研究一下怎么写插件。不过第二种方法确实省事,搞mqtt做桥费事了
回复

使用道具 举报

1

主题

80

帖子

607

积分

高级会员

Rank: 4

积分
607
金钱
527
HASS币
0
发表于 2018-1-19 19:16:59 | 显示全部楼层
辛苦了!謝謝
回复

使用道具 举报

34

主题

335

帖子

1848

积分

金牌会员

Rank: 6Rank: 6

积分
1848
金钱
1513
HASS币
0
发表于 2018-3-8 13:07:27 来自手机 | 显示全部楼层
谢谢分享
回复

使用道具 举报

0

主题

2

帖子

16

积分

新手上路

Rank: 1

积分
16
金钱
14
HASS币
0
发表于 2018-7-1 10:09:38 | 显示全部楼层
看见您发的帖子 过来的! 准备研究
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-22 14:01 , Processed in 0.067919 second(s), 43 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表