『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 17912|回复: 23

使用ESP8266(ESPEasy)把老式门禁接入HomeAssistant实现智能控制

[复制链接]

4

主题

70

帖子

291

积分

论坛积极会员

积分
291
金钱
216
HASS币
20
发表于 2020-2-17 17:41:25 | 显示全部楼层 |阅读模式
本帖最后由 wwek 于 2020-2-17 17:46 编辑

1.背景
目的: 老式门禁接入hass智能家居,实现门禁智能控制
物料:
  • 某宝ESP8266集成板HW-62 1个,本板集成了电源模块(输入DC 7-30V)+ESP8266+继电器一个,以下简称ESP集成板(买了很久了,这次才利用上)
  • 电源适配器 12V DC 1个
软件: 已经在用HomeAssistant(版本0.105.2)(以下简称hass)
控制模块有很多选择,都是控制单元驱动继电器。NodeNUC+继电器可能是更流行的方案
ESP8266芯片为控制模块,继电器为操作模块
某宝ESP8266集成板 HW-622 是老早之前买的一直没使用,本次可以利用上
他集成了宽电压输入的电源模块、ESP8266芯片、继电器,经过万能表检查,驱动继电器工作的GPIO是GPIO4

                               
登录/注册后可看大图

实现原理:
ESP8266刷ESPEasy系统,连上wifi,作为MQTT客户端接入hass
继电器接门禁实现具体控制

2.门禁-室内机改装
已经确定这套老式门禁无需摘话机直接按开门按键就能开门
所以只需要短接1s开门按键就可以开门了

                               
登录/注册后可看大图

把开门按钮的2条线引出
这2条线就接继电器,公共端COM、常闭触点NC
很简单的电路图就不画了

3.ESPEasy
ESP8266刷ESPEasy系统
本例版本为mega-20200204
刷机教程、连接方法就不累述了,网上搜
下面列一些主要配置

3.1 Config
UnitName设置为 esp-entrance-guard
这个值重要,MQTT会用到

                               
登录/注册后可看大图


3.2 Controllers
MQTT加这个 Home Assistant (openHAB) MQTT
不明白的配置项保持默认值不去改动,只改动明确需要的
Enabled这个必须勾选

3.2 Hardware
本ESP集成板使用了GPIO4作为继电器的驱动IO口
ESPEasy的I2C Interface默认使用GPIO-4 GPIO-5本板就冲突了
本例改为了空闲的12、13
另外wifi信号灯本ESP集成板是GPIO2

                               
登录/注册后可看大图

3.3 Hardware
增加一个“Switch input - Switch”设备
名字为 Door
GPIO为 GPIO4 这个是和继电器IO连接的

                               
登录/注册后可看大图

勾选 Send to Controller

                               
登录/注册后可看大图

增加完成后

                               
登录/注册后可看大图


3.4 Tools高级选项
ESPEasy默认未启用Rules,需要在这里打开
Rules 启用
MQTT Retain Msg 启用
MQTT use unit name as ClientId 启用
Use NTP 启用
NTP Hostname ntp1.aliyun.com

                               
登录/注册后可看大图


3.5 Rules
必须在3.4节中打开Rules,才能看到本菜单
规则解释
当Door#State状态为1的时候设置启用timer1时间2s
当time1被激活的时候设置GPIO4的值为0,并在MQTT中推送GPIO为0(因为打开门禁的时候GPIO值为1)

on System#Boot do
  GPIO,4,0
endon

on Door#State=1 do
  timerSet,1,2
endon

on rules#timer=1 do
  gpio,4,0
  Publish %sysname%/gpio/4,0
endon



Publish %sysname%/gpio/4,0
这个是解决hass中复位的问题,这样上电后MQTT读取的GPIO的值为0
如果不这样做,停电后再上电,读取到MQTT中GPIO的值为1就会触发一次继电器
这样做后hass中也可以不写任何“复位开关”的自动化配置

4.HomeAssistant

switch:
  - platform: mqtt
    name: esp_entrance_guard
    state_topic: esp-entrance-guard/Door/State
    command_topic: esp-entrance-guard/gpio/4
    payload_on: "1"
    payload_off: "0"
    state_on: "1"
    state_off: "0"
    optimistic: false
    qos: 0
    retain: true

# 界面显示中文
homeassistant:
  customize:
    switch.esp_entrance_guard:
      friendly_name: "门禁"



展示

                               
登录/注册后可看大图


