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

 找回密码
 立即注册
查看: 29508|回复: 28

[基础教程] [举一反三系列]HADashboard中控挂墙面板插件之Mode

  [复制链接]

13

主题

152

帖子

811

积分

高级会员

Rank: 4

积分
811
金钱
649
HASS币
0
发表于 2017-12-30 22:57:05 | 显示全部楼层 |阅读模式
本帖最后由 hugo 于 2017-12-30 23:29 编辑

借用某老大的话,在论坛混,怎么能不知道HADashboard,HADashboard提供了与Home assistant相对应的一系列组件,像开关,灯具,空调,传感器等等,直接安装好插件,配置下对应的组件,就可以在中控面板上对设备进行方便操作,特别适合挂墙中控触摸设备。具体可以搜索论坛相关文章。HADashboard有一个组件widget叫Mode,今天开个贴介绍Mode,跟大家分享我的应用方式,给大家一些新思路,不用定制组件就能把Dashboard体验到极致。
Mode这个组件有以下几个主要参数:

  • entity - the entity_id of the input_select
  • mode - value of the input select to show as active
  • script - script to run when pressed
  • state_text
  • state_map
       entity对应的是选择项input_select,mode对应的是该widget在某个input_select选项选中时候是激活的,script可以在按下时候执行script语句,其他两个是状态的自定义名称配置参数,不属于mode的特有参数,大家可以参考官方文档。

       其中entity对应的是input_select,这下大家可能就清楚了一点,因为在ha里面并没有mode的组件,和mode很接近的应该是scene(场景),很多朋友可能会觉得其实mode就是执行一个场景,用场景更加简单,这是没错的。如果你只是执行一个场景,当然用scene,但是如果你执行了某个场景模式后,需要显示目前是哪个场景,或者又在其他设备切换了场景,这时候对于一个场景的展示的功能就非常弱,因为你的状态是实时在变化的。而mode的组件结合input_select却能解决这个问题,比如你把离家模式换为会客模式,这时候mode就会切换到会客模式,离家模式变为未启用,这样就灵活很多。下面以空气净化器为例,介绍mode的一些灵活使用。为了形象展示mode的这个实际例子,请先看视频:



IMG_90430DE6974D-1.jpeg

airpurifier:
    widget_type: switch
    entity: fan.xiaomi_air_purifier_sf
    title: 书房空气净化器
    icon_on: mdi-weather-windy
    icon_off: mdi-weather-windy
    state_text: 1
    state_map:
        "on": 净化中
        "off": 已关闭

airmode_sleep:
    widget_type: mode
    entity: input_select.airpurifier_mode
    title: 净化器睡眠模式
    mode: Silent
    state_text: 1
    state_map:
        "Silent":  睡眠模式开启
        "Idle":  关闭
        "Auto": 当前为自动模式
    script: script.1514613123943
    icon_on: mdi-brightness-4
    icon_off: mdi-brightness-4

airmode_auto:
    widget_type: mode
    entity: input_select.airpurifier_mode
    title: 净化器自动模式
    mode: Auto
    state_text: 1
    state_map:
        "Auto":  自动模式开启
        "Idle":  关闭
        "Silent": 当前为睡眠模式
    script: script.1514612355606
    icon_on: mdi-brightness-auto
    icon_off: mdi-brightness-auto


看完视频,再借助以上截图,再借助以上dash配置,说明下一下通过mode这个widget实现了什么。首先,第一个widget是Switch,这是个开关,为何要当成开关,因为dashboard里面没有风扇的组件,当然,你可以自己写个。不想自己写,又想利用上净化器更多功能,这时候mode就可发挥作用。第二个睡眠模式和第三个自动模式其实就是两个mode。废话不多说,开始:

首先我们要实现什么?通过这两个mode的widget按钮,最终要实现的功能是:
1)按下净化器开关打开时候,模式自动对应点亮,如果当前是睡眠模式,睡眠模式点亮,如果当前是自动模式,自动模式点亮。
2)按下净化器开关关闭时候,模式自动熄灭。
3)在净化器开着状态下,通过两个模式mode任意切换状态,相对应的状态点亮或者熄灭,并且执行对应的模式运行。4)在净化器关闭状态下,点按这两个模式,自动开启净化器,并且执行对应的模式,点亮并互相切换。
5)手动在设备上,或者其他app如米家切换状态时候,对应的mode状态进行相对应自动切换。

怎么做?
1)为了配置个input_select给净化器运作状态使用,在configuration.yaml里添加个input_select:

