请选择 进入手机版 | 继续访问电脑版

『瀚思彼岸』» 智能家居第一站

 找回密码
 立即注册
查看: 2044|回复: 26

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

[复制链接]

12

主题

121

帖子

658

积分

论坛分享达人

积分
658
金钱
527
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

[AppleScript] 纯文本查看 复制代码
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:
[AppleScript] 纯文本查看 复制代码
input_select:
  airpurifier_mode:
    name: airpurifier_mode
    options:
      - Auto 
      - Silent   
      - Favorite
      - Idle 
    initial: Idle
    icon: mdi:broom


2)为了能把净化器运行状态作为条件判断设置自动化,把运行状态speed分离为单独的sensor,同样在configuration.yaml添加个虚拟sensor:
[AppleScript] 纯文本查看 复制代码
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:
[AppleScript] 纯文本查看 复制代码
'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实现。具体可以参考:
[AppleScript] 纯文本查看 复制代码
- 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

主题

239

帖子

1032

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

0

主题

58

帖子

349

积分

中级会员

Rank: 3Rank: 3

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

使用道具 举报

78

主题

2322

帖子

7478

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

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

使用道具 举报

5

主题

131

帖子

1222

积分

管理员

Rank: 9Rank: 9Rank: 9

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

使用道具 举报

4

主题

129

帖子

607

积分

论坛分享达人

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

使用道具 举报

4

主题

286

帖子

1162

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

0

主题

71

帖子

198

积分

注册会员

Rank: 2

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

使用道具 举报

0

主题

177

帖子

467

积分

中级会员

Rank: 3Rank: 3

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

使用道具 举报

10

主题

74

帖子

298

积分

中级会员

Rank: 3Rank: 3

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

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2018-9-20 12:47 , Processed in 0.266757 second(s), 44 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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