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

 找回密码
 立即注册
查看: 7256|回复: 19

《摸着石头过河》之简化自动化代码

[复制链接]

12

主题

193

帖子

1138

积分

论坛积极会员

积分
1138
金钱
945
HASS币
0
发表于 2019-3-3 20:07:29 | 显示全部楼层 |阅读模式
本帖最后由 lijun9701 于 2019-3-3 20:09 编辑

接触树莓派已经有几个月了,自动化代码基本上是从论坛里学来的。自动化从最初的开灯、关灯,到后来的场景设计,慢慢地复杂起来。自动化代码也越来越多,有时候为了修改一段代码,要在众多的代码中翻找。慢慢参考坛里大神的方法,把每个自动化用分隔线隔起来,查找起来快一点。
近日,在修改刚开始编写的自动代码时,发现自己的代码冗长。有些自动化完全可合并成一个自动化。于是开始动手优化,下面我举个例子,希望能帮到一个刚入门的朋友。
这是一个根据米家PM2.5检测数值自动开关空气净化器的自动化。下面的代码是优化前的,开机与关机分成2个自动化做的。
##### 净化器控制 ########################################################################################################################
####### 空气净化器开启 ##
- alias: air_on        
  initial_state: true   #重启HA自动化是开启(true)还是关闭(false)
  hide_entity: true    #隐藏自动化false
  trigger: 
    - platform: numeric_state
      entity_id: sensor.pm25  # PM2.5监测仪
      above: 50
  condition:
    condition: and
    conditions:
      - condition: state
        entity_id: group.all_devices  # 
        state: 'home'
      - condition: state
        entity_id: group.all_fans  #
        state: 'off'
  action:
    - service_template: "fan.turn_on"
      entity_id: group.all_fans   #净化器 

####### 空气净化器关闭 ##
[hide]- alias: air_off        
  initial_state: true   #重启HA自动化是开启(true)还是关闭(false)
  hide_entity: true    #隐藏自动化false
  trigger: 
    - platform: numeric_state
      entity_id: sensor.pm25  # PM2.5监测仪
      below: 20
  condition:
    condition: state
    entity_id: group.all_fans  #
    state: 'on'
  action:
    - service_template: "fan.turn_off"
      entity_id: group.all_fans


下面是优化后的代码,将两个自动化合并到一起,在执行阶段通过判断条件,决定执行开机还是关机。

##### 净化器控制 ########################################################################################################################
####### 空气净化器开启 20190303修改 ##
- alias: air_cleaner        
  initial_state: true   #重启HA自动化是开启(true)还是关闭(false)
  hide_entity: true    #隐藏自动化false
  trigger: 
    - platform: numeric_state
      entity_id: sensor.pm25  # PM2.5监测仪
      above: 50
    - platform: numeric_state
      entity_id: sensor.pm25  # PM2.5监测仪
      below: 20
  condition:
    condition: and
    conditions:
      - condition: state
        entity_id: group.all_devices  # 
        state: 'home'
      - condition: state                        # 睡眠模式关闭
        entity_id: input_boolean.good_night    
        state: 'off'
  action:
    - service_template: "fan.turn_{% if states.sensor.pm25.state | int < 20 %}off{% elif states.sensor.pm25.state | int > 50 %}on{% else %}off{% endif %}"
      entity_id: group.all_fans   #净化器 
[/hide]

希望我的方法能帮助你进一步优化代码,也许你有更好 的方法,可以在留言里告诉我。帮助我提高。

评分

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

查看全部评分

回复

使用道具 举报

8

主题

2073

帖子

6053

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
6053
金钱
3980
HASS币
145

灌水之王

发表于 2019-3-3 20:27:20 | 显示全部楼层
面目全非 ……………………
回复

使用道具 举报

8

主题

2073

帖子

6053

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
6053
金钱
3980
HASS币
145

灌水之王

发表于 2019-3-3 20:28:30 | 显示全部楼层
自从node red后 这些都看的一愣一愣的
回复

使用道具 举报

13

主题

554

帖子

4310

积分

论坛元老

Jeff

Rank: 8Rank: 8

积分
4310
金钱
3756
HASS币
10

活跃会员

发表于 2019-3-3 20:36:05 | 显示全部楼层
楼主可以调整一下论坛代码格式
Jeff
回复

使用道具 举报

175

主题

2967

帖子

7606

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7606
金钱
4614
HASS币
398

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

QQ
发表于 2019-3-3 23:28:33 | 显示全部楼层
面目全非 ……………………
回复

使用道具 举报

3

主题

145

帖子

927

积分

高级会员

五岁能抬头

Rank: 4

积分
927
金钱
782
HASS币
20
发表于 2019-3-4 01:47:48 | 显示全部楼层
好像格式出问题了
回复

使用道具 举报

8

主题

870

帖子

5218

积分

论坛元老

Rank: 8Rank: 8

积分
5218
金钱
4348
HASS币
0
发表于 2019-3-4 09:09:24 | 显示全部楼层
看起来全是乱码哦
回复

使用道具 举报

40

主题

2176

帖子

8286

积分

元老级技术达人

积分
8286
金钱
6095
HASS币
110
发表于 2019-3-4 09:13:07 | 显示全部楼层
只有开 没有关 没有放优化后的代码
赶紧更啊 等着学习呢
回复

使用道具 举报

39

主题

278

帖子

884

积分

高级会员

Rank: 4

积分
884
金钱
605
HASS币
0
发表于 2019-3-4 10:01:59 | 显示全部楼层
刷新一下就可以
回复

使用道具 举报

10

主题

151

帖子

1572

积分

金牌会员

Rank: 6Rank: 6

积分
1572
金钱
1416
HASS币
40
发表于 2019-3-4 11:11:09 | 显示全部楼层
学习学习
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-25 04:38 , Processed in 0.349136 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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