找回密码
 立即注册

微信扫码登录

搜索
查看: 74427|回复: 55

[经验分享] 315RF网关接入homeassistant和小度音箱

[复制链接]

19

主题

255

回帖

1973

积分

金牌会员

积分
1973
金钱
1699
HASS币
50
发表于 2020-1-7 14:16:43 | 显示全部楼层 |阅读模式
本帖最后由 姚远 于 2020-12-19 11:22 编辑

新更新说明
之前一直使用这个OpenMQTTGateway(简称OMG),将家里的无线开关、门磁等接入homeassistant,还比较正常。最近给父母家配置无线开关和小米温湿度计2,重新配置OMG硬件和刷机固件。这次的变化主要有:
1. 小米温湿度计2需要使用蓝牙网关,增加蓝牙部分。所以选用了ESP32. 20块钱包邮到家,对比8266+蓝牙模块,既稳定又便宜,接线还少了很多
2. 部分OMG增加了DHT温湿度传感器
3. 官方OMG已经升级到0.9.5版本
4. 解决OMG经常没有反应问题
5. 解决传输距离太近的问题。发射可以整体房间一个发射模块就够用了,但是接收模块要一屋一个,太弱了。
具体方案参见#46楼
原方案
背景:为什么我要接入315RF。1、之前使用ESP8266构建了部分终端,但这东西好费电啊,必须接入到某个插座或开关内,而且如果是配置在原开关的位置,还要配一棵零线过来。最重要的是这家伙高能耗啊,总是热热的,是绝对不能使用电池供电的。
2、最致命的是wifi撑不住了。家里虽然人口不多,但接入wifi的设备不少,网络已经明显拥堵,并经常会有设备掉线。而用于智慧家居的wifi设备才接入了6个,还有安防、各房间的温湿度、好多灯没有接入呢。需要为wifi解压。
3、之前有几个灯的开关使用了86型遥控开关+随意贴,虽然使用很方便,但和整体智慧家居形不成一体,需要将它们纳入进来。
4、之前的无线门铃,主从机不稳定,时有时无,而且也没有纳入到整体中来。
5、基本的门磁还没有纳入进来,每个窗户、门,估计要20几个呢,最好还要电池供电。
6、温湿度传感器,应该每个房间都要配置,而且最好不接入ESP8266。8266高能耗,周围都是热热的,影响测温结果。
7、还要接入红外和蓝牙。
好吧,我初步设想,ESP8266还是做单片机+wifi应用吧,把它更多定位在网关环节,或者是节点上需要很多传感器组合的地方
首先要搞清楚我要什么,树莓派+homeassistant+RF网关(ESP8266+RF收发模块)。RF与homeassistant的交互,在网络上有无数的帖子,越看越看不懂,越看越不敢下手,完全懵圈了,整整2个月,才明白我想要什么。我要网关,网关,一个汇集家中所有315、433RF的集中网关,并可对部分终端发送指令的网关,是智慧家居整体控制的一个hub。理论上,RF网关有一个就够了,其他遥控器是“随手而控”的一个组成。
技术路线选择,ESP8266+Arduino,315或433超再生收发模块,RF网关支持学习编码。
开始:组装RF网关,耗时3天,中途差点放弃,很多坑。首先需要感谢前辈们的教程和提供的免费应用。
受到刺激与鼓舞的前辈:https://bbs.hassbian.com/thread-6132-1-1.html
Arduino教程:https://www.geek-workshop.com/thread-2719-1-1.html
RF网关教程:https://bbs.hassbian.com/thread-894-1-1.html
RF网关项目:https://docs.openmqttgateway.com/
   选择的版本是,OpenMQTTGateway v0.9.2,主程序是CODE-OpenMQTTGateway-V092.zip,库文件是ESP8266_OpenMQTTGateway_V092_RF.zip
