use of groups 2.0

This commit is contained in:
Your Name
2019-11-08 14:14:44 +03:00
parent 44c8758d33
commit 31d0dcba08
4 changed files with 378 additions and 205 deletions
+76
View File
@@ -0,0 +1,76 @@
import appdaemon.plugins.hass.hassapi as hass
import re
#
# This app will create groups in runtime by user defined params
# Based on Rene Tode groups plugin ( hass@reot.org )
#
# Args:
# device_type: sensor # or any devicetype
# entity_part: "any_part"
# entities: # list of entities
# - sensor.any_entity
# hidden: False # or True
# view: True # or False
# assumed_state: False # or True
# friendly_name: Your Friendly Name
# nested_view: True # or False
#
# Release Notes
#
# Version 1.0:
# Initial Version
class Groups(hass.Hass):
def initialize(self):
entitylist = []
expand_group = self.args.get("expand_group", False)
device_type = self.args.get("device_type", None)
all_entities = self.get_state(device_type)
if "entities" in self.args:
for entity in self.args["entities"]:
found = False
for real_entity in all_entities:
if real_entity.lower() == entity.lower():
self.append_entity(entitylist, entity, expand_group)
found = True
if not found:
for real_entity in all_entities:
if re.match(entity.lower(), real_entity.lower()):
self.append_entity(entitylist, real_entity, expand_group)
if 'entity_part' in self.args:
for entity in all_entities:
if self.args["entity_part"] in entity and entity.lower() not in entitylist:
self.append_entity(entitylist, entity, expand_group)
hidden = self.args.get("hidden", False)
view = self.args.get("view", False)
assumed_state = self.args.get("assumed_state",False)
friendly_name = self.args.get("friendly_name","")
name = "group." + self.name
if self.args.get('orderby', None) == 'friendly_name':
entitylist.sort(key=self.sortByFriendlyName)
self.log("Creating group {} with entities: {}".format(name, entitylist))
self.set_state(name,state="on",attributes={"view": view,"hidden": hidden,"assumed_state": assumed_state,"friendly_name": friendly_name,"entity_id": entitylist})
def sortByFriendlyName(self, entity):
return self.get_state(entity, 'friendly_name')
def append_entity(self, entitylist, entity, expand_group):
entity = entity.lower()
if (('group.' not in entity and expand_group) or not expand_group) and entity not in entitylist:
entitylist.append(entity)
return
if expand_group and 'group.' in entity:
group_entities = self.get_group_entities(entity)
for group_entity in group_entities:
if group_entity not in entitylist:
entitylist.append(group_entity)
def get_group_entities(self, group):
group = self.get_state(group, attribute = "all")
return group["attributes"]["entity_id"]
+175
View File
@@ -0,0 +1,175 @@
uptime:
module: groups
class: Groups
friendly_name: Аптайм
device_type: sensor
entity_part: "uptime_"
control_tags:
module: groups
class: Groups
device_type: input_boolean
entity_part: "tag_"
sensor_tags:
module: groups
class: Groups
device_type: sensor
entity_part: "tag_"
light_control:
module: groups
class: Groups
device_type: input_boolean
entity_part: "_light_control"
report_control:
module: groups
class: Groups
device_type: input_boolean
entity_part: "_report"
automation_control:
module: groups
class: Groups
device_type: input_boolean
entities:
- input_boolean.presence_control
- input_boolean.water_control
- input_boolean.water_leak_control
- input_boolean.mainroom_climate_control
- switch.domofon_mode
door_sensors:
module: groups
class: Groups
device_type: binary_sensor
entity_part: "door_window_sensor_"
orderby: friendly_name
smoke_sensors:
module: groups
class: Groups
device_type: binary_sensor
entity_part: "smoke_sensor_"
water_leak_sensors:
module: groups
class: Groups
device_type: binary_sensor
entity_part: "water_leak_sensor_"
orderby: friendly_name
motion_sensors:
module: groups
class: Groups
device_type: binary_sensor
entity_part: "motion_sensor_"
orderby: friendly_name
presence_sensors:
module: groups
class: Groups
device_type: sensor
entities:
- sensor.presence_
- sensor.toilet_presence
epd_water_counters:
module: groups
class: Groups
device_type: sensor
entities:
- sensor.epd_balance
- sensor.counter_hot
- sensor.counter_cold
- sensor.counter_mosru_hot
- sensor.counter_mosru_cold
power_sensors:
module: groups
class: Groups
device_type: sensor
entities:
- sensor.power_mosenergosbyt_balance
- sensor.power_main_total
- sensor.power_mosenergosbyt_total
- sensor.power_total
- sensor.power_voltage
- sensor.power_current
- sensor.power_frequency
- sensor.power_active_power
- sensor.power_reactive_power
- sensor.power_power_factor
home_entities:
module: groups
class: Groups
entities:
- alarm_control_panel.ha_alarm
- switch.water_valve
- vacuum.xiaomi_vacuum_cleaner
- switch.domofon_open
- switch.wifi_socket
room_livingroom_entities:
module: groups
class: Groups
expand_group: True
entities:
- sensor.temperature_158d0001149b3c
- sensor.humidity_158d0001149b3c
- sensor.xiaomi_airpurifier_air_quality_pm25
- group.mainroom_light
- light.salt_lamp
- cover.curtain_158d0002b0c46a
- switch.plug_158d0001104a0c
- switch.plug_158d00010dd98d
- fan.xiaomi_miio_device
- climate.living_room
room_kitchen_entities:
module: groups
class: Groups
expand_group: True
entities:
- group.kitchen_light
- switch.plug_158d0001a68b18
- switch.plug_158d0001a68c64
- switch.plug_158d0001a4cfb4
- switch.plug_158d00020f3a29
- switch.plug_158d0002924779
- switch.xiaomi_miio_switch
room_bath_entities:
module: groups
class: Groups
entities:
- sensor.temperature_158d00012d9ad7
- sensor.humidity_158d00012d9ad7
- light.bath
- light.philips_led
- sensor.airfresher_remain
room_hall_entities:
module: groups
class: Groups
entities:
- light.hall
room_balcony_entities:
module: groups
class: Groups
expand_group: True
entities:
- group.balcony_light
- sensor.temperature_158d000117d37a
- sensor.humidity_158d000117d37a
- switch.plug_158d00026ea017
room_outside_entities:
module: groups
class: Groups
entities:
- sensor.temperature_158d000149c128
- sensor.humidity_158d000149c128
Binary file not shown.
+90 -168
View File
@@ -1,164 +1,107 @@
# This file was automatically generated by lovelace_migrate.py
# https://github.com/dale3h/python-lovelace
#custom cards
resources:
- url: /community_plugin/group-card/group-card.js
type: module
title: Home
views:
- title: "Статус"
icon: mdi:home
cards:
- type: entities
- type: custom:group-card
group: group.home_entities
card:
type: entities
title: "Дом"
show_header_toggle: false
entities:
- alarm_control_panel.ha_alarm
- switch.water_valve
- vacuum.xiaomi_vacuum_cleaner
- switch.domofon_open
- switch.wifi_socket
- type: entities
- type: custom:group-card
group: group.room_livingroom_entities
card:
type: entities
title: "Гостиная"
show_header_toggle: false
entities:
- sensor.temperature_158d0001149b3c
- sensor.humidity_158d0001149b3c
- sensor.xiaomi_airpurifier_air_quality_pm25
- light.yeelight_color1_34ce008fe328
- light.yeelight_color1_286c071065c7
- light.yeelight_mono1_34ce0087ff33
- light.yeelight_mono1_f0b4290e5444
- light.yeelight_mono1_f0b429a8f6df
- light.salt_lamp
- cover.curtain_158d0002b0c46a
- switch.plug_158d0001104a0c
- switch.plug_158d00010dd98d
- fan.xiaomi_miio_device
- climate.living_room
- type: entities
- type: custom:group-card
group: group.room_kitchen_entities
card:
type: entities
title: "Кухня"
show_header_toggle: false
entities:
- light.kitchen
- light.kitchen_mini_light
- switch.plug_158d0001a68b18
- switch.plug_158d0001a68c64
- switch.plug_158d0001a4cfb4
- switch.plug_158d00020f3a29
- switch.plug_158d0002924779
- switch.xiaomi_miio_switch
- type: entities
- type: custom:group-card
group: group.room_bath_entities
card:
type: entities
title: "Ванная"
show_header_toggle: false
entities:
- sensor.temperature_158d00012d9ad7
- sensor.humidity_158d00012d9ad7
- light.bath
- light.philips_led
- sensor.airfresher_remain
- type: entities
- type: custom:group-card
group: group.room_hall_entities
card:
type: entities
title: "Прихожая"
show_header_toggle: false
entities:
- light.hall
- type: entities
- type: custom:group-card
group: group.room_balcony_entities
card:
type: entities
title: "Балкон"
show_header_toggle: false
entities:
- light.yeelight_mono1_286c07f12bed
- light.yeelight_mono1_f0b429a8d936
- sensor.temperature_158d000117d37a
- sensor.humidity_158d000117d37a
- switch.plug_158d00026ea017
- type: entities
- type: custom:group-card
group: group.room_outside_entities
card:
type: entities
title: "Улица"
show_header_toggle: false
entities:
- sensor.temperature_158d000149c128
- sensor.humidity_158d000149c128
- title: "Датчики"
icon: mdi:nfc
cards:
- type: entities
- type: custom:group-card
group: group.motion_sensors
card:
type: entities
title: "Движение"
show_header_toggle: false
entities:
- binary_sensor.motion_sensor_158d0000e7c7ad
- binary_sensor.motion_sensor_158d0002044548
- binary_sensor.motion_sensor_158d0000fbc664
- binary_sensor.motion_sensor_158d0001535c97
- binary_sensor.motion_sensor_158d0000f9546b
- binary_sensor.motion_sensor_158d000165fed5
- binary_sensor.motion_sensor_158d0001537e21
- binary_sensor.motion_sensor_158d0000f6b2fa
- binary_sensor.motion_sensor_158d0001e50ce4
- binary_sensor.motion_sensor_158d0001e80f0d
- type: entities
- type: custom:group-card
group: group.water_leak_sensors
card:
type: entities
title: "Протечка"
show_header_toggle: false
entities:
- binary_sensor.water_leak_sensor_158d0001d594fa
- binary_sensor.water_leak_sensor_158d0001c34960
- binary_sensor.water_leak_sensor_158d0002150c07
- binary_sensor.water_leak_sensor_158d0002112b98
- binary_sensor.water_leak_sensor_158d0002113158
- binary_sensor.water_leak_sensor_158d00023a48f0
- type: entities
- type: custom:group-card
group: group.smoke_sensors
card:
type: entities
title: "Датчики дыма"
show_header_toggle: false
entities:
- binary_sensor.smoke_sensor_158d00023115ad
- type: entities
- type: custom:group-card
group: group.door_sensors
card:
type: entities
title: "Двери"
show_header_toggle: false
entities:
- binary_sensor.door_window_sensor_158d0001130141
- binary_sensor.door_window_sensor_158d000111a469
- binary_sensor.door_window_sensor_158d00010f7e19
- binary_sensor.door_window_sensor_158d0002254373
- binary_sensor.door_window_sensor_158d0001b77b1b
- binary_sensor.door_window_sensor_158d0001c0e46d
- binary_sensor.door_window_sensor_158d0001e74660
- binary_sensor.door_window_sensor_158d0001b711ec
- type: entities
- type: custom:group-card
group: group.epd_water_counters
card:
type: entities
title: "Счетчики воды"
show_header_toggle: false
entities:
- sensor.epd_balance
- sensor.counter_cold
- sensor.counter_hot
- sensor.counter_mosru_cold
- sensor.counter_mosru_hot
- type: entities
- type: custom:group-card
group: group.sensor_tags
card:
type: entities
title: "Метки"
show_header_toggle: false
entities:
- sensor.tag_mamik_band
- sensor.tag_monster_nut
- sensor.tag_nut_blue
- sensor.tag_nut_white
- sensor.tag_nut_guest
- type: entities
- type: custom:group-card
group: group.presence_sensors
card:
type: entities
title: "Пристутствие"
show_header_toggle: false
entities:
- sensor.presence_hall
- sensor.presence_kitchen
- sensor.presence_balcony
- sensor.toilet_presence
- type: entities
- type: custom:group-card
group: group.power_sensors
card:
type: entities
title: "Электропитание"
show_header_toggle: false
entities:
- sensor.power_mosenergosbyt_balance
- sensor.power_main_total
- sensor.power_mosenergosbyt_total
- sensor.power_total
- sensor.power_voltage
- sensor.power_current
- sensor.power_frequency
- sensor.power_active_power
- sensor.power_reactive_power
- sensor.power_power_factor
- title: "Камеры"
icon: mdi:cctv
cards:
@@ -172,15 +115,13 @@ views:
icon: mdi:alarm
cards:
- type: entities
title: "Будильник (бу\
дни)"
title: "Будильник (будни)"
show_header_toggle: false
entities:
- input_boolean.alarmclock_weekdays
- input_datetime.alarmclock_weekdays
- type: entities
title: "Будильник (вы\
ходные)"
title: "Будильник (выходные)"
show_header_toggle: false
entities:
- input_boolean.alarmclock_weekend
@@ -318,56 +259,37 @@ views:
- title: "Настройки"
icon: mdi:settings
cards:
- type: entities
title: "Контроль све\
та"
- type: custom:group-card
group: group.light_control
card:
type: entities
title: "Контроль света"
show_header_toggle: false
- type: custom:group-card
group: group.automation_control
card:
type: entities
title: "Настройки автоматики"
show_header_toggle: true
entities:
- input_boolean.mainroom_light_control
- input_boolean.hall_light_control
- input_boolean.bath_light_control
- input_boolean.kitchen_light_control
- input_boolean.balcony_light_control
- type: entities
title: "Настройки ав\
томатики"
show_header_toggle: true
entities:
- input_boolean.presence_control
- input_boolean.water_control
- input_boolean.water_leak_control
- input_boolean.mainroom_climate_control
- switch.domofon_mode
- type: entities
- type: custom:group-card
group: group.report_control
card:
type: entities
title: "Настройки отчетов"
show_header_toggle: true
entities:
- input_boolean.security_sensors_report
- input_boolean.battery_report
- input_boolean.water_counters_report
- input_boolean.work_presence_report
- input_boolean.lock_report
- input_boolean.watchdog_report
- type: entities
- type: custom:group-card
group: group.control_tags
card:
type: entities
title: "Метки"
show_header_toggle: true
entities:
- input_boolean.tag_mamik_band
- input_boolean.tag_monster_nut
- input_boolean.tag_nut_blue
- input_boolean.tag_nut_white
- input_boolean.tag_nut_guest
- type: entities
- type: custom:group-card
group: group.uptime
card:
type: entities
title: "Аптайм"
show_header_toggle: false
entities:
- sensor.uptime_airfresher
- sensor.uptime_bath
- sensor.uptime_domofon
- sensor.uptime_kitchen_led
- sensor.uptime_nest
- sensor.uptime_bathlight
- sensor.uptime_kitchen
- title: "Информация"
icon: mdi:monitor-multiple
cards: