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

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

[技术探讨] 带自控的ESPhome调光器的详细配置过程,带断电亮度保存功能

  [复制链接]

4

主题

57

帖子

275

积分

论坛分享达人

积分
275
金钱
218
HASS币
10
发表于 2020-5-11 10:44:07 | 显示全部楼层 |阅读模式
本帖最后由 lfp136 于 2020-5-13 18:02 编辑

  小白爱折腾,最近在论坛中学习到了ESPhome,用它做的各种硬件,在HA中控制和自动化,真的很方便。一、目的
  HA的控制需要网络。而实际使用中ESP节点设备本身就能控制,才真实用。
  比如:LED灯的调光器为例。 WIFI转PWM或0-10V输出,甚至转可控硅输出,均可以列为此类产品。
  调光器可以通过HA( WIFI)远程调光,又可以通过本身的按键调光,并且调光值与HA能同步显示。
  本身的按键调光可以在无网络时也可以正常工作,称其为自控功能(我是个小白,瞎称呼的,大神别拍砖)。
二、硬件开发
我们计划用NODEMCU板做一个调光器。
    1. PWM输出--GPIO13
    2.继电器输出-- GPIO16
    3.总开关按键-- D2   到GND
    4.调亮按键-- GPIO0         到GND
    5.调暗按键-- GPIO1         到GND
三、ESPhome配置
参考资料:https://github.com/jonathanadams/esphome-configs/blob/master/_devices/MJ-SJ01/MJ-SJ01.md
我按以上硬件修改配置代码如下(这里显示不完整,请下载附件吧):
esphome:
  name: dimmer001
  platform: ESP8266
  board: nodemcuv2
wifi:
  ssid: "你的路由器名称"
  password: "你的路由器WIFI连接密码"
  ap:
    ssid: "AP_dimmer001"
    password: "12345678"
logger:
api:
  password: "12345678"
ota:
output:
  - platform: esp8266_pwm
    pin: GPIO13     #输出PWM--控制调光
    id: pwm
    power_supply: relay
light:
  - platform: monochromatic
    name: Dimmer_Light
    output: pwm
    default_transition_length: 0s
    id: dimmer
power_supply:     
    - id: relay
    pin:
      number: GPIO16    #输出继电器--控制总电源
      inverted: True
    enable_time: 0s
    keep_on_time: 0s
binary_sensor:
  - platform: gpio
    pin:
    number: GPIO0  #D3  Up Button
    inverted: True
    mode: INPUT_PULLUP
    name: Up Button
    id: up_button
    internal: True
    on_press:
        then:
从YAML文件中,复制粘贴,前面的空格全面没有了,这是后面手工调的,可能不太正确,使用时要注意啦。
四、优化按键效果:
     参考例程中按键体验不佳,这里修改为长按逻辑,效果较好,担心干扰,可以按键初始配置中再加入滤波处理:
    filters:
    - delayed_on: 50ms
    - delayed_off: 50ms #消抖 
五、优化PWM效果:
     8266-输出频率默认为1KHZ,有的调光电路需求其它频率,可以在PWM初始化中加入:
output:
  - platform: esp8266_pwm
    pin: GPIO13
    id: pwm
    power_supply: relay
    min_power: 1%
    frequency: 3000 Hz  #自行加入修改输出频率,不加默认为1000Hz   
六、优化上电为亮灯:
    产品上电,PWM默认输出为OFF,需要调光控制后才能输出,在灯初始化加入以下代码可以上电输出PWM
light:
  - platform: monochromatic
    name: Dimmer_Light
    output: pwm
    default_transition_length: 0s
    id: dimmer
    restore_mode: ALWAYS_ON  #上电输出PWM
七、优化断网的重启:
    ESPhome WIFI连接不成功后,它默认15分钟重启一次模块,导致断电的调光器(灯)会闪烁一次,很烦人,加入以下代码,可以关闭重启,当然有一定副作用,具体参考官方说明:
https://esphome.io/components/light/index.html#light-dim-relative-action ,搜 reboot_timeout
wifi:
  ssid: "你的路由器名称"
  password: "你的路由器WIFI连接密码"
八、验证:
   以上配置可以实现产品的基本功能 :
A、上电,继电器GPIO16的输出电平= H; PWM输出--GPIO13= H,说明上电亮灯。
B、单击D2按键,   继电器GPIO16的输出电平会翻转,实现总电源控制。OFF状态时,PWM输出--GPIO13= L,说明关继电器同时PWM也关闭了。
C、长按调暗按键-- GPIO1,   PWM输出--GPIO13输出PWM占空比减小,最后为0,同时继电器GPIO16的输出电平= L; 说明两控制单元进行了状态关联,并逻辑正常。
D、长按调亮按键-- GPIO0,   PWM输出--GPIO13输出PWM占空比增加,最后为100,同时继电器GPIO16的输出电平= H; 说明两控制单元进行了状态关联,并逻辑正常。
E、若原来为关机状态,长按调亮键,自动转为ON模式,继电器会接通,尽管你并没有按D2按键。
    从以上验证数据说明本产品的自控功能已经满足了 调光器的实际应用要求,下面说说需要优化的方面。

