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.
+127 -205
View File
@@ -1,164 +1,107 @@
# This file was automatically generated by lovelace_migrate.py #custom cards
# https://github.com/dale3h/python-lovelace resources:
- url: /community_plugin/group-card/group-card.js
type: module
title: Home title: Home
views: views:
- title: "Статус" - title: "Статус"
icon: mdi:home icon: mdi:home
cards: cards:
- type: entities - type: custom:group-card
title: "Дом" group: group.home_entities
show_header_toggle: false card:
entities: type: entities
- alarm_control_panel.ha_alarm title: "Дом"
- switch.water_valve show_header_toggle: false
- vacuum.xiaomi_vacuum_cleaner - type: custom:group-card
- switch.domofon_open group: group.room_livingroom_entities
- switch.wifi_socket card:
- type: entities type: entities
title: "Гостиная" title: "Гостиная"
show_header_toggle: false show_header_toggle: false
entities: - type: custom:group-card
- sensor.temperature_158d0001149b3c group: group.room_kitchen_entities
- sensor.humidity_158d0001149b3c card:
- sensor.xiaomi_airpurifier_air_quality_pm25 type: entities
- light.yeelight_color1_34ce008fe328 title: "Кухня"
- light.yeelight_color1_286c071065c7 show_header_toggle: false
- light.yeelight_mono1_34ce0087ff33 - type: custom:group-card
- light.yeelight_mono1_f0b4290e5444 group: group.room_bath_entities
- light.yeelight_mono1_f0b429a8f6df card:
- light.salt_lamp type: entities
- cover.curtain_158d0002b0c46a title: "Ванная"
- switch.plug_158d0001104a0c show_header_toggle: false
- switch.plug_158d00010dd98d - type: custom:group-card
- fan.xiaomi_miio_device group: group.room_hall_entities
- climate.living_room card:
- type: entities type: entities
title: "Кухня" title: "Прихожая"
show_header_toggle: false show_header_toggle: false
entities: - type: custom:group-card
- light.kitchen group: group.room_balcony_entities
- light.kitchen_mini_light card:
- switch.plug_158d0001a68b18 type: entities
- switch.plug_158d0001a68c64 title: "Балкон"
- switch.plug_158d0001a4cfb4 show_header_toggle: false
- switch.plug_158d00020f3a29 - type: custom:group-card
- switch.plug_158d0002924779 group: group.room_outside_entities
- switch.xiaomi_miio_switch card:
- type: entities type: entities
title: "Ванная" title: "Улица"
show_header_toggle: false show_header_toggle: false
entities:
- sensor.temperature_158d00012d9ad7
- sensor.humidity_158d00012d9ad7
- light.bath
- light.philips_led
- sensor.airfresher_remain
- type: entities
title: "Прихожая"
show_header_toggle: false
entities:
- light.hall
- 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
title: "Улица"
show_header_toggle: false
entities:
- sensor.temperature_158d000149c128
- sensor.humidity_158d000149c128
- title: "Датчики" - title: "Датчики"
icon: mdi:nfc icon: mdi:nfc
cards: cards:
- type: entities - type: custom:group-card
title: "Движение" group: group.motion_sensors
show_header_toggle: false card:
entities: type: entities
- binary_sensor.motion_sensor_158d0000e7c7ad title: "Движение"
- binary_sensor.motion_sensor_158d0002044548 show_header_toggle: false
- binary_sensor.motion_sensor_158d0000fbc664 - type: custom:group-card
- binary_sensor.motion_sensor_158d0001535c97 group: group.water_leak_sensors
- binary_sensor.motion_sensor_158d0000f9546b card:
- binary_sensor.motion_sensor_158d000165fed5 type: entities
- binary_sensor.motion_sensor_158d0001537e21 title: "Протечка"
- binary_sensor.motion_sensor_158d0000f6b2fa show_header_toggle: false
- binary_sensor.motion_sensor_158d0001e50ce4 - type: custom:group-card
- binary_sensor.motion_sensor_158d0001e80f0d group: group.smoke_sensors
- type: entities card:
title: "Протечка" type: entities
show_header_toggle: false title: "Датчики дыма"
entities: show_header_toggle: false
- binary_sensor.water_leak_sensor_158d0001d594fa - type: custom:group-card
- binary_sensor.water_leak_sensor_158d0001c34960 group: group.door_sensors
- binary_sensor.water_leak_sensor_158d0002150c07 card:
- binary_sensor.water_leak_sensor_158d0002112b98 type: entities
- binary_sensor.water_leak_sensor_158d0002113158 title: "Двери"
- binary_sensor.water_leak_sensor_158d00023a48f0 show_header_toggle: false
- type: entities - type: custom:group-card
title: "Датчики дыма" group: group.epd_water_counters
show_header_toggle: false card:
entities: type: entities
- binary_sensor.smoke_sensor_158d00023115ad title: "Счетчики воды"
- type: entities show_header_toggle: false
title: "Двери" - type: custom:group-card
show_header_toggle: false group: group.sensor_tags
entities: card:
- binary_sensor.door_window_sensor_158d0001130141 type: entities
- binary_sensor.door_window_sensor_158d000111a469 title: "Метки"
- binary_sensor.door_window_sensor_158d00010f7e19 show_header_toggle: false
- binary_sensor.door_window_sensor_158d0002254373 - type: custom:group-card
- binary_sensor.door_window_sensor_158d0001b77b1b group: group.presence_sensors
- binary_sensor.door_window_sensor_158d0001c0e46d card:
- binary_sensor.door_window_sensor_158d0001e74660 type: entities
- binary_sensor.door_window_sensor_158d0001b711ec title: "Пристутствие"
- type: entities show_header_toggle: false
title: "Счетчики воды" - type: custom:group-card
show_header_toggle: false group: group.power_sensors
entities: card:
- sensor.epd_balance type: entities
- sensor.counter_cold title: "Электропитание"
- sensor.counter_hot show_header_toggle: false
- sensor.counter_mosru_cold
- sensor.counter_mosru_hot
- 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
title: "Пристутствие"
show_header_toggle: false
entities:
- sensor.presence_hall
- sensor.presence_kitchen
- sensor.presence_balcony
- sensor.toilet_presence
- 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: "Камеры" - title: "Камеры"
icon: mdi:cctv icon: mdi:cctv
cards: cards:
@@ -172,15 +115,13 @@ views:
icon: mdi:alarm icon: mdi:alarm
cards: cards:
- type: entities - type: entities
title: "Будильник (бу\ title: "Будильник (будни)"
дни)"
show_header_toggle: false show_header_toggle: false
entities: entities:
- input_boolean.alarmclock_weekdays - input_boolean.alarmclock_weekdays
- input_datetime.alarmclock_weekdays - input_datetime.alarmclock_weekdays
- type: entities - type: entities
title: "Будильник (вы\ title: "Будильник (выходные)"
ходные)"
show_header_toggle: false show_header_toggle: false
entities: entities:
- input_boolean.alarmclock_weekend - input_boolean.alarmclock_weekend
@@ -318,56 +259,37 @@ views:
- title: "Настройки" - title: "Настройки"
icon: mdi:settings icon: mdi:settings
cards: cards:
- type: entities - type: custom:group-card
title: "Контроль све\ group: group.light_control
та" card:
show_header_toggle: true type: entities
entities: title: "Контроль света"
- input_boolean.mainroom_light_control show_header_toggle: false
- input_boolean.hall_light_control - type: custom:group-card
- input_boolean.bath_light_control group: group.automation_control
- input_boolean.kitchen_light_control card:
- input_boolean.balcony_light_control type: entities
- type: entities title: "Настройки автоматики"
title: "Настройки ав\ show_header_toggle: true
томатики" - type: custom:group-card
show_header_toggle: true group: group.report_control
entities: card:
- input_boolean.presence_control type: entities
- input_boolean.water_control title: "Настройки отчетов"
- input_boolean.water_leak_control show_header_toggle: true
- input_boolean.mainroom_climate_control - type: custom:group-card
- switch.domofon_mode group: group.control_tags
- type: entities card:
title: "Настройки отчетов" type: entities
show_header_toggle: true title: "Метки"
entities: show_header_toggle: true
- input_boolean.security_sensors_report - type: custom:group-card
- input_boolean.battery_report group: group.uptime
- input_boolean.water_counters_report card:
- input_boolean.work_presence_report type: entities
- input_boolean.lock_report title: "Аптайм"
- input_boolean.watchdog_report show_header_toggle: false
- 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
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: "Информация" - title: "Информация"
icon: mdi:monitor-multiple icon: mdi:monitor-multiple
cards: cards: