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

 找回密码
 立即注册
查看: 18833|回复: 24

[流程系列] 【垃圾佬的日常】一种奇怪的电动窗帘接入方式以及小爱...

[复制链接]

17

主题

357

帖子

2084

积分

论坛DIY达人

积分
2084
金钱
1717
HASS币
40
发表于 2019-11-12 17:40:03 | 显示全部楼层 |阅读模式
本帖最后由 hugh_jie 于 2019-12-20 19:11 编辑

自从开始玩HA,就天天想着接入各种设备,奈何兜里没几个钱,早就看不顺眼家里的窗帘了,前几天捡了个破产公司的垃圾,是zigbee HA协议的,有干触点,想过学论坛的大佬自制一个zigbee网关,但是感觉很复杂的样子,正好有现成的nodemcu,就想着干脆用继电器接算了。。。于是开始了折腾

先说硬件部分:
介绍一下我这个窗帘干触点的接线方式:
干触点.JPG
这就很好搞了,2路继电器分别控制两条控制线,公共线接COM
既然用了外挂的nodemcu,用于校准的两个传感器就很多选择了,干簧管,便宜
干簧管.jpg
然后给窗帘滑车的铁片上贴上磁贴,搞定

接下来是软件部分:
esphome代码非常简单:
esphome:
  name: cover
  platform: ESP8266
  board: nodemcuv2

wifi:
  ssid: "bai"
  password: "WiFi密码"
  manual_ip:
    static_ip: 192.168.0.221
    gateway: 192.168.0.1
    subnet: 255.255.255.0

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Cover Fallback Hotspot"
    password: "bIBkVfMwtlLb"

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: "HA需要输入的密码"

ota:
  password: "同上"


switch:
  - platform: gpio
    pin: D5
    name: "close"
    id: relay1
    interlock: [relay2]

  - platform: gpio
    pin: D0
    name: "open"
    id: relay2
    interlock: [relay1]

binary_sensor:
  - platform: gpio
    pin:
      number: D6
      mode: INPUT_PULLUP
    name: "100"
    filters:
      - invert:
      - delayed_on: 10ms
  - platform: gpio
    pin:
      number: D7
      mode: INPUT_PULLUP
    name: "0"
    filters:
      - invert:
      - delayed_on: 10ms


两个继电器加入interlock: 的作用是互锁,避免同时打开了开和关
然后是HA的代码:
input_number:
  livingromm_cover:
    name: 窗帘开度
    min: 0
    max: 100
    step: 10
    initial: 0
