本帖最后由 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的这个实际例子,请先看视频:
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插件,成功实现以上功能,文笔较差,能看就看。算是来论坛拿了很多东西的回报。
|