本帖最后由 671792320 于 2018-12-14 18:28 编辑
提示提示提示:由于本方案的github上的代码更新的已经很多,但是楼主没有更新。所以本教材只能作为参考
提示提示提示:由于本方案的github上的代码更新的已经很多,但是楼主没有更新。所以本教材只能作为参考
提示提示提示:由于本方案的github上的代码更新的已经很多,但是楼主没有更新。所以本教材只能作为参考
提示提示提示:由于本方案的github上的代码更新的已经很多,但是楼主没有更新。所以本教材只能作为参考
首先是项目地址
其他的自行查看
然后是项目简介,我谷歌翻译的哈
ESP8266 替代遥控器并接入到ha里面之红外方案(可以学习空调)https://bbs.hassbian.com/thread-1124-1-1.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OpenMQTTGateway作为您的433MHz /红外信号与MQTT代理之间的WIFI或以太网网关。它兼容:Arduino板+ W5100
ESP8266:NodeMCU V1.0 NodeMCU V2.0,NodeMCU V3.0,ESP8266 12F和Wemos D1。
它能够:
发送对应于接收的MQTT数据(MQTT-> RF)的RF信号 发布与收到的433Mhz信号相关的MQTT数据(RF - > MQTT) 发送对应于接收到的MQTT数据的IR信号(MQTT-> IR) 发布与收到的IR信号相关的MQTT数据(IR - > MQTT) 发布与BLE信标相关的MQTT数据(BT - > MQTT)
如果您喜欢,您可以直接向网关添加额外的传感器!
功能:
双向,网关可以发送和接收信号,例如,如果您有RF墙壁插头,您可以使用家庭自动化软件(MQTT - > RF)或物理遥控器进行控制。当您按物理遥控器上的按钮时,墙壁插头将打开,家庭自动化软件(RF - > MQTT)中的按钮将被更新。 信号重复删除,与RF的RF我们得到很多重复,为了避免这个网关能够过滤发送到MQTT代理的代码数量在一个定义的时间“time_avoid_duplicate” BLE信标检测,网关通过HM 10模块发布信标,并发布每个模块地址的信号强度。通过这种方式,您可以轻松地处理人,事物或其他人的存在检测。 插件的可能性,您可以直接添加到您所需的传感器网关,只需创建一个新的Z .ino文件到您的代码的网关文件夹,并在client.loop()之后调用它; 进入OpenMQTTGateway.ino。该程序提供了一个DHT传感器插件实现(ZaddonDHT.ino) 高级信号详细信息发布,以便了解MQTT发布的网关收到的详细信息,主题为RF和主机IRTMQTT高级IR接收信号的详细信息(此信号必须与RCSwitch和IRRemote库兼容) 。 确认,为了确保网关从MQTT接收到有效载荷,它向用户定义的主题发送确认,用于RF的“subjectGTWRFtoMQTT”或用于IR的“subjectGTWIRtoMQTT”,可以将交换机或其他组件的状态更新到家庭自动化。 多板兼容性,网关目前已经使用ESP8266 12F,NodeMCU V1,NodeMCU V2,Wemos D1 mini,Arduino Uno和Arduino Mega进行测试。 多协议处理,网关基于RCSwitch和IRRemote库,您可以通过在主题内指定要使用的协议来定义协议。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 首先下载arduino IDE 链接如下
https://www.arduino.cc/en/Main/Software
下载添加esp8266支持
链接在这里(可能需要fq)http://arduino.esp8266.com/stable/package_esp8266com_index.json
然后选择工具-开发板-开发板管理。拉到最下面即可看到esp8266
点击安装即可。
ps如果下载失败可以通过迅雷下载,然后将文件丢到这个目录
然后在点击安装即可安装完成。
然后就是选择开发板,端口,型号即可。
在编译这个项目的时候需要下载库文件,然后添加到arduino里面
由于手动添加比较麻烦可以在这里修改库的位置,然后下载好的直接丢里面即可。
然后用arduino打开下载到的源码的OpenMQTTGateway.ino文件,
然后手动修改User_config.h里面的mqtt和wifi配置如图所示。
修改完毕后保存,点击上传然后就会开始编译。完成后可以通过串口监控看到当前板子的启动状态。
到达这里后,ubuntun server 按照mqtt服务器,
在ubuntu的无坑版本中需要屏蔽
allow_anonymous false删除这一句,然后启动mqtt服务器即可ps:此处感谢群内也在研究这个项目的网友“哦哦哦”指明
~~~~~~~~~~~~~~~~~~~~~
#在上面文件里加入:
=====================================
allow_anonymous false
password_file /etc/mosquitto/pwfile
=====================================
~~~~~~~~~~~~~~~~~~~~~·
然后虚拟机输入命令来接受433信号或者315或者红外信号。当然我是433设备所以用的是433测试的
sudo mosquitto_sub -t home/# -v
复制代码
输入这个命令按下遥控器如果不出意外的话,就可以看到接受到的信号了。
关于发射信号,教程内给到命令是
mosquitto_pub -t home/commands/MQTTto433 -m 1315156
复制代码
但是我这样测试后发现并没有反馈
然后有发现这么一段话
Example: mosquitto_pub -t home/commands/PLSL_315/433_4/BITS_25 -m 33151562 will make RCswitch use the protocol 4 with a pulselength of 315ms and a bits number of 25
RF supported protocols:
433_1 433_2 433_3 433_4 433_5 433_6
If you don’t want to use special parameters for RF just publish your data into “home/commands/MQTTto433”
经翻译。。加实践发现这个
mosquitto_pub -t home/commands/MQTTto433_2 -m xxxxxxxxx然后恍然大悟啊,上面有写的433_1-6
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
以上esp8266的学习和发射就完成了。然后就说接入HA里面。配置如下
switch:
- platform: mqtt
name: "on"
state_topic: "home/433toMQTT" # defined by subjectGTWRFtoMQTT in User_config.h
command_topic: "home/commands/MQTTto433_2"#发射的命令,如果没有反馈请更换后面的数字
payload_on: "16200881"#学习到的代码
payload_off: ""
optimistic: false
retain: true
- platform: mqtt
name: "off"
state_topic: "home/433toMQTT" # defined by subjectGTWRFtoMQTT in User_config.h
command_topic: "home/commands/MQTTto433_2"
payload_on: "16200884"
payload_off: ""
optimistic: false
retain: true
- platform: mqtt
name: "lock"
state_topic: "home/433toMQTT" # defined by subjectGTWRFtoMQTT in User_config.h
command_topic: "home/commands/MQTTto433_2"
payload_on: "16200888"
payload_off: "16200882"
optimistic: false
retain: true
mqtt:
broker: 192.168.123.26#你的mqtt服务器地址
username: mqtt#你的用户名
password: mqtt#你的密码
复制代码
完成后重启即可看到。剩下的大家共同研究!