一、序言
- 背景:我有一个大胆的想法,如果我用可编程逻辑控制去控制电灯会真么样?PLC一般都带有继电器和输入部分,通信可以使用基于RS485的modbus通信协议,这不是就现成的继电器模块还附赠输入点么?
- 技术定位:初级
- 整体思路:利用ESPHome中的modbus组件控制plc
- 所需软硬件:
必须:HomeAssistant、ESPHome、esp8266、rs232转rs485模块、PLC(或其他支持modbus的继电器组,我这里使用的是国产盗版三菱)、电源、PLC编程软件、下在线。
- 注意:这篇文章所需内容需要一点电工基础,因为需要控制的是220V交流电,请小朋友们在家长的帮助下操作。并且这篇文章不适用于所有电路,是否适合你的电路,请自行思考。
二、操作步骤
2.1 开发前的准备工作
- 请安装好HomeAssistant、ESPHome。安装过程不再赘述,只要可以正常运行即可。注意在编译固件的时候,ESPHome需要良好的公网现下载所需依赖,否则会编译很长时间。
- plc程序在这里我不做介绍,为了不改变原有墙壁开关的作用,简单遍了一个程序,那就是墙壁开关闭合,继电器吸合,这很简单。接线如下:
从左到右分别是:24v电源(给PLC供电)、零排(灯具的零线接在一起)、PLC、rs485-rs232和esp01s和3.3v供电。再次提醒接线前请查阅PLC提供的说明书!!!
2.2ESPHome编程
web_server:
port: 80
uart:
id: mbus
rx_pin: 2
tx_pin: 0
baud_rate: 9600
data_bits: 8
stop_bits: 1
modbus:
id: modbus1
uart_id: mbus
send_wait_time: 200ms
modbus_controller:
- id: modbus_device
## the Modbus device addr
modbus_id: modbus1
address: 1
update_interval: 5s
switch:
- platform: modbus_controller
modbus_controller_id: modbus_device
register_type: coil
address: 0x500
name: "light1"
- platform: modbus_controller
modbus_controller_id: modbus_device
register_type: coil
address: 0x501
name: "light2"
- platform: modbus_controller
modbus_controller_id: modbus_device
register_type: coil
address: 0x502
name: "light3"
binary_sensor:
- platform: modbus_controller
modbus_controller_id: modbus_device
name: "墙壁开关"
register_type: discrete_input
address: 0x400
你需要查阅PLC的手册确定线圈的地址,Y0地址为0x500,那么Y1的地址就是0x501。X同样的道理。
Y是输出线圈、X是输入线圈。
三、总结
使用这个玩意以后,开灯就变得帅帅的,我写了一个脚本,在检测我离开这个屋子一段时间后再回来就会进入欢迎模式,灯按照顺序延时点亮,同时homepod播放Back In Black。小爱则会简要说一下室内环境信息。 这样改造不会破坏原有开关的功能,并且无论是否有网这套系统都可以通过墙壁开关控制灯,当然了,你也可以把墙壁开关当作一个智能开关使用,在开灯的同时控制其它设备启动,只需在HomeAssistant简单设置即可。但是如果你的墙壁开关内直接就是火线,而不是灯具处是火线,那这套方案或许不可行。