情非殇 发表于 2019-10-26 21:27:28

单元门禁改造+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:27:29

本帖最后由 情非殇 于 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:29:23

本帖最后由 情非殇 于 2019-12-3 11:41 编辑

tomdf01 发表于 2019-12-3 10:11
感谢楼主分享。有个问题,如图,楼主有修改原电路板么?如果没有修改,在RLY2闭合后,按图例32引脚是断开了 ...
是的,我把原电路模块吸锡拿来下了,1和2位置的模块引脚掰弯和PCB分别飞线了,只有3位置还维持焊接不变。
这个接线就是拆除原有模块后,配合2个继电器接线的图

Aiden1 发表于 2019-10-26 22:34:21

大佬:lol:lol:lol

roc227 发表于 2019-10-26 22:36:03

学习紫薯布丁紫薯布丁

weiren526 发表于 2019-10-26 23:15:17

:lol大神有你更精彩

chzyh 发表于 2019-10-26 23:26:33

感兴趣 ,牛牛牛 看看

gldon 发表于 2019-10-26 23:31:42

感觉esphome好强大,大神们都可以各种高科技的玩,学习了。

wktm 发表于 2019-10-26 23:35:07

学习学习

wktm 发表于 2019-10-26 23:36:51

学习学习

305267382 发表于 2019-10-27 07:33:02


学习学习
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 单元门禁改造+esphome本地自动化