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

 找回密码
 立即注册
查看: 28010|回复: 13

[基础教程] 小白教小白-通过esphome转发射频433/315遥控

[复制链接]

33

主题

312

帖子

1875

积分

金牌会员

Rank: 6Rank: 6

积分
1875
金钱
1558
HASS币
40
发表于 2020-2-11 13:25:54 | 显示全部楼层 |阅读模式
通过esphome转发rf 433/315射频遥控
起因:
    家里小区的门禁,是可视对讲门铃,并通过室内的对讲机(有触摸屏的)打开门禁,并开启电梯到家中所在楼层,前段时间室内的对讲机坏了,物业说要厂家维修,费用600,且维修后不再另行计算保修。一气之下买了个360 的可视门铃(不会接入homeassistat,如有大侠会,请指教),墙上挂了个很长时间不用的安卓平板,来当可视门铃。但是结果是来人了要亲自到楼下接人。
    后来在底楼的门禁开关和电梯按钮上分别安装个433mhz的接收器,用rf遥控器来遥控开门和开电梯,但总觉得不方便。(射频遥控器距离不行,要先跑到窗口按门禁的遥控),所以就用1个射频转串口的模块加一个nodemcu(刷AT固件),来转发433mhz信号。但是我以前用AT固件,一个nodemcu只能用来做射频的透传,不会接其他设备了,总觉得有点浪费。后来看到了esphome固件,就萌发了用esphome来转发的念头。
    以下是小白教小白的教程,很多想法自己也不会,请见谅。
一、先说问题:
    1)我除了串口转射频的433/315收发模块外,还买了那种很便宜的超再生模块(串口转射频的太贵,30元左右了,超再生的便宜,一对才3元),但是在实际esphome的使用中,只能进行射频的接收,射频的发射操作无论如何都不行,所有对发射部分就只能使用串口转射频的了。
    2)我的实际操作中,除了转发433/315操作全部通过esphome以外,其他自动化还是通过node-red来进行的,esphome的一些操作对我等小白来说还是有点难度,还是node-red简单。
二、使用的硬件
    1nodemcuesp8266一块,这个不放图了;
    2超再生射频接收模块一块(发射模块买了不会用),下图中左边的是接收模块,右边是发射模块,另外需买相对应的天线。
O1CN01gPv8wD2KZ6qknEyWu_!!2876359570.jpg
3射频转串口发射模块一块,不放图了,我以前有一个收发模块,本次只用它的发射功能,下图是收发模块
无标题3.jpg
   备注:原先有打算直接esphomeUART总线来控制这个模块的射频信号转发,但只搞懂了发送信号,UART总线接收信号搞不懂,也不打算搞清楚了,因为这个模块有点贵,有时间还是继续搞好超再生模块的发射把。
4)低功耗的433接收开关一个,选择这个,是因为大门门禁的开关处无电源,我用一个18650的锂电池供电,现在用了一个月了,电池还没有用完,我不清楚其他射频接收开关耗电怎么样。但是这个玩意挺贵的,18.5元(含运费)
O1CN01yPKZOh1L7uq2nUnmH_!!2205584391253.jpg
三、硬件的接线
    我就不放图了,原先没拍,搞门禁开关的时候偷偷摸摸的,怕物业不允许。
    1)低功耗的433接收开关接线方式:V+连接电池正极,V-连接电池负极,COM连接门禁开关的一头,NO或者NC连接门禁开关的另一头(需要看你的门禁开关是常闭的还是常开的)
    2)超再生模块有4根针,正负极不说了,当中2根针随便哪一根,连接nodemcu的相关针脚,看你esphome是如何设置的,我的esphome设置的D6(详间我后面放出来的esphomeyaml文件),所以连接的是D6
    3)射频转串口发射模块,正负极不说了,模块的rx连接nodemcu的相关针脚,我在esphome中,UART总线设置的tx针脚是D7,就连接D7(我的模块没用接收功能,所以模块的tx没有使用),反正就是模块的txnodemcurx,模块的rxnodemcutx
    四、esphome的设置我就不单独写了,我会放上yaml文件,相关的注释也写进去了。
    一些解释:
1)串口转射频的收发模块真的很不错,用一个usbttl的模块(gh340),接上这个模块,用串口软件sscom可以很好的得到rf射频遥控的编码,是十六进制的,比如按下一个遥控器按键,串口软件可以看到一串16进制的编码,比如:FD FF 01 02 48 DF ,(这里FD是帧头,FF是遥控器地址2,01是遥控器地址1,02是遥控器的按键值,48是震荡参数,DF是帧尾)得到这个数值后,我就可以在yaml文件的uart 开关中的代码中,输入0xFD 0x03 0xFF 0x01 0x02 0x60 0xDF(解释:0x你在得到的数字在都加入,FD是你都到的帧头,这个不会变,后面加上一个03,是指信号维持时间,个人理解模拟按了3次遥控,后面的FF0102是你刚才的到遥控器数值,60是震荡参数,替换掉你原先得到了48或者其他,DF是帧尾,不变)来模拟这个按键了。这个有点拗口,看不懂的话请参考卖家的网页https://item.taobao.com/item.htm?spm=a1z09.2.0.0.71db2e8d6DIirN&......u=b1leq7av3b64

    2)上面的数值中,FF0102实际上通过esphome和超再生模块也可以得到,当你按照我下面的yaml文件刷好esphome固件后,如果按下遥控器,你会在esphome网页的showlogs页面中,看到如下图的一段,其中,code11111*******,这一段数值,就是二进制的,转成16进制,就是FF0102了。
无标题1.jpg 无标题2.jpg
通过esphome转发射频遥控.docx (632.56 KB, 下载次数: 246)

esphome433示例.yaml (4.95 KB, 下载次数: 325)

评分

参与人数 1金钱 +20 HASS币 +20 收起 理由
+ 20 + 20 厉害了word楼主!

查看全部评分

回复

使用道具 举报

33

主题

312

帖子

1875

积分

金牌会员

Rank: 6Rank: 6

积分
1875
金钱
1558
HASS币
40
 楼主| 发表于 2020-2-11 13:30:35 | 显示全部楼层
esphome:
  name: esphomeshili
  platform: ESP8266
  board: nodemcuv2

wifi:
  ssid: "wifi123"                        #需连接无线wifi的SSID
  password: "mima123"                    #需连接无线wifi的密码
  manual_ip:                              #需要对nodemcu设定固定的ip地址
    static_ip: 192.168.1.199              #ip地址   
    gateway: 192.168.1.1                  #网关
    subnet: 255.255.255.0                 #子网掩码

  # Enable fallback hotspot (captive portal) in case wifi connection fails,在wifi连接失败时,将nodemcu作为wifi热点
  ap:
    ssid: "Esphomeketing2 Fallback Hotspot"   
    password: "K1dKSoNJFTES"


captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:                                    #当连接homeassistant时,需要输入的密码
  password: "111111"

ota:                                   #当进行ota升级时,需要输入的密码
  password: "1111111"

switch:                                #开关
  - platform: gpio                     #用gpio针脚来操作开关
    pin: D1                           #针脚,可以用 D1 或者GPIO5 来表示,我使用nodemcu(esp8266)喜欢用D1来表示,直接看nodemcu上印刷的数字,比较直观
    name: "xunikaiguan4"              #开关的名称,显示在homeassistant的“设备/实体”中,自己随意
  - platform: gpio
    pin: D2
    name: "xunikaiguan5"    
  - platform: uart                     #表示这个开关是通过uart来实现的,这实际上是一个虚拟开关,不另行占用nodemcu的端口,但需要设置uart总线及相应端口,详见https://esphome.io/components/switch/uart.html。
    name: "UART Bytes Output"          #开关的名称,显示在homeassistant的“设备/实体”中,自己随意
    data: [0xFD, 0x03, 0xFF, 0x01, 0x02, 0x60, 0xDF]  #当在homeassistant中点击这个开关(就是打开开关),会通过串口发送一组数值,这个数值参考你自己的设备,我这组数值指的是通过串口转rf模块,发送了“FD 03 01 01 01 60 DF”这一数值
    id: relay1                         #这个开关的id,用于后续其他设备来进行调用,自己随意

uart:                                  #开启uart总线
  baud_rate: 9600                      #串口设备的波特率,视你串口设备填写,9600或者115200等
  tx_pin: D7                           #串口设备的rx连接nodemcu的tx,我这里nodemcu的tx针脚选择了D7,随意
  rx_pin: D8                           #串口设备的tx连接nodemcu的rx,我这里nodemcu的rx针脚选择了D8,随意,我的示例中实际上用不到


    
light:
  - platform: binary
    name: "xunideng4"
    output: xunideng4
    
  - platform: binary
    name: "xunideng5"
    output: xunideng5


    
output:
  - platform: gpio
    pin: D3
    id: xunideng4
  - platform: gpio
    pin: D4
    id: xunideng5

remote_receiver:                 #rf射频的接收
  pin: D6                        #rf射频接收模块的信号引脚接入nodemcu的D6引脚  
  dump:                         #解码的类型 
    - rc_switch                  #使用RCSwitch RF来解码
  tolerance: 50%                #远程信号长度在解码过程中可以偏离的百分比。默认为25%,我这设置50%  
  filter: 24us                  #过滤所有比此短的脉冲。用于消除噪声信号中的毛刺。默认为10us,我这设置为24us
  idle: 4ms                     #信号应保持稳定(即不发生变化)以使其被视为完整的时间。默认为10ms,我这设置为4ms
  buffer_size: 1kb              #用于存储远程代码的内部缓冲区的大小。ESP32默认10kb ,ESP8266 默认1kb(以上步骤完成并刷新固件后,在esphome网页的showlogs页面,当按下rf遥控器,可以看到一串二进制的code,以上参数需要自行调整,详见https://esphome.io/components/remote_receiver.html以及https://esphome.io/components/remote_transmitter.html)
  
binary_sensor:                       #二进制传感器
  - platform: remote_receiver        #传感器的来源是:remote_receiver
    name: "433 1lou men yaokong"     #传感器的名字,随意自取
    rc_switch_raw:                   #接收rf信号后后通过rc_switch_raw解码
      code: '111111110000000100000001'   #解码后的代码,用二进制表示,可以从日志(showlogs页面)中获得
    on_press:                      # 当传感器按键按下时,执行以下自动化
      then:
        - switch.turn_on: relay1   #执行id为relay1开关的打开动作.(以上步骤,表示当接到指定射频信号后,虚拟了一个二进制传感器,并将传感器传感器执行一次开和关的动作,然后发出一次id为relay1开关的打开动作,详见https://esphome.io/components/remote_receiver.html)
        
        
        
        
        
      
      

回复

使用道具 举报

33

主题

312

帖子

1875

积分

金牌会员

Rank: 6Rank: 6

积分
1875
金钱
1558
HASS币
40
 楼主| 发表于 2020-2-11 13:33:57 | 显示全部楼层
另外,你如果会用node-red,按照我的yaml文件,就可以使用node-red来监控“433 1lou men yaokong”这个二进制传感器,当这个传感器触发时,来进行其他操作,这个教程暂时不写了,以后有人需要的话我在node-red的版块中另外发吧。这篇教程中有些看不懂的,可以到我的另一篇教程中看一下,https://bbs.hassbian.com/thread-6960-1-1.html
回复

使用道具 举报

62

主题

603

帖子

6428

积分

论坛元老

Rank: 8Rank: 8

积分
6428
金钱
5750
HASS币
240

教程狂人论坛风云人物

发表于 2020-2-11 23:36:47 | 显示全部楼层
lione95678 发表于 2020-2-11 13:33
另外,你如果会用node-red,按照我的yaml文件,就可以使用node-red来监控“433 1lou men yaokong”这个二进 ...

如果你会用tasker,360门铃+平板可以做到,有人按门铃,自动弹出。也就没有必要接入那里了
不对,其实也是可以接入的。你动手能力那么强,佩服,你可以按照我的思路,接入很简单。
尝试过萝卜,我想你一定会忘记青瓜
回复

使用道具 举报

33

主题

312

帖子

1875

积分

金牌会员

Rank: 6Rank: 6

积分
1875
金钱
1558
HASS币
40
 楼主| 发表于 2020-2-12 07:20:17 | 显示全部楼层
本帖最后由 lione95678 于 2020-2-12 07:21 编辑
antsunzj 发表于 2020-2-11 23:36
如果你会用tasker,360门铃+平板可以做到,有人按门铃,自动弹出。也就没有必要接入那里了
不对,其实也 ...

这个已经做到了,无论是360触发tasker后再触发node-red自动化或者是安卓分屏显示360和homeassistant的网页,我的意思是360门铃显示的录像接入hass或者node-red,实现视频在hass网页上显示或者人脸自动识别本人很小白,很多东西都是一知半解,英语还不行,硬着头皮上
回复

使用道具 举报

1

主题

74

帖子

293

积分

中级会员

Rank: 3Rank: 3

积分
293
金钱
219
HASS币
0
发表于 2020-2-12 12:06:09 | 显示全部楼层
感谢分享,一直在努力学习
回复

使用道具 举报

0

主题

90

帖子

761

积分

高级会员

Rank: 4

积分
761
金钱
671
HASS币
0
发表于 2020-2-12 14:48:04 | 显示全部楼层
感谢分享,努力学习,好多东西啊
回复

使用道具 举报

12

主题

545

帖子

2041

积分

金牌会员

Rank: 6Rank: 6

积分
2041
金钱
1496
HASS币
0
发表于 2020-2-13 11:36:00 | 显示全部楼层
楼主果真是折腾达人,

ESPHOME我没试,不过我是用nodemcu + 你上面的射频再生发射模块,用arduino 里面一个操作315发射的库去控制 我家的车库,正常使用一年多了。


回复

使用道具 举报

11

主题

220

帖子

3365

积分

元老级技术达人

积分
3365
金钱
3110
HASS币
170

活跃会员教程狂人卓越贡献

发表于 2020-2-13 15:29:25 | 显示全部楼层
谢谢分享,学习了
这种思路的话,可以将所有的遥控设备全部接入?
可以自制类似 空调伴侣的设备了
回复

使用道具 举报

8

主题

382

帖子

1779

积分

金牌会员

Rank: 6Rank: 6

积分
1779
金钱
1397
HASS币
0
发表于 2020-2-21 10:57:27 | 显示全部楼层
本帖最后由 peter5858 于 2020-2-21 11:10 编辑

你好,用你的代码在群晖里的esphome上报错呢?
-------------------------------------------
INFO Reading configuration...ERROR Unable to find component captive_portalFailed configcaptive_portal:     Component not found: captive_portal  {}
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-23 02:06 , Processed in 0.068534 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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