零基础打造全屋智能控制系统 篇十四:要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程
注:本篇教程应该是全网(不限于中文)第一个完整的homebridge-mqtt插件使用教程。作者也是花费了较长的时间去测试,整理,故如需转发分享请注明出处以及作者。
在之前的Homepod众测文中,楼主向大家介绍了越过开源智能家居平台,如何将小米全家桶接入homebridge,同时也介绍了全web界面的homebridge配置方案:
如需查看全文请点击下方卡片(插播一句,homepod已经在对中文语音进行内测了,大家很快就能用中文来操作homepod了,所以还不赶紧将下文收藏):
并且在末尾留下了点问题,就是如何通过homebridge-mqtt将ESP8266设备接入homebridge的。不知道大家自己动手了么,有没有遇到些啥问题,不过没关系,通过这篇文章,我们会详细讲解ESPEASY传感器是如何链入homebridge,而不需要诸如home assitant和domoticz之类平台中转的。熟悉楼主系列原创的值友应该都看过之前楼主使用ESP8266模块连接攀藤颗粒物传感器,以及MH-Z14/19二氧化碳传感器,温湿度传感器之类的自己做空气站的原创,原来的文章一般写的都是接入domoticz(HA的有在翰思彼岸发过)。没看过也没关系,可以从以下这篇入门开始看:
而这次我们介绍的是DIY空气站直连homebridge,这样就算你不想玩domo或hass,只是想随时随地掏出你的iphone,看一眼家里的空气状况的话,也是非常简单的。当然,homebridge是省不掉的,不过github上已经有大神在做ESP8266直接接入homekit的固件,像温湿度,开关啥的都已经有源码供大家测试了,等回头固件稳定且支持更多设备的时候,楼主会再向大家介绍的。这里还是跳回我们的主题,homebridge-mqtt。在谈插件之前我们先简单介绍下mqtt,作为老年人,以前是很排斥这类新事物的,但是这次用过了之后,不得不赞叹,实在太方便了。
从图中我们可以看到,一个MQTT系统大约分成三类设备:Publisher、Subscriber、和MQTT Broker。其中Publisher是信息发送设备,Subscriber是信息接收设备,与传统的P2P传输不同的是,MQTT使用的是广播传输,所以这里面还需要一个MQTT-Broker服务器作为信息的中转存在。也就是Publisher只是把信息传给了Broker,然后Broker对所有的Subscriber进行无差别的广播,Subscriber也会接收到来自Broker的所有信息,但是只处理它订阅的那部分。当然,很多时候某个客户端既为Publisher也是Subscriber。这个并不矛盾,例如homeassitant系统,既接收来自传感器开关的mqtt信息,也同时向设备发出mqtt指令。Mqtt与之前楼主经常使用的http连接最大的不同是,原先如果一个传感器要通过http发送信息至多个服务器,就需要分别连接每个服务器进行发送,而现在通过MQTT的方式,传感器只需要将信息发送给Broker,然后其他服务器只需要加入MQTT网络,等着收就好。无论是效率还是对传感器节点的压力来说,都会比http方式要好上很多。所以,我们要使用MQTT,首先要做的是搭建一个MQTT Broker:
我们首先仍是在Dcoker的注册表里搜索下载ncarlier/mqtt,当然,第一个也是可以用的,不过楼主用的是这个,所以这边就还是以此做教程了。
然后就从映像里启动这个容器,关于容器的设置,其实只有一项,就是记得勾选“使用与 Docker Host相同的网络”就好。
然后我们需要的是设置MQTT BROKER的用户名和密码:
在容器页面选中Broker,点击详情:
然后选择终端机,新增边上的小三角,输入命令:
mosquitto_passwd -c pwfile.example username
将最后的username改成你的用户名,然后终端机会要求你输入密码,输入两次就好。至此,我们的MQTT Broker就搭建完成了,是不是超级简单。好了,下面我们就去给homebridge安装插件。
我们打开Homebridge的WEB UI配置页,在plugin页面的搜索框里搜索mqtt:
选中@cflurin的homebridge-mqtt v0.5.0 安装,注意,不知道怎么使用homebridge UI配置的请参阅楼主的众测文,连接在本文开头,这里就不多说了。等插件安装完成后,我们进入config页面,在config.json的platforms字段添加如下信息:
因为代码不适合贴在这,具体的大家可以前往homebridge-mqtt v0.5.0的NPM页面进行复制。然后我们保存config.json,然后重启homebridge就好了。然后,我们就需要添加传感器啥的了,这里我们需要用到另一个工具——mqtt.fx,这个软件下载可能需要用到点技术手段,但是你也可以使用其他的mqtt调试器,都是一样的。
在Publish,也就是发布界面上有两栏,上面小的那一栏是填Topic的,下面的是Payload。这里简单的说一下mqtt信息的构成,例如,我们要给homebridge添加一个温湿度传感器,根据NPM页面的指导,是要发布一条topic为homebridge/to/add的信息,其中homebridge为你之前在config.json里面写的topic名称。而payload内容为:
Service定义的是TemperatureSensor,其他类型的话就改成相应的。如果只是温度的话,就可以把湿度字段删掉。而name,model,serialnumber,firmwarerevision等可以自己随便设,没什么大关系。我们就可以在MQTT.fx里面这样添加:
添加完成后,我们就可以在WEB UI的accessories看到这两个传感器:
然后我们可以在MQTT.fx里面对这两个传感器进行下测试,我们使用homebridge/to/set(本处自定义为hbridge)作为TOPIC去更新传感器数据,其中温度的命令为CurrentTemperature(湿度为CurrentRelativeHumidity)详细的字段名以及homebridge所支持的设备和服务都可以通过https://github.com/KhaosT/HAP-NodeJS/blob/master/lib/gen/HomeKitTypes.js进行查阅。
可以看到web界面上a1的温度已经变化为99摄氏度。
同理,我们下面添加空气质量传感器,不过这个空气质量传感器中我们会包含比较多的信息,比如二氧化碳浓度,PM2.5浓度,PM10浓度,以及空气质量等级等。当然,这个具体能包含多少信息,我们还是要查阅HomeKitTypes.js:
例如空气质量传感器的话,除了从0-5,5个级别外,还能包含以上的数据。所以我们添加的时候就需要把想要的值对应的字段也要添加进去:
然后就可以看到Web UI里面就有了:
同样的,我们进行下测试,因为Web UI只支持显示空气质量,所以这里我们就更新AirQuality就好,将其更新为1,也就是Excellent。
然后可以看到Web UI里面的a1已经同步更新为Excellent:
同理,我们可以根据这个套路去添加其他内容的传感器,例如光感,烟雾,声音等都可以。下面我们来继续看看ESPEASY里面该如何设置,关于基础的传感器怎么接,插件怎么用啥的我这就不多说了,不知道的请前去复习本系列之前的原创。
我们打开ESPEASY节点的WEB界面,选择Controllers:
大家可以看到,我添加的第一个就是mqtt broker的设置,这里要提醒的是,OpenHAB MQTT智能用在第一个:
在设置页面,关心的主要是IP地址和用户名密码,下面的完全不用看,因为我们真的Publish并不是通过这个来的。然后大家前往Rules页面,关于Rules的使用(关于Rules如何开启,也请参阅之前的原创),其实之前的原创都有讲,所以这里只说Publish的命令:
详细分解下:
之前一直有值友在问我如何在domo里面把一个传感器的值分开的问题,我这可以解答下,其实完全不用去浪费domo的资源将值分开,直接在Espeasy里面使用Rules直接将每个值单独发送就好。例如使用SendToHTTP命令:
而后我们在iOS上就能看到传感器的详细内容了:
当然,在楼主的使用中,MQTT插件仍然有一些问题,例如传感器到达一定数量(未定)后,重启homebridge可能会遭遇启动不了的状况,这时候就需要在Web UI中删除插件以及临时文件,然后重新安装,所以这里建议大家每添加一个传感器就备份,重启看看。这个崩溃有时候比较莫名,可能和你传感器的名字也有关,所以大家也看到我的那些传感器的名字都是a1,a2,a3,a4这样的,如果说到达某一个值重启会崩溃后,就返回上一个快照,然后再新开一个homebridge使用……
本文没有提到使用mqtt插件连接开关,是因为espeasy作为Subscriber的功能非常有限,所以下一篇原创会着重说cmd插件配合esp开关模块的使用。谢谢大家,喜欢本文可别忘了点赞收藏打赏一条龙服务哦~
ggex3
校验提示文案
鬼鬼鬼鬼
校验提示文案
值友1281918191
校验提示文案
玉面小白狼
校验提示文案
值友5652151589
校验提示文案
卷毛504
校验提示文案
sickarts_L
校验提示文案
2h0uxy
校验提示文案
clemente
校验提示文案
gz_sande3
校验提示文案
楚楚的小屋
校验提示文案
jank_t
校验提示文案
[已注销]
校验提示文案
Potat0
校验提示文案
包子大人1001
校验提示文案
燘鮒疍
校验提示文案
包子大人1001
SendToHTTP 192.168.0.196,8084,/json.htm?type=command¶m=udevice&idx=3&nvalue=[pms#pm2.5]
校验提示文案
包子大人1001
SendToHTTP 192.168.0.196,8084,/json.htm?type=command¶m=udevice&idx=3&nvalue=[pms#pm2.5]
校验提示文案
燘鮒疍
校验提示文案
包子大人1001
校验提示文案
Potat0
校验提示文案
玉面小白狼
校验提示文案
[已注销]
校验提示文案
jank_t
校验提示文案
楚楚的小屋
校验提示文案
gz_sande3
校验提示文案
clemente
校验提示文案
值友1281918191
校验提示文案
2h0uxy
校验提示文案
鬼鬼鬼鬼
校验提示文案
ggex3
校验提示文案
sickarts_L
校验提示文案
卷毛504
校验提示文案
值友5652151589
校验提示文案