求助:电器工作状态功率变化为条件触发自动化的设置!
生活中遇到一个问题,就是从斐x暴雷后入的很多智能产品后开始入坑hass平台的,从最早2018年开始折腾dc1接入到越来越多的智能家居产品丰富了自己的生活,也是从这里论坛里学到了很多,在此感谢各位大佬的分享精神!奈于自己的水平有限,现在有个自动化的想法不知道如何去实现,请教各位玩自动化的大佬有没有方法教授一下呢。
基本情况介绍:
现在接入了pzem的电量功率监测模块,若干个esphome的插座。现在就是有一个想法,家里的普通热水器是用智能插座当开关的接入了hass平台。想写一个自动化,自动判断热水烧好了然后关闭热水器的智能插座。
自己尝试了一遍设置都没有成功。
因为热水器打开后工作中的功率大概是2200w左右,然后烧好后功率就会瞬间降下来,现在就是想根据这个功率波动状态来设置自动化但是不知道怎么设置。
按照一般思路是先判断热水器智能插座已经打开,一段时间后监测功率从2000多瓦降到几百瓦后判断热水器烧好,然后关闭热水器并通过小爱音箱播报。
我自己先设置了一下发现没有这种从一个数值范围变为另一个数值范围的触发设置,所以就是不知道要如何实现这个想法。不知道论坛各位大佬有没有更新颖的办法解决。
烧水大于2000~2200W,烧完低于300~500W,断层严重,那就直接判断功率绝对值,不用判断范围这个相对值,简单的说,插座功率低于1000W就关闭。 提供一个思路,可以试试,有个integration叫做Derivative求导https://www.home-assistant.io/integrations/derivative/,既然你的变化是固定的,那么导数应该是固定的,配置如下:
sensor:
- platform: derivative
source:你的功率传感器实体
然后在自动化中用这个新传感器的值来做触发或者条件。 这个应该简单。数值触发:当功率大于2000时;动作:等待触发,等待功率小于500,调用服务,关闭开关。 感觉跟我家里通过DC1插座的功率自动控制投影系统打开的意思一样,你看能参考不:
- alias: '关电视开投影'
trigger:
- platform: numeric_state #调用状态
entity_id: sensor.phicomm_dc2_power #当前功率
below: 35 #小于多少瓦
above: 25 #大于多少瓦
for:
seconds: 3 #保持几秒钟,相当于播放器开着,但电视关了,准备自动切换到投影
action:
- service: switch.turn_on
entity_id: switch.keting_mubu, switch.phicomm_dc2_switch1 #想执行多个开关用,号隔开-投影幕、插座开
- delay:
seconds: 3
- service: switch.turn_on
entity_id: switch.keting_touyinji #投影机开
#开电视关投影----------------------------------------------------
- alias: '开电视关投影'
trigger:
- platform: numeric_state #调用状态
entity_id: sensor.phicomm_dc2_power #当前功率
#below: 400 #小于多少瓦
above: 380 #大于多少瓦
for:
seconds: 2 #保持几秒钟,相当于电视打开,准备关闭投影
action:
- service: switch.turn_off
entity_id: switch.keting_mubu, switch.keting_touyinji #想执行多个开关用,号隔开-投影幕、插座关
- delay:
seconds: 2
- service: switch.turn_on
entity_id: switch.keting_touyinji #投影机关机要按2次
- delay:
seconds: 10
- service: switch.turn_off
entity_id: switch.phicomm_dc2_switch1 #关功放
- delay:
seconds: 3
- service: switch.turn_off
entity_id: switch.keting_touyinji #还原红外投影到关闭状态
hang1993 发表于 2022-4-19 17:09
提供一个思路,可以试试,有个integration叫做Derivative求导https://www.home-assistant.io/integrations/ ...
大兄弟导数真的是天秀:D 留名学习了 本帖最后由 dscao 于 2022-4-19 22:18 编辑
这个用node-red实现比较简单:
热水壶功率在1600W左右,但开始烧的时候不完全立即就到额定功率,水烧开自动跳的时候一般功率是从额定功率降到0,为了容差设置功率突然减少1500至1800W之间时判断水烧开了,则通知TTS播报。
//转换JSON
let res1 = msg.data.old_state.state;
let res2 = msg.data.new_state.state;
let res3 = Number(res1)-Number(res2);
if ( Number(res3)>1500 && Number(res3)<1800 ) {
res4 = "waterhot_finish";
}else{
res4 = "nothing";
}
用了一段时间,一般情况还行,但有时还是不能准确判断出已烧开。可能其它电器偶偶也在同时变化了。
后来还是加装了一个绿米的插座专门用于热水壶,弃用了上在的方法,通过功率大小来判断确认率基本百分百了。
hang1993 发表于 2022-4-19 17:09
提供一个思路,可以试试,有个integration叫做Derivative求导https://www.home-assistant.io/integrations/ ...
一种新玩意,可以学习一下,谢谢 感谢分享
页:
[1]
2