input_select:
  airpurifier_mode:
    name: airpurifier_mode
    options:
      - Auto 
      - Silent   
      - Favorite
      - Idle 
    initial: Idle
    icon: mdi:broom


2)为了能把净化器运行状态作为条件判断设置自动化,把运行状态speed分离为单独的sensor,同样在configuration.yaml添加个虚拟sensor:
sensor:
  - platform: template
      airpurifier_speed:
        friendly_name: 'airpurifier_speed'
        entity_id: fan.xiaomi_air_purifier_sf
        unit_of_measurement: ''
        value_template: "{{ states.fan.xiaomi_air_purifier_sf.attributes.speed }}"


3)在开关不开的情况下,点击mode,可以启动对应的模式,这时候可以利用mode的script参数,直接ha设置好script,对应开启净化器两个模式。在script里为了在点击时候对应的状态能够根据实际切换,除了启动对应的运作模式外,也切换input_select的值,添加scripts:
'1514612355606':
  alias: TurnSFairPurifierAutoMode
  sequence:
  - data:
      entity_id: fan.xiaomi_air_purifier_sf
      speed: Auto
    service: fan.set_speed
  - data:
      entity_id: input_select.airpurifier_mode
      options: Auto
    service: input_select.set_options
'1514613123943':
  alias: TurnSFAirpurifierSilent
  sequence:
  - data:
      entity_id: fan.xiaomi_air_purifier_sf
      speed: Silent
    service: fan.set_speed
  - data:
      entity_id: input_select.airpurifier_mode
      options: Silent
    service: input_select.set_options


4)如果开关开启,对应的模式点亮,如果开关关闭,对应模式熄灭,如果在设备上操作,对应模式切换,这时候用一些自动化automation实现。具体可以参考:
- action:
  - data:
      entity_id: input_select.airpurifier_mode
      options: Idle
    service: input_select.set_options
  alias: ChangeInputSelect1
  condition: []
  id: '1514638806106'
  trigger:
  - entity_id: fan.xiaomi_air_purifier_sf
    from: 'on'
    platform: state
    to: 'off'


通过以上步骤,基本上都利用到系统一些非常友好的工具,目前home assistant里面已经支持图形化界面设置自动化Automation,添加script,最多是往configuration里面添加input select和虚拟sensor,然后再借助hadashboar的mode插件,成功实现以上功能,文笔较差,能看就看。算是来论坛拿了很多东西的回报。






评分

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

查看全部评分

回复

使用道具 举报

1

主题

281

帖子

1224

积分

金牌会员

Rank: 6Rank: 6

积分
1224
金钱
942
HASS币
0
发表于 2017-12-30 22:59:34 | 显示全部楼层
沙发,越来越多干货硬货文章了,感谢大神辛苦付出,赞一个!
回复

使用道具 举报

0

主题

73

帖子

417

积分

中级会员

Rank: 3Rank: 3

积分
417
金钱
344
HASS币
0
发表于 2017-12-30 23:30:56 | 显示全部楼层
很详细,支持,收藏一下,以后用
回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16410
金钱
11664
HASS币
45
发表于 2017-12-31 01:53:03 | 显示全部楼层
经鉴定,此贴非常好,已设为精华
回复

使用道具 举报

6

主题

287

帖子

4149

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4149
金钱
3857
HASS币
0
发表于 2017-12-31 08:33:48 | 显示全部楼层
好文章!谢谢楼主的分享!
回复

使用道具 举报

4

主题

134

帖子

672

积分

高级会员

Rank: 4

积分
672
金钱
538
HASS币
0
发表于 2017-12-31 08:39:27 | 显示全部楼层
感谢大神辛苦付出,赞一个
回复

使用道具 举报

4

主题

443

帖子

2583

积分

金牌会员

Rank: 6Rank: 6

积分
2583
金钱
2140
HASS币
0
发表于 2017-12-31 20:43:40 | 显示全部楼层
这页面不错
回复

使用道具 举报

0

主题

70

帖子

198

积分

注册会员

Rank: 2

积分
198
金钱
127
HASS币
0
发表于 2018-1-20 16:37:43 | 显示全部楼层
谢谢分享
回复

使用道具 举报

0

主题

217

帖子

613

积分

高级会员

Rank: 4

积分
613
金钱
395
HASS币
0
发表于 2018-1-21 10:28:13 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

14

主题

98

帖子

491

积分

中级会员

Rank: 3Rank: 3

积分
491
金钱
392
HASS币
0
发表于 2018-2-23 16:18:37 | 显示全部楼层
mark一下
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-25 13:50 , Processed in 0.137061 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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