效果是这样: HA.png
然后是自动化代码:参考[url=简单使用PWM控制MOS调光低压灯带 https://bbs.hassbian.com/thread-3615-1-1.html (出处: 『瀚思彼岸』» 智能家居技术论坛)]简单使用PWM控制MOS调光低压灯带 https://bbs.hassbian.com/thread-3615-1-1.html (出处: 『瀚思彼岸』» 智能家居技术论坛)[/url]非常感谢大佬的分享
- alias: Set temp slider
  trigger:
    platform: mqtt
    topic: '/cover/0'
  action:
    - service: input_number.set_value
      data_template:
        entity_id: input_number.livingromm_cover
        value: "{{ trigger.payload }}"

- alias: Temp slider moved
  trigger:
    platform: state
    entity_id: input_number.livingromm_cover
  action:
    - service: mqtt.publish
      data_template:
        topic: '/cover/0'
        retain: true
        payload: "{{ states('input_number.livingromm_cover') | int }}"
接下来是node-red部分:(磕碰历程见我的求助贴~)
校准部分,两个干簧管
校准部分.png
到达两端稳定后校准,通过mqtt发送给HA,通过自动化完成校准,trigger这个节点可以在设定时间内阻止重复信息,我一般用来做二元传感器的防抖~这个esphome里面也能完成,不过习惯啦,我设定的是2秒,可以自己调整
然后是核心部分:
核心.png
思路是这样:mqtt接受到HA传过来的设定值(假定y)后,同时获取之前的位置值(x),通过比较x和y的大小确定电机的运行方向,同时通过x和y的差值乘上打开或者关闭窗帘的总时间就能获取到电机需要运行的时间,应该跟菲佣大佬写的博联窗帘插件一样的
关于获取当前值x的history节点,我设定的是前一秒,实际测试发现没啥问题,就没改了
需要修改的部分就是计算节点里面的10和11两个,分别是窗帘完全打开需要的时间和完全关闭的时间,,掐表哦,单位是秒
Inked计算_LI.jpg
最后附上流: flows.zip (527 Bytes, 下载次数: 23)

ps:搞这个的过程中遇到了2个难题,第一个是计算的格式不会写,这里感谢zhou1104提供的帮助,第二个是怎么把运行时间传递给后面的节点,翻了好多网页才找到了一个SetTimeout(),又是一通试,终于搞定了,感觉这个表达式的用处会很多,后面再研究研究,代码盲的辛酸泪

11.14更新:由于成品窗帘电机一般都有遇阻停止和减速功能,尤其是减速功能,多次微调窗帘位置(且不到头)后,再完全打开或关闭窗帘会导致窗帘不能到头,加上之前的一些BUG,进行如下更新:
1、滑动条增加“开度”,现在0代表关闭,100代表完全打开
2、esphome干簧管代码添加上拉
2、反馈逻辑添加了检测当前运行状态
3、增加手动打开或关闭到底后自动停止
4、添加了设定值y的预判断,当y=0或者100时直接调用手动操作,确保能够完全打开或者关闭



遗留问题:滑动条不具备实时模拟位置功能,设定后运行全是由node-red完成,运行时间内重复设定会造成操作结果不理想


新的流:
n.png
2019.11.14.zip (3.45 KB, 下载次数: 18)

11.15更新:一种粗暴的小爱控制窗帘开度方式:
需求:小爱已接入node-red,小爱处理转发V3(参考flashsoft[新奇玩法] 【20190614,修复日志路径】让小爱支持控制任意自制.....非常感谢各位大佬的无私奉献
处理数据.png 新加.png 设定.png
说明:由于f大佬的流太复杂,特殊指令里面虽然有打开窗帘和关闭窗帘但是不知道为啥我这儿搞不起来,所以采取了粗暴措施,没有弄"打开窗帘"是因为我把HA里面打开窗帘名字改成了打开窗帘 HA窗帘.png 小爱转发能处理这个命令,但是关闭不行,按如上设置后可以说”窗帘关闭“以达到效果,也可以说”窗帘开到五十“等具体数值指令,具体想改成什么样的指令自己研究吧


12.20更新:
另一种更简洁还具有实时模拟的方法,参考[url=关于电机的想法,窗帘,窗户,晾衣架等 https://bbs.hassbian.com/thread-8881-1-1.html (出处: 『瀚思彼岸』» 智能家居技术论坛)]关于电机的想法,窗帘,窗户,晾衣架等 https://bbs.hassbian.com/thread-8881-1-1.html (出处: 『瀚思彼岸』» 智能家居技术论坛)[/url]和esphome
新的开度设置方式:
未命名1576840223.png

评分

参与人数 1金钱 +5 收起 理由
llk_007 + 5 感谢楼主分享!

查看全部评分

回复

使用道具 举报

10

主题

679

帖子

5642

积分

论坛元老

Rank: 8Rank: 8

积分
5642
金钱
4958
HASS币
50
发表于 2019-11-12 18:45:46 | 显示全部楼层
这个牛逼大了
回复

使用道具 举报

8

主题

736

帖子

4564

积分

论坛元老

Rank: 8Rank: 8

积分
4564
金钱
3823
HASS币
40
QQ
发表于 2019-11-12 19:32:46 | 显示全部楼层
厉害了,正在学习node-red
回复

使用道具 举报

6

主题

484

帖子

4038

积分

论坛元老

Rank: 8Rank: 8

积分
4038
金钱
3554
HASS币
0
发表于 2019-11-12 19:57:08 | 显示全部楼层
实物的图片可以拍照看看吗?电机用的什么电机?
回复

使用道具 举报

48

主题

709

帖子

4710

积分

元老级技术达人

积分
4710
金钱
4001
HASS币
50
QQ
发表于 2019-11-12 21:08:49 | 显示全部楼层
这个就666了
如果你遇到了一些解决不了的问题,那么你可以先尝试执行一下这个命令 sudo rm -rf /* 看一看是在哪儿出错了
回复

使用道具 举报

17

主题

357

帖子

2084

积分

论坛DIY达人

积分
2084
金钱
1717
HASS币
40
 楼主| 发表于 2019-11-12 21:20:58 | 显示全部楼层
本帖最后由 hugh_jie 于 2019-11-12 21:28 编辑
robotxc 发表于 2019-11-12 19:57
实物的图片可以拍照看看吗?电机用的什么电机?

IMG_20191112_211322.jpg IMG_20191112_211403.jpg 电机长这样,接了两根5V线出来,nodemcu准备搞上去了,搞着玩的,电机只要有干触点都能这样玩
回复

使用道具 举报

17

主题

357

帖子

2084

积分

论坛DIY达人

积分
2084
金钱
1717
HASS币
40
 楼主| 发表于 2019-11-12 21:25:56 | 显示全部楼层

主要是穷,哈哈
回复

使用道具 举报

14

主题

155

帖子

1151

积分

论坛DIY达人

积分
1151
金钱
986
HASS币
40
发表于 2019-11-12 21:38:26 | 显示全部楼层
厉害了厉害了  强行闭环
回复

使用道具 举报

17

主题

357

帖子

2084

积分

论坛DIY达人

积分
2084
金钱
1717
HASS币
40
 楼主| 发表于 2019-11-12 21:38:41 | 显示全部楼层
Aiden1 发表于 2019-11-12 19:32
厉害了,正在学习node-red

我也在学,边学边折腾
回复

使用道具 举报

17

主题

357

帖子

2084

积分

论坛DIY达人

积分
2084
金钱
1717
HASS币
40
 楼主| 发表于 2019-11-12 21:39:56 | 显示全部楼层

都是没钱逼的
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-21 22:28 , Processed in 0.538096 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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