要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

2018-05-24 12:45:00 35点赞 328收藏 22评论

注:本篇教程应该是全网(不限于中文)第一个完整的homebridge-mqtt插件使用教程。作者也是花费了较长的时间去测试,整理,故如需转发分享请注明出处以及作者。

在之前的Homepod众测文中,楼主向大家介绍了越过开源智能家居平台,如何将小米全家桶接入homebridge,同时也介绍了全web界面的homebridge配置方案:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

如需查看全文请点击下方卡片(插播一句,homepod已经在对中文语音进行内测了,大家很快就能用中文来操作homepod了,所以还不赶紧将下文收藏):

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

可能是HomeKit的最佳搭配——基于HomePod的智能家居完全体验(附搭建过程)写在前面首先要感谢众测君以及两位中选后放弃的值友,让我参与到了HomePod的众测。同时作为目前站内智能家居原创数量最多的作者,相信大家也没多大兴趣看我在这给大家说“轰趴”的音质怎么好,拾音灵敏度如何强。但是要我炒冷饭的去跟大家说如何用树莓派搭建Homeassitant啥的,我着实觉得也是在浪费时间casatift| 0 评论56 收藏263查看详情

并且在末尾留下了点问题,就是如何通过homebridge-mqtt将ESP8266设备接入homebridge的。不知道大家自己动手了么,有没有遇到些啥问题,不过没关系,通过这篇文章,我们会详细讲解ESPEASY传感器是如何链入homebridge,而不需要诸如home assitant和domoticz之类平台中转的。熟悉楼主系列原创的值友应该都看过之前楼主使用ESP8266模块连接攀藤颗粒物传感器,以及MH-Z14/19二氧化碳传感器,温湿度传感器之类的自己做空气站的原创,原来的文章一般写的都是接入domoticz(HA的有在翰思彼岸发过)。没看过也没关系,可以从以下这篇入门开始看:

零基础打造全屋智能控制系统 篇三:只需100元,让你的DIY净化器实现空气质量联动和远程控制追加修改(2017-05-3011:43:42):lua脚本分享链接有误,现更新为http://pan.baidu.com/s/1pL0RN9D在前两篇文章里,介绍了domoticz的搭建,小米和博联设备的联入。以及如何让domoticz运行的更稳定,和blocky的应用。如果你没读过,可以参考以下casatift| 428 评论333 收藏3k查看详情

而这次我们介绍的是DIY空气站直连homebridge,这样就算你不想玩domo或hass,只是想随时随地掏出你的iphone,看一眼家里的空气状况的话,也是非常简单的。当然,homebridge是省不掉的,不过github上已经有大神在做ESP8266直接接入homekit的固件,像温湿度,开关啥的都已经有源码供大家测试了,等回头固件稳定且支持更多设备的时候,楼主会再向大家介绍的。这里还是跳回我们的主题,homebridge-mqtt。在谈插件之前我们先简单介绍下mqtt,作为老年人,以前是很排斥这类新事物的,但是这次用过了之后,不得不赞叹,实在太方便了。

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

从图中我们可以看到,一个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:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

我们首先仍是在Dcoker的注册表里搜索下载ncarlier/mqtt,当然,第一个也是可以用的,不过楼主用的是这个,所以这边就还是以此做教程了。

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

然后就从映像里启动这个容器,关于容器的设置,其实只有一项,就是记得勾选“使用与 Docker Host相同的网络”就好。

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

然后我们需要的是设置MQTT BROKER的用户名和密码:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

在容器页面选中Broker,点击详情:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

然后选择终端机,新增边上的小三角,输入命令:

mosquitto_passwd -c pwfile.example username

将最后的username改成你的用户名,然后终端机会要求你输入密码,输入两次就好。至此,我们的MQTT Broker就搭建完成了,是不是超级简单。好了,下面我们就去给homebridge安装插件。

我们打开Homebridge的WEB UI配置页,在plugin页面的搜索框里搜索mqtt:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

选中@cflurin的homebridge-mqtt v0.5.0 安装,注意,不知道怎么使用homebridge UI配置的请参阅楼主的众测文,连接在本文开头,这里就不多说了。等插件安装完成后,我们进入config页面,在config.json的platforms字段添加如下信息:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

因为代码不适合贴在这,具体的大家可以前往homebridge-mqtt v0.5.0的NPM页面进行复制。然后我们保存config.json,然后重启homebridge就好了。然后,我们就需要添加传感器啥的了,这里我们需要用到另一个工具——mqtt.fx,这个软件下载可能需要用到点技术手段,但是你也可以使用其他的mqtt调试器,都是一样的。

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

在Publish,也就是发布界面上有两栏,上面小的那一栏是填Topic的,下面的是Payload。这里简单的说一下mqtt信息的构成,例如,我们要给homebridge添加一个温湿度传感器,根据NPM页面的指导,是要发布一条topic为homebridge/to/add的信息,其中homebridge为你之前在config.json里面写的topic名称。而payload内容为:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

Service定义的是TemperatureSensor,其他类型的话就改成相应的。如果只是温度的话,就可以把湿度字段删掉。而name,model,serialnumber,firmwarerevision等可以自己随便设,没什么大关系。我们就可以在MQTT.fx里面这样添加:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

添加完成后,我们就可以在WEB UI的accessories看到这两个传感器:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

然后我们可以在MQTT.fx里面对这两个传感器进行下测试,我们使用homebridge/to/set(本处自定义为hbridge)作为TOPIC去更新传感器数据,其中温度的命令为CurrentTemperature(湿度为CurrentRelativeHumidity)详细的字段名以及homebridge所支持的设备和服务都可以通过https://github.com/KhaosT/HAP-NodeJS/blob/master/lib/gen/HomeKitTypes.js进行查阅。

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

可以看到web界面上a1的温度已经变化为99摄氏度。

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

同理,我们下面添加空气质量传感器,不过这个空气质量传感器中我们会包含比较多的信息,比如二氧化碳浓度,PM2.5浓度,PM10浓度,以及空气质量等级等。当然,这个具体能包含多少信息,我们还是要查阅HomeKitTypes.js:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

例如空气质量传感器的话,除了从0-5,5个级别外,还能包含以上的数据。所以我们添加的时候就需要把想要的值对应的字段也要添加进去:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

然后就可以看到Web UI里面就有了:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

同样的,我们进行下测试,因为Web UI只支持显示空气质量,所以这里我们就更新AirQuality就好,将其更新为1,也就是Excellent。

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

然后可以看到Web UI里面的a1已经同步更新为Excellent:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

同理,我们可以根据这个套路去添加其他内容的传感器,例如光感,烟雾,声音等都可以。下面我们来继续看看ESPEASY里面该如何设置,关于基础的传感器怎么接,插件怎么用啥的我这就不多说了,不知道的请前去复习本系列之前的原创。

我们打开ESPEASY节点的WEB界面,选择Controllers:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

大家可以看到,我添加的第一个就是mqtt broker的设置,这里要提醒的是,OpenHAB MQTT智能用在第一个:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

在设置页面,关心的主要是IP地址和用户名密码,下面的完全不用看,因为我们真的Publish并不是通过这个来的。然后大家前往Rules页面,关于Rules的使用(关于Rules如何开启,也请参阅之前的原创),其实之前的原创都有讲,所以这里只说Publish的命令:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

详细分解下:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

之前一直有值友在问我如何在domo里面把一个传感器的值分开的问题,我这可以解答下,其实完全不用去浪费domo的资源将值分开,直接在Espeasy里面使用Rules直接将每个值单独发送就好。例如使用SendToHTTP命令:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

而后我们在iOS上就能看到传感器的详细内容了:

要什么HomeAssitant?DIY空气站直连HOMEBRIDGE教程

当然,在楼主的使用中,MQTT插件仍然有一些问题,例如传感器到达一定数量(未定)后,重启homebridge可能会遭遇启动不了的状况,这时候就需要在Web UI中删除插件以及临时文件,然后重新安装,所以这里建议大家每添加一个传感器就备份,重启看看。这个崩溃有时候比较莫名,可能和你传感器的名字也有关,所以大家也看到我的那些传感器的名字都是a1,a2,a3,a4这样的,如果说到达某一个值重启会崩溃后,就返回上一个快照,然后再新开一个homebridge使用……

本文没有提到使用mqtt插件连接开关,是因为espeasy作为Subscriber的功能非常有限,所以下一篇原创会着重说cmd插件配合esp开关模块的使用。谢谢大家,喜欢本文可别忘了点赞收藏打赏一条龙服务哦~


展开 收起
22评论

  • 精彩
  • 最新
  • HA对于没一点基础的人来说还是很麻烦的,自己花了大半个月翻了无数教程在没有docker的群晖上安装完HA后,就作罢了。想想还要架设HB,一点积极性都没了。。。最关键是99元的弱鸡小米没抢到,囧。

    校验提示文案

    提交
    HA上手确实不易,但是搞明白YAML以后就省力了,这是第一个坑,第二个坑就是自动化了……

    校验提示文案

    提交
    收起所有回复
  • Ha坑太多了,装好以后就没兴趣去配置了😂

    校验提示文案

    提交
    HA玩家基本就是在不停的升级系统,该配置,装这装那,哈哈哈哈,do玩家的日常是装好了之后就好了,然后隔几个月连自己当初怎么装的都忘记了。

    校验提示文案

    提交
    还真是这么回事儿

    校验提示文案

    提交
    收起所有回复
  • 术语、专有名词一大堆。如果这也叫“零基础”,相当一部分人应该是负基础。

    校验提示文案

    提交
  • 收藏了先,喜欢折腾到死后爽翻天的快感

    校验提示文案

    提交
  • 第一啦,虽然看不懂,但很有兴趣

    校验提示文案

    提交
  • 太复杂了,还是直接买一个简单

    校验提示文案

    提交
  • 生命不息,xx不止

    校验提示文案

    提交
  • 一脸懵逼,搞完HA就没搞过别的了 [观察]

    校验提示文案

    提交
  • 做智能家居的人表示很难看懂。。可能我不是技术。。

    校验提示文案

    提交
  • 标机当年写了本未来之路。

    校验提示文案

    提交
  • 签到了。。。。

    校验提示文案

    提交
  • 碎银拿去拿去

    校验提示文案

    提交
  • 非geek不要碰ha。

    校验提示文案

    提交
  • 大神请收下我的膝盖。

    校验提示文案

    提交
  • 老大,我还是对你那个ESPEASY抓HTTP天气感兴趣啊,具体怎么操作啊

    校验提示文案

    提交
    那个别用espeay,网上有自己编译固件的教程

    校验提示文案

    提交
    收起所有回复
  • 大神,我想问下,装修想搞智能家居,走群辉的,应该在硬装方面做点什么

    校验提示文案

    提交
  • 大神 请问我按照你说的 用SENDTOHTTP 发过去 DOMOTICZ咋没反应
    SendToHTTP 192.168.0.196,8084,/json.htm?type=command¶m=udevice&idx=3&nvalue=[pms#pm2.5]

    校验提示文案

    提交
    把nvalue改成svalue试试

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
328
扫一下,分享更方便,购买更轻松