本帖最后由 姚远 于 2019-10-27 21:08 编辑
ESP8266-01一共有4个对外接口,但四个接口接入接出的使用还有些特别。我不太知道内部结构是什么样子的,或是官方定义四个输出口的时候有什么特殊考虑。后续我只是根据自己的理解和实际测试的结果,给出相关的方案。
今天主要介绍我测试的三个继电器的输出控制。在实际测试的时候,GPIO1(TXD)不可定义为Relay(继电器)。
接线图和第一篇基础方案一样:
引自https://www.instructables.com/id/How-to-use-the-ESP8266-01-pins 我自己画的图,有点丑。注意,此方案中继电器我直接使用了3.3v
我自己画的接线图,主要是自己看得比较清楚一些。有几点需要注意:GPIO0仍然需要低电平触发;GPIO1不可接继电器;继电器驱动我直接使用了3.3v,主要是为了节约空间和减少一个5v电压;8266加载后几秒内会有一次类似“测试”的精神错乱,GPIO2或是某个口的继电器可能会有一次吸合。
8266刷机,仍然是sonoff-basic.bin。
sonoff的mqtt配置比较重要,最关键是user和password,一定要和homeassistant的mqtt用户名和密码一致,否则8266的消息无法发布到homeassistant的mqtt上。其实,只要是一个网络中,一个homeassistant,你家的sonoff mqtt配置是一样的。
sonoff的module配置,这是几个接口应用的关键:
进入module,先选择Generic(0),保存,再次进入module配置,可以看到很多接口,按图选择各口选项,保存即可。
请注意,GPIO0, GPIO2, GPIO3就是我们要使用的三个输出继电器的接口;GPIO0要选择Relay1i(29),否则继电器状态和反馈到系统的状态相反;GPIO1选择None(0);其他口与8266-01无关。
此时回到sonoff配置主页面,可以看到三个Toggle。分别点击各个Toggle,继电器应该有相应的动作。这说明8266的sonoff已经配置好了。
看看sonoff是否正确地与homeassistant的mqtt通讯,并看看每个继电器对应的mqtt消息内容:
树莓派执行:mosquitto_sub -t "#" -v -u (mqtt的用户名) -P (mqtt的密码) -h 树莓派服务器的ip
如果系统显示了sonoff设置的信息,说明sonoff配置正确。比如显示,
tele/sonoff/LWTOnline tele/test-switch/LWTOnline stat/test-switch/RESULT{" OWER2":"OFF"} stat/test-switch/POWER2 OFF stat/test-switch/RESULT{" OWER2":"ON"} stat/test-switch/POWER2ON
设备侧主题是:/test-switch/POWER2
在sonoff主页分别点击每个Toggle,并记录下树莓派中对应的消息,这些消息将在homeassistant的configuration.yaml中使用。
配置homeassistant的configuration.yaml
light: - platform: mqtt name: "测试开关GPIO0" state_topic: "stat/swtich-test/POWER1" command_topic: "cmnd/swtich-test/POWER1" qos: 1 payload_on: "ON" payload_off: "OFF" retain: true - platform: mqtt name: "测试开关gpio3" state_topic: "stat/swtich-test/POWER2" command_topic: "cmnd/swtich-test/POWER2" qos: 1 payload_on: "ON" payload_off: "OFF" retain: true - platform: mqtt name: "测试开关gpio2" state_topic: "stat/swtich-test/POWER3" command_topic: "cmnd/swtich-test/POWER3" qos: 1 payload_on: "ON" payload_off: "OFF" retain: true 重启homeassistant,概览会显示出三个灯
在homeassistant概览中分别点击各个灯,进行开或关控制,此时
树莓派的mqtt监测会显示向8266侧发布的消息;同时,8266sonoff主页的开关状态会发生变化;并且,继电器也会进行动作。这样可以直观的理解,homeassistant的mqtt服务器发布指令,8266sonoff通过mqtt接受指令,8266sonoff驱动接口输出高或低电平,继电器动作,这样一整套机制。
注意:系统通过mqtt控制继电器有记忆功能。即使是8266没有上电,当其上电后会驱动继电器按照最近一次系统给出的开关指令,自动控制继电器。
上张成果图:
使用树莓派作为全家控制中心,还是有点大材小用。我最近准备把魔镜也放到这个树莓派上来。把镜子放在入户处,树莓派藏在镜子后面。这样家庭中心就可以让家人看得见,摸得到了
|