图解:
  • 左边是hass,右边是MQTT客户端,下面是ESP集成板
  • 黄灯亮代表继电器被激活
  • 在对MQTT topic esp-entrance-guard/gpio/4 发送 1 继电器就被激活了
  • 因为门禁开关是一个复位类型的开关,利用ESPEasy的rule脚本自动重置状态
  • 图中有个错误gpio/4状态没有联动,这个问题已经解决见3.5节,解决之前录制的
小贴士
  • 调试MQTT客户端推荐“MQTT Explorer”因为他能直接看到所有Topic的活动情况,从而大大提高调试效率
  • 如果拿到一个未知的ESP8266集成板,不清楚这个模块和继电器如何连接的,首先还是尽量找到卖家或厂商拿到说明书。万一没说明书,用万能表的测二级管档或电阻档能自己找出来







评分

参与人数 2金钱 +24 HASS币 +20 收起 理由
lqf1206 + 4 在下对你的景仰犹如滔滔长江之水,连绵不绝.
+ 20 + 20 就喜欢会折腾的~

查看全部评分

回复

使用道具 举报

0

主题

204

帖子

1035

积分

金牌会员

Rank: 6Rank: 6

积分
1035
金钱
831
HASS币
0
发表于 2020-2-17 17:55:23 | 显示全部楼层
学习学习   
回复

使用道具 举报

38

主题

2043

帖子

7644

积分

元老级技术达人

积分
7644
金钱
5586
HASS币
110
发表于 2020-2-17 20:35:11 | 显示全部楼层
MQTT Explorer 学习了~
回复

使用道具 举报

1

主题

98

帖子

484

积分

中级会员

Rank: 3Rank: 3

积分
484
金钱
386
HASS币
0
发表于 2020-2-18 10:51:47 | 显示全部楼层
要是一直供电的室内机就好了,可以直接取电,我们家那个老式的是有人呼叫的时候才有电,改造的话也得单独再接电源
回复

使用道具 举报

4

主题

70

帖子

291

积分

论坛积极会员

积分
291
金钱
216
HASS币
20
 楼主| 发表于 2020-2-18 11:38:33 | 显示全部楼层
dzkenan 发表于 2020-2-18 10:51
要是一直供电的室内机就好了,可以直接取电,我们家那个老式的是有人呼叫的时候才有电,改造的话也得单独再 ...

是的。
的单独做供电
如果不方便市电电源模块
只有考虑充电电池了
回复

使用道具 举报

1

主题

98

帖子

484

积分

中级会员

Rank: 3Rank: 3

积分
484
金钱
386
HASS币
0
发表于 2020-2-18 13:27:08 | 显示全部楼层
wwek 发表于 2020-2-18 11:38
是的。
的单独做供电
如果不方便市电电源模块

电池稍微麻烦点,然后又不想再单独拉个线去门口,所以我后来就干脆没弄
回复

使用道具 举报

23

主题

263

帖子

1347

积分

金牌会员

Rank: 6Rank: 6

积分
1347
金钱
1084
HASS币
0
发表于 2020-2-20 01:27:21 | 显示全部楼层
找同志了是不是短接入户线(2根),有没有办法检测开门信号自动化,我本来用mcu的adc检测电压但是失败了
回复

使用道具 举报

4

主题

70

帖子

291

积分

论坛积极会员

积分
291
金钱
216
HASS币
20
 楼主| 发表于 2020-2-20 09:55:37 | 显示全部楼层
th11998844 发表于 2020-2-20 01:27
找同志了是不是短接入户线(2根),有没有办法检测开门信号自动化,我本来用mcu的adc检测电压但是失败了 ...

你是说 门禁室内机按键后同步hass么
有想法就去试。
理论上来说可行, 串联个电路,检查电流
回复

使用道具 举报

4

主题

70

帖子

291

积分

论坛积极会员

积分
291
金钱
216
HASS币
20
 楼主| 发表于 2020-2-20 09:57:20 | 显示全部楼层
测试了下功耗 1.6w 还真费电啊。

电源适配器空载 0.1w,那么1.5w就是整体的功耗了

我怀疑是DC-DC的模块效率问题
回复

使用道具 举报

0

主题

169

帖子

625

积分

高级会员

Rank: 4

积分
625
金钱
456
HASS币
0
发表于 2020-2-20 10:43:16 | 显示全部楼层
感谢大神分享,论坛因你而精彩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-20 03:14 , Processed in 0.061338 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表