九、优化项
A、原实例中加入了亮度值指示功能,可以在实际应用中加入。
B、每次上电时的亮度都是最大值,这里有没有好办法,调用上次关电前的亮度,这个功能很有必要,希望有大神来指导一下。已经在大神的指导下,解决方案见--第四楼

C、在此可以延长出触摸开关的调光器设计,旋钮编码器的调光器设计等等,可以充分发挥想象力啦。




dimmer001 - 副本.zip

1.45 KB, 下载次数: 202

评分

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

查看全部评分

回复

使用道具 举报

4

主题

57

帖子

275

积分

论坛分享达人

积分
275
金钱
218
HASS币
10
 楼主| 发表于 2020-5-11 10:51:21 | 显示全部楼层
自已顶一下
回复

使用道具 举报

4

主题

57

帖子

275

积分

论坛分享达人

积分
275
金钱
218
HASS币
10
 楼主| 发表于 2020-5-11 13:35:43 | 显示全部楼层
我只是参考实例,依葫芦画瓢而已经。现在的问题是:上电亮度如何设定?我希望是上次断电前的亮度。请大神出手啦
回复

使用道具 举报

4

主题

57

帖子

275

积分

论坛分享达人

积分
275
金钱
218
HASS币
10
 楼主| 发表于 2020-5-11 20:01:13 | 显示全部楼层
通过大神“情非殇“的指导,成功完成断电保存功能:
1.在ESPHOME中开启指令:esp8266_restore_from_flash: yes #保存状态
esphome:
    name: dimmer001
    platform: ESP8266
    board: nodemcuv2
    esp8266_restore_from_flash: yes #保存状态

2.关闭灯初始化中的:restore_mode: ALWAYS_ON,或者直接删除
light:
  - platform: monochromatic
    name: Dimmer_Light
    output: pwm
    id: dimmer
#    restore_mode: ALWAYS_ON    #注释功能

以上修改后,验证:ESP重启或上电后,PWM输出断电前的亮度状态。
试验成功了, 谢谢论坛和大神们的分享。
回复

使用道具 举报

4

主题

57

帖子

275

积分

论坛分享达人

积分
275
金钱
218
HASS币
10
 楼主| 发表于 2020-5-11 20:18:50 | 显示全部楼层
参考官方文档:https://esphome.io/components/esphome.html
发现它只有10W次读写寿命,而且调光值在渐变过程也存在写入的可能,所以实际使用寿命会随我们的调光次数而降低。 建议有能力的坛友考虑改为断电才执行保存功能。否则还是按官方文档,老老实实的用回来的上电最大亮度,或固定一个亮度。
当然坛友有更好的方法,希望能分享一下
回复

使用道具 举报

0

主题

23

帖子

100

积分

注册会员

Rank: 2

积分
100
金钱
77
HASS币
0
发表于 2020-5-12 10:56:35 | 显示全部楼层
来学习学习
回复

使用道具 举报

175

主题

2956

帖子

7555

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7555
金钱
4574
HASS币
398

活跃会员教程狂人灌水之王

QQ
发表于 2020-5-13 16:20:09 | 显示全部楼层
完美   这个方案非常好!!! 既可以远程 又可以 物理按钮
回复

使用道具 举报

4

主题

57

帖子

275

积分

论坛分享达人

积分
275
金钱
218
HASS币
10
 楼主| 发表于 2020-5-13 18:02:24 | 显示全部楼层
jyz_0501 发表于 2020-5-13 16:20
完美   这个方案非常好!!! 既可以远程 又可以 物理按钮

对,就是冲这个目的来的,即可以远程又可以本地。不过还有很多问题,很多要学习的地方。希望大神来解决断电保存亮度的办法。
回复

使用道具 举报

175

主题

2956

帖子

7555

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7555
金钱
4574
HASS币
398

活跃会员教程狂人灌水之王

QQ
发表于 2020-5-13 22:46:04 | 显示全部楼层
lfp136 发表于 2020-5-13 18:02
对,就是冲这个目的来的,即可以远程又可以本地。不过还有很多问题,很多要学习的地方。希望大神来解决断 ...

不用纠结断电保存亮度吧  一年之中能断几次电?  
回复

使用道具 举报

0

主题

79

帖子

650

积分

高级会员

Rank: 4

积分
650
金钱
571
HASS币
0
发表于 2021-1-28 15:23:41 | 显示全部楼层
用的什么样的灯,怎么接线的,灯的电源是单独接吗?还是直接用esp的,用esp的电压能够吗
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-20 03:23 , Processed in 0.066993 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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