单元门禁改造+esphome本地自动化
本帖最后由 情非殇 于 2019-10-28 12:45 编辑多图杀猫,!!!慎点
翻了下帖子,发现已经时2019年1月的时候跟帖请教@natic大佬准备动手的,然后,现在已经是10月底了。
背景:楼下进门有个门禁机,需要 钥匙 || ID卡 || 呼叫家里 开门(ps:懒得带钥匙,防盗门已经换绿米指纹锁了,没道理楼下进门再带东西)
物理机:1)楼下按门牌号, 2)家里响铃, 3)必须抬起话机, 4)然后按开门键
改造:物理按键&&网络控制,手动和自动开门;原有功能不受任何因素影响
所需模块:1)物理自复位按钮, 2)发光二极管\2枚做代码判断和视觉判断, 3)4路继电器,模拟抬起/挂断话机, 4)2路继电器,模拟开门按键和实现喇叭静音, 5)5v1路继电器,监听楼下开门请求, 6)D1mini, 7)1到2块LM2576 DC降压模块 ,【自用链接仅限参考】, 8)杜邦线若干, 9)万用表和剥线钳
思路:入户5跟线,能力有限搞不清功能,从pcb下手,万用表搞起,挨个功能点测试如何模拟
|取电,红黑有18v供电,降压模块降压到5v给各个模块供电;
|监听入户信号,最初喇叭响时有5v信号,后来拆掉可视化模块后,莫名丢失,自查,从可视化接口重新取得18v信号减压至5v激活继电器(正极接vcc,负极接信号线,pcb反面把信号线和gnd焊接一起;继电器常开和com接8266的gpio和gnd);
|模拟抬起/挂断话机,见下文;
|模拟开门键,按下后用万用表测PCB附近通断,并联一路接继电器常开和com即可
代码:二楼
实现功能:
物理按键:红色按钮单击_模拟开门(绿灯为自复位按钮视觉状态反馈),长按2秒绿灯灭——松手红灯亮,激活自动化,楼下按门铃自动开门(自动化开启时喇叭静音,红灯为自动化判断条件)
网控:精简到只需要一个switch.LED_RED,监听到门铃时,按键开门并自复位自己;监听不到门铃时,按键为打开自动化开门(10-27补充新视频)
优点:新增改装模块默认功能接线都是在常闭端,不管哪部分坏掉,都不影响原有物理功能;全部自动化都写在esphome中,稳定不受外部影响
视频效果==
http://player.youku.com/embed/XNDQxNDc0MjExMg==.html
http://player.youku.com/embed/XNDQxNDM5MTUzNg==.htmlhttp://player.youku.com/embed/XNDQxNDM5MTkzNg==.html
**** Hidden Message *****
拆机图==
背部写真
拆开前面板
主控PCB
前面板物理操作按钮PCB
话机抬起/挂断,模块(相当于继电器)
话机模块正反面,挂断状态,即白色舌头按下,32通31断,抬起话机后32断31通,654同样道理
改装线路图,SW1是原有模块,RLY1/2是新增继电器(RELAY_KA1/2)。
改装图==
飞线改装话机挂机模块,实现双控,配合继电器常闭端,改装系统坏掉也不影响任何原机物理操作//并联到喇叭取5v监听门铃
打孔增加自复位按钮+2枚发光二极管
nodemcu,原定的D1mini有问题,先用手里的顶一下
继电器接杜邦不是很好接,我就直接焊死在pcb阵脚上了,机智
BETA1版本,全部飞线到机身外部,
BETA2.1版本,拆除机身内可视化模块,清理空间,直接布局改装模块
BETA2.2最终版,
拆掉可视化模块后,喇叭没有5v电了,无解,折腾后从可视化模块插口获取到了楼下呼叫后才会有的18v电,上降压模块,降压到5v,给继电器信号以监听门铃
非常感谢大佬的帮助:
@natic
@wsy
@ˋwaiting for U ゞSir 楠总
本帖最后由 情非殇 于 2019-10-26 21:48 编辑
esphome:
name: nodemcu_01
platform: ESP8266
board: nodemcuv2
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_passwd
use_address: 172.22.1.247
# Enable logging
logger:
# Enable Home Assistant API
api:
password: !secret api_passwd
reboot_timeout: 30min
ota:
safe_mode: True
password: !secret ota_passwd
port: 8266
web_server:
port: 80
#######################################################################
binary_sensor:
## 自复位按钮操作
- platform: gpio
pin:
number: D3
mode: INPUT_PULLUP
inverted: True
name: "BUTTON"
id: button
## 按下绿灯亮
on_press:
then:
- switch.turn_on: relay_green
## 复位绿灯灭(如果绿灯依然亮)
on_release:
if:
condition:
- switch.is_on: relay_green
then:
- switch.turn_off: relay_green
## 单击执行开门流程(beta_0.3将只在有呼入时可操作)
on_click:
min_length: 50ms
max_length: 500ms
then:
- script.execute: open_door
## 长按激活/停止红灯(2~4秒有效)
on_multi_click:
- timing:
- ON for 2s to 4s
- OFF for at least 0.5s
then:
- switch.toggle: relay_red
## 监听门铃
- platform: gpio
pin:
number: D2
mode: INPUT_PULLUP
inverted: True
name: "BELL"
id: bell
## 如果红灯亮,等待0.5秒,执行开门流程
on_press:
if:
condition:
- switch.is_on: relay_red
then:
- delay: 500ms
- script.execute: open_door
switch:
## 绿灯(按键指示)
- platform: gpio
pin: D0
name: "LED_GREEN"
id: relay_green
## 亮起时长,2秒/次
on_turn_on:
- delay: 2.1s
- if:
condition:
for:
time: 2s
condition:
switch.is_on: relay_green
then:
- switch.turn_off: relay_green
# - logger.log: Test has stayed connected for at least 1 minutes!
## 红灯(自动化流程条件)
- platform: gpio
pin: D1
name: "LED_RED"
id: relay_red
## 灯亮静音,灯灭恢复
on_turn_on:
- switch.turn_on: mute
# - logger.log: "Switch Turned On!"
on_turn_off:
- switch.turn_off: mute
# - logger.log: "Switch Turned Off!"
## 模拟接听(抬起/挂起话机)
- platform: gpio
pin: D5
name: "RELAY_KA1"
id: relay_ka1
- platform: gpio
pin: D6
name: "RELAY_KA2"
id: relay_ka2
## 开门
- platform: gpio
pin: D7
name: "RELAY_KEY"
id: relay_key
## 静音(门铃)(联动红灯)
- platform: gpio
pin: D8
name: "MUTE"
id: mute
## 8266运行时间
sensor:
- platform: uptime
name: Uptime Sensor
################################################################################
# Example configuration entry
script:
## 模拟手动开门完整流程
- id: open_door
then:
## 模拟抬起话筒,切换间隔10ms(ps:50ms模拟失败)
- switch.turn_on: relay_ka2
- delay: 10ms
- switch.turn_on: relay_ka1
## 等待0.8s后,短接并联0.1s模拟开门按键
- delay: 800ms
- switch.turn_on: relay_key
- delay: 100ms
- switch.turn_off: relay_key
## 等待1.5秒后,模拟挂起话筒
- delay: 1500ms
- switch.turn_off: relay_ka1
- delay: 10ms
- switch.turn_off: relay_ka2
## 模拟流程end,log装逼测试!
- logger.log: ok, the door is open! perfect!
## beta_0.1测试失败后,测试代码用
# - id: open_door1
# then:
# - switch.turn_on: relay_ka2
# - delay: 10ms
# - switch.turn_on: relay_ka1
# - id: open_door2
# then:
# - switch.turn_on: relay_key
# - delay: 100ms
# - switch.turn_off: relay_key
本帖最后由 情非殇 于 2019-12-3 11:41 编辑
tomdf01 发表于 2019-12-3 10:11
感谢楼主分享。有个问题,如图,楼主有修改原电路板么?如果没有修改,在RLY2闭合后,按图例32引脚是断开了 ...
是的,我把原电路模块吸锡拿来下了,1和2位置的模块引脚掰弯和PCB分别飞线了,只有3位置还维持焊接不变。
这个接线就是拆除原有模块后,配合2个继电器接线的图
大佬:lol:lol:lol 学习紫薯布丁紫薯布丁 :lol大神有你更精彩 感兴趣 ,牛牛牛 看看
感觉esphome好强大,大神们都可以各种高科技的玩,学习了。 学习学习 学习学习
学习学习