本帖最后由 whxciotw 于 2022-9-25 23:59 编辑
1. 背景几年前入住时,买了个433射频的杂牌电动晾衣架,当时还没有小米的,想着技术含量不高,只要是433能模拟射频信号接入HA即可。 随着对智能化要求的提高,觉得它越来越不好用,对家里的这个“钉子户”动了心思。
2. 遇到的问题
2.1 射频信号无状态反馈。这几年用下来,晾衣架的电机、灯虽然都用433射频接入了,但射频没有状态反馈,无法知晓灯的真实状态。 2.2 射频按键不能太频繁。射频按键的频率不能太快,否则射频信号偶尔会接收不到。 2.3 强迫症必需摒弃家中的红外和射频设备。现在家中所剩唯一的射频设备就是晾衣架了,还得占用我一个博联网关,强迫症必须要换掉,将全屋的无线设备统一为wifi或zigbee接入。
3. 解决思路
3.1 晾衣架遥控器替换。使用oppo 6键的无线开关,zigbee协议,z2m接入,替换原有的遥控器。 3.2 拆机。在B站上查了下电动晾衣架的拆卸维修流程,发现很简单,仔细看了2-3遍,OK,动手搞起。 3.3 替换控制板。事先在淘宝上查了下市面上主流晾衣架的主控板,然后将自己的主控板卸了下来,发现控制板很简单,就是3个继电器+3组限位器。自己用手头闲置的sonoff 4ch替换了,并用esphome刷写了固件,完美接入HA。
拆机标识图
原主控板1
原主控板2
4. 控制板详解
市面上绝大部分的电动晾衣架控制板,应该都是3-5个继电器+3组限位器。 4.1 继电器。分别是控制照明,电机正转,电机反转,烘干,消毒。我的是基础款,也不需要烘干消毒那些,因此有3个继电器(灯、交流电机正反转)。 4.2 限位器。分为3组,共4个,分别是上升限位器、下降限位器、遇阻即停限位器。其中遇阻即停的限位器有2个,晾衣架的两端各连有1个,在晾衣架下降过程中,任意一端遇阻或被托举,即实现限位效果。经万用表实测,无限位动作时,限位器的两根线呈联通状态;有限位动作时,两个线断开。
5. sonoff 4ch替换及固件编写
5.1 照明及交流电机接入。共占用3个继电器,sonoff 4ch是足够的。其中交流电机的正反转,在编写固件时需要互锁,使用interlock。 5.2 上升和下降两个限位器可以不用接入。可以自己算一下行程的时间,到顶/底后按照时间停止即可,以实现限位效果。esphome编写固件时,使用time based cover。 5.3 遇阻即停限位器,可以连接sonoff 4ch的IO3管脚,作为输入传感器。由于限位器未激活时,默认是联通状态,因此sonoff 4ch中只有IO3可用,与GND分别连接限位器的两个线(如使用IO0、1、2,则ESP无法启动)。详见ESPHome中对于Sonoff 4ch的说明 The ESP8266 will be prevented from booting if the following pins are pulled LOW (connected to GND) on cold startup: GPIO0, GPIO1, GPIO2. Be prepared if you want to use them for input sensors.
6. DIY风险提示
6.1 保修。以上一顿操作猛如虎,肯定是不可能保修了。当然,对于这东西,我一般都自己动手解决,难度很小。 6.2 上升和下降两个限位器是否接入。这个看个人选择,也可以接入。如需接入,在ESPHome中使用endstop cover即可,优势在于消除了电机空转的风险,不过需要想办法将上升、下降这两个限位器分别作为两个输入传感器接入;我个人是选择不接入,这对晾衣架在空载/负载不同情况的上下行时间有个尽可能准确的记录,优势是在于简单,不过存在一点点的电机空转风险,个人觉得问题不大。
以上,将原控制板彻底换下淘汰了,换上了Sonoff 4ch,刷了自己的固件,照明和电机控制,果然比以前灵敏太多了,当然,状态反馈也没问题!
最后,附上ESPHome的配置文件。
esphome:
name: hanger
esp8266:
board: esp8285
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: true
use_address: 192.168.19.94
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Hanger"
password: !secret ap_password
api:
logger:
ota:
light:
- platform: binary
name: "hanger"
output: hanger_light
output:
- platform: gpio
pin: GPIO12
id: hanger_light
switch:
# - platform: gpio
# name: "Sonoff 4CH Relay 1"
# pin: GPIO12
# - platform: gpio
# name: "Sonoff 4CH Relay 2"
# pin: GPIO5
- platform: gpio
pin: GPIO4
interlock: [up]
id: down
# name: down
- platform: gpio
pin: GPIO15
id: up
interlock: [down]
# name: up
binary_sensor:
- platform: gpio
pin:
number: GPIO3
mode:
input: true
pullup: true
id: stop
on_state:
then:
- cover.stop: hanger
cover:
- platform: time_based
name: "Hanger"
id: hanger
open_action:
- switch.turn_on: up
open_duration: 19s
close_action:
- switch.turn_on: down
close_duration: 17s
stop_action:
- switch.turn_off: up
- switch.turn_off: down
复制代码
附接入效果展示:
esphome ha