小度接入homeassistant项目:https://ljr.im/articles/plugin-smart-speaker-connected-to-home-assistant-integration-plus/。之前已经接入homeassistant,之所以再次感谢,我觉得智慧音箱是智慧家居的最重要控制入口,简洁、方便,并且越来越成熟。我现在是每个房间一个小度play音箱,几十块钱解决的却是核心的用户体验。
现在的半成品,看起来非常简单的,成本不高,也不需要多么强的动手能力。本质上就是一个ESP8266+RF收发模块,没有其他的了
rf网关.jpg
过程,就是https://bbs.hassbian.com/thread-894-1-1.html这个教程,一步一步做下来就好了。基本步骤是,
1、ESP-01刷机-基本系统,
   电脑端安装Arduino IDE,参照前面列出的教程
   Arduino IDE中增加8266开发版
   ESP8266刷Arduino系统,可参照前面我列出的教程
2、ESP-01刷机-RF网关,
   下载OpenMQTTGateway,参考前面的教程和连接,或是直接参考https://docs.openmqttgateway.com/upload/arduino-ide.html
   下载RF库文件,解压缩,并放在Arduino IDE默认库文件夹位置
   打开电脑端Arduino IDE,并加载OpenMQTTGateway主文件,main.ino
   修改user_config.h,启用RF,并配置wifi和mqtt
   修改config_RF.h,配置mqtt主题
   连接ESP-01,刷机。Arduino IDE“上传”
3、测试,
   找一个315的遥控器,按遥控器按钮,应该在MQTT的监视窗口看见遥控器发出的RF编码
ESP-01刷机成功。
遇到的几个坑,
1、刷应用的过程中,找不到相关的库:之前完全没有使用过Arduino,没有下载RF库文件
2、测试的时候,完全没有反应,不知道问题出在哪里:其实要实现RF网关功能,逻辑上分为两部分,即Arduion8266wifi。测试的时候,ESP-01放置在面包板上,脱离了串口,在电脑Arduino IDE窗口看不到任何情况,不知道是Arduino出问题了,还是8266wifi出问题了。动手改装8266的串口烧录器,引出RF315接收模块所需要的三棵线,然后在USB上直接测试
改串口烧录器.jpg
结果一看,wifi,mqtt配置都有问题。在user_config.h修改,重新刷机
3、Ardino IDE串口窗口观察正常了,但mqtt监视页面还是没有反应。原来接收模块是433的,换成与遥控器匹配的315
4、距离太短,剪一棵25cm的电线,焊在315模块的外接天线位置,立即解决
5、发射模块调试的时候,一切正常,就是我家里的遥控灯没反应。homeassistant的configuration.yaml中mqtt主题配置不对,重新配置。正确主题在Arduino下,config_RF.h库中的字段,拷贝过来就行了
rf主题配置.png
6、还不行,原先编码是带“”的字符,改为数字,通过

将全家86型遥控开关接入homeassistant:
全家已经配置了86型遥控开关,并都已经配有随意贴遥控器,可实现主开关点动开灯或者关灯,以及随意贴点动开灯或是关灯。希望这些遥控开关,通过rf网关接入HA,实现自动控制。
前提,86型遥控开关是315或433无线模式,并且主开关需要具备学习遥控编码能力,以及主开关可以配置某个随意贴点动开/关灯、只是开灯、只是关灯的能力。
自定义每个灯的开关灯RF编码,并与每个灯的主控开关配对。需要配置成“开灯码”只开灯,“关灯码”只关灯。
homeassistant的configuration.yaml的配置:(如果是OMG0.9.5版,此处配置有变。请参看#45楼)
switch:
  - platform: mqtt
    name: "主卧开关灯"
    state_topic: "home/OpenMQTTGateway/433toMQTT" # defined by subjectGTWRFtoMQTT in User_config.h
    command_topic: "home/OpenMQTTGateway/commands/MQTTto433_1" #发射的命令,如果没有反馈请更换后面的数字
    payload_on: 123456 #自己编制,并已经与遥控接收端匹配的开灯码
    payload_off: 654321 #自己编制,并已经与遥控接收端匹配的开灯码
    optimistic: false
    retain: true

  - platform: mqtt
    name: "次卧开关灯"
    state_topic: "home/OpenMQTTGateway/433toMQTT" # defined by subjectGTWRFtoMQTT in User_config.h
    command_topic: "home/OpenMQTTGateway/commands/MQTTto433_1" #发射的命令,如果没有反馈请更换后面的数字
    payload_on: 2654321 #自己编制,并已经与遥控接收端匹配的开灯码
    payload_off: 2123456 #自己编制,并已经与遥控接收端匹配的开灯码
    optimistic: false
    retain: true
homeassistant主页面这个样子
homeassistant.png
配置小度音箱:havcs.yaml
switch.zhu_wo_kai_guan_deng:
  havce_device_name: 主卧灯
switch.ci_wo_kai_guan_deng:
  havce_device_name: 次卧灯
将配置带入homeassistant
havcs.png
小度自动发现设备
小度中将新设备配置到位置:“主卧室”、“次卧室”
在主卧室呼唤小度音箱,小度小度开灯
在次卧室呼唤小度音箱,小度小度开灯


尚未解决的问题
问题:
1、这个发射模块总是装死。隔一段时间没有发射命令,homeassistant中发布开关灯命令,mqtt也是发出去了,但是灯没有反应。不知道是不是315发射模块有问题。
2、面包板上的电源部分和8266部分好热啊,这是怎么回事啊
3、最严重的问题,这家庭的315(或是433)通信在裸奔啊,不知道哪天门口一个坏人就把我家的灯打开了,我的门磁系统可以被假冒啊。如果不使用滚码加密,哪位大神有什么加密措施吗?


下一步,买一堆的无线门磁



回复

使用道具 举报

19

主题

255

回帖

1973

积分

金牌会员

积分
1973
金钱
1699
HASS币
50
 楼主| 发表于 2024-5-10 16:54:53 | 显示全部楼层
yangrusen 发表于 2024-5-1 14:39
找到了OMG论坛上的资料,说RF gateway可以射频信号去重,所以这样应该是可以的。其他类型的网关应该是不 ...

其实RF模式,就是一个广播模式,没有握手反馈。OMG也不知道是不是发送成功了。所谓广播,就是都发一个信号,也是可以的
回复

使用道具 举报

10

主题

228

回帖

2157

积分

金牌会员

积分
2157
金钱
1919
HASS币
0
发表于 2024-5-1 14:39:56 | 显示全部楼层
姚远 发表于 2024-5-1 00:39
我是一个房间放一个,然后一个控制这个房间的几个设备或接收这个房间的传感器。差不多90平米做2个也可以 ...

找到了OMG论坛上的资料,说RF gateway可以射频信号去重,所以这样应该是可以的。其他类型的网关应该是不可以去重。
回复

使用道具 举报

0

主题

17

回帖

136

积分

注册会员

积分
136
金钱
119
HASS币
0
发表于 2024-5-1 11:39:36 | 显示全部楼层

多谢楼主分享。
回复

使用道具 举报

19

主题

255

回帖

1973

积分

金牌会员

积分
1973
金钱
1699
HASS币
50
 楼主| 发表于 2024-5-1 00:39:16 | 显示全部楼层
yangrusen 发表于 2024-4-22 09:56
挖个坟。请问楼主 OMG能不能做成分布式RF网关,就是感觉射频接收器偶尔有漏收开关信号,我排查完认为是信号 ...

我是一个房间放一个,然后一个控制这个房间的几个设备或接收这个房间的传感器。差不多90平米做2个也可以
回复

使用道具 举报

10

主题

228

回帖

2157

积分

金牌会员

积分
2157
金钱
1919
HASS币
0
发表于 2024-4-22 09:56:53 | 显示全部楼层
挖个坟。请问楼主 OMG能不能做成分布式RF网关,就是感觉射频接收器偶尔有漏收开关信号,我排查完认为是信号的问题。如果能多做几个类似的网关,然后每个屋子放一个,就好了吧。但是这样会不会同时收到好几次射频信号,导致多次触发相关自动化?去重的机制有没有思路。
回复

使用道具 举报

8

主题

374

回帖

1786

积分

金牌会员

积分
1786
金钱
1404
HASS币
0
发表于 2021-4-7 11:00:35 | 显示全部楼层
本帖最后由 peter5858 于 2021-4-7 17:32 编辑
姚远 发表于 2021-4-3 15:58
ESP01啊?那不能用PlatformIO,只能用Arduino 。如果使用这个,那就需要把库下载了。
所需库和版本,在pl ...

谢谢!arduino都搞定了,现在想学习下PlatformIO的编译,我在arduino下编译通过了的在PlatformIO里面就不行,只有慢慢来了。我用piltformio编译esp8266的通过了就是esp32的不行编译不过,不知道是哪里有问题。
回复

使用道具 举报

19

主题

255

回帖

1973

积分

金牌会员

积分
1973
金钱
1699
HASS币
50
 楼主| 发表于 2021-4-3 15:58:13 | 显示全部楼层
peter5858 发表于 2021-4-2 16:50
谢谢,一直跟着你的经验在搞,目前还是用的esp01做的网关,因为我只有几个控制点,关于PlatformIO IDE还没 ...

ESP01啊?那不能用PlatformIO,只能用Arduino 。如果使用这个,那就需要把库下载了。
所需库和版本,在platformio.ini文件里都列示出来了。你需要把Arduino库中已有的库去掉,然后将设置首选项中的库文件夹指向你下载解压后的文件夹。Arduino方式最烦人的就是库的文件夹指向。
他这个应用改了好几个库,一定要用下载的库,不要使用Arduino默认的库,尤其注意:
arduinojson = [email protected]
arduinolog = https://github.com/1technophile/Arduino-Log.git#d13cd80
pubsubclient = [email protected]
rc-switch = https://github.com/1technophile/rc-switch.git#385a7e0
wifimanager = https://github.com/tzapu/WiFiManager.git#c3ff582
回复

使用道具 举报

8

主题

374

回帖

1786

积分

金牌会员

积分
1786
金钱
1404
HASS币
0
发表于 2021-4-2 16:50:32 | 显示全部楼层
本帖最后由 peter5858 于 2021-4-2 17:41 编辑
姚远 发表于 2021-4-1 23:01
PlatformIO IDE几点说明啊,
1 这个不适用于ESP-01。我是都改用了ESP-32
2 不需要下载所有的库。Platform ...

谢谢,一直跟着你的经验在搞,目前还是用的esp01做的网关,因为我只有几个控制点,关于PlatformIO IDE还没熟悉,编译的配置也是按照你上面图片的配置的,始终没成功,唯一成功了的就是几年前有位老大的3位开关带315-433RF那个编译成功了,我的那个visual感觉始终都在重复的下载东西样,还没搞懂,
回复

使用道具 举报

19

主题

255

回帖

1973

积分

金牌会员

积分
1973
金钱
1699
HASS币
50
 楼主| 发表于 2021-4-1 23:01:44 | 显示全部楼层
peter5858 发表于 2021-3-25 20:44
你好!!请问下,在用户配置里WIFI和MQTT配置这些,可以不配置吗?等刷好固件联网后在配置,可以吗?还有 ...

PlatformIO IDE几点说明啊,
1 这个不适用于ESP-01。我是都改用了ESP-32
2 不需要下载所有的库。PlatformIO IDE会根据它的ino文件中的配置自己去找相关的库,即使你下载了库,它也不会用,还是自己去找。我的经验是让它自己去找,因为有些库是改动过的,它自己找更准确
3 使用PlatformIO IDE,一般配置ino文件就可以了,其他不用去管它。这里特别要注意的是,要自己配置一段配置。就是“配置功能”部分的1、2部分。这个需要配置正确了。我没有使用缺省的配置,而是照猫画虎,自己新增了两个配置,然后把原先一些默认配置的对应内容抄了过来。
4 “配置功能”中的3 配置User_config.h,最好也配置了
5 wifi和mqtt都不需要配置,第一次启动的时候,找到对应的wifi,会强制打开浏览器192.168.4.1,在这个页面中配置就可以了。
6 你这个问题我没碰到过。但之前使用PlatformIO IDE出现各种莫名其妙的错误,直到我摸索出这个方法。这个方法还是很顺的,我已经刷了6块ESP-32了,非常顺
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-9-16 04:52 , Processed in 0.186916 second(s), 11 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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