commit 8dfb36a3f1b2ddba31b83ba2a7599296b4e90fc0 Author: Alexander Savin Date: Fri Feb 7 12:46:24 2025 -0500 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..03cdeec --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +secrets.yaml diff --git a/configuration.yaml b/configuration.yaml new file mode 100644 index 0000000..b7260f9 --- /dev/null +++ b/configuration.yaml @@ -0,0 +1,292 @@ +automation: !include_dir_merge_list configuration/automation + +# Loads default set of integrations. Do not remove. +default_config: + +mobile_app: +ios: + +# Load frontend themes from the themes folder +frontend: + themes: !include_dir_merge_named themes + +script: !include scripts.yaml + +#################################################################################################### +### CAMERAS #################################################################### DEVICES ### +#################################################################################################### +camera: !include_dir_merge_list configuration/camera + +#################################################################################################### +### FANS ####################################################################### DEVICES ### +#################################################################################################### +fan: !include_dir_merge_list configuration/fan + +homeassistant: + name: !secret system_name + latitude: !secret system_latitude + longitude: !secret system_longitude + elevation: !secret system_elevation + unit_system: metric + time_zone: !secret system_timezone + external_url: https://house.savin.nyc + internal_url: https://house.savin.nyc + +#################################################################################################### +### AUTHENTICATION PROVIDERS ####################################################### AAA ### +#################################################################################################### + auth_providers: + - type: homeassistant +# - type: trusted_networks +# trusted_networks: +# - !secret trusted_network_01 +# - !secret trusted_network_02 +# - !secret trusted_network_03 +# - !secret trusted_network_04 +# - fd00::/8 +# - ::ffff:959a:a7c9/32 +# trusted_users: +# 10.10.12.0/24: +# - !secret trusted_user_id_01 +# - !secret trusted_user_id_02 +# 10.10.14.0/24: +# - !secret trusted_user_id_01 +# - !secret trusted_user_id_02 +# 10.10.16.0/24: +# - !secret trusted_user_id_01 +# - !secret trusted_user_id_02 +# # - type: legacy_api_password + +#################################################################################################### +### HASSIO DOCKER PATH STARTS FROM /config ######################################## NOTE ### +#################################################################################################### + allowlist_external_dirs: +# - '/config/snapshots' + - '/config/www' + customize: !include_dir_merge_named configuration/customize + +#################################################################################################### +### HTTP ####################################################################################### +#################################################################################################### +http: +# api_password: !secret system_http_api + cors_allowed_origins: + - https://google.com + - https://www.home-assistant.io + - https://telegram.org + - https://house.savin.nyc + use_x_forwarded_for: true + trusted_proxies: + - 10.10.10.10 + - 10.10.11.11 +# - !secret trusted_proxy_01 +# ip_ban_enabled: true +# login_attempts_threshold: 5 + +#################################################################################################### +### INPUT BOOLEAN ############################################################# SETTINGS ### +#################################################################################################### +input_boolean: !include_dir_merge_named configuration/input_boolean + +#################################################################################################### +### INPUT DATE TIME ########################################################### SETTINGS ### +#################################################################################################### +input_datetime: !include_dir_merge_named configuration/input_datetime + +#################################################################################################### +### INPUT NUMBERS ############################################################# SETTINGS ### +#################################################################################################### +input_number: !include_dir_merge_named configuration/input_number + +#################################################################################################### +### INPUT SELECT ############################################################## SETTINGS ### +#################################################################################################### +input_select: !include_dir_merge_named configuration/input_select + +#################################################################################################### +### INPUT TEXT ################################################################ SETTINGS ### +#################################################################################################### +input_text: !include_dir_merge_named configuration/input_text + +light: !include_dir_merge_list configuration/light + +#logger: +# default: info +# logs: +# custom_components.: critical + +#################################################################################################### +### LOVELACE ################################################################### SERVICE ### +#################################################################################################### +lovelace: + mode: yaml + ################################################################################################## + ### CUSTOM MODULES ######################################################### RESOURCES ### + ################################################################################################## +################################################################################################## +### CUSTOM MODULES ######################################################### RESOURCES ### +################################################################################################## + resources: + - url: /local/community/webrtc/webrtc-camera.js + type: module + - url: /local/community/layout-card/layout-card.js + type: module + - url: /local/community/xiaomi-vacuum-map-card/xiaomi-vacuum-map-card.js + type: module + - url: /local/community/mini-graph-card/mini-graph-card-bundle.js + type: module + - url: /local/community/apexcharts-card/apexcharts-card.js + type: module + - url: /local/community/sidebar-card/sidebar-card.js + type: module + - url: /local/community/flipdown-timer-card/flipdown-timer-card.js + type: module + - url: /local/community/mini-media-player-card/mini-media-player-bundle.js + type: module + - url: /local/community/fold-entity-row/fold-entity-row.js + type: module + - url: /local/community/button-card/button-card.js + type: module + - url: /local/community/simple-thermostat-card/simple-thermostat.js + type: module + - url: /local/community/mushroom-card/mushroom.js + type: module + - url: /local/community/auto-entities/auto-entities.js + type: module + - url: /local/community/stack-in-card/stack-in-card.js + type: module + - url: /local/community/paper-buttons-row-card/paper-buttons-row.js + type: module + - url: /local/community/card-mod/card-mod.js + type: module + - url: /local/community/collapsable-cards/collapsable-cards.js + type: module + - url: /local/community/swipe-navigation/swipe-navigation.js + type: module + - url: /local/community/local-conditional-card/local-conditional-card.js + type: module + - url: /local/community/bubble-card/bubble-card.js + type: module + - url: /local/community/plotly-graph-card/plotly-graph-card.js + type: module + - url: /local/community/better-thermostat-ui-card/better-thermostat-ui-card.js + type: module + - url: /local/community/config-template-card/config-template-card.js + type: module + - url: /local/community/battery-state-card/battery-state-card.js + type: module + - url: /local/community/auto-entities-card/auto-entities.js + type: module + - url: /local/community/sonos-card/custom-sonos-card.js + type: module +# - url: /local/community/hass-bha-icons/hass-bha-icons.js +# type: js +# - url: /local/community//.js +# type: module + +#################################################################################################### +### MEDIA PLAYER ############################################################### DEVICES ### +#################################################################################################### +media_player: !include_dir_merge_list configuration/media_player + +#################################################################################################### +### NOTIFY ##################################################################### SERVICE ### +#################################################################################################### +notify: !include_dir_merge_list configuration/notify + +#################################################################################################### +### MQTT ####################################################################### SENSORS ### +#################################################################################################### +mqtt: !include_dir_merge_named configuration/mqtt + +#################################################################################################### +### PYTHON SCRIPTS ############################################################################# +#################################################################################################### +python_script: + +#################################################################################################### +### RECORDER ################################################################################### +#################################################################################################### +recorder: !include configuration/recorder/postgres.yml + +rest_command: !include_dir_merge_named configuration/rest-command + +#################################################################################################### +### SCENE ###################################################################### SERVICE ### +#################################################################################################### +scene: !include_dir_merge_list configuration/scene + +#################################################################################################### +### SENSORS #################################################################### DEVICES ### +#################################################################################################### +sensor: !include_dir_merge_list configuration/sensor + +#################################################################################################### +### SHELL COMMMAND ############################################################ SERVICES ### +#################################################################################################### +shell_command: !include_dir_merge_named configuration/shell_command + +#################################################################################################### +### SSDP ##################################################################### DISCOVERY ### +#################################################################################################### +ssdp: + +#################################################################################################### +### STREAM ##################################################################### SERVICE ### +#################################################################################################### +stream: + +#################################################################################################### +### SUN ######################################################################### SENSOR ### +#################################################################################################### +sun: + +#################################################################################################### +### SWITCHES ################################################################### DEVICES ### +#################################################################################################### +switch: !include_dir_merge_list configuration/switch + +#################################################################################################### +### SYSTEM HEALTH ############################################################## SERVICE ### +#################################################################################################### +system_health: + +#################################################################################################### +### TELEGRAM ################################################################### SERVICE ### +#################################################################################################### +telegram_bot: !include configuration/service/telegram.yaml + +#################################################################################################### +### TIMER ###################################################################### SERVICE ### +#################################################################################################### +# timer: !include_dir_merge_named configuration/timer + +#################################################################################################### +### TWILIO #################################################################### SERVICES ### +#################################################################################################### +twilio: !include configuration/service/twilio.yaml + +#################################################################################################### +### UTILITY METER ############################################################## SENSORS ### +#################################################################################################### +utility_meter: !include_dir_merge_named configuration/utility_meter + +#################################################################################################### +### WEATHER #################################################################### DEVICES ### +#################################################################################################### +weather: !include_dir_merge_list configuration/weather + +#################################################################################################### +### WEBHOOK #################################################################################### +#################################################################################################### +webhook: + +#################################################################################################### +### ZEROCONF ################################################################# DISCOVERY ### +#################################################################################################### +zeroconf: + +#################################################################################################### +### ZONES ###################################################################################### +#################################################################################################### +zone: !include_dir_merge_list configuration/zone diff --git a/configuration/automation/.android_tv_sources b/configuration/automation/.android_tv_sources new file mode 100644 index 0000000..9d513d3 --- /dev/null +++ b/configuration/automation/.android_tv_sources @@ -0,0 +1,32 @@ +Google Cast +com.android.systemui +com.google.android.katniss:interactor +com.google.android.ext.services +com.nvidia.blakepairing +com.dolby.android.audio.service +com.nvidia.shieldtech.accessoryui +com.nvidia.shield.remote.server +com.nvidia.osc +com.nvidia.app.messaging +com.android.providers.media.module +com.google.android.partnersetup +com.nvidia.shield.ask +com.google.android.katniss:search +Live Channels +com.google.android.tv:common +com.plexapp.mediaserver.smb +Netflix +Play Movies & TV +com.google.process.gservices +Play Store +com.google.android.inputmethod.latin +Android TV Launcher +com.plexapp.mediaserver.smb:sambaserver +com.google.android.gms +com.google.android.gms.persistent +Prime Video +com.android.providers.tv +com.pecana.iptvextremepro +com.google.android.tv.remote.service +com.google.android.tvrecommendations +com.google.android.youtube.tv diff --git a/configuration/automation/.learn_ir_broadlink b/configuration/automation/.learn_ir_broadlink new file mode 100644 index 0000000..30aab22 --- /dev/null +++ b/configuration/automation/.learn_ir_broadlink @@ -0,0 +1,42 @@ +action: remote.learn_command +data: + device: projector_lg_hu810pw + command: Power Off + command_type: ir +target: + entity_id: remote.broadlink_rm4_mini + + +- action: remote.send_command + target: + entity_id: remote.bedroom + data: + device: television + command: power + +action: remote.send_command +target: + entity_id: remote.broadlink_rm4_mini +data: + device: projector_lg_hu810pw + command: "Power On" + + +action: remote.send_command +target: + entity_id: remote.broadlink_rm4_mini +data: + device: projector_lg_hu810pw + command: + - "Power On" + - "b64:JgBUABITERQSNhISEhMSEhISEhITNhM2EhITNRM2EjcTNRM2EhITERMREzcSEhISExETERM2EjcTNhISEjYTNRM3EjYTAAUAAAEhRxIADBMAASFIEgANBQ==" + +action: remote.send_command +target: + entity_id: remote.broadlink_rm4_mini +data: + device: projector_lg_hu810pw + command: + - "Power Off" + - "b64:JgBYAAABII8TERMSEjcTERMRExISEhISEjYTNxISEjYTNhI2EjcTNhISEhITERM1ExITEhISExETNhI2EjcTERM2EjYTNhI3EgAFAAABIUgSAAwTAAEhRxMADQU=" + diff --git a/configuration/automation/.new b/configuration/automation/.new new file mode 100644 index 0000000..564540f --- /dev/null +++ b/configuration/automation/.new @@ -0,0 +1,41 @@ +- id: test_id + alias: HassTurnOn/Off with Duration + description: "" + trigger: + - platform: conversation + command: + - "[turn] on [{area} {name}|{name} [in {area}]] for {time}" + - "[turn] [{area} {name}|{name} [in {area}]] [to] on for {time}" + id: "on" + - platform: conversation + command: + - "turn off [{area} {name}|{name} [in {area}]] for {time}" + - "[turn] [{area} {name}|{name} [in {area}]] [to] off for {time}" + id: "off" + condition: [] + action: + - service: conversation.process + data: + text: "{{ trigger.sentence|replace(trigger.slots.time,'')|replace('for', '')|trim }}" + agent_id: conversation.home_assistant + - variables: + step_2: "{{ 'off' if trigger.id|bool else 'on'}}" + - delay: + milliseconds: 250 + - service: conversation.process + data: + agent_id: conversation.home_assistant + text: | + {{ trigger.sentence|replace('turn on','turn '~step_2)|replace('turn off','turn '~step_2) + |replace('on for',step_2~' in')|replace('off for',step_2~' in')|replace('for', 'in')|trim }} + mode: single + + +service: media_player.play_media +target: + entity_id: media_player.onju_voice_02_onju_voice_02 +data: + announce: true + media_content_id: >- + https://soundboardguy.com/wp-content/uploads/2022/09/we-are-the-champions-copia.mp3 + media_content_type: audio/mpeg diff --git a/configuration/automation/.templates b/configuration/automation/.templates new file mode 100644 index 0000000..cbbf0c1 --- /dev/null +++ b/configuration/automation/.templates @@ -0,0 +1,91 @@ +{{ label_entities(label_id('external')) | expand | map(attribute='entity_id') | select('in', label_entities("door")) | list }} + +{{ trigger.to_state.attributes.friendly_name }} + +# Get Area Name by Triggered EntityID +{{ area_name(trigger.entity_id) }} + +{{ states.binary_sensor | selectattr('entity_id','in',area_entities('Living Room')) | selectattr('attributes.device_class', 'eq', 'window') | selectattr('state','eq', 'off') | list }} + +{{ expand(area_entities('Dining') | select('match', 'light')) | selectattr('state', 'eq', 'on') | selectattr('attributes.hs_color', 'defined') | map(attribute='entity_id') | list }} + +{{ device_entities('67326e6412f365984dbd6cc8e9546d3e') | expand | map(attribute='entity_id') | select('match','switch.*conversation') | list }} + + +{{ integration_entities('tasmota') | map('device_id') | list }} + +{{ data.messages | map(attribute="content") | list | last }} + +# Get Device Name +{{ device_attr('67326e6412f365984dbd6cc8e9546d3e', 'name') }} + +# Get Device Name by User +{{ device_attr('67326e6412f365984dbd6cc8e9546d3e', 'name_by_user') }} + + +{% set entities = device_entities('67326e6412f365984dbd6cc8e9546d3e') | expand | map(attribute='entity_id') | list %} +{%- for e in entities %} +{%- if 'switch' in e and 'continued' in e %} +{{e}} +{%- endif %} +{%- endfor %} + + +{%- set t = data.messages | map(attribute="content") | list | last -%} +{%- set a = namespace(value=false) -%} +{%- for w in ['need', 'confirm', '?'] -%} +{%- if w in t -%} +{%- set a.value=true -%} +{%- endif -%} +{%- endfor -%} +{{ a.value }} + +{% set my_list = ["apple", "banana", "cherry"] %} {% set first_letters = my_list | map('first') | join('') %} {{ first_letters }} + + +{% set ns = namespace(domains=[]) %} +{%- for s in states -%} +{%- set ns.domains = (ns.domains + [s.domain])|unique|list -%} +{%- endfor %} +I have {{ states|length }} states in Home Assistant. +By domain these are; +{%- for domain in ns.domains %} +- {{ states[domain]|length }} {{ domain }} +{%- endfor %} + +I have 1698 states in Home Assistant. +By domain these are; +- 4 person +- 43 update +- 295 binary_sensor +- 2 stt +- 3 tts +- 24 scene +- 52 light +- 5 script +- 43 input_number +- 34 input_boolean +- 7 input_select +- 12 zone +- 579 sensor +- 1 conversation +- 38 media_player +- 1 sun +- 5 input_text +- 2 input_datetime +- 18 camera +- 163 button +- 61 select +- 62 switch +- 44 number +- 5 fan +- 4 todo +- 1 weather +- 1 remote +- 8 device_tracker +- 54 event +- 1 vacuum +- 2 cover +- 2 lock +- 121 automation +- 1 climate \ No newline at end of file diff --git a/configuration/automation/alert_garage_cover_moving.yaml b/configuration/automation/alert_garage_cover_moving.yaml new file mode 100644 index 0000000..6724e8e --- /dev/null +++ b/configuration/automation/alert_garage_cover_moving.yaml @@ -0,0 +1,34 @@ +--- +- id: garage_alert_on_on_door_is_moving + alias: '[Garage] Alert ON on Cover Moves' + initial_state: 'true' + trigger: + - platform: state + entity_id: cover.garage_gate + to: 'opening' + - platform: state + entity_id: cover.garage_gate + to: 'closing' + action: + - service: lifx.effect_pulse + data: + entity_id: light.garage_gate_01 + brightness: 255 + rgb_color: [255, 0, 0] + mode: strobe + cycles: 150 + +- id: garage_alert_off_on_door_is_stopped + alias: '[Garage] Alert OFF on Cover Stopes' + initial_state: 'true' + trigger: + - platform: state + entity_id: cover.garage_gate + to: 'open' + - platform: state + entity_id: cover.garage_gate + to: 'closed' + action: + - service: lifx.effect_stop + data: + entity_id: light.garage_gate_01 diff --git a/configuration/automation/alert_lock_right_code.yaml b/configuration/automation/alert_lock_right_code.yaml new file mode 100644 index 0000000..3c949bd --- /dev/null +++ b/configuration/automation/alert_lock_right_code.yaml @@ -0,0 +1,74 @@ +--- +- id: lock_alert_on_on_entered_correct_code + alias: '[Lock] Alert ON on Entered Correct Code' + initial_state: 'true' + trigger: +# condition: +# - condition: template +# value_template: "{{ trigger.to_state.state in ['','not_home'] }}" + - platform: state + entity_id: sensor.lock_01_alarm_type + to: '19' + action: + - parallel: + - service: lifx.effect_pulse + data: + entity_id: + - light.porch_01 + - light.garage_gate_01 + - light.backyard_01 + brightness: 255 + rgb_color: [0, 255, 0] + mode: strobe + - service: zwave_js.bulk_set_partial_config_parameters + target: + entity_id: switch.switch_kitchen_01 + data: + parameter: '8' + value: 67045970 + - delay: + seconds: 10 + - service: zwave_js.bulk_set_partial_config_parameters + target: + entity_id: switch.switch_kitchen_01 + data: + parameter: '8' + value: 65536 + mode: single + +- id: lock_alert_on_on_locking_by_keypad + alias: '[Lock] Alert ON on Locking by Keypad' + initial_state: 'true' + trigger: + - platform: state + entity_id: sensor.lock_01_alarm_type + to: '18' +# condition: +# - condition: template +# value_template: "{{ trigger.to_state.state in ['18','25'] }}" + action: + - parallel: + - service: lifx.effect_pulse + data: + entity_id: + - light.porch_01 + - light.garage_gate_01 + - light.backyard_01 + brightness: 255 + rgb_color: [0, 0, 255] + mode: strobe + - service: zwave_js.bulk_set_partial_config_parameters + target: + entity_id: switch.switch_kitchen_01 + data: + parameter: '8' + value: 33491456 + - delay: + seconds: 10 + - service: zwave_js.bulk_set_partial_config_parameters + target: + entity_id: switch.switch_kitchen_01 + data: + parameter: '8' + value: 65536 + mode: single diff --git a/configuration/automation/alert_person_on_driveway.yaml b/configuration/automation/alert_person_on_driveway.yaml new file mode 100644 index 0000000..843df04 --- /dev/null +++ b/configuration/automation/alert_person_on_driveway.yaml @@ -0,0 +1,2 @@ +--- +# doorbell_person_detected \ No newline at end of file diff --git a/configuration/automation/app_humidity_suppression.yaml b/configuration/automation/app_humidity_suppression.yaml new file mode 100644 index 0000000..1eee639 --- /dev/null +++ b/configuration/automation/app_humidity_suppression.yaml @@ -0,0 +1,54 @@ +--- +- id: app_humidity_suppression_on + alias: '[App] Humidity Suppression ON' + initial_state: 'true' + condition: + - and: + - condition: state + entity_id: input_boolean.app_climate_humidity_suppression_status + state: 'on' + - condition: time + after: input_datetime.app_humidity_suppression_time_start + before: input_datetime.app_humidity_suppression_time_end + trigger: + - platform: numeric_state + entity_id: + - sensor.climate_bathroom_master_01_humidity + - sensor.climate_bathroom_bedroom_01_humidity + - sensor.climate_bathroom_living_01_humidity + above: input_number.app_climate_humidity_suppression_humidity_level + action: + - service: fan.turn_on + target: + entity_id: |- + {% if area_id(trigger.entity_id) in label_areas('bathroom') -%} + {{ area_entities(area_name(trigger.entity_id)) | select('match', 'fan') | list | first }} + {%- endif %} +# - fan.bathroom_master + - service: notify.telegram_alex + data_template: + message: 'Humidity suppression has started in {{ area_name(trigger.entity_id) }} ({{ area_id(trigger.entity_id) }})' + +- id: app_humidity_suppression_off + alias: '[App] Humidity Suppression OFF' + initial_state: 'true' + trigger: + - platform: time + at: input_datetime.app_humidity_suppression_time_end + - platform: numeric_state + entity_id: + - sensor.climate_bathroom_master_01_humidity + - sensor.climate_bathroom_bedroom_01_humidity + - sensor.climate_bathroom_living_01_humidity + below: input_number.app_climate_humidity_suppression_humidity_level + action: + - service: fan.turn_off + target: + entity_id: |- + {% if area_id(trigger.entity_id) in label_areas('bathroom') -%} + {{ area_entities(area_name(trigger.entity_id)) | select('match', 'fan') | list | first }} + {%- endif %} +# - fan.bathroom_master + - service: notify.telegram_alex + data_template: + message: 'Humidity suppression has done in {{ area_name(trigger.entity_id) }} ({{ area_id(trigger.entity_id) }})' diff --git a/configuration/automation/app_telegram_test.yaml b/configuration/automation/app_telegram_test.yaml new file mode 100644 index 0000000..688e5f5 --- /dev/null +++ b/configuration/automation/app_telegram_test.yaml @@ -0,0 +1,79 @@ +--- +#Unhandled update: Update(my_chat_member=ChatMemberUpdated(chat=Chat(api_kwargs={'all_members_are_administrators': True}, id=-4514608626, title='Reciepts', type=), date=datetime.datetime(2024, 9, 29, 21, 24, 28, tzinfo=), from_user=User(first_name='Alexander', id=67239746, is_bot=False, language_code='en', last_name='Savin', username='alex_savin'), new_chat_member=ChatMemberMember(status=, user=User(first_name='Home Assistant', id=503378800, is_bot=True, username='home_assistant_savin_bot')), old_chat_member=ChatMemberLeft(status=, user=User(first_name='Home Assistant', id=503378800, is_bot=True, username='home_assistant_savin_bot'))), update_id=211080293) +#Unhandled update: Update(my_chat_member=ChatMemberUpdated(chat=Chat(id=-1002373778311, title='Reciepts', type=), date=datetime.datetime(2024, 9, 29, 21, 25, 14, tzinfo=), from_user=User(first_name='Alexander', id=67239746, is_bot=False, language_code='en', last_name='Savin', username='alex_savin'), new_chat_member=ChatMemberMember(status=, user=User(first_name='Home Assistant', id=503378800, is_bot=True, username='home_assistant_savin_bot')), old_chat_member=ChatMemberLeft(status=, user=User(first_name='Home Assistant', id=503378800, is_bot=True, username='home_assistant_savin_bot'))), update_id=211080294) +#Unhandled update: Update(my_chat_member=ChatMemberUpdated(chat=Chat(id=-1002373778311, title='Reciepts', type=), date=datetime.datetime(2024, 9, 29, 21, 25, 14, tzinfo=), from_user=User(first_name='Alexander', id=67239746, is_bot=False, language_code='en', last_name='Savin', username='alex_savin'), new_chat_member=ChatMemberAdministrator(api_kwargs={'can_manage_voice_chats': True}, can_be_edited=False, can_change_info=True, can_delete_messages=True, can_delete_stories=True, can_edit_stories=True, can_invite_users=False, can_manage_chat=True, can_manage_topics=True, can_manage_video_chats=True, can_pin_messages=True, can_post_stories=True, can_promote_members=False, can_restrict_members=False, is_anonymous=False, status=, user=User(first_name='Home Assistant', id=503378800, is_bot=True, username='home_assistant_savin_bot')), old_chat_member=ChatMemberMember(status=, user=User(first_name='Home Assistant', id=503378800, is_bot=True, username='home_assistant_savin_bot'))), update_id=211080297) + +#- alias: 'Telegram bot turn on lamp' +# trigger: +# platform: event +# event_type: telegram_command +# event_data: +# command: '/lamp-on' +# action: +# service: light.turn_on +# entity_id: light.treelamp + +- alias: 'Telegram bot boil kettle' + trigger: + platform: event + event_type: telegram_text + event_data: + text: 'boil the kettle' + action: + - service: telegram_bot.send_message + data_template: + target: '{{ trigger.event.data.chat_id }}' + message: 'Ok {{ trigger.event.data["from_first"] }}, boiling the kettle!' + +#- alias: '[App] Telegram image' +# trigger: +# platform: event +# event_type: telegram_sent +# action: +# - service: notify.telegram_alex +# data_template: +# message: 'Got an image' + +- id: 'telegramtestcallback' + alias: 'Telegram callback to test notifications' + trigger: + platform: event + event_type: telegram_command + event_data: + command: '/testme' + action: + - event: test_telegram_bot_notify + +- id: 'telegramtesttrigger' + alias: 'Telegram bot test sequence' + trigger: + - platform: event + event_type: test_telegram_bot_notify + condition: [] + action: + - service: notify.telegram_alex + data_template: + title: "From Home-Assistant:" + message: "The is a test of the laundry notification system.\nChoose a notification to test:" + data: + inline_keyboard: + - 'Dryer:/testdryer, Washer:/testwasher' + - 'Cancel:/removekeyboard' + +- id: 'telegramremoveinline' + alias: 'Telegram callback to remove keyboard' + trigger: + platform: event + event_type: telegram_callback + event_data: + data: '/removekeyboard' + action: + - service: telegram_bot.answer_callback_query + data_template: + callback_query_id: '{{ trigger.event.data.id }}' + message: 'OK, dismissing notification' + - service: telegram_bot.edit_replymarkup + data_template: + message_id: '{{ trigger.event.data.message.message_id }}' + chat_id: '{{ trigger.event.data.chat_id }}' + inline_keyboard: [] diff --git a/configuration/automation/app_va_night_mode.yaml b/configuration/automation/app_va_night_mode.yaml new file mode 100644 index 0000000..a3a934b --- /dev/null +++ b/configuration/automation/app_va_night_mode.yaml @@ -0,0 +1,62 @@ +--- +- id: app_va_night_mode_on + alias: '[App] Voice Assistants Night Mode On' + initial_state: 'true' + trigger: + - platform: time + at: input_datetime.app_va_night_mode_time_start + condition: + - and: + - condition: state + entity_id: input_boolean.app_va_night_mode_status + state: 'on' + - condition: time + after: input_datetime.app_va_night_mode_time_start + before: input_datetime.app_va_night_mode_time_end + action: + - service: switch.turn_off + entity_id: + - switch.onju_voice_01_wake_word_listening_light + - switch.onju_voice_02_wake_word_listening_light + - switch.onju_voice_03_wake_word_listening_light + - switch.onju_voice_04_wake_word_listening_light + - switch.onju_voice_05_wake_word_listening_light + - service: media_player.volume_set + data_template: + entity_id: + - media_player.onju_voice_01_onju_voice_01 + - media_player.onju_voice_02_onju_voice_02 + - media_player.onju_voice_03_onju_voice_03 + - media_player.onju_voice_04_onju_voice_04 + - media_player.onju_voice_05_onju_voice_05 + volume_level: 0.25 + - service: notify.telegram_alex + data_template: + message: 'Voice Assistant Night mode is started' + +- id: app_va_night_mode_off + alias: '[App] Voice Assistants Night Mode OFF' + initial_state: 'true' + trigger: + - platform: time + at: input_datetime.app_va_night_mode_time_end + action: + - service: switch.turn_on + entity_id: + - switch.onju_voice_01_wake_word_listening_light + - switch.onju_voice_02_wake_word_listening_light + - switch.onju_voice_03_wake_word_listening_light + - switch.onju_voice_04_wake_word_listening_light + - switch.onju_voice_05_wake_word_listening_light + - service: media_player.volume_set + data_template: + entity_id: + - media_player.onju_voice_01_onju_voice_01 + - media_player.onju_voice_02_onju_voice_02 + - media_player.onju_voice_03_onju_voice_03 + - media_player.onju_voice_04_onju_voice_04 + - media_player.onju_voice_05_onju_voice_05 + volume_level: 1 + - service: notify.telegram_alex + data_template: + message: 'Voice Assistant Night mode is finished' diff --git a/configuration/automation/conversation_test.yaml b/configuration/automation/conversation_test.yaml new file mode 100644 index 0000000..b020be7 --- /dev/null +++ b/configuration/automation/conversation_test.yaml @@ -0,0 +1,22 @@ +--- +- alias: '[Conversation] Test' + initial_state: "true" + condition: + condition: template + value_template: '{%- set t = trigger.event.data.messages | map(attribute="content") | list | last -%}{%- set a = namespace(value=false) -%}{%- for w in ["need", "confirm", "?"] -%}{%- if w in t -%}{%- set a.value=true -%}{%- endif -%}{%- endfor -%}{{ a.value }}' + trigger: + - platform: event + event_type: extended_openai_conversation.conversation.finished +# event_data: +# user_input: +# device_id: +# condition: +# condition: template +# value_template: '{{ trigger.event.data.node_id == 23 or trigger.event.data.node_id == 24 or trigger.event.data.node_id == 25 }}' + action: + - service: switch.turn_on + target: + entity_id: "{% set entities = device_entities(trigger.event.data.user_input.device_id) | expand | map(attribute='entity_id') | list %}{%- for e in entities %}{%- if 'switch' in e and 'continued' in e %}{{e}}{%- endif %}{%- endfor %}" + - service: notify.telegram_alex + data_template: + message: 'Finished a conversation on the Onju Voice ID ({{ trigger.event.data.user_input.device_id }})\n Response: {{ trigger.event.data.messages | map(attribute="content") | list | last }}' diff --git a/configuration/automation/global_ir_lights.yaml b/configuration/automation/global_ir_lights.yaml new file mode 100644 index 0000000..73cf107 --- /dev/null +++ b/configuration/automation/global_ir_lights.yaml @@ -0,0 +1,42 @@ +--- +- id: global_ir_light_on + alias: '[Lifx] Infrared On' + initial_state: "true" + trigger: + - platform: state + entity_id: sun.sun + from: "above_horizon" + to: "below_horizon" + action: + service: select.select_option + data: + option: "100%" + entity_id: + - select.aisle_ceiling_01_infrared_brightness +# - select.backyard_01_infrared_brightness +# - select.bedroom_guest_ceiling_01_infrared_brightness + - select.bedroom_master_ceiling_01_infrared_brightness +# - select.bedroom_olivia_ceiling_01_infrared_brightness + - select.garage_gate_01_infrared_brightness + - select.garage_ceiling_01_infrared_brightness + +- id: global_ir_light_off + alias: '[Lifx] Infrared Off' + initial_state: 'true' + trigger: + - platform: state + entity_id: sun.sun + from: "below_horizon" + to: "above_horizon" + action: + service: select.select_option + data: + option: "Disabled" + entity_id: + - select.aisle_ceiling_01_infrared_brightness +# - select.backyard_01_infrared_brightness +# - select.bedroom_guest_ceiling_01_infrared_brightness + - select.bedroom_master_ceiling_01_infrared_brightness +# - select.bedroom_olivia_ceiling_01_infrared_brightness + - select.garage_gate_01_infrared_brightness + - select.garage_ceiling_01_infrared_brightness diff --git a/configuration/automation/global_reset_utility_meters.yaml b/configuration/automation/global_reset_utility_meters.yaml new file mode 100644 index 0000000..0067bbf --- /dev/null +++ b/configuration/automation/global_reset_utility_meters.yaml @@ -0,0 +1,4 @@ +--- +#- +# - service: utility_meter.reset +# entity_id \ No newline at end of file diff --git a/configuration/automation/global_smoke_co_detected.yaml b/configuration/automation/global_smoke_co_detected.yaml new file mode 100644 index 0000000..5b64fc0 --- /dev/null +++ b/configuration/automation/global_smoke_co_detected.yaml @@ -0,0 +1,24 @@ +--- +- id: smoke_detected + alias: '[App] Smoke Detected' + initial_state: 'true' + trigger: + - platform: state + entity_id: binary_sensor.smoke_detector_01 + to: "on" + action: + - service: notify.telegram_alex + data_template: + message: "Smoke Detected" + +- id: co_detected + alias: '[App] CO Detected' + initial_state: 'true' + trigger: + - platform: state + entity_id: binary_sensor.carbon_monoxide_detector_01 + to: "on" + action: + - service: notify.telegram_alex + data_template: + message: "CO Detected" diff --git a/configuration/automation/global_tasmotas_fix_unavailable.yaml b/configuration/automation/global_tasmotas_fix_unavailable.yaml new file mode 100644 index 0000000..ab69e30 --- /dev/null +++ b/configuration/automation/global_tasmotas_fix_unavailable.yaml @@ -0,0 +1,60 @@ +--- +- id: global_tasmotas_fix_unavailable_fan_01 + alias: '[Global] Reboot Master Bathroom Fan if unavailable' + trigger: + - entity_id: fan.bathroom_master + for: 00:00:10 + platform: state + to: 'unavailable' + action: + - service: shell_command.restart_fan01 + +- id: global_tasmotas_fix_unavailable_fan_02 + alias: '[Global] Reboot Bedroom Bathroom Fan if unavailable' + trigger: + - entity_id: fan.bathroom_bedroom + for: 00:00:10 + platform: state + to: 'unavailable' + action: + - service: shell_command.restart_fan02 + +- id: global_tasmotas_fix_unavailable_fan_03 + alias: '[Global] Reboot Maxim Bedroom Fan if unavailable' + trigger: + - entity_id: fan.bedroom_maxim + for: 00:00:10 + platform: state + to: 'unavailable' + action: + - service: shell_command.restart_fan03 + +- id: global_tasmotas_fix_unavailable_fan_04 + alias: '[Global] Reboot Olivia Bedroom Fan if unavailable' + trigger: + - entity_id: fan.bedroom_olivia + for: 00:00:10 + platform: state + to: 'unavailable' + action: + - service: shell_command.restart_fan04 + +- id: global_tasmotas_fix_unavailable_fan_05 + alias: '[Global] Reboot Living Room Bathroom Fan if unavailable' + trigger: + - entity_id: fan.bathroom_living_room + for: 00:00:10 + platform: state + to: 'unavailable' + action: + - service: shell_command.restart_fan05 + +- id: global_tasmotas_fix_unavailable_light_01 + alias: '[Global] Reboot Master Bathroom Fan if unavailable' + trigger: + - entity_id: light.kitchen_decorating_01 + for: 00:00:10 + platform: state + to: 'unavailable' + action: + - service: shell_command.restart_light01 diff --git a/configuration/automation/global_time_of_the_day.yaml b/configuration/automation/global_time_of_the_day.yaml new file mode 100644 index 0000000..62b27c4 --- /dev/null +++ b/configuration/automation/global_time_of_the_day.yaml @@ -0,0 +1,26 @@ +# Parts of the Day +# ------------------------------------------ +# Morning 5 am to 12 pm (noon) +# Early morning 5 am to 8 am +# Late morning 11 am to 12pm +# Afternoon 12 pm to 5 pm +# Early afternoon 1 pm to 3 pm +# Late afternoon 4 pm to 5 pm +# Evening 5 pm to 9 pm +# Early evening 5 pm to 7 pm +# Night 9 pm to 4 am + +- alias: '[Global] Set time of the day' + initial_state: 'true' + trigger: + platform: time_pattern + minutes: 0 + action: + service: input_select.select_option + data_template: + entity_id: input_select.parts_of_the_day + option: > + {% if now().hour < 5 %}Night + {% elif now().hour < 12 %}Morning + {% elif now().hour < 18 %}Afternoon + {% else %}Evening{% endif %} diff --git a/configuration/automation/global_zigbee_connection_status.yaml b/configuration/automation/global_zigbee_connection_status.yaml new file mode 100644 index 0000000..3c89936 --- /dev/null +++ b/configuration/automation/global_zigbee_connection_status.yaml @@ -0,0 +1,18 @@ +--- +- alias: "[Global] Zigbee client disconnected" + trigger: + platform: state + entity_id: + - binary_sensor.zigbee2mqtt_01_zigbee2mqtt_serial_connected_01 + - binary_sensor.zigbee2mqtt_01_zigbee2mqtt_serial_connected_02 + - binary_sensor.zigbee2mqtt_01_zigbee2mqtt_serial_connected_03 + to: "off" + action: + - service: esphome.onju_voice_02_notification_on + data: + color: [100,0,0] + brightness: 100 + effect: none + - service: notify.telegram_alex + data_template: + message: 'Zigbee client disconnected' diff --git a/configuration/automation/light_aisle_night.yaml b/configuration/automation/light_aisle_night.yaml new file mode 100644 index 0000000..1c93de6 --- /dev/null +++ b/configuration/automation/light_aisle_night.yaml @@ -0,0 +1,54 @@ +--- +#################################################################################################### +### AISLE LIGHTS ############################################################################### +#################################################################################################### +- alias: '[Aisle] Night Lights On' + initial_state: 'true' + trigger: + platform: state + entity_id: + - binary_sensor.presence_stairwell_sensor_1 + from: 'off' + to: 'on' + condition: + condition: and + conditions: + - condition: state + entity_id: light.aisle_ceiling_all + state: 'off' + - condition: or + conditions: + - condition: state + entity_id: sun.sun + state: 'below_horizon' + - condition: template + value_template: '{{ ( states.sensor.presence_stairwell_light_level.state | int ) < ( states.input_number.app_light_light_lux_mininum.state | int ) }}' + action: + - service: light.turn_on + entity_id: + - light.aisle_ceiling_all + data_template: + rgb_color: [51, 46, 255] + brightness: 20 + transition: "{{ states.input_number.app_light_light_transition_time.state | int }}" + +- alias: '[Aisle] Night Lights Off' + initial_state: 'true' + trigger: + platform: state + entity_id: + - binary_sensor.presence_stairwell_sensor_1 + from: 'on' + to: 'off' + for: + seconds: 5 + condition: + condition: state + entity_id: light.aisle_ceiling_all + state: 'on' + action: + - service: light.turn_off + entity_id: + - light.aisle_ceiling_all + data_template: + transition: "{{ states.input_number.app_light_light_transition_time.state | int }}" diff --git a/configuration/automation/light_auto_bathroom_master.yaml b/configuration/automation/light_auto_bathroom_master.yaml new file mode 100644 index 0000000..2dd0f1a --- /dev/null +++ b/configuration/automation/light_auto_bathroom_master.yaml @@ -0,0 +1,37 @@ +--- +- alias: '[Bathroom Master] Lights Auto On' + initial_state: 'true' + trigger: + platform: state + entity_id: + - binary_sensor.presence_03_presence + from: 'off' + to: 'on' + action: + - service: light.turn_on + data_template: + entity_id: light.bathroom_master_wall_01 + brightness_pct: > + {% set hour = now().hour | int %} + {%- if hour >= 8 and hour < 19 -%} + 100.0 + {%- elif hour >= 19 and hour < 23 -%} + 75.0 + {%- elif hour >= 6 and hour < 8 -%} + 50.0 + {%- elif ( hour >= 23 and hour < 24 ) and ( hour >= 0 and hour < 6 ) -%} + 15.0 + {%- endif -%} + +- alias: '[Bathroom Master] Lights Auto Off' + initial_state: 'true' + trigger: + platform: state + entity_id: + - binary_sensor.presence_03_presence + from: 'on' + to: 'off' + action: + - service: light.turn_off + entity_id: + - light.bathroom_master_wall_01 diff --git a/configuration/automation/light_auto_bedroom_master.yaml b/configuration/automation/light_auto_bedroom_master.yaml new file mode 100644 index 0000000..48c4cd2 --- /dev/null +++ b/configuration/automation/light_auto_bedroom_master.yaml @@ -0,0 +1,37 @@ +--- +#- alias: '[Bedroom Master] Lights Auto On' +# initial_state: 'true' +# trigger: +# platform: state +# entity_id: +# - input_boolean.occupancy_bedroom_master +# to: 'on' +# condition: +# condition: and +# conditions: +# - condition: state +# entity_id: input_boolean.bedroom_master_light_state +# state: 'off' +# - condition: or +# conditions: +# - condition: state +# entity_id: sun.sun +# state: 'below_horizon' +# - condition: template +# value_template: '{{ ( states.sensor.presence_bedroom_master_light_level.state | int ) < ( states.input_number.app_light_light_lux_mininum.state | int ) }}' +# action: +# - service: input_boolean.turn_on +# entity_id: +# - input_boolean.bedroom_master_light_state + +- alias: '[Bedroom Master] Lights Auto Off' + initial_state: 'true' + trigger: + platform: state + entity_id: + - input_boolean.occupancy_bedroom_master + to: 'off' + action: + - service: input_boolean.turn_off + entity_id: + - input_boolean.bedroom_master_light_state diff --git a/configuration/automation/light_auto_bedroom_max.yaml b/configuration/automation/light_auto_bedroom_max.yaml new file mode 100644 index 0000000..20b9856 --- /dev/null +++ b/configuration/automation/light_auto_bedroom_max.yaml @@ -0,0 +1,37 @@ +--- +#- alias: '[Bedroom Max] Lights Auto On' +# initial_state: 'true' +# trigger: +# platform: state +# entity_id: +# - input_boolean.occupancy_bedroom_max +# to: 'on' +# condition: +# condition: and +# conditions: +# - condition: state +# entity_id: input_boolean.bedroom_max_light_state +# state: 'off' +# - condition: or +# conditions: +# - condition: state +# entity_id: sun.sun +# state: 'below_horizon' +# - condition: template +# value_template: '{{ ( states.sensor.presence_bedroom_max_light_level.state | int ) < ( states.input_number.app_light_light_lux_mininum.state | int ) }}' +# action: +# - service: input_boolean.turn_on +# entity_id: +# - input_boolean.bedroom_max_light_state + +- alias: '[Bedroom Max] Lights Auto Off' + initial_state: 'true' + trigger: + platform: state + entity_id: + - input_boolean.occupancy_bedroom_max + to: 'off' + action: + - service: input_boolean.turn_off + entity_id: + - input_boolean.bedroom_max_light_state diff --git a/configuration/automation/light_auto_bedroom_olivia.yaml b/configuration/automation/light_auto_bedroom_olivia.yaml new file mode 100644 index 0000000..239f0b5 --- /dev/null +++ b/configuration/automation/light_auto_bedroom_olivia.yaml @@ -0,0 +1,37 @@ +--- +#- alias: '[Bedroom Olivia] Lights Auto On' +# initial_state: 'true' +# trigger: +# platform: state +# entity_id: +# - input_boolean.occupancy_bedroom_olivia +# to: 'on' +# condition: +# condition: and +# conditions: +# - condition: state +# entity_id: input_boolean.bedroom_olivia_light_state +# state: 'off' +# - condition: or +# conditions: +# - condition: state +# entity_id: sun.sun +# state: 'below_horizon' +# - condition: template +# value_template: '{{ ( states.sensor.presence_bedroom_olivia_light_level.state | int ) < ( states.input_number.app_light_light_lux_mininum.state | int ) }}' +# action: +# - service: input_boolean.turn_on +# entity_id: +# - input_boolean.bedroom_olivia_light_state + +- alias: '[Bedroom Olivia] Lights Auto Off' + initial_state: 'true' + trigger: + platform: state + entity_id: + - input_boolean.occupancy_bedroom_olivia + to: 'off' + action: + - service: input_boolean.turn_off + entity_id: + - input_boolean.bedroom_olivia_light_state diff --git a/configuration/automation/light_auto_decoration_entrance.yaml b/configuration/automation/light_auto_decoration_entrance.yaml new file mode 100644 index 0000000..e36cdd4 --- /dev/null +++ b/configuration/automation/light_auto_decoration_entrance.yaml @@ -0,0 +1,29 @@ +--- +- alias: '[Lights] Decoration Entrance Lights ON' + trigger: + platform: sun + event: sunset + offset: '+00:15:00' + action: + - service: light.turn_on + entity_id: + - light.porch_01 + - light.garage_gate_01 + - light.frontyard_decoration_01 + - service: switch.turn_on + entity_id: + - switch.outlet_garage_01 + +- alias: '[Lights] Decoration Entrance Lights ON' + trigger: + platform: time + at: "23:55:00" + action: + - service: light.turn_off + entity_id: + - light.frontyard_decoration_01 + - light.porch_01 + - light.garage_gate_01 + - service: switch.turn_off + entity_id: + - switch.outlet_garage_01 diff --git a/configuration/automation/light_auto_garage.yaml b/configuration/automation/light_auto_garage.yaml new file mode 100644 index 0000000..deccdbe --- /dev/null +++ b/configuration/automation/light_auto_garage.yaml @@ -0,0 +1,39 @@ +--- +- alias: '[Garage] Lights Auto On' + initial_state: 'true' + trigger: + platform: state + entity_id: + - binary_sensor.presence_garage_sensor_1 + from: 'off' + to: 'on' + condition: + condition: and + conditions: + - condition: state + entity_id: light.garage_ceiling_01 + state: 'off' + - condition: or + conditions: + - condition: state + entity_id: sun.sun + state: 'below_horizon' + - condition: template + value_template: '{{ ( states.sensor.presence_garage_light_level.state | int ) < ( states.input_number.app_light_light_lux_mininum.state | int ) }}' + action: + - service: light.turn_on + entity_id: + - light.garage_ceiling_01 + +- alias: '[Garage] Lights Auto Off' + initial_state: 'true' + trigger: + platform: state + entity_id: + - binary_sensor.presence_garage_sensor_1 + from: 'on' + to: 'off' + action: + - service: light.turn_off + entity_id: + - light.garage_ceiling_01 diff --git a/configuration/automation/light_auto_kitchen.yaml b/configuration/automation/light_auto_kitchen.yaml new file mode 100644 index 0000000..b279f43 --- /dev/null +++ b/configuration/automation/light_auto_kitchen.yaml @@ -0,0 +1,37 @@ +--- +- alias: '[Kitchen] Lights Auto On' + initial_state: 'true' + trigger: + platform: state + entity_id: + - input_boolean.occupancy_kitchen + to: 'on' + condition: + condition: and + conditions: + - condition: state + entity_id: input_boolean.kitchen_light_state + state: 'off' + - condition: or + conditions: + - condition: state + entity_id: sun.sun + state: 'below_horizon' + - condition: template + value_template: '{{ ( states.sensor.presence_kitchen_light_level.state | int ) < ( states.input_number.app_light_light_lux_mininum.state | int ) }}' + action: + - service: input_boolean.turn_on + entity_id: + - input_boolean.kitchen_light_state + +- alias: '[Kitchen] Lights Auto Off' + initial_state: 'true' + trigger: + platform: state + entity_id: + - input_boolean.occupancy_kitchen + to: 'off' + action: + - service: input_boolean.turn_off + entity_id: + - input_boolean.kitchen_light_state diff --git a/configuration/automation/light_auto_living_room.yaml b/configuration/automation/light_auto_living_room.yaml new file mode 100644 index 0000000..5f67643 --- /dev/null +++ b/configuration/automation/light_auto_living_room.yaml @@ -0,0 +1,37 @@ +--- +- alias: '[Living Room] Lights Auto On' + initial_state: 'true' + trigger: + platform: state + entity_id: + - input_boolean.occupancy_living_room + to: 'on' + condition: + condition: and + conditions: + - condition: state + entity_id: input_boolean.living_room_light_state + state: 'off' + - condition: or + conditions: + - condition: state + entity_id: sun.sun + state: 'below_horizon' + - condition: template + value_template: '{{ ( states.sensor.presence_living_room_light_level.state | int ) < ( states.input_number.app_light_light_lux_mininum.state | int ) }}' + action: + - service: input_boolean.turn_on + entity_id: + - input_boolean.living_room_light_state + +- alias: '[Living Room] Lights Auto Off' + initial_state: 'true' + trigger: + platform: state + entity_id: + - input_boolean.occupancy_living_room + to: 'off' + action: + - service: input_boolean.turn_off + entity_id: + - input_boolean.living_room_light_state diff --git a/configuration/automation/light_mode_bedroom_master.yaml b/configuration/automation/light_mode_bedroom_master.yaml new file mode 100644 index 0000000..b674472 --- /dev/null +++ b/configuration/automation/light_mode_bedroom_master.yaml @@ -0,0 +1,22 @@ +--- +- alias: "[Bedroom Master] Light Mode set to Auto" + trigger: + platform: state + entity_id: + - input_boolean.occupancy_bedroom_master + to: "off" + action: + service: input_boolean.turn_off + entity_id: + - input_boolean.manually_operated_light_bedroom_master + +#- alias: "[Bedroom Master] Light Mode set to Manual" +# trigger: +# platform: state +# entity_id: +# - inout_boolean.occupancy_bedroom_master +# to: "off" +# action: +# service: input_boolean.turn_on +# entity_id: +# - input_boolean.manually_operated_light_bedroom_master diff --git a/configuration/automation/light_mode_bedroom_max.yaml b/configuration/automation/light_mode_bedroom_max.yaml new file mode 100644 index 0000000..0a0d341 --- /dev/null +++ b/configuration/automation/light_mode_bedroom_max.yaml @@ -0,0 +1,22 @@ +--- +- alias: "[Bedroom Max] Light Mode set to Auto" + trigger: + platform: state + entity_id: + - input_boolean.occupancy_bedroom_max + to: "off" + action: + service: input_boolean.turn_off + entity_id: + - input_boolean.manually_operated_light_bedroom_max + +#- alias: "[Bedroom Max] Light Mode set to Manual" +# trigger: +# platform: state +# entity_id: +# - inout_boolean.occupancy_bedroom_max +# to: "off" +# action: +# service: input_boolean.turn_on +# entity_id: +# - input_boolean.manually_operated_light_bedroom_max diff --git a/configuration/automation/light_mode_bedroom_olivia.yaml b/configuration/automation/light_mode_bedroom_olivia.yaml new file mode 100644 index 0000000..46fde85 --- /dev/null +++ b/configuration/automation/light_mode_bedroom_olivia.yaml @@ -0,0 +1,22 @@ +--- +- alias: "[Bedroom Olivia] Light Mode set to Auto" + trigger: + platform: state + entity_id: + - input_boolean.occupancy_bedroom_olivia + to: "off" + action: + service: input_boolean.turn_off + entity_id: + - input_boolean.manually_operated_light_bedroom_olivia + +#- alias: "[Bedroom Olivia] Light Mode set to Manual" +# trigger: +# platform: state +# entity_id: +# - inout_boolean.occupancy_bedroom_olivia +# to: "off" +# action: +# service: input_boolean.turn_on +# entity_id: +# - input_boolean.manually_operated_light_bedroom_olivia diff --git a/configuration/automation/light_mode_garage.yaml b/configuration/automation/light_mode_garage.yaml new file mode 100644 index 0000000..8295129 --- /dev/null +++ b/configuration/automation/light_mode_garage.yaml @@ -0,0 +1,22 @@ +--- +- alias: "[Garage] Light Mode set to Auto" + trigger: + platform: state + entity_id: + - input_boolean.occupancy_garage + to: "off" + action: + service: input_boolean.turn_off + entity_id: + - input_boolean.manually_operated_light_garage + +#- alias: "[Garage] Light Mode set to Manual" +# trigger: +# platform: state +# entity_id: +# - inout_boolean.occupancy_garage +# to: "off" +# action: +# service: input_boolean.turn_off +# entity_id: +# - input_boolean.manually_operated_light_garage diff --git a/configuration/automation/light_mode_kitchen.yaml b/configuration/automation/light_mode_kitchen.yaml new file mode 100644 index 0000000..2f49fed --- /dev/null +++ b/configuration/automation/light_mode_kitchen.yaml @@ -0,0 +1,22 @@ +--- +- alias: "[Kitchen] Light Mode set to Auto" + trigger: + platform: state + entity_id: + - input_boolean.occupancy_kitchen + to: "off" + action: + service: input_boolean.turn_off + entity_id: + - input_boolean.manually_operated_light_kitchen + +#- alias: "[Kitchen] Light Mode set to Manual" +# trigger: +# platform: state +# entity_id: +# - inout_boolean.occupancy_kitchen +# to: "off" +# action: +# service: input_boolean.turn_on +# entity_id: +# - input_boolean.manually_operated_light_kitchen diff --git a/configuration/automation/light_mode_living_room.yaml b/configuration/automation/light_mode_living_room.yaml new file mode 100644 index 0000000..ce78123 --- /dev/null +++ b/configuration/automation/light_mode_living_room.yaml @@ -0,0 +1,22 @@ +--- +- alias: "[Living Room] Light Mode set to Auto" + trigger: + platform: state + entity_id: + - input_boolean.occupancy_living_room + to: "off" + action: + service: input_boolean.turn_off + entity_id: + - input_boolean.manually_operated_light_living_room + +#- alias: "[Living Room] Light Mode set to Manual" +# trigger: +# platform: state +# entity_id: +# - inout_boolean.occupancy_living_room +# to: "off" +# action: +# service: input_boolean.turn_on +# entity_id: +# - input_boolean.manually_operated_light_living_room diff --git a/configuration/automation/light_on_off_backyard.yaml b/configuration/automation/light_on_off_backyard.yaml new file mode 100644 index 0000000..40754f7 --- /dev/null +++ b/configuration/automation/light_on_off_backyard.yaml @@ -0,0 +1,24 @@ +--- +- alias: "[Backyard] Light On (by input_boolean)" + initial_state: "true" + trigger: + - platform: state + entity_id: input_boolean.backyard_light_state + to: "on" + action: + - service: scene.turn_on + data_template: + entity_id: scene.backyard_{{ states.input_text.backyard_last_scene.state | replace(' ', '_') | lower | string }} + transition: 2.5 + +- alias: "[Backyard] Light Off (by input boolean)" + initial_state: "true" + trigger: + - platform: state + entity_id: input_boolean.backyard_light_state + to: "off" + action: + - service: scene.turn_on + data_template: + entity_id: scene.backyard_off + transition: 2.5 diff --git a/configuration/automation/light_on_off_bedroom_master.yaml b/configuration/automation/light_on_off_bedroom_master.yaml new file mode 100644 index 0000000..11c41dc --- /dev/null +++ b/configuration/automation/light_on_off_bedroom_master.yaml @@ -0,0 +1,24 @@ +--- +- alias: "[Bedroom Master] Light On (by input_boolean)" + initial_state: "true" + trigger: + - platform: state + entity_id: input_boolean.bedroom_master_light_state + to: "on" + action: + - service: scene.turn_on + data_template: + entity_id: scene.bedroom_master_{{ states.input_text.bedroom_master_last_scene.state | replace(' ', '_') | lower | string }} + transition: 2.5 + +- alias: "[Bedroom Master] Light Off (by input boolean)" + initial_state: "true" + trigger: + - platform: state + entity_id: input_boolean.bedroom_master_light_state + to: "off" + action: + - service: scene.turn_on + data_template: + entity_id: scene.bedroom_master_off + transition: 2.5 diff --git a/configuration/automation/light_on_off_bedroom_max.yaml b/configuration/automation/light_on_off_bedroom_max.yaml new file mode 100644 index 0000000..d7e9b0e --- /dev/null +++ b/configuration/automation/light_on_off_bedroom_max.yaml @@ -0,0 +1,24 @@ +--- +- alias: "[Bedroom Max] Light On (by input_boolean)" + initial_state: "true" + trigger: + - platform: state + entity_id: input_boolean.bedroom_max_light_state + to: "on" + action: + - service: scene.turn_on + data_template: + entity_id: scene.bedroom_max_{{ states.input_text.bedroom_max_last_scene.state | replace(' ', '_') | lower | string }} + transition: 2.5 + +- alias: "[Bedroom Max] Light Off (by input boolean)" + initial_state: "true" + trigger: + - platform: state + entity_id: input_boolean.bedroom_max_light_state + to: "off" + action: + - service: scene.turn_on + data_template: + entity_id: scene.bedroom_max_off + transition: 2.5 diff --git a/configuration/automation/light_on_off_bedroom_olivia.yaml b/configuration/automation/light_on_off_bedroom_olivia.yaml new file mode 100644 index 0000000..b53039a --- /dev/null +++ b/configuration/automation/light_on_off_bedroom_olivia.yaml @@ -0,0 +1,24 @@ +--- +- alias: "[Bedroom Olivia] Light On (by input_boolean)" + initial_state: "true" + trigger: + - platform: state + entity_id: input_boolean.bedroom_olivia_light_state + to: "on" + action: + - service: scene.turn_on + data_template: + entity_id: scene.bedroom_olivia_{{ states.input_text.bedroom_olivia_last_scene.state | replace(' ', '_') | lower | string }} + transition: 2.5 + +- alias: "[Bedroom Olivia] Light Off (by input boolean)" + initial_state: "true" + trigger: + - platform: state + entity_id: input_boolean.bedroom_olivia_light_state + to: "off" + action: + - service: scene.turn_on + data_template: + entity_id: scene.bedroom_olivia_off + transition: 2.5 diff --git a/configuration/automation/light_on_off_kitchen.yaml b/configuration/automation/light_on_off_kitchen.yaml new file mode 100644 index 0000000..37ffa74 --- /dev/null +++ b/configuration/automation/light_on_off_kitchen.yaml @@ -0,0 +1,24 @@ +--- +- alias: "[Kitchen] Light On (by input_boolean)" + initial_state: "true" + trigger: + - platform: state + entity_id: input_boolean.kitchen_light_state + to: "on" + action: + - service: scene.turn_on + data_template: + entity_id: scene.kitchen_{{ states.input_text.kitchen_last_scene.state | replace(' ', '_') | lower | string }} + transition: 2.5 + +- alias: "[Kitchen] Light Off (by input boolean)" + initial_state: "true" + trigger: + - platform: state + entity_id: input_boolean.kitchen_light_state + to: "off" + action: + - service: scene.turn_on + data_template: + entity_id: scene.kitchen_off + transition: 2.5 diff --git a/configuration/automation/light_on_off_living_room.yaml b/configuration/automation/light_on_off_living_room.yaml new file mode 100644 index 0000000..59c8748 --- /dev/null +++ b/configuration/automation/light_on_off_living_room.yaml @@ -0,0 +1,24 @@ +--- +- alias: "[Living Room] Light On (by input_boolean)" + initial_state: "true" + trigger: + - platform: state + entity_id: input_boolean.living_room_light_state + to: "on" + action: + - service: scene.turn_on + data_template: + entity_id: scene.living_room_{{ states.input_text.living_room_last_scene.state | replace(' ', '_') | lower | string }} + transition: 2.5 + +- alias: "[Living Room] Light Off (by input boolean)" + initial_state: "true" + trigger: + - platform: state + entity_id: input_boolean.living_room_light_state + to: "off" + action: + - service: scene.turn_on + data_template: + entity_id: scene.living_room_off + transition: 2.5 diff --git a/configuration/automation/light_on_off_porch.yaml b/configuration/automation/light_on_off_porch.yaml new file mode 100644 index 0000000..53bfa0f --- /dev/null +++ b/configuration/automation/light_on_off_porch.yaml @@ -0,0 +1,24 @@ +--- +- alias: "[Porch] Light On (by input_boolean)" + initial_state: "true" + trigger: + - platform: state + entity_id: input_boolean.porch_light_state + to: "on" + action: + - service: scene.turn_on + data_template: + entity_id: scene.porch_{{ states.input_text.porch_last_scene.state | replace(' ', '_') | lower | string }} + transition: 2.5 + +- alias: "[Porch] Light Off (by input boolean)" + initial_state: "true" + trigger: + - platform: state + entity_id: input_boolean.porch_light_state + to: "off" + action: + - service: scene.turn_on + data_template: + entity_id: scene.porch_off + transition: 2.5 diff --git a/configuration/automation/lock_lock.yaml b/configuration/automation/lock_lock.yaml new file mode 100644 index 0000000..793538c --- /dev/null +++ b/configuration/automation/lock_lock.yaml @@ -0,0 +1,25 @@ +--- +- alias: "[Lock] Lock A Lock if Unlocked for 3 Minutes" + id: "X7P04E2U6FABYRSZ" + initial_state: "true" + trigger: + - platform: state + entity_id: lock.lock_01 + to: "unlocked" + for: + hours: 0 + minutes: 3 + seconds: 0 + condition: + - condition: template + value_template: "{{ states('binary_sensor.door_entrance_01') == 'off' }}" + action: + - service: lock.lock + data: + entity_id: lock.lock_01 +# - service: persistent_notification.create +# data: +# message: "Lock is being locked by automation" + - service: notify.telegram_alex + data: + message: "Lock is being locked by automation" \ No newline at end of file diff --git a/configuration/automation/media_system_control.yaml b/configuration/automation/media_system_control.yaml new file mode 100644 index 0000000..f072091 --- /dev/null +++ b/configuration/automation/media_system_control.yaml @@ -0,0 +1,91 @@ +--- +- alias: "[Media] Projector mode" + id: media_switching_to_projector_mode + initial_state: "true" + trigger: + - platform: state + entity_id: select.living_room_harmony_hub_activities + to: "ShTV+AVR+Prj" + action: + - service: cover.open_cover + data: + entity_id: cover.motor_01 + - choose: + - conditions: + - condition: state + entity_id: media_player.onkyo_receiver + state: "off" + sequence: + - service: media_player.turn_on + entity_id: media_player.onkyo_receiver + - delay: "00:00:05" + - service: media_player.onkyo_select_hdmi_output + data: + entity_id: media_player.onkyo_receiver + hdmi_output: out-sub + - delay: "00:00:01" + - service: button.press + target: + entity_id: + - button.esp8266_hdmi_cec_01_turn_active_source +# - button.esp8266_hdmi_cec_01_turn_everything_off +# - service: remote.send_command +# target: +# entity_id: remote.broadlink_rm4_mini +# data: +# device: projector_lg_hu810pw +# command: +# - "Power Off" +# - "b64:JgBYAAABII8TERMSEjcTERMRExISEhISEjYTNxISEjYTNhI2EjcTNhISEhITERM1ExITEhISExETNhI2EjcTERM2EjYTNhI3EgAFAAABIUgSAAwTAAEhRxMADQU=" + - service: notify.telegram_alex + data: + message: "Switching to media system to the Projector mode" + +- alias: "[Media] TV mode" + id: media_switching_to_tv_mode + initial_state: "true" + trigger: + - platform: state + entity_id: select.living_room_harmony_hub_activities + to: "ShTV+AVR+TV" + action: + - choose: + - conditions: + - condition: state + entity_id: cover.motor_01 + state: "open" + sequence: + - service: cover.close_cover + data: + entity_id: cover.motor_01 + - choose: + - conditions: + - condition: state + entity_id: media_player.onkyo_receiver + state: "off" + sequence: + - service: media_player.turn_on + entity_id: media_player.onkyo_receiver + - delay: '00:00:05' + - service: media_player.onkyo_select_hdmi_output + data: + entity_id: media_player.onkyo_receiver + hdmi_output: out + - service: notify.telegram_alex + data: + message: "Switching to media system to the TV mode" + +- alias: "[Media] Off mode" + id: media_switching_off + initial_state: "true" + trigger: + - platform: state + entity_id: select.living_room_harmony_hub_activities + to: "power_off" + action: + - service: cover.close_cover + data: + entity_id: cover.motor_01 + - service: notify.telegram_alex + data: + message: "Switching off media system" diff --git a/configuration/automation/notification_frigate.yaml b/configuration/automation/notification_frigate.yaml new file mode 100644 index 0000000..806428a --- /dev/null +++ b/configuration/automation/notification_frigate.yaml @@ -0,0 +1,62 @@ +--- +- alias: '[Frigate] Person enters Driveway Zone' + trigger: + platform: mqtt + topic: frigate/events + condition: + condition: and + conditions: + - condition: template + value_template: "{{ trigger.payload_json['after']['label'] == 'person' }}" + - condition: template + value_template: "{{ 'zone_driveway' in trigger.payload_json['after']['entered_zones'] }}" + action: + - service: notify.telegram_alex + data: + message: "A {{trigger.payload_json['after']['label']}} has entered the yard." + data: + photo: + - url: "https://objects.savin.nyc/api/events/{{trigger.payload_json['after']['id']}}/thumbnail.jpg" +# caption: "{{trigger.payload_json['after']['id']}}" + +- alias: '[Frigate] Person leaves Driveway Zone' + trigger: + platform: mqtt + topic: frigate/events + condition: + condition: and + conditions: + - condition: template + value_template: "{{ trigger.payload_json['after']['label'] == 'person' }}" + - condition: template + value_template: "{{ 'zone_driveway' in trigger.payload_json['before']['current_zones'] }}" + - condition: template + value_template: "{{ not 'zone_driveway' in trigger.payload_json['after']['current_zones'] }}" + action: + - service: notify.telegram_alex + data: + message: "A {{trigger.payload_json['after']['label']}} has left the yard." + data: + photo: + - url: "https://objects.savin.nyc/api/events/{{trigger.payload_json['after']['id']}}/thumbnail.jpg" +# caption: "{{trigger.payload_json['after']['id']}}" + +- alias: '[Frigate] Person detected by Doorbell camera' + trigger: + platform: mqtt + topic: frigate/events + condition: + condition: and + conditions: + - condition: template + value_template: "{{ trigger.payload_json['after']['label'] == 'person' }}" + - condition: template + value_template: "{{ trigger.payload_json['after']['camera'] == 'doorbell' }}" + action: + - service: notify.telegram_alex + data_template: + message: 'Person detected by Doorbell camera' + data: + photo: + - url: "https://objects.savin.nyc/api/events/{{trigger.payload_json['after']['id']}}/thumbnail.jpg" +# caption: "{{trigger.payload_json['after']['id']}}" diff --git a/configuration/automation/notification_wrong_code.yaml b/configuration/automation/notification_wrong_code.yaml new file mode 100644 index 0000000..7aace0a --- /dev/null +++ b/configuration/automation/notification_wrong_code.yaml @@ -0,0 +1,23 @@ +--- +- id: notification_lock_wrong_code + alias: '[Notification] Wrong Code' + initial_state: 'true' + trigger: + platform: state + entity_id: sensor.lock_01_alarm_type + to: '0' + condition: + condition: and + conditions: + - condition: template + value_template: "{{ states('sensor.lock_01_alarm_level') | int == 0 }}" + - condition: template + value_template: "{{ states('sensor.lock_01_alarm_type') | int == 0 }}" + action: + - service: notify.telegram_alex + data: + message: "Someone entered the wrong code" +# - service: notify.mobile_app_alex_google_pixel_7_pro +# data: +# message: Someone entered the wrong code +# title: WRONG CODE diff --git a/configuration/automation/occupancy_aisle.yaml b/configuration/automation/occupancy_aisle.yaml new file mode 100644 index 0000000..fb64f69 --- /dev/null +++ b/configuration/automation/occupancy_aisle.yaml @@ -0,0 +1,22 @@ +--- +- alias: "[Aisle] Occupancy to True" + trigger: + platform: state + entity_id: + - binary_sensor.presence_aisle_sensor_1 + from: "off" + to: "on" + action: + service: input_boolean.turn_on + entity_id: input_boolean.occupancy_aisle + +- alias: "[Aisle] Occupancy to False" + trigger: + platform: state + entity_id: + - binary_sensor.presence_aisle_sensor_1 + from: "on" + to: "off" + action: + service: input_boolean.turn_off + entity_id: input_boolean.occupancy_aisle diff --git a/configuration/automation/occupancy_bedroom_master.yaml b/configuration/automation/occupancy_bedroom_master.yaml new file mode 100644 index 0000000..bc982b3 --- /dev/null +++ b/configuration/automation/occupancy_bedroom_master.yaml @@ -0,0 +1,22 @@ +--- +- alias: "[Bedroom Master] Occupancy to True" + trigger: + platform: state + entity_id: + - binary_sensor.presence_bedroom_master_sensor_1 + from: "off" + to: "on" + action: + service: input_boolean.turn_on + entity_id: input_boolean.occupancy_bedroom_master + +- alias: "[Bedroom Master] Occupancy to False" + trigger: + platform: state + entity_id: + - binary_sensor.presence_bedroom_master_sensor_1 + from: "on" + to: "off" + action: + service: input_boolean.turn_off + entity_id: input_boolean.occupancy_bedroom_master \ No newline at end of file diff --git a/configuration/automation/occupancy_bedroom_maxim.yaml b/configuration/automation/occupancy_bedroom_maxim.yaml new file mode 100644 index 0000000..70620d3 --- /dev/null +++ b/configuration/automation/occupancy_bedroom_maxim.yaml @@ -0,0 +1,22 @@ +--- +- alias: "[Bedroom Maxim] Occupancy to True" + trigger: + platform: state + entity_id: + - binary_sensor.presence_bedroom_maxim_sensor_1 + from: "off" + to: "on" + action: + service: input_boolean.turn_on + entity_id: input_boolean.occupancy_bedroom_max + +- alias: "[Bedroom Maxim] Occupancy to False" + trigger: + platform: state + entity_id: + - binary_sensor.presence_bedroom_maxim_sensor_1 + from: "on" + to: "off" + action: + service: input_boolean.turn_off + entity_id: input_boolean.occupancy_bedroom_max \ No newline at end of file diff --git a/configuration/automation/occupancy_bedroom_olivia.yaml b/configuration/automation/occupancy_bedroom_olivia.yaml new file mode 100644 index 0000000..9a65ec5 --- /dev/null +++ b/configuration/automation/occupancy_bedroom_olivia.yaml @@ -0,0 +1,22 @@ +--- +- alias: "[Bedroom Olivia] Occupancy to True" + trigger: + platform: state + entity_id: + - binary_sensor.presence_bedroom_olivia_sensor_1 + from: "off" + to: "on" + action: + service: input_boolean.turn_on + entity_id: input_boolean.occupancy_bedroom_olivia + +- alias: "[Bedroom Olivia] Occupancy to False" + trigger: + platform: state + entity_id: + - binary_sensor.presence_bedroom_olivia_sensor_1 + from: "on" + to: "off" + action: + service: input_boolean.turn_off + entity_id: input_boolean.occupancy_bedroom_olivia diff --git a/configuration/automation/occupancy_garage.yaml b/configuration/automation/occupancy_garage.yaml new file mode 100644 index 0000000..b43ae9a --- /dev/null +++ b/configuration/automation/occupancy_garage.yaml @@ -0,0 +1,22 @@ +--- +- alias: "[Garage] Occupancy to True" + trigger: + platform: state + entity_id: + - binary_sensor.presence_garage_sensor_1 + from: "off" + to: "on" + action: + service: input_boolean.turn_on + entity_id: input_boolean.occupancy_garage + +- alias: "[Garage] Occupancy to False" + trigger: + platform: state + entity_id: + - binary_sensor.presence_garage_sensor_1 + from: "on" + to: "off" + action: + service: input_boolean.turn_off + entity_id: input_boolean.occupancy_garage \ No newline at end of file diff --git a/configuration/automation/occupancy_kitchen.yaml b/configuration/automation/occupancy_kitchen.yaml new file mode 100644 index 0000000..e633d46 --- /dev/null +++ b/configuration/automation/occupancy_kitchen.yaml @@ -0,0 +1,20 @@ +--- +- alias: "[Kitchen] Occupancy to True" + trigger: + platform: state + entity_id: + - binary_sensor.presence_kitchen_sensor_2 + to: "on" + action: + - service: input_boolean.turn_on + entity_id: input_boolean.occupancy_kitchen + +- alias: "[Kitchen] Occupancy to False" + trigger: + platform: state + entity_id: + - binary_sensor.presence_kitchen_sensor_2 + to: "off" + action: + - service: input_boolean.turn_off + entity_id: input_boolean.occupancy_kitchen diff --git a/configuration/automation/occupancy_living_room.yaml b/configuration/automation/occupancy_living_room.yaml new file mode 100644 index 0000000..c92bb9a --- /dev/null +++ b/configuration/automation/occupancy_living_room.yaml @@ -0,0 +1,20 @@ +--- +- alias: "[Living Room] Occupancy to True" + trigger: + platform: state + entity_id: + - binary_sensor.presence_living_room_sensor_1 + to: "on" + action: + - service: input_boolean.turn_on + entity_id: input_boolean.occupancy_living_room + +- alias: "[Living Room] Occupancy to False" + trigger: + platform: state + entity_id: + - binary_sensor.presence_living_room_sensor_1 + to: "off" + action: + - service: input_boolean.turn_off + entity_id: input_boolean.occupancy_living_room \ No newline at end of file diff --git a/configuration/automation/occupants_kitchen.yaml b/configuration/automation/occupants_kitchen.yaml new file mode 100644 index 0000000..252df8e --- /dev/null +++ b/configuration/automation/occupants_kitchen.yaml @@ -0,0 +1,38 @@ +--- +- alias: 'Trip Wire #01 > AB' + trigger: + - platform: state + entity_id: sensor.tripwire_10521c66d2e8_direction + to: "AB" + action: + - service: input_number.set_value + data_template: + entity_id: input_number.occupants_kitchen + value: '{{ (states.input_number.occupants_kitchen.state | int ) + 1 }}' + +- alias: 'Trip Wire #01 > BA' + trigger: + - platform: state + entity_id: sensor.tripwire_10521c66d2e8_direction + to: "BA" + action: + - service: input_number.set_value + data_template: + entity_id: input_number.occupants_kitchen + value: '{{ (states.input_number.occupants_kitchen.state | int ) - 1 }}' + +- alias: "Set Kitchen Occupancy to True" + trigger: + platform: template + value_template: '{{ (states.input_number.occupants_kitchen.state | int ) > 0 }}' + action: + - service: input_boolean.turn_on + entity_id: input_boolean.occupancy_kitchen + +- alias: "Set Kitchen Occupancy to False" + trigger: + platform: template + value_template: '{{ (states.input_number.occupants_kitchen.state | int ) == 0 }}' + action: + - service: input_boolean.turn_off + entity_id: input_boolean.occupancy_kitchen diff --git a/configuration/automation/remote_control_light_kitchen.yaml b/configuration/automation/remote_control_light_kitchen.yaml new file mode 100644 index 0000000..c85359d --- /dev/null +++ b/configuration/automation/remote_control_light_kitchen.yaml @@ -0,0 +1,46 @@ +--- +- alias: "[Remote Control] Kitchen Scene Next" + initial_state: 'true' + trigger: + platform: state + entity_id: sensor.remote_kitchen_01_action + to: "arrow_right_click" + condition: + - condition: state + entity_id: input_boolean.kitchen_light_state + state: "on" + action: + - service: input_select.select_next + target: + entity_id: input_select.kitchen_scenes + +- alias: "[Remote Control] Kitchen Scene Prev" + initial_state: 'true' + trigger: + platform: state + entity_id: sensor.remote_kitchen_01_action + to: "arrow_left_click" + condition: + - condition: state + entity_id: input_boolean.kitchen_light_state + state: "on" + action: + - service: input_select.select_previous + target: + entity_id: input_select.kitchen_scene + +- alias: "[Remote Control] Kitchen Scene On" + initial_state: 'true' + trigger: + platform: state + entity_id: sensor.remote_kitchen_01_action + to: "toggle" + action: + - service_template: > + {% if states.input_boolean.kitchen_light_state.state == 'off' %} + input_boolean.turn_on + {% else %} + input_boolean.turn_off + {% endif %} + entity_id: + - input_boolean.kitchen_light_state diff --git a/configuration/automation/scene_rotation_backyard.yaml b/configuration/automation/scene_rotation_backyard.yaml new file mode 100644 index 0000000..5842204 --- /dev/null +++ b/configuration/automation/scene_rotation_backyard.yaml @@ -0,0 +1,24 @@ +--- +- alias: "[Scene] Backyard Scene Rotation" + initial_state: 'true' + trigger: + platform: state + entity_id: input_select.backyard_scenes + action: + - service: scene.turn_on + data_template: + entity_id: scene.backyard_{{ states.input_select.backyard_scenes.state | replace(' ', '_') | lower | string }} + transition: 2.5 + - service: input_text.set_value + target: + entity_id: input_text.backyard_last_scene + data: + value: "{{ states.input_select.backyard_scenes.state | replace(' ', '_') | lower | string }}" + - service_template: > + {% if states.input_select.backyard_scenes.state | lower | string == 'off' -%} + input_boolean.turn_off + {%- else -%} + input_boolean.turn_on + {%- endif %} + entity_id: + - input_boolean.backyard_light_state diff --git a/configuration/automation/scene_rotation_bedroom_master.yaml b/configuration/automation/scene_rotation_bedroom_master.yaml new file mode 100644 index 0000000..f636cc2 --- /dev/null +++ b/configuration/automation/scene_rotation_bedroom_master.yaml @@ -0,0 +1,24 @@ +--- +- alias: "[Scene] Bedroom Master Scene Rotation" + initial_state: 'true' + trigger: + platform: state + entity_id: input_select.bedroom_master_scenes + action: + - service: scene.turn_on + data_template: + entity_id: scene.bedroom_master_{{ states.input_select.bedroom_master_scenes.state | replace(' ', '_') | lower | string }} + transition: 2.5 + - service: input_text.set_value + target: + entity_id: input_text.bedroom_master_last_scene + data: + value: "{{ states.input_select.bedroom_master_scenes.state | replace(' ', '_') | lower | string }}" + - service_template: > + {% if states.input_select.bedroom_master_scenes.state | lower | string == 'off' %} + input_boolean.turn_off + {% else %} + input_boolean.turn_on + {% endif %} + entity_id: + - input_boolean.bedroom_master_light_state diff --git a/configuration/automation/scene_rotation_bedroom_max.yaml b/configuration/automation/scene_rotation_bedroom_max.yaml new file mode 100644 index 0000000..cf365cb --- /dev/null +++ b/configuration/automation/scene_rotation_bedroom_max.yaml @@ -0,0 +1,24 @@ +--- +- alias: "[Scene] Bedroom Max Scene Rotation" + initial_state: 'true' + trigger: + platform: state + entity_id: input_select.bedroom_max_scenes + action: + - service: scene.turn_on + data_template: + entity_id: scene.bedroom_max_{{ states.input_select.bedroom_max_scenes.state | replace(' ', '_') | lower | string }} + transition: 2.5 + - service: input_text.set_value + target: + entity_id: input_text.bedroom_max_last_scene + data: + value: "{{ states.input_select.bedroom_max_scenes.state | replace(' ', '_') | lower | string }}" + - service_template: > + {% if states.input_select.bedroom_max_scenes.state | lower | string == 'off' %} + input_boolean.turn_off + {% else %} + input_boolean.turn_on + {% endif %} + entity_id: + - input_boolean.bedroom_max_light_state diff --git a/configuration/automation/scene_rotation_bedroom_olivia.yaml b/configuration/automation/scene_rotation_bedroom_olivia.yaml new file mode 100644 index 0000000..d1fd2da --- /dev/null +++ b/configuration/automation/scene_rotation_bedroom_olivia.yaml @@ -0,0 +1,24 @@ +--- +- alias: "[Scene] Bedroom Olivia Scene Rotation" + initial_state: 'true' + trigger: + platform: state + entity_id: input_select.bedroom_olivia_scenes + action: + - service: scene.turn_on + data_template: + entity_id: scene.bedroom_olivia_{{ states.input_select.bedroom_olivia_scenes.state | replace(' ', '_') | lower | string }} + transition: 2.5 + - service: input_text.set_value + target: + entity_id: input_text.bedroom_olivia_last_scene + data: + value: "{{ states.input_select.bedroom_olivia_scenes.state | replace(' ', '_') | lower | string }}" + - service_template: > + {% if states.input_select.bedroom_olivia_scenes.state | lower | string == 'off' %} + input_boolean.turn_off + {% else %} + input_boolean.turn_on + {% endif %} + entity_id: + - input_boolean.bedroom_olivia_light_state diff --git a/configuration/automation/scene_rotation_kitchen.yaml b/configuration/automation/scene_rotation_kitchen.yaml new file mode 100644 index 0000000..f232883 --- /dev/null +++ b/configuration/automation/scene_rotation_kitchen.yaml @@ -0,0 +1,24 @@ +--- +- alias: "[Scene] Kitchen Scene Rotation" + initial_state: 'true' + trigger: + platform: state + entity_id: input_select.kitchen_scenes + action: + - service: scene.turn_on + data_template: + entity_id: scene.kitchen_{{ states.input_select.kitchen_scenes.state | replace(' ', '_') | lower | string }} + transition: 2.5 + - service: input_text.set_value + target: + entity_id: input_text.kitchen_last_scene + data: + value: "{{ states.input_select.kitchen_scenes.state | replace(' ', '_') | lower | string }}" + - service_template: > + {% if states.input_select.kitchen_scenes.state | lower | string == 'off' %} + input_boolean.turn_off + {% else %} + input_boolean.turn_on + {% endif %} + entity_id: + - input_boolean.kitchen_light_state diff --git a/configuration/automation/scene_rotation_living_room.yaml b/configuration/automation/scene_rotation_living_room.yaml new file mode 100644 index 0000000..10ca144 --- /dev/null +++ b/configuration/automation/scene_rotation_living_room.yaml @@ -0,0 +1,24 @@ +--- +- alias: "[Scene] Living Room Scene Rotation" + initial_state: 'true' + trigger: + platform: state + entity_id: input_select.living_room_scenes + action: + - service: scene.turn_on + data_template: + entity_id: scene.living_room_{{ states.input_select.living_room_scenes.state | replace(' ', '_') | lower | string }} + transition: 2.5 + - service: input_text.set_value + target: + entity_id: input_text.living_room_last_scene + data: + value: "{{ states.input_select.living_room_scenes.state | replace(' ', '_') | lower | string }}" + - service_template: > + {% if states.input_select.living_room_scenes.state | lower | string == 'off' %} + input_boolean.turn_off + {% else %} + input_boolean.turn_on + {% endif %} + entity_id: + - input_boolean.living_room_light_state diff --git a/configuration/automation/scene_rotation_porch.yaml b/configuration/automation/scene_rotation_porch.yaml new file mode 100644 index 0000000..2cf7175 --- /dev/null +++ b/configuration/automation/scene_rotation_porch.yaml @@ -0,0 +1,24 @@ +--- +- alias: "[Scene] Porch Scene Rotation" + initial_state: 'true' + trigger: + platform: state + entity_id: input_select.porch_scenes + action: + - service: scene.turn_on + data_template: + entity_id: scene.porch_{{ states.input_select.porch_scenes.state | replace(' ', '_') | lower | string }} + transition: 2.5 + - service: input_text.set_value + target: + entity_id: input_text.porch_last_scene + data: + value: "{{ states.input_select.porch_scenes.state | replace(' ', '_') | lower | string }}" + - service_template: > + {% if states.input_select.porch_scenes.state | lower | string == 'off' -%} + input_boolean.turn_off + {%- else -%} + input_boolean.turn_on + {%- endif %} + entity_id: + - input_boolean.porch_light_state diff --git a/configuration/automation/startup_update_tasmotas.yaml b/configuration/automation/startup_update_tasmotas.yaml new file mode 100644 index 0000000..1303604 --- /dev/null +++ b/configuration/automation/startup_update_tasmotas.yaml @@ -0,0 +1,14 @@ +--- +- id: startup_restart_tasmota_devices + alias: '[StartUp] Restart tasmota devices' + trigger: + - platform: homeassistant + event: start + condition: [] + action: + - service: shell_command.restart_fan01 + - service: shell_command.restart_fan02 + - service: shell_command.restart_fan03 + - service: shell_command.restart_fan04 + - service: shell_command.restart_fan05 + - service: shell_command.restart_light01 diff --git a/configuration/automation/switch_fan_bathroom_bedroom.yaml b/configuration/automation/switch_fan_bathroom_bedroom.yaml new file mode 100644 index 0000000..136eb6d --- /dev/null +++ b/configuration/automation/switch_fan_bathroom_bedroom.yaml @@ -0,0 +1,34 @@ +--- +- alias: '[ZWave] Bathroom Bedroom Switch Double Tap UP' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "002" + value: "KeyPressed2x" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 28 }}' + action: + - service: fan.turn_on + entity_id: + - fan.bathroom_bedroom + +- alias: '[ZWave] Bathroom Bedroom Switch Double Tap DOWN' + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed2x" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 28 }}' + action: + - service: fan.turn_off + entity_id: + - fan.bathroom_bedroom diff --git a/configuration/automation/switch_fan_bathroom_living_room.yaml b/configuration/automation/switch_fan_bathroom_living_room.yaml new file mode 100644 index 0000000..6fa8466 --- /dev/null +++ b/configuration/automation/switch_fan_bathroom_living_room.yaml @@ -0,0 +1,34 @@ +--- +- alias: '[ZWave] Bathroom Living Room Switch Double Tap UP' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "002" + value: "KeyPressed2x" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 13 }}' + action: + - service: fan.turn_on + entity_id: + - fan.bathroom_living_room + +- alias: '[ZWave] Bathroom Living Room Switch Double Tap DOWN' + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed2x" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 13 }}' + action: + - service: fan.turn_off + entity_id: + - fan.bathroom_living_room diff --git a/configuration/automation/switch_fan_bathroom_master.yaml b/configuration/automation/switch_fan_bathroom_master.yaml new file mode 100644 index 0000000..2c4373d --- /dev/null +++ b/configuration/automation/switch_fan_bathroom_master.yaml @@ -0,0 +1,34 @@ +--- +- alias: '[ZWave] Bathroom Master Switch Double Tap UP' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "002" + value: "KeyPressed2x" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 26 }}' + action: + - service: fan.turn_on + entity_id: + - fan.bathroom_master + +- alias: '[ZWave] Bathroom Master Switch Double Tap DOWN' + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed2x" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 26 }}' + action: + - service: fan.turn_off + entity_id: + - fan.bathroom_master diff --git a/configuration/automation/switch_fan_bedroom_max.yaml b/configuration/automation/switch_fan_bedroom_max.yaml new file mode 100644 index 0000000..aa378e7 --- /dev/null +++ b/configuration/automation/switch_fan_bedroom_max.yaml @@ -0,0 +1,34 @@ +--- +- id: zwave_bedroom_olivia_fan_turn_on + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "002" + value: "KeyPressed2x" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 19 }}' + action: + - service: fan.set_percentage + entity_id: fan.bedroom_maxim + data: + percentage: 33 + +- id: zwave_bedroom_olivia_fan_turn_off + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed2x" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 19 }}' + action: + - service: fan.turn_off + entity_id: fan.bedroom_maxim diff --git a/configuration/automation/switch_fan_bedroom_olivia.yaml b/configuration/automation/switch_fan_bedroom_olivia.yaml new file mode 100644 index 0000000..39c0c2a --- /dev/null +++ b/configuration/automation/switch_fan_bedroom_olivia.yaml @@ -0,0 +1,34 @@ +--- +- id: zwave_bedroom_guest_fan_turn_on + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "002" + value: "KeyPressed2x" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 22 }}' + action: + - service: fan.set_percentage + entity_id: fan.bedroom_olivia + data: + percentage: 33 + +- id: zwave_bedroom_guest_fan_turn_off + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed2x" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 22 }}' + action: + - service: fan.turn_off + entity_id: fan.bedroom_olivia diff --git a/configuration/automation/switch_light_backyard.yaml b/configuration/automation/switch_light_backyard.yaml new file mode 100644 index 0000000..d92b773 --- /dev/null +++ b/configuration/automation/switch_light_backyard.yaml @@ -0,0 +1,43 @@ +--- +- alias: '[ZWave] Backyard Switch Single Tap UP' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "002" + value: "KeyPressed2x" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 25 }}' + action: + - service: light.turn_on + data: + entity_id: light.backyard_01 + brightness: 153 + hs_color: [31, 95] + - service: light.turn_on + entity_id: +# - light.backyard_01 + - light.backyard_pergola_01 + - light.backyard_decoration_01 + +- alias: '[ZWave] Backyard Switch Single Tap DOWN' + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed2x" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 25 }}' + action: + - service: light.turn_off + entity_id: + - light.backyard_01 + - light.backyard_pergola_01 + - light.backyard_decoration_01 diff --git a/configuration/automation/switch_light_bathroom_bedroom.yaml b/configuration/automation/switch_light_bathroom_bedroom.yaml new file mode 100644 index 0000000..3932cd1 --- /dev/null +++ b/configuration/automation/switch_light_bathroom_bedroom.yaml @@ -0,0 +1,34 @@ +--- +- alias: '[ZWave] Bathroom Bedroom Switch Single Tap UP' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "002" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 28 }}' + action: + - service: light.turn_on + entity_id: + - light.bathroom_bedroom_wall_01 + +- alias: '[ZWave] Bathroom Bedroom Switch Single Tap DOWN' + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 28 }}' + action: + - service: light.turn_off + entity_id: + - light.bathroom_bedroom_wall_01 diff --git a/configuration/automation/switch_light_bathroom_living.yaml b/configuration/automation/switch_light_bathroom_living.yaml new file mode 100644 index 0000000..9efd3b0 --- /dev/null +++ b/configuration/automation/switch_light_bathroom_living.yaml @@ -0,0 +1,34 @@ +--- +- alias: '[ZWave] Bathroom Living Room Switch Single Tap UP' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "002" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 13 }}' + action: + - service: light.turn_on + entity_id: + - light.bathroom_living_room_01 + +- alias: '[ZWave] Bathroom Living Room Switch Single Tap DOWN' + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 13 }}' + action: + - service: light.turn_off + entity_id: + - light.bathroom_living_room_01 diff --git a/configuration/automation/switch_light_bathroom_master.yaml b/configuration/automation/switch_light_bathroom_master.yaml new file mode 100644 index 0000000..576a562 --- /dev/null +++ b/configuration/automation/switch_light_bathroom_master.yaml @@ -0,0 +1,54 @@ +--- +- alias: '[ZWave] Bathroom Master Switch Single Tap UP' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "002" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 26 }}' + action: + - service: light.turn_on + entity_id: + - light.bathroom_master_wall_01 + +- alias: '[ZWave] Bathroom Master Switch Single Tap DOWN' + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 26 }}' + action: + - service: light.turn_off + entity_id: + - light.bathroom_master_wall_01 + +- alias: '[ZWave] Bathroom Master Switch Tripple Tap DOWN' + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed3x" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 26 }}' + action: + - service: fan.turn_off + entity_id: + - fan.master_bathroom + - service: light.turn_off + entity_id: + - light.bathroom_master_wall_01 diff --git a/configuration/automation/switch_light_bedroom_master.yaml b/configuration/automation/switch_light_bedroom_master.yaml new file mode 100644 index 0000000..1a2da1e --- /dev/null +++ b/configuration/automation/switch_light_bedroom_master.yaml @@ -0,0 +1,58 @@ +--- +- alias: '[ZWave] Bedroom Master Switch Single Tap UP' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "002" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 21 }}' + action: + - service: input_boolean.turn_on + entity_id: + - input_boolean.bedroom_master_light_state + - service: input_boolean.turn_on + entity_id: + - input_boolean.manually_operated_light_bedroom_master +# - service: light.turn_on +# entity_id: +# - light.bedroom_master_ceiling_01 +# - light.bedroom_master_ceiling_02 +# - light.bedroom_master_floor_lamp_01 +# - light.bedroom_master_floor_lamp_02 +# - service: input_boolean.turn_on +# entity_id: +# - input_boolean.manually_operated_light_bedroom_master + +- alias: '[ZWave] Bedroom Master Switch Single Tap DOWN' + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 21 }}' + action: + - service: input_boolean.turn_off + entity_id: + - input_boolean.bedroom_master_light_state + - service: input_boolean.turn_on + entity_id: + - input_boolean.manually_operated_light_bedroom_master +# - service: light.turn_off +# entity_id: +# - light.bedroom_master_ceiling_01 +# - light.bedroom_master_ceiling_02 +# - light.bedroom_master_floor_lamp_01 +# - light.bedroom_master_floor_lamp_02 +# - service: input_boolean.turn_on +# entity_id: +# - input_boolean.manually_operated_light_bedroom_master diff --git a/configuration/automation/switch_light_bedroom_max.yaml b/configuration/automation/switch_light_bedroom_max.yaml new file mode 100644 index 0000000..16f83be --- /dev/null +++ b/configuration/automation/switch_light_bedroom_max.yaml @@ -0,0 +1,54 @@ +--- +- alias: '[ZWave] Bedroom Max Switch Single Tap UP' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "002" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 19 }}' + action: + - service: input_boolean.turn_on + entity_id: + - input_boolean.bedroom_max_light_state + - service: input_boolean.turn_on + entity_id: + - input_boolean.manually_operated_light_bedroom_max +# - service: light.turn_on +# entity_id: +# - light.bedroom_max_ceiling_01 +# - light.bedroom_max_table_01 +# - service: input_boolean.turn_on +# entity_id: +# - input_boolean.manually_operated_light_bedroom_max + +- alias: '[ZWave] Bedroom Max Switch Single Tap DOWN' + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 19 }}' + action: + - service: input_boolean.turn_off + entity_id: + - input_boolean.bedroom_max_light_state + - service: input_boolean.turn_on + entity_id: + - input_boolean.manually_operated_light_bedroom_max +# - service: light.turn_off +# entity_id: +# - light.bedroom_max_ceiling_01 +# - light.bedroom_max_table_01 +# - service: input_boolean.turn_on +# entity_id: +# - input_boolean.manually_operated_light_bedroom_max diff --git a/configuration/automation/switch_light_bedroom_olivia.yaml b/configuration/automation/switch_light_bedroom_olivia.yaml new file mode 100644 index 0000000..ec9da25 --- /dev/null +++ b/configuration/automation/switch_light_bedroom_olivia.yaml @@ -0,0 +1,55 @@ +--- +- alias: '[ZWave] Bedroom Olivia Switch Single Tap UP' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "002" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 22 }}' + action: + - service: input_boolean.turn_on + entity_id: + - input_boolean.bedroom_olivia_light_state + - service: input_boolean.turn_on + entity_id: + - input_boolean.manually_operated_light_bedroom_olivia + +# - service: light.turn_on +# entity_id: +# - light.bedroom_guest_ceiling_01 +# - light.bedroom_olivia_table_lamp_01 +# - service: input_boolean.turn_on +# entity_id: +# - input_boolean.manually_operated_light_bedroom_olivia + +- alias: '[ZWave] Bedroom Olivia Switch Single Tap DOWN' + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 22 }}' + action: + - service: input_boolean.turn_off + entity_id: + - input_boolean.bedroom_olivia_light_state + - service: input_boolean.turn_on + entity_id: + - input_boolean.manually_operated_light_bedroom_olivia +# - service: light.turn_off +# entity_id: +# - light.bedroom_guest_ceiling_01 +# - light.bedroom_olivia_table_lamp_01 +# - service: input_boolean.turn_on +# entity_id: +# - input_boolean.manually_operated_light_bedroom_olivia diff --git a/configuration/automation/switch_light_entrance.yaml b/configuration/automation/switch_light_entrance.yaml new file mode 100644 index 0000000..3db9332 --- /dev/null +++ b/configuration/automation/switch_light_entrance.yaml @@ -0,0 +1,61 @@ +--- +- alias: '[ZWave] Entrance Switch Single Tap UP' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "002" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 12 }}' + action: + - service: light.turn_on + data: + entity_id: light.porch_01 + brightness: 255 + hs_color: [57, 100] + - service: light.turn_on + data: + entity_id: light.garage_gate_01 + brightness: 255 + hs_color: [236, 100] +# entity_id: +# - light.porch_01 +# - light.garage_gate_01 + +- alias: '[ZWave] Entrance Switch Single Tap DOWN' + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 12 }}' + action: + - service: light.turn_off + entity_id: + - light.porch_01 + - light.garage_gate_01 + +#color_mode: hs +#brightness: 255 +#hs_color: 52.768, 100 +#rgb_color: 255, 224, 0 +#xy_color: 0.482, 0.484 +#friendly_name: Porch +#supported_features: 36 + +#color_mode: hs +#brightness: 255 +#hs_color: 243.521, 100 +#rgb_color: 14, 0, 255 +#xy_color: 0.137, 0.041 +#friendly_name: Garage Gate +#supported_features: 36 diff --git a/configuration/automation/switch_light_garage.yaml b/configuration/automation/switch_light_garage.yaml new file mode 100644 index 0000000..945dd9c --- /dev/null +++ b/configuration/automation/switch_light_garage.yaml @@ -0,0 +1,40 @@ +--- +- alias: '[ZWave] Garage Switch Single Tap UP' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "002" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 5 or trigger.event.data.node_id == 6 or trigger.event.data.node_id == 9 }}' + action: + - service: light.turn_on + entity_id: + - light.garage_ceiling_01 + - service: input_boolean.turn_on + entity_id: + - input_boolean.manually_operated_light_garage + +- alias: '[ZWave] Garage Switch Single Tap DOWN' + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 5 or trigger.event.data.node_id == 6 or trigger.event.data.node_id == 9 }}' + action: + - service: light.turn_off + entity_id: + - light.garage_ceiling_01 + - service: input_boolean.turn_on + entity_id: + - input_boolean.manually_operated_light_garage diff --git a/configuration/automation/switch_light_kitchen.yaml b/configuration/automation/switch_light_kitchen.yaml new file mode 100644 index 0000000..92b68fb --- /dev/null +++ b/configuration/automation/switch_light_kitchen.yaml @@ -0,0 +1,52 @@ +--- +- alias: '[ZWave] Kitchen Switch Single Tap UP' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "002" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 23 or trigger.event.data.node_id == 65 or trigger.event.data.node_id == 25 }}' + action: + - service: input_boolean.turn_on + entity_id: + - input_boolean.kitchen_light_state +# - service: light.turn_on +# entity_id: +# - light.kitchen_sink_01 +# - light.kitchen_led_01 +# - light.light_kitchen_ceiling_01 +# - light.light_kitchen_ceiling_02 + - service: input_boolean.turn_on + entity_id: + - input_boolean.manually_operated_light_kitchen + +- alias: '[ZWave] Kitchen Switch Single Tap DOWN' + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 23 or trigger.event.data.node_id == 65 or trigger.event.data.node_id == 25 }}' + action: + - service: input_boolean.turn_off + entity_id: + - input_boolean.kitchen_light_state +# - service: light.turn_off +# entity_id: +# - light.kitchen_sink_01 +# - light.kitchen_led_01 +# - light.light_kitchen_ceiling_01 +# - light.light_kitchen_ceiling_02 + - service: input_boolean.turn_on + entity_id: + - input_boolean.manually_operated_light_kitchen diff --git a/configuration/automation/switch_light_living_room.yaml b/configuration/automation/switch_light_living_room.yaml new file mode 100644 index 0000000..185de52 --- /dev/null +++ b/configuration/automation/switch_light_living_room.yaml @@ -0,0 +1,40 @@ +--- +- alias: '[ZWave] Living Room Switch Single Tap UP' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "002" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 10 or trigger.event.data.node_id == 11 }}' + action: + - service: input_boolean.turn_on + entity_id: + - input_boolean.living_room_light_state + - service: input_boolean.turn_on + entity_id: + - input_boolean.manually_operated_light_living_room + +- alias: '[ZWave] Living Room Switch Single Tap DOWN' + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 10 or trigger.event.data.node_id == 11 }}' + action: + - service: input_boolean.turn_off + entity_id: + - input_boolean.living_room_light_state + - service: input_boolean.turn_on + entity_id: + - input_boolean.manually_operated_light_living_room diff --git a/configuration/automation/switch_light_porch_decoration.yaml b/configuration/automation/switch_light_porch_decoration.yaml new file mode 100644 index 0000000..b8e3a03 --- /dev/null +++ b/configuration/automation/switch_light_porch_decoration.yaml @@ -0,0 +1,40 @@ +--- +- alias: '[ZWave] Porch Decoration Switch Double Tap UP' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "002" + value: "KeyPressed2x" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 12 }}' + action: + - service: light.turn_on + entity_id: + - light.frontyard_decoration_01 + - service: switch.turn_on + entity_id: + - switch.outlet_garage_01 + +- alias: '[ZWave] Porch Decoration Switch Double Tap DOWN' + initial_state: 'true' + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "001" + value: "KeyPressed2x" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 12 }}' + action: + - service: light.turn_off + entity_id: + - light.frontyard_decoration_01 + - service: switch.turn_off + entity_id: + - switch.outlet_garage_01 diff --git a/configuration/automation/switch_notification_person_on_porch.yaml b/configuration/automation/switch_notification_person_on_porch.yaml new file mode 100644 index 0000000..95a9c72 --- /dev/null +++ b/configuration/automation/switch_notification_person_on_porch.yaml @@ -0,0 +1,45 @@ +--- +- alias: '[Notification] Doorbell Visitor' + initial_state: 'true' + trigger: + platform: state + entity_id: binary_sensor.doorbell_doorbell + from: "off" + to: "on" + action: + - parallel: + - service: script.cast_camera_doorbell_nvidia + - service: script.cast_camera_doorbell +# - service: media_player.play_media +# target: +# entity_id: media_player.kitchen_max +# data: +# media_content_type: "music" +# media_content_id: "/usr/share/hassio/homeassistant/www/chime.m4a" +# - service: sonos.snapshot +# data: +# entity_id: all + - service: media_player.volume_set + target: + entity_id: + - media_player.living_room_1 + data: + volume_level: 0.65 + - service: media_player.play_media + target: + entity_id: + - media_player.living_room_1 + data: + media_content_type: music + media_content_id: http://10.10.12.12:8123/local/chime.mp3 +# - delay: +# hours: 0 +# minutes: 0 +# seconds: 4 +# milliseconds: 0 +# - delay: '00:00:10' +# - service: script.cast_camera_doorbell +# - service: sonos.restore +# data: +# entity_id: all +# mode: single \ No newline at end of file diff --git a/configuration/automation/switch_scene_bedroom_master.yaml b/configuration/automation/switch_scene_bedroom_master.yaml new file mode 100644 index 0000000..5973fca --- /dev/null +++ b/configuration/automation/switch_scene_bedroom_master.yaml @@ -0,0 +1,17 @@ +--- +- alias: '[ZWave] Bedroom Master Switch Single Tap Third' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "003" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 21 }}' + action: + - service: input_select.select_next + target: + entity_id: input_select.bedroom_master_scenes diff --git a/configuration/automation/switch_scene_bedroom_max.yaml b/configuration/automation/switch_scene_bedroom_max.yaml new file mode 100644 index 0000000..ae91032 --- /dev/null +++ b/configuration/automation/switch_scene_bedroom_max.yaml @@ -0,0 +1,17 @@ +--- +- alias: '[ZWave] Bedroom Max Switch Single Tap UP' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "003" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 19 }}' + action: + - service: input_select.select_next + target: + entity_id: input_select.bedroom_max_scenes diff --git a/configuration/automation/switch_scene_bedroom_olivia.yaml b/configuration/automation/switch_scene_bedroom_olivia.yaml new file mode 100644 index 0000000..683fdfb --- /dev/null +++ b/configuration/automation/switch_scene_bedroom_olivia.yaml @@ -0,0 +1,17 @@ +--- +- alias: '[ZWave] Bedroom Olivia Switch Single Tap Third' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "003" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 22 }}' + action: + - service: input_select.select_next + target: + entity_id: input_select.bedroom_olivia_scenes diff --git a/configuration/automation/switch_scene_kitchen.yaml b/configuration/automation/switch_scene_kitchen.yaml new file mode 100644 index 0000000..dc2b6bc --- /dev/null +++ b/configuration/automation/switch_scene_kitchen.yaml @@ -0,0 +1,17 @@ +--- +- alias: '[ZWave] Kitchen Switch Single Tap Third' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "003" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 23 or trigger.event.data.node_id == 65 or trigger.event.data.node_id == 25 }}' + action: + - service: input_select.select_next + target: + entity_id: input_select.kitchen_scenes diff --git a/configuration/automation/switch_scene_living_room.yaml b/configuration/automation/switch_scene_living_room.yaml new file mode 100644 index 0000000..a5f9668 --- /dev/null +++ b/configuration/automation/switch_scene_living_room.yaml @@ -0,0 +1,17 @@ +--- +- alias: '[ZWave] Living Room Switch Single Tap Third' + initial_state: "true" + trigger: + - platform: event + event_type: zwave_js_value_notification + event_data: + property: "scene" + property_key: "003" + value: "KeyPressed" + condition: + condition: template + value_template: '{{ trigger.event.data.node_id == 10 or trigger.event.data.node_id == 11 }}' + action: + - service: input_select.select_next + target: + entity_id: input_select.living_room_scenes diff --git a/configuration/automation/vacuum_cleanup_kitchen_scheduled.yaml b/configuration/automation/vacuum_cleanup_kitchen_scheduled.yaml new file mode 100644 index 0000000..0709f56 --- /dev/null +++ b/configuration/automation/vacuum_cleanup_kitchen_scheduled.yaml @@ -0,0 +1,12 @@ +--- +- alias: '[Kitchen] Vacuum CleanUp' + trigger: + platform: time + at: + - input_datetime.app_settings_volume_day_starts + action: + - service: vacuum.send_command + data: + entity_id: vacuum.roborock_s5_max + params: [[26600,21200,23600,27000,1]] + command: app_zoned_clean diff --git a/configuration/camera/xiaomi_roborock.yaml b/configuration/camera/xiaomi_roborock.yaml new file mode 100644 index 0000000..d04487d --- /dev/null +++ b/configuration/camera/xiaomi_roborock.yaml @@ -0,0 +1,23 @@ +--- +- platform: xiaomi_cloud_map_extractor + host: !secret device_roborock_01_host + token: !secret device_roborock_01_token + username: !secret device_roborock_01_cloud_username + password: !secret device_roborock_01_cloud_password + draw: ['all'] + attributes: + - calibration_points + map_transformation: +# scale: 2 + rotate: 180 +# trim: +# top: 10 +# bottom: 20 +# left: 30 +# right: 40 + scan_interval: + seconds: 10 + auto_update: true + store_map_raw: false + store_map_image: true + store_map_path: "/tmp" \ No newline at end of file diff --git a/configuration/customize/cars.yaml b/configuration/customize/cars.yaml new file mode 100644 index 0000000..97b65fa --- /dev/null +++ b/configuration/customize/cars.yaml @@ -0,0 +1,3 @@ +--- +device_tracker.subaru_outback_txt: + entity_picture: "/local/outback.jpg" \ No newline at end of file diff --git a/configuration/customize/person.yaml b/configuration/customize/person.yaml new file mode 100644 index 0000000..fdc295d --- /dev/null +++ b/configuration/customize/person.yaml @@ -0,0 +1,12 @@ +--- +person.alexander_savin: + entity_picture: "/local/profile_savin_alex.jpg" + +person.tatiana_savin: + entity_picture: "/local/profile_savin_tanya.jpg" + +person.maxim_savin: + entity_picture: "/local/profile_savin_maxim.jpg" + +person.olivia_savin: + entity_picture: "/local/profile_savin_olivia.jpg" diff --git a/configuration/input_boolean/app_climate_humidity_suppression.yaml b/configuration/input_boolean/app_climate_humidity_suppression.yaml new file mode 100644 index 0000000..d9cf027 --- /dev/null +++ b/configuration/input_boolean/app_climate_humidity_suppression.yaml @@ -0,0 +1,12 @@ +--- +app_climate_humidity_suppression_status: + name: "Humidity Suppression" + icon: mdi:water-percent + +app_climate_humidity_suppression_announcement: + name: "Announcement" + icon: mdi:account-voice + +app_climate_humidity_suppression_notification: + name: "Notification" + icon: mdi:cellphone-message diff --git a/configuration/input_boolean/app_presence_occupancy.yaml b/configuration/input_boolean/app_presence_occupancy.yaml new file mode 100644 index 0000000..4a5fad2 --- /dev/null +++ b/configuration/input_boolean/app_presence_occupancy.yaml @@ -0,0 +1,81 @@ +--- +occupancy_kitchen: + name: 'Occupancy' + icon: mdi:account-multiple + +occupancy_living_room: + name: 'Occupancy' + icon: mdi:account-multiple + +occupancy_bedroom_master: + name: 'Occupancy' + icon: mdi:account-multiple + +occupancy_bedroom_olivia: + name: 'Occupancy' + icon: mdi:account-multiple + +occupancy_bedroom_max: + name: 'Occupancy' + icon: mdi:account-multiple + +occupancy_bathroom_master: + name: 'Occupancy' + icon: mdi:account-multiple + +occupancy_bathroom_bedroom: + name: 'Occupancy' + icon: mdi:account-multiple + +occupancy_bathroom_living: + name: 'Occupancy' + icon: mdi:account-multiple + +occupancy_garage: + name: 'Occupancy' + icon: mdi:account-multiple + +occupancy_stairwell: + name: 'Occupancy' + icon: mdi:account-multiple + +occupancy_backyard: + name: 'Occupancy' + icon: mdi:account-multiple + +occupancy_aisle: + name: 'Occupancy' + icon: mdi:account-multiple + +manually_operated_light_kitchen: + name: 'Manually Operated Light' + +manually_operated_light_living_room: + name: 'Manually Operated Light' + +manually_operated_light_bedroom_master: + name: 'Manually Operated Light' + +manually_operated_light_bedroom_olivia: + name: 'Manually Operated Light' + +manually_operated_light_bedroom_max: + name: 'Manually Operated Light' + +manually_operated_light_bathroom_master: + name: 'Manually Operated Light' + +manually_operated_light_bathroom_bedroom: + name: 'Manually Operated Light' + +manually_operated_light_bathroom_living: + name: 'Manually Operated Light' + +manually_operated_light_garage: + name: 'Manually Operated Light' + +manually_operated_light_stairwell: + name: 'Manually Operated Light' + +manually_operated_light_backyard: + name: 'Manually Operated Light' diff --git a/configuration/input_boolean/app_va_night_mode.yaml b/configuration/input_boolean/app_va_night_mode.yaml new file mode 100644 index 0000000..b3ebc1f --- /dev/null +++ b/configuration/input_boolean/app_va_night_mode.yaml @@ -0,0 +1,4 @@ +--- +app_va_night_mode_status: + name: "Voice Assistant Night mode" + icon: mdi:weather-night diff --git a/configuration/input_boolean/guest_mode.yaml b/configuration/input_boolean/guest_mode.yaml new file mode 100644 index 0000000..a20fb5f --- /dev/null +++ b/configuration/input_boolean/guest_mode.yaml @@ -0,0 +1,4 @@ +--- +guest_mode: + name: 'Guest Mode' + icon: mdi:briefcase diff --git a/configuration/input_boolean/light_state.yaml b/configuration/input_boolean/light_state.yaml new file mode 100644 index 0000000..e9c006b --- /dev/null +++ b/configuration/input_boolean/light_state.yaml @@ -0,0 +1,28 @@ +--- +kitchen_light_state: + name: 'Kitchen Light State' + icon: mdi:lightbulb-group + +living_room_light_state: + name: 'Living Room Light State' + icon: mdi:lightbulb-group + +bedroom_master_light_state: + name: 'Bedroom Master Light State' + icon: mdi:lightbulb-group + +bedroom_olivia_light_state: + name: 'Bedroom Olivia Light State' + icon: mdi:lightbulb-group + +bedroom_max_light_state: + name: 'Bedroom Max Light State' + icon: mdi:lightbulb-group + +backyard_light_state: + name: 'Backyard Light State' + icon: mdi:lightbulb-group + +porch_light_state: + name: 'Porch Light State' + icon: mdi:lightbulb-group diff --git a/configuration/input_boolean/zigbee2mqtt.yaml b/configuration/input_boolean/zigbee2mqtt.yaml new file mode 100644 index 0000000..40c9d86 --- /dev/null +++ b/configuration/input_boolean/zigbee2mqtt.yaml @@ -0,0 +1,10 @@ +--- +zigbee_permit_join_01: + name: Allow devices to join + initial: off + icon: mdi:cellphone-wireless + +zigbee_permit_join_02: + name: Allow devices to join + initial: off + icon: mdi:cellphone-wireless diff --git a/configuration/input_datetime/app_humidity_suppression.yaml b/configuration/input_datetime/app_humidity_suppression.yaml new file mode 100644 index 0000000..90d9f1d --- /dev/null +++ b/configuration/input_datetime/app_humidity_suppression.yaml @@ -0,0 +1,9 @@ +--- +app_humidity_suppression_time_start: + name: "Start Time" + has_date: false + has_time: true +app_humidity_suppression_time_end: + name: "End Time" + has_date: false + has_time: true \ No newline at end of file diff --git a/configuration/input_datetime/app_va_night_mode.yaml b/configuration/input_datetime/app_va_night_mode.yaml new file mode 100644 index 0000000..02d8bcb --- /dev/null +++ b/configuration/input_datetime/app_va_night_mode.yaml @@ -0,0 +1,9 @@ +--- +app_va_night_mode_time_start: + name: "Start Time" + has_date: false + has_time: true +app_va_night_mode_time_end: + name: "End Time" + has_date: false + has_time: true diff --git a/configuration/input_number/app_climate_humidity_suppression.yaml b/configuration/input_number/app_climate_humidity_suppression.yaml new file mode 100644 index 0000000..e59d6ad --- /dev/null +++ b/configuration/input_number/app_climate_humidity_suppression.yaml @@ -0,0 +1,10 @@ +--- +app_climate_humidity_suppression_humidity_level: + name: "Humidity Level" + icon: mdi:tune + unit_of_measurement: '%' + initial: 70 + mode: slider + min: 1 + max: 100 + step: 1 diff --git a/configuration/input_number/app_climate_thermostat.yaml b/configuration/input_number/app_climate_thermostat.yaml new file mode 100644 index 0000000..23d7cb8 --- /dev/null +++ b/configuration/input_number/app_climate_thermostat.yaml @@ -0,0 +1,99 @@ +--- +app_climate_thermostat_morning_heat_temp: + name: "Heat Temp (Morning)" + icon: mdi:fire + mode: slider + unit_of_measurement: "°C" + min: 7 + max: 35 + step: 0.5 + +app_climate_thermostat_day_heat_temp: + name: "Heat Temp (Day)" + icon: mdi:fire + mode: slider + unit_of_measurement: "°C" + min: 7 + max: 35 + step: 0.5 + +app_climate_thermostat_evening_heat_temp: + name: "Heat Temp (Eveing)" + icon: mdi:fire + mode: slider + unit_of_measurement: "°C" + min: 7 + max: 35 + step: 0.5 + +app_climate_thermostat_night_heat_temp: + name: "Heat Temp (Night)" + icon: mdi:fire + mode: slider + unit_of_measurement: "°C" + min: 7 + max: 35 + step: 0.5 + +app_climate_thermostat_away_heat_temp: + name: "Heat Temp (Away)" + icon: mdi:fire + mode: slider + unit_of_measurement: "°C" + min: 7 + max: 35 + step: 0.5 + +app_climate_thermostat_morning_cool_temp: + name: "Cool Temp (Morning)" + icon: mdi:snowflake + mode: slider + unit_of_measurement: "°C" + min: 7 + max: 35 + step: 0.5 + +app_climate_thermostat_day_cool_temp: + name: "Cool Temp (Day)" + icon: mdi:snowflake + mode: slider + unit_of_measurement: "°C" + min: 7 + max: 35 + step: 0.5 + +app_climate_thermostat_evening_cool_temp: + name: "Cool Temp (Evening)" + icon: mdi:snowflake + mode: slider + unit_of_measurement: "°C" + min: 7 + max: 35 + step: 0.5 + +app_climate_thermostat_night_cool_temp: + name: "Cool Temp (Night)" + icon: mdi:snowflake + mode: slider + unit_of_measurement: "°C" + min: 7 + max: 35 + step: 0.5 + +app_climate_thermostat_away_cool_temp: + name: "Cool Temp (Away)" + icon: mdi:snowflake + mode: slider + unit_of_measurement: "°C" + min: 7 + max: 35 + step: 0.5 + +app_climate_thermostat_energy_saving_timeout: + name: "Eco Timeout" + icon: mdi:clock-fast + unit_of_measurement: "sec" + mode: slider + min: 15 + max: 600 + step: 15 diff --git a/configuration/input_number/app_lighting_lighting.yaml b/configuration/input_number/app_lighting_lighting.yaml new file mode 100644 index 0000000..4e38d30 --- /dev/null +++ b/configuration/input_number/app_lighting_lighting.yaml @@ -0,0 +1,27 @@ +--- +app_light_light_lux_mininum: + name: "Minimum Lux Limit" + icon: mdi:tune + unit_of_measurement: "lx" + mode: slider + min: 2 + max: 100 + step: 1 + +app_light_light_timeout_off_light: + name: "Time Out to Off Lights" + icon: mdi:tune + unit_of_measurement: "sec" + mode: slider + min: 5 + max: 600 + step: 1 + +app_light_light_transition_time: + name: "Light Transition Time" + icon: mdi:tune + unit_of_measurement: "sec" + mode: slider + min: 0 + max: 60 + step: 1 diff --git a/configuration/input_number/app_presence_occupancy.yaml b/configuration/input_number/app_presence_occupancy.yaml new file mode 100644 index 0000000..49437f7 --- /dev/null +++ b/configuration/input_number/app_presence_occupancy.yaml @@ -0,0 +1,88 @@ +--- +occupants_kitchen: + name: 'Kitchen Occupants #' + mode: slider + initial: 0 + min: 0 + max: 10 + step: 1 + +occupants_living_room: + name: 'Living Room Occupants #' + mode: slider + initial: 0 + min: 0 + max: 10 + step: 1 + +occupants_bedroom_master: + name: 'Master Bedroom Occupants #' + mode: slider + initial: 0 + min: 0 + max: 10 + step: 1 + +occupants_bedroom_olivia: + name: 'Olivia Bedroom Occupants #' + mode: slider + initial: 0 + min: 0 + max: 10 + step: 1 + +occupants_bedroom_max: + name: 'Maxim Bedroom Occupants #' + mode: slider + initial: 0 + min: 0 + max: 10 + step: 1 + +occupants_bathroom_master: + name: 'Main Bathroom Occupants #' + mode: slider + initial: 0 + min: 0 + max: 10 + step: 1 + +occupants_bathroom_bedroom: + name: 'Master Bedroom Bathroom Occupants #' + mode: slider + initial: 0 + min: 0 + max: 10 + step: 1 + +occupants_bathroom_living: + name: 'Living Room Bathroom Occupants #' + mode: slider + initial: 0 + min: 0 + max: 10 + step: 1 + +occupants_garage: + name: 'Garage Occupants #' + mode: slider + initial: 0 + min: 0 + max: 10 + step: 1 + +occupants_stairwell: + name: 'Stairwell Occupants #' + mode: slider + initial: 0 + min: 0 + max: 10 + step: 1 + +occupants_backyard: + name: 'Backyard Occupants #' + mode: slider + initial: 0 + min: 0 + max: 10 + step: 1 diff --git a/configuration/input_number/app_security_auto_arm.yaml b/configuration/input_number/app_security_auto_arm.yaml new file mode 100644 index 0000000..872e14d --- /dev/null +++ b/configuration/input_number/app_security_auto_arm.yaml @@ -0,0 +1,9 @@ +--- +app_security_auto_arm_timeout: + name: 'Auto Close Timeout' + icon: mdi:clock-fast + unit_of_measurement: 'sec' + mode: slider + min: 15 + max: 600 + step: 15 diff --git a/configuration/input_number/app_security_auto_close.yaml b/configuration/input_number/app_security_auto_close.yaml new file mode 100644 index 0000000..8b6a18e --- /dev/null +++ b/configuration/input_number/app_security_auto_close.yaml @@ -0,0 +1,9 @@ +--- +app_security_auto_close_timeout: + name: 'Auto Close Timeout' + icon: mdi:clock-fast + unit_of_measurement: 'sec' + mode: slider + min: 15 + max: 600 + step: 15 diff --git a/configuration/input_number/app_security_auto_lock.yaml b/configuration/input_number/app_security_auto_lock.yaml new file mode 100644 index 0000000..85127ea --- /dev/null +++ b/configuration/input_number/app_security_auto_lock.yaml @@ -0,0 +1,9 @@ +--- +app_security_auto_lock_timeout: + name: "Auto Lock Timeout" + icon: mdi:clock-fast + unit_of_measurement: "sec" + mode: slider + min: 15 + max: 600 + step: 15 diff --git a/configuration/input_number/app_settings_brightness.yaml b/configuration/input_number/app_settings_brightness.yaml new file mode 100644 index 0000000..ae235c8 --- /dev/null +++ b/configuration/input_number/app_settings_brightness.yaml @@ -0,0 +1,45 @@ +--- +app_settings_brightness_level_morning: + name: 'Morning Brightness Level' + icon: mdi:tune + unit_of_measurement: '%' + mode: slider + min: 1 + max: 100 + step: 1 + +app_settings_brightness_level_day: + name: 'Day Brightness Level' + icon: mdi:tune + unit_of_measurement: '%' + mode: slider + min: 1 + max: 100 + step: 1 + +app_settings_brightness_level_evening: + name: 'Evening Brightness Level' + icon: mdi:tune + unit_of_measurement: '%' + mode: slider + min: 1 + max: 100 + step: 1 + +app_settings_brightness_level_night: + name: 'Night Brightness Level' + icon: mdi:tune + unit_of_measurement: '%' + mode: slider + min: 1 + max: 100 + step: 1 + +app_settings_brightness_transition_time: + name: 'Auto Light Transition Time (sec)' + icon: mdi:tune + unit_of_measurement: 'sec' + mode: slider + min: 0 + max: 600 + step: 1 diff --git a/configuration/input_number/app_settings_volume.yaml b/configuration/input_number/app_settings_volume.yaml new file mode 100644 index 0000000..3847bdf --- /dev/null +++ b/configuration/input_number/app_settings_volume.yaml @@ -0,0 +1,36 @@ +--- +app_settings_volume_level_morning: + name: 'Morning Volume Level' + icon: mdi:tune + unit_of_measurement: '%' + mode: slider + min: 1 + max: 100 + step: 1 + +app_settings_volume_level_day: + name: 'Day Volume Level' + icon: mdi:tune + unit_of_measurement: '%' + mode: slider + min: 1 + max: 100 + step: 1 + +app_settings_volume_level_evening: + name: 'Evening Volume Level' + icon: mdi:tune + unit_of_measurement: '%' + mode: slider + min: 1 + max: 100 + step: 1 + +app_settings_volume_level_night: + name: 'Night Volume Level' + icon: mdi:tune + unit_of_measurement: '%' + mode: slider + min: 1 + max: 100 + step: 1 diff --git a/configuration/input_number/app_va_night_mode.yaml b/configuration/input_number/app_va_night_mode.yaml new file mode 100644 index 0000000..e7b48ec --- /dev/null +++ b/configuration/input_number/app_va_night_mode.yaml @@ -0,0 +1,18 @@ +--- +app_va_night_mode_volume_level: + name: "Nighttime Volume Level" + icon: mdi:tune + unit_of_measurement: '%' + mode: slider + min: 0 + max: 1 + step: 0.05 + +app_va_day_mode_volume_level: + name: "Daytime Volume Level" + icon: mdi:tune + unit_of_measurement: '%' + mode: slider + min: 0 + max: 1 + step: 0.05 diff --git a/configuration/input_number/global_day_night.yaml b/configuration/input_number/global_day_night.yaml new file mode 100644 index 0000000..42e679b --- /dev/null +++ b/configuration/input_number/global_day_night.yaml @@ -0,0 +1,7 @@ +--- +day_night: + name: 'Day/Night' + icon: mdi:theme-light-dark + min: 0 + max: 1 + step: 1 diff --git a/configuration/input_number/switch_holding.yaml b/configuration/input_number/switch_holding.yaml new file mode 100644 index 0000000..e8b6476 --- /dev/null +++ b/configuration/input_number/switch_holding.yaml @@ -0,0 +1,28 @@ +--- +light_step: + name: "Step the lights this much" + initial: 10 + min: 1 + max: 64 + step: 1 + +light_minimum: + name: "No dimmer than this" + initial: 5 + min: 1 + max: 255 + step: 1 + +light_maximum: + name: "No brighter than this" + initial: 255 + min: 50 + max: 255 + step: 1 + +light_delay_ms: + name: "Step the lights this often (ms)" + initial: 100 + min: 100 + max: 5000 + step: 100 diff --git a/configuration/input_select/app_security_auto_arm.yaml b/configuration/input_select/app_security_auto_arm.yaml new file mode 100644 index 0000000..f802f0b --- /dev/null +++ b/configuration/input_select/app_security_auto_arm.yaml @@ -0,0 +1,7 @@ +--- +app_security_auto_arm_default_mode: + name: "Default Auto Arm Mode" + options: + - "Arm (Away)" + - "Arm (Home)" + icon: mdi:keyboard diff --git a/configuration/input_select/backyard_scenes.yaml b/configuration/input_select/backyard_scenes.yaml new file mode 100644 index 0000000..9743ae1 --- /dev/null +++ b/configuration/input_select/backyard_scenes.yaml @@ -0,0 +1,8 @@ +--- +backyard_scenes: + name: Backyard Scenes + options: + - 'All' + - 'Wall Only' + - 'Pergola Only' + icon: mdi:checkbox-multiple-marked-circle diff --git a/configuration/input_select/bedroom_master_scenes.yaml b/configuration/input_select/bedroom_master_scenes.yaml new file mode 100644 index 0000000..5e11827 --- /dev/null +++ b/configuration/input_select/bedroom_master_scenes.yaml @@ -0,0 +1,8 @@ +--- +bedroom_master_scenes: + name: Bedroom Master Scenes + options: + - 'All' + - 'Ceiling Only' + - 'Floor Only' + icon: mdi:checkbox-multiple-marked-circle diff --git a/configuration/input_select/bedroom_max_scenes.yaml b/configuration/input_select/bedroom_max_scenes.yaml new file mode 100644 index 0000000..b1c3cbb --- /dev/null +++ b/configuration/input_select/bedroom_max_scenes.yaml @@ -0,0 +1,8 @@ +--- +bedroom_max_scenes: + name: Bedroom Max Scenes + options: + - 'All' + - 'Ceiling Only' + - 'Table Only' + icon: mdi:checkbox-multiple-marked-circle diff --git a/configuration/input_select/bedroom_olivia_scenes.yaml b/configuration/input_select/bedroom_olivia_scenes.yaml new file mode 100644 index 0000000..79176db --- /dev/null +++ b/configuration/input_select/bedroom_olivia_scenes.yaml @@ -0,0 +1,8 @@ +--- +bedroom_olivia_scenes: + name: Bedroom Olivia Scenes + options: + - 'All' + - 'Ceiling Only' + - 'Floor Only' + icon: mdi:checkbox-multiple-marked-circle diff --git a/configuration/input_select/kitchen_scenes.yaml b/configuration/input_select/kitchen_scenes.yaml new file mode 100644 index 0000000..6ba6446 --- /dev/null +++ b/configuration/input_select/kitchen_scenes.yaml @@ -0,0 +1,11 @@ +--- +kitchen_scenes: + name: Kitchen Scenes + options: + - 'All' + - 'Work Zone Only' + - 'Dinning Zone Only' +# - 'Dinning Ceiling Only' + - 'Ceiling Only' +# - 'Decoration Only' + icon: mdi:checkbox-multiple-marked-circle diff --git a/configuration/input_select/living_room_scenes.yaml b/configuration/input_select/living_room_scenes.yaml new file mode 100644 index 0000000..ac2c611 --- /dev/null +++ b/configuration/input_select/living_room_scenes.yaml @@ -0,0 +1,11 @@ +--- +living_room_scenes: + name: Living Room Scenes + options: + - 'All' + - 'Ceiling Only' + - 'Ceiling Group 1 Only' + - 'Ceiling Group 2 Only' + - 'Floor Only' +# - 'Floor and Ceiling Group 1' + icon: mdi:checkbox-multiple-marked-circle diff --git a/configuration/input_select/media_player_pioneer_sources.yaml b/configuration/input_select/media_player_pioneer_sources.yaml new file mode 100644 index 0000000..52c4446 --- /dev/null +++ b/configuration/input_select/media_player_pioneer_sources.yaml @@ -0,0 +1,10 @@ +--- +media_player_pioneer_sources: + name: "Pioneer A/V Receiver Sources" + options: + - 'Off' + - 'Nvidia Shield TV' + - 'PlayStation 4 Pro' + - 'Windows 11' + - 'Unifi Protect' + icon: mdi:video-input-hdmi diff --git a/configuration/input_select/parts_of_the_day.yaml b/configuration/input_select/parts_of_the_day.yaml new file mode 100644 index 0000000..c07811b --- /dev/null +++ b/configuration/input_select/parts_of_the_day.yaml @@ -0,0 +1,21 @@ +--- +parts_of_the_day: + name: Parts of the day + options: + - 'Morning' + - 'Afternoon' + - 'Evening' + - 'Night' + icon: mdi:sun-clock-outline + +# Parts of the Day +# ------------------------------------------ +# Morning 5 am to 12 pm (noon) +# Early morning 5 am to 8 am +# Late morning 11 am to 12pm +# Afternoon 12 pm to 5 pm +# Early afternoon 1 pm to 3 pm +# Late afternoon 4 pm to 5 pm +# Evening 5 pm to 9 pm +# Early evening 5 pm to 7 pm +# Night 9 pm to 4 am \ No newline at end of file diff --git a/configuration/input_select/porch_scenes.yaml b/configuration/input_select/porch_scenes.yaml new file mode 100644 index 0000000..5f4efdd --- /dev/null +++ b/configuration/input_select/porch_scenes.yaml @@ -0,0 +1,8 @@ +--- +porch_scenes: + name: Porch Scenes + options: + - 'All' + - 'Porch Only' + - 'Garage Only' + icon: mdi:checkbox-multiple-marked-circle diff --git a/configuration/input_text/backyard_last_scene.yaml b/configuration/input_text/backyard_last_scene.yaml new file mode 100644 index 0000000..df7a8f2 --- /dev/null +++ b/configuration/input_text/backyard_last_scene.yaml @@ -0,0 +1,4 @@ +--- +backyard_last_scene: + name: Backyard Last Scene + mode: text diff --git a/configuration/input_text/bedroom_master_last_scene.yaml b/configuration/input_text/bedroom_master_last_scene.yaml new file mode 100644 index 0000000..a805ceb --- /dev/null +++ b/configuration/input_text/bedroom_master_last_scene.yaml @@ -0,0 +1,4 @@ +--- +bedroom_master_last_scene: + name: Bedroom Master Last Scene + mode: text \ No newline at end of file diff --git a/configuration/input_text/bedroom_max_last_scene.yaml b/configuration/input_text/bedroom_max_last_scene.yaml new file mode 100644 index 0000000..b90d089 --- /dev/null +++ b/configuration/input_text/bedroom_max_last_scene.yaml @@ -0,0 +1,4 @@ +--- +bedroom_max_last_scene: + name: Bedroom Max Last Scene + mode: text \ No newline at end of file diff --git a/configuration/input_text/bedroom_olivia_last_scene.yaml b/configuration/input_text/bedroom_olivia_last_scene.yaml new file mode 100644 index 0000000..95e8206 --- /dev/null +++ b/configuration/input_text/bedroom_olivia_last_scene.yaml @@ -0,0 +1,4 @@ +--- +bedroom_olivia_last_scene: + name: Bedroom Olivia Last Scene + mode: text \ No newline at end of file diff --git a/configuration/input_text/kitchen_last_scene.yaml b/configuration/input_text/kitchen_last_scene.yaml new file mode 100644 index 0000000..9658197 --- /dev/null +++ b/configuration/input_text/kitchen_last_scene.yaml @@ -0,0 +1,4 @@ +--- +kitchen_last_scene: + name: Kitchen Last Scene + mode: text diff --git a/configuration/input_text/living_room_last_scene.yaml b/configuration/input_text/living_room_last_scene.yaml new file mode 100644 index 0000000..beb38ae --- /dev/null +++ b/configuration/input_text/living_room_last_scene.yaml @@ -0,0 +1,4 @@ +--- +living_room_last_scene: + name: Living Room Last Scene + mode: text \ No newline at end of file diff --git a/configuration/input_text/media_player_pioneer_source.yaml b/configuration/input_text/media_player_pioneer_source.yaml new file mode 100644 index 0000000..a14d679 --- /dev/null +++ b/configuration/input_text/media_player_pioneer_source.yaml @@ -0,0 +1,4 @@ +--- +media_player_pioneer_state: + name: Media Player Pioneer Current Source + mode: text diff --git a/configuration/input_text/porch_last_scene.yaml b/configuration/input_text/porch_last_scene.yaml new file mode 100644 index 0000000..d8cf3e9 --- /dev/null +++ b/configuration/input_text/porch_last_scene.yaml @@ -0,0 +1,4 @@ +--- +porch_last_scene: + name: Porch Last Scene + mode: text diff --git a/configuration/light/group_aisle.yaml b/configuration/light/group_aisle.yaml new file mode 100644 index 0000000..8417679 --- /dev/null +++ b/configuration/light/group_aisle.yaml @@ -0,0 +1,7 @@ +--- +- platform: group + unique_id: '6BF2C99Z6W27' + name: Aisle (Ceiling // All) + entities: + - light.aisle_ceiling_01 + - light.aisle_ceiling_02 diff --git a/configuration/light/group_bedroom_master.yaml b/configuration/light/group_bedroom_master.yaml new file mode 100644 index 0000000..72eccf1 --- /dev/null +++ b/configuration/light/group_bedroom_master.yaml @@ -0,0 +1,14 @@ +--- +- platform: group + unique_id: 'YSF78KI781XD' + name: Bedroom Master (Floor // All) + entities: + - light.bedroom_master_floor_lamp_01 + - light.bedroom_master_floor_lamp_02 + +- platform: group + unique_id: 'L653SB4PXVRG' + name: Bedroom Master (Ceiling // All) + entities: + - light.bedroom_master_ceiling_01 + - light.bedroom_master_ceiling_02 diff --git a/configuration/light/group_kitchen.yaml b/configuration/light/group_kitchen.yaml new file mode 100644 index 0000000..5a423f9 --- /dev/null +++ b/configuration/light/group_kitchen.yaml @@ -0,0 +1,23 @@ +--- +- platform: group + unique_id: 'G02HX1C292SJ' + name: Living Room (Ceiling // All) + entities: + - light.living_room_ceiling_01 + - light.living_room_ceiling_02 + - light.living_room_ceiling_03 + - light.living_room_ceiling_04 + +- platform: group + unique_id: '112SQB4GE16H' + name: Living Room (Ceiling // Group 1) + entities: + - light.living_room_ceiling_01 + - light.living_room_ceiling_02 + +- platform: group + unique_id: '67878S8CXXTZ' + name: Living Room (Ceiling // Group 2) + entities: + - light.living_room_ceiling_03 + - light.living_room_ceiling_04 diff --git a/configuration/light/group_living_room.yaml b/configuration/light/group_living_room.yaml new file mode 100644 index 0000000..7039016 --- /dev/null +++ b/configuration/light/group_living_room.yaml @@ -0,0 +1,23 @@ +--- +- platform: group + unique_id: 'SRC1K2CA8TG8' + name: Living Room (Ceiling // All) + entities: + - light.living_room_ceiling_01 + - light.living_room_ceiling_02 + - light.living_room_ceiling_03 + - light.living_room_ceiling_04 + +- platform: group + unique_id: 'ME019JFQR92Y' + name: Living Room (Ceiling // Group 1) + entities: + - light.living_room_ceiling_01 + - light.living_room_ceiling_02 + +- platform: group + unique_id: 'R2JYE63K8884' + name: Living Room (Ceiling // Group 2) + entities: + - light.living_room_ceiling_03 + - light.living_room_ceiling_04 diff --git a/configuration/media_player/pioneer.yaml b/configuration/media_player/pioneer.yaml new file mode 100644 index 0000000..335fc53 --- /dev/null +++ b/configuration/media_player/pioneer.yaml @@ -0,0 +1,22 @@ +--- +- platform: onkyo +# name: "Pioneer VSX-LX505" + host: 10.10.12.100 + sources: + "dvd": "Nvidia Shield TV" + "game": "PlayStation 4 Pro" + "cbl": "Windows 11" + "strm-box": "Unifi Protect" + "tv": "TV/Nothing" + "net": "ChromeCast/Network" + "bluetooth": "Bluetooth" + "cd": "Sonos" + +#action: media_player.onkyo_select_hdmi_output +#data: +# entity_id: media_player.onkyo_receiver +# hdmi_output: out-sub + +# out - Main +# sub - M+S +# out-sub - Sub diff --git a/configuration/mqtt/mqtt.yaml b/configuration/mqtt/mqtt.yaml new file mode 100644 index 0000000..3e5a929 --- /dev/null +++ b/configuration/mqtt/mqtt.yaml @@ -0,0 +1,84 @@ +--- +cover: + - name: "Garage Gate" + unique_id: 'BCM64CEV0WEC' + command_topic: "garadget/garagegate01/command" + state_topic: "garadget/garagegate01/status" +# config_topic: "garadget/garagegate01/config" + + payload_open: open + payload_close: close + payload_stop: stop + state_open: open + state_closed: closed + + qos: 0 + retain: true + value_template: '{{value_json.status}}' +# config_value_template: '{{value_json}}' + +sensor: + - name: 'Z2M #01 (state)' + unique_id: 'S832ONECB1QZ' + state_topic: "zigbee01/bridge/state" + icon: mdi:router-wireless + + - name: 'Z2M #02 (state)' + unique_id: 'IFN4329MYSD3' + state_topic: "zigbee02/bridge/state" + icon: mdi:router-wireless + +# - name: '' +# unique_id: +# device: +# state_topic: 'rtl433-01/RTL_433_ESP_OOK/RTL_433toMQTT/Acurite-Atlas/A/409' +# json_attributes_topic +# suggested_display_precision: 1 +# unit_of_measurement: "°C" +# value_template: "{{ value_json.temperature }}" +# availability: +# - topic: "home/sensor1/status" +# payload_available: "online" +# payload_not_available: "offline" +# +#{"model":"Acurite-Atlas","id":409,"channel":"A","sequence_num":0,"battery_ok":1,"message_type":39,"wind_avg_km_h":0,"uv":1,"lux":12710,"strike_count":14,"strike_distance":0,"exception":0,"raw_msg":"c199e70081097703c005","protocol":"Acurite 592TXR Temp/Humidity, 592TX Temp, 5n1 Weather Station, 6045 Lightning, 899 Rain, 3N1, Atlas","rssi":-79,"duration":151996} + +# - name: "Outdoor Temp" +# state_topic: "rtl433/ESP32-RTL-433-01/RTL_433toMQTT/Acurite-Atlas/A/409" +# unit_of_measurement: '°C' +# value_template: > +# {% if value_json is defined and value_json.message_type == 37 %} +# {{ value_json.temperature_C }} +# {% else %} +# {{ states('sensor.outdoor_temp') }} +# {% endif %} +# +# - name: "Outdoor Humidity" +# state_topic: "rtl433/ESP32-RTL-433-01/RTL_433toMQTT/Acurite-Atlas/A/409" +# unit_of_measurement: '%' +# value_template: > +# {% if value_json is defined and value_json.message_type == 37 %} +# {{ value_json.humidity }} +# {% else %} +# {{ states('sensor.outdoor_humidity') }} +# {% endif %} +# +# - name: "Outdoor UV" +# state_topic: "rtl433/ESP32-RTL-433-01/RTL_433toMQTT/Acurite-Atlas/A/409" +# unit_of_measurement: 'UV' +# value_template: > +# {% if value_json is defined and value_json.message_type == 39 %} +# {{ value_json.uv }} +# {% else %} +# {{ states('sensor.outdoor_uv') }} +# {% endif %} +# +# - name: "Outdoor LUX" +# state_topic: "rtl433/ESP32-RTL-433-01/RTL_433toMQTT/Acurite-Atlas/A/409" +# unit_of_measurement: 'lx' +# value_template: > +# {% if value_json is defined and value_json.message_type == 39 %} +# {{ value_json.lux }} +# {% else %} +# {{ states('sensor.outdoor_lux') }} +# {% endif %} diff --git a/configuration/mqtt/mqtt.yaml.bak b/configuration/mqtt/mqtt.yaml.bak new file mode 100644 index 0000000..c473099 --- /dev/null +++ b/configuration/mqtt/mqtt.yaml.bak @@ -0,0 +1,209 @@ +--- +fan: + - name: "Master Bathroom" + unique_id: '5CCF7FE737F8' + state_topic: "tasmota/fan01/stat/RESULT" + state_value_template: "{{ value_json.POWER }}" + command_topic: "tasmota/fan01/cmnd/POWER" + availability_topic: "tasmota/fan01/tele/LWT" + payload_on: "ON" + payload_off: "OFF" + payload_available: "Online" + payload_not_available: "Offline" + qos: 1 + retain: true + + - name: "Master Bedroom Bathroom" + unique_id: '840D8E6817FC' + state_topic: "tasmota/fan02/stat/RESULT" + state_value_template: "{{ value_json.POWER }}" + command_topic: "tasmota/fan02/cmnd/POWER" + availability_topic: "tasmota/fan02/tele/LWT" + payload_on: "ON" + payload_off: "OFF" + payload_available: "Online" + payload_not_available: "Offline" + qos: 1 + retain: true + + - name: "Bedroom Max" + unique_id: 'DC4F22AA30AF' + command_topic: "tasmota/fan03/cmnd/FanSpeed" + state_topic: "tasmota/fan03/stat/RESULT" + state_value_template: > + {% if value_json.FanSpeed is defined %} + {% if value_json.FanSpeed | int == 0 -%}off{%- elif value_json.FanSpeed | int > 0 -%}on{%- endif %} + {% else %} + {% if states.fan.bedroom_olivia.state == 'off' -%}off{%- elif states.fan.bedroom_olivia.state == 'on' -%}on{%- endif %} + {% endif %} + availability_topic: 'tasmota/fan03/tele/LWT' + payload_off: "off" + payload_on: "on" + payload_available: "Online" + payload_not_available: "Offline" + preset_modes: + - 'off' + - 'low' + - 'medium' + - 'high' + preset_mode_command_topic: "tasmota/fan03/cmnd/FanSpeed" + preset_mode_command_template: > + {% if value == 'low' %} + 1 + {% elif value == 'medium' %} + 2 + {% elif value == 'high' %} + 3 + {% else %} + 0 + {% endif %} + preset_mode_state_topic: "tasmota/fan03/stat/RESULT" + preset_mode_value_template: > + {% if value_json.FanSpeed | int == 1 %} + low + {% elif value_json.FanSpeed | int == 2 %} + medium + {% elif value_json.FanSpeed | int == 3 %} + high + {% else %} + off + {% endif %} + + - name: "Bedroom Olivia" + unique_id: 'DC4F22AA30E5' + command_topic: "tasmota/fan04/cmnd/FanSpeed" + state_topic: "tasmota/fan04/stat/RESULT" + state_value_template: > + {% if value_json.FanSpeed is defined %} + {% if value_json.FanSpeed == 0 -%}off{%- elif value_json.FanSpeed > 0 -%}on{%- endif %} + {% else %} + {% if states.fan.bedroom_guest.state == 'off' -%}off{%- elif states.fan.bedroom_guest.state == 'on' -%}on{%- endif %} + {% endif %} + availability_topic: 'tasmota/fan04/tele/LWT' + payload_off: "off" + payload_on: "on" + payload_available: "Online" + payload_not_available: "Offline" + preset_modes: + - 'off' + - 'low' + - 'medium' + - 'high' + preset_mode_command_topic: "tasmota/fan04/cmnd/FanSpeed" + preset_mode_command_template: > + {% if value == 'low' %} + 1 + {% elif value == 'medium' %} + 2 + {% elif value == 'high' %} + 3 + {% else %} + 0 + {% endif %} + preset_mode_state_topic: "tasmota/fan04/stat/RESULT" + preset_mode_value_template: > + {% if value_json.FanSpeed == 1 %} + low + {% elif value_json.FanSpeed == 2 %} + medium + {% elif value_json.FanSpeed == 3 %} + high + {% else %} + off + {% endif %} + + - name: "Living Room Bathroom" + unique_id: '840D8E68117C' + state_topic: "tasmota/fan05/stat/RESULT" + state_value_template: "{{ value_json.POWER }}" + command_topic: "tasmota/fan05/cmnd/POWER" + availability_topic: "tasmota/fan05/tele/LWT" + payload_on: "ON" + payload_off: "OFF" + payload_available: "Online" + payload_not_available: "Offline" + qos: 1 + retain: true + +light: + - name: "Kitchen Decorating 01" + unique_id: '600194CE2BFC' + state_topic: "tasmota/light01/stat/RESULT" + state_value_template: "{{ value_json.POWER }}" + command_topic: "tasmota/light01/cmnd/POWER" + availability_topic: "tasmota/light01/tele/LWT" + payload_on: "ON" + payload_off: "OFF" + payload_available: "Online" + payload_not_available: "Offline" + retain: true + qos: 1 + +cover: + - name: "Garage Gate" + unique_id: 'BCM64CEV0WEC' + command_topic: "garadget/garagegate01/command" + state_topic: "garadget/garagegate01/status" +# config_topic: "garadget/garagegate01/config" + + payload_open: open + payload_close: close + payload_stop: stop + state_open: open + state_closed: closed + + qos: 0 + retain: true + value_template: '{{value_json.status}}' +# config_value_template: '{{value_json}}' + +sensor: + - name: 'Z2M #01 (state)' + unique_id: 'S832ONECB1QZ' + state_topic: "zigbee01/bridge/state" + icon: mdi:router-wireless + + - name: 'Z2M #02 (state)' + unique_id: 'IFN4329MYSD3' + state_topic: "zigbee02/bridge/state" + icon: mdi:router-wireless + +# - name: "Outdoor Temp" +# state_topic: "rtl433/ESP32-RTL-433-01/RTL_433toMQTT/Acurite-Atlas/A/409" +# unit_of_measurement: '°C' +# value_template: > +# {% if value_json is defined and value_json.message_type == 37 %} +# {{ value_json.temperature_C }} +# {% else %} +# {{ states('sensor.outdoor_temp') }} +# {% endif %} +# +# - name: "Outdoor Humidity" +# state_topic: "rtl433/ESP32-RTL-433-01/RTL_433toMQTT/Acurite-Atlas/A/409" +# unit_of_measurement: '%' +# value_template: > +# {% if value_json is defined and value_json.message_type == 37 %} +# {{ value_json.humidity }} +# {% else %} +# {{ states('sensor.outdoor_humidity') }} +# {% endif %} +# +# - name: "Outdoor UV" +# state_topic: "rtl433/ESP32-RTL-433-01/RTL_433toMQTT/Acurite-Atlas/A/409" +# unit_of_measurement: 'UV' +# value_template: > +# {% if value_json is defined and value_json.message_type == 39 %} +# {{ value_json.uv }} +# {% else %} +# {{ states('sensor.outdoor_uv') }} +# {% endif %} +# +# - name: "Outdoor LUX" +# state_topic: "rtl433/ESP32-RTL-433-01/RTL_433toMQTT/Acurite-Atlas/A/409" +# unit_of_measurement: 'lx' +# value_template: > +# {% if value_json is defined and value_json.message_type == 39 %} +# {{ value_json.lux }} +# {% else %} +# {{ states('sensor.outdoor_lux') }} +# {% endif %} diff --git a/configuration/notify/_html5.yaml.disabled b/configuration/notify/_html5.yaml.disabled new file mode 100644 index 0000000..e5c570e --- /dev/null +++ b/configuration/notify/_html5.yaml.disabled @@ -0,0 +1,5 @@ +--- +- platform: html5 + vapid_pub_key: BCXnQ_nQX-KnIm6Kpx4aQQCxuI3i9E9I-3tKUa45T8CTZsN5-LK1Zi7Vak-DTEmR9rl2kXkqGh2Tf8c1JP672Jc + vapid_prv_key: NTDsEzMEGSy_mlpcbyI19WwSS_kOtted8wrrRaNCe1A + vapid_email: alex.savin.nyc@gmail.com diff --git a/configuration/notify/telegram.yaml b/configuration/notify/telegram.yaml new file mode 100644 index 0000000..232b1d3 --- /dev/null +++ b/configuration/notify/telegram.yaml @@ -0,0 +1,12 @@ +--- +- name: telegram_alex + platform: telegram + chat_id: !secret services_notification_telegram_chat_id_01 + +- name: telegram_tanya + platform: telegram + chat_id: !secret services_notification_telegram_chat_id_02 + +- name: telegram_group + platform: telegram + chat_id: !secret services_notification_telegram_chat_id_03 diff --git a/configuration/notify/twilio.yaml b/configuration/notify/twilio.yaml new file mode 100644 index 0000000..59b1547 --- /dev/null +++ b/configuration/notify/twilio.yaml @@ -0,0 +1,4 @@ +--- +- name: twilio_call + platform: twilio_call + from_number: !secret notify_twilio_number_from diff --git a/configuration/recorder/postgres.yml b/configuration/recorder/postgres.yml new file mode 100644 index 0000000..ba6d897 --- /dev/null +++ b/configuration/recorder/postgres.yml @@ -0,0 +1,34 @@ +#################################################################################################### +### RECORDER ################################################################################### +#################################################################################################### +--- +db_url: postgresql://hassio:qP4fwHvq69QnZqj4@10.10.12.11:5432/hassio?client_encoding=utf8 +purge_keep_days: 10 +auto_purge: true +auto_repack: true +db_max_retries: 60 +db_retry_wait: 5 +exclude: + domains: + - automation + - updater + entity_globs: + - sensor.weather_* + entities: + - sun.sun + - sensor.last_boot + - sensor.date + event_types: + - call_service + +# include: +# domains: +# - alarm_control_panel +# - light +# entity_globs: +# - binary_sensor.*_occupancy +# exclude: +# domains: +# - media_player +# entities: +# - light.kitchen_light diff --git a/configuration/rest-command/pipup.yaml b/configuration/rest-command/pipup.yaml new file mode 100644 index 0000000..f21ee24 --- /dev/null +++ b/configuration/rest-command/pipup.yaml @@ -0,0 +1,64 @@ +--- +#service: androidtv.adb_command +#data: +# entity_id: media_player.android_tv_10_10_12_101 +# command: >- +# ps -ef | grep -v grep | grep pipup || am start nl.rogro82.pipup/.MainActivity + +#service: rest_command.pipup_image +#data: +# title: test +# message: test message +# url: https://cdn.esawebb.org/archives/images/screen/weic2218a.jpg + + +pipup_url: + url: http://10.10.12.101:7979/notify + content_type: 'application/json' + verify_ssl: false + method: 'post' + timeout: 20 + payload: > + { + "duration": {{ duration | default(20) }}, + "position": {{ position | default(0) }}, + "title": "{{ title | default('') }}", + "titleColor": "{{ titleColor | default('#50BFF2') }}", + "titleSize": {{ titleSize | default(10) }}, + "message": "{{ message }}", + "messageColor": "{{ messageColor | default('#fbf5f5') }}", + "messageSize": {{ messageSize | default(14) }}, + "backgroundColor": "{{ backgroundColor | default('#0f0e0e') }}", + "media": { + "web": { + "uri": "{{ url }}", + "width": {{ width | default(640) }}, + "height": {{ height | default(480) }} + } + } + } + +pipup_image: + url: http://10.10.12.101:7979/notify + content_type: 'application/json' + verify_ssl: false + method: 'post' + timeout: 20 + payload: > + { + "duration": {{ duration | default(20) }}, + "position": {{ position | default(0) }}, + "title": "{{ title | default('') }}", + "titleColor": "{{ titleColor | default('#50BFF2') }}", + "titleSize": {{ titleSize | default(10) }}, + "message": "{{ message }}", + "messageColor": "{{ messageColor | default('#fbf5f5') }}", + "messageSize": {{ messageSize | default(14) }}, + "backgroundColor": "{{ backgroundColor | default('#0f0e0e') }}", + "media": { + "image": { + "uri": "{{ url }}", + "width": {{ width | default(640) }} + } + } + } diff --git a/configuration/scene/backyard.yaml b/configuration/scene/backyard.yaml new file mode 100644 index 0000000..12428af --- /dev/null +++ b/configuration/scene/backyard.yaml @@ -0,0 +1,28 @@ +--- +- name: 'Backyard (Off)' + entities: + light.backyard_01: + state: off + light.backyard_pergola_01: + state: off + +- name: 'Backyard (All)' + entities: + light.backyard_01: + state: on + light.backyard_pergola_01: + state: on + +- name: 'Backyard (Wall Only)' + entities: + light.backyard_01: + state: on + light.backyard_pergola_01: + state: off + +- name: 'Backyard (Pergola Only)' + entities: + light.backyard_01: + state: off + light.backyard_pergola_01: + state: on diff --git a/configuration/scene/bedroom_master.yaml b/configuration/scene/bedroom_master.yaml new file mode 100644 index 0000000..feca595 --- /dev/null +++ b/configuration/scene/bedroom_master.yaml @@ -0,0 +1,48 @@ +--- +- name: 'Bedroom Master (Off)' + entities: + light.bedroom_master_floor_lamp_01: + state: off + light.bedroom_master_floor_lamp_02: + state: off + light.bedroom_master_ceiling_01: + state: off + light.bedroom_master_ceiling_02: + state: off + +- name: 'Bedroom Master (All)' + entities: + light.bedroom_master_floor_lamp_01: + state: on + light.bedroom_master_floor_lamp_02: + state: on + light.bedroom_master_ceiling_01: + state: on + light.bedroom_master_ceiling_02: + state: on + +- name: 'Bedroom Master (Ceiling Only)' + entities: + light.bedroom_master_floor_lamp_01: + state: off + light.bedroom_master_floor_lamp_02: + state: off + light.bedroom_master_ceiling_01: + state: on +# color_temp: 255 +# brightness: 255 + light.bedroom_master_ceiling_02: + state: on +# color_temp: 255 +# brightness: 255 + +- name: 'Bedroom Master (Floor Only)' + entities: + light.bedroom_master_floor_lamp_01: + state: on + light.bedroom_master_floor_lamp_02: + state: on + light.bedroom_master_ceiling_01: + state: off + light.bedroom_master_ceiling_02: + state: off diff --git a/configuration/scene/bedroom_max.yaml b/configuration/scene/bedroom_max.yaml new file mode 100644 index 0000000..d14b16f --- /dev/null +++ b/configuration/scene/bedroom_max.yaml @@ -0,0 +1,36 @@ +--- +- name: 'Bedroom Max (Off)' + entities: + light.bedroom_max_table_01: + state: off + light.bedroom_max_ceiling_01: + state: off + +- name: 'Bedroom Max (All)' + entities: + light.bedroom_max_table_01: + state: on + color_temp: 255 + brightness: 255 + light.bedroom_max_ceiling_01: + state: on + color_temp: 255 + brightness: 255 + +- name: 'Bedroom Max (Ceiling Only)' + entities: + light.bedroom_max_table_01: + state: off + light.bedroom_max_ceiling_01: + state: on + color_temp: 255 + brightness: 255 + +- name: 'Bedroom Max (Table Only)' + entities: + light.bedroom_max_table_01: + state: on + color_temp: 255 + brightness: 255 + light.bedroom_max_ceiling_01: + state: off diff --git a/configuration/scene/bedroom_olivia.yaml b/configuration/scene/bedroom_olivia.yaml new file mode 100644 index 0000000..55967ab --- /dev/null +++ b/configuration/scene/bedroom_olivia.yaml @@ -0,0 +1,36 @@ +--- +- name: "Bedroom Olivia (Off)" + entities: + light.bedroom_olivia_floor_01: + state: off + light.bedroom_olivia_ceiling_01: + state: off + +- name: "Bedroom Olivia (All)" + entities: + light.bedroom_olivia_floor_01: + state: on + color_temp: 280 + brightness: 255 + light.bedroom_olivia_ceiling_01: + state: on + color_temp: 255 + brightness: 255 + +- name: "Bedroom Olivia (Ceiling Only)" + entities: + light.bedroom_olivia_floor_01: + state: off + light.bedroom_olivia_ceiling_01: + state: on + color_temp: 255 + brightness: 255 + +- name: "Bedroom Olivia (Floor Only)" + entities: + light.bedroom_olivia_floor_01: + state: on + color_temp: 255 + brightness: 255 + light.bedroom_olivia_ceiling_01: + state: off diff --git a/configuration/scene/kitchen.yaml b/configuration/scene/kitchen.yaml new file mode 100644 index 0000000..0b99013 --- /dev/null +++ b/configuration/scene/kitchen.yaml @@ -0,0 +1,113 @@ +--- +- name: "Kitchen (Off)" + entities: + light.kitchen_led_01: + state: off + light.kitchen_sink_01: + state: off + light.kitchen_ceiling_01: + state: off + light.kitchen_ceiling_02: + state: off +# light.kitchen_decorating_01: +# state: off + +- name: "Kitchen (All)" + entities: + light.kitchen_led_01: + state: on + color_temp: 280 + brightness: 255 + light.kitchen_sink_01: + state: on + color_temp: 255 + brightness: 255 + light.kitchen_ceiling_01: + state: on + color_temp: 255 + brightness: 255 + light.kitchen_ceiling_02: + state: on + color_temp: 255 + brightness: 255 +# light.kitchen_decorating_01: +# state: on + +- name: "Kitchen (Work Zone Only)" + entities: + light.kitchen_led_01: + state: on + color_temp: 280 + brightness: 255 + light.kitchen_sink_01: + state: on + brightness: 255 + color_temp: 255 + light.kitchen_ceiling_01: + state: on + color_temp: 255 + brightness: 255 + light.kitchen_ceiling_02: + state: off +# light.kitchen_decorating_01: +# state: off + +- name: "Kitchen (Dinning Zone Only)" + entities: + light.kitchen_led_01: + state: off + light.kitchen_sink_01: + state: off + light.kitchen_ceiling_01: + state: off + light.kitchen_ceiling_02: + state: on + color_temp: 255 + brightness: 255 +# light.kitchen_decorating_01: +# state: on + +- name: "Kitchen (Ceiling Only)" + entities: + light.kitchen_led_01: + state: off + light.kitchen_sink_01: + state: off + light.kitchen_ceiling_01: + state: on + color_temp: 255 + brightness: 255 + light.kitchen_ceiling_02: + state: on + color_temp: 255 + brightness: 255 +# light.kitchen_decorating_01: +# state: off + +#- name: "Kitchen (Dinning Ceiling Only)" +# entities: +# light.kitchen_led_01: +# state: off +# light.kitchen_sink_01: +# state: off +# light.kitchen_ceiling_01: +# state: off +# light.kitchen_ceiling_02: +# state: on +# color_temp: 255 +# brightness: 255 +# light.kitchen_decorating_01: +# state: off + +#- name: "Kitchen (Decoration Only)" +# entities: +# light.kitchen_led_01: +# state: off +# light.kitchen_sink_01: +# state: off +# light.kitchen_ceiling_01: +# state: off +# light.kitchen_ceiling_02: +# state: off +# light.kitchen_decorating_01: +# state: on diff --git a/configuration/scene/living_room.yaml b/configuration/scene/living_room.yaml new file mode 100644 index 0000000..5fb6dda --- /dev/null +++ b/configuration/scene/living_room.yaml @@ -0,0 +1,113 @@ +--- +- name: 'Living Room (Off)' + entities: + light.living_room_floor_lamp_01: + state: off + light.living_room_tiles_01: + state: off + light.living_room_ceiling_01: + state: off + light.living_room_ceiling_02: + state: off + light.living_room_ceiling_03: + state: off + light.living_room_ceiling_04: + state: off + +- name: 'Living Room (All)' + entities: + light.living_room_floor_lamp_01: + state: on + color_temp: 255 + brightness: 255 + light.living_room_ceiling_01: + state: on + brightness: 255 + light.living_room_ceiling_02: + state: on + brightness: 255 + light.living_room_ceiling_03: + state: on + brightness: 255 + light.living_room_ceiling_04: + state: on + brightness: 255 + +- name: 'Living Room (Ceiling Only)' + entities: + light.living_room_floor_lamp_01: + state: off + light.living_room_ceiling_01: + state: on + brightness: 255 + light.living_room_ceiling_02: + state: on + brightness: 255 + light.living_room_ceiling_03: + state: on + brightness: 255 + light.living_room_ceiling_04: + state: on + brightness: 255 + +- name: 'Living Room (Ceiling Group 1 Only)' + entities: + light.living_room_floor_lamp_01: + state: off + light.living_room_ceiling_01: + state: on + brightness: 255 + light.living_room_ceiling_02: + state: on + brightness: 255 + light.living_room_ceiling_03: + state: off + light.living_room_ceiling_04: + state: off + +- name: 'Living Room (Ceiling Group 2 Only)' + entities: + light.living_room_floor_lamp_01: + state: off + light.living_room_ceiling_01: + state: off + light.living_room_ceiling_02: + state: off + light.living_room_ceiling_03: + state: on + brightness: 255 + light.living_room_ceiling_04: + state: on + brightness: 255 + +- name: 'Living Room (Floor Only)' + entities: + light.living_room_floor_lamp_01: + state: on + color_temp: 255 + brightness: 255 + light.living_room_ceiling_01: + state: off + light.living_room_ceiling_02: + state: off + light.living_room_ceiling_03: + state: off + light.living_room_ceiling_04: + state: off + +- name: 'Living Room (Floor and Ceiling Group 1)' + entities: + light.living_room_floor_lamp_01: + state: on + color_temp: 255 + brightness: 255 + light.living_room_ceiling_01: + state: on + brightness: 255 + light.living_room_ceiling_02: + state: on + brightness: 255 + light.living_room_ceiling_03: + state: off + light.living_room_ceiling_04: + state: off diff --git a/configuration/scene/porch.yaml b/configuration/scene/porch.yaml new file mode 100644 index 0000000..c6329e8 --- /dev/null +++ b/configuration/scene/porch.yaml @@ -0,0 +1,38 @@ +--- +- name: 'Porch (Off)' + entities: + light.porch_01: + state: off + light.garage_gate_01: + state: off + light.frontyard_decoration_01: + state: off + +- name: 'Porch (All)' + entities: + light.porch_01: + state: on + light.garage_gate_01: + state: on + light.frontyard_decoration_01: + state: on + +- name: 'Porch (Porch Only)' + entities: + light.porch_01: + state: on + light.garage_gate_01: + state: off + light.frontyard_decoration_01: + state: off +# color_temp: 255 +# brightness: 255 + +- name: 'Porch (Garage Only)' + entities: + light.porch_01: + state: off + light.garage_gate_01: + state: on + light.frontyard_decoration_01: + state: off diff --git a/configuration/script/media_scripts.yaml b/configuration/script/media_scripts.yaml new file mode 100644 index 0000000..7d53d8e --- /dev/null +++ b/configuration/script/media_scripts.yaml @@ -0,0 +1,48 @@ +--- +receiver_switch_to_shield_tv: + alias: "Switch Receiver to Nvidia ShieldTV" + sequence: + - service: media_player.select_source + data: + entity_id: media_player.onkyo_receiver + source: dvd + +receiver_switch_to_playstation: + alias: "Switch Receiver to Playstation" + sequence: + - service: media_player.select_source + data: + entity_id: media_player.onkyo_receiver + source: game + +receiver_switch_to_security: + alias: "Switch Receiver to Unifi Cameras" + sequence: + - service: media_player.select_source + data: + entity_id: media_player.onkyo_receiver + source: strm-box + +receiver_switch_to_windows: + alias: "Switch Receiver to Windows 11" + sequence: + - service: media_player.select_source + data: + entity_id: media_player.onkyo_receiver + source: cbl + +receiver_switch_to_bluetooth: + alias: "Switch Receiver to Bluetooth" + sequence: + - service: media_player.select_source + data: + entity_id: media_player.onkyo_receiver + source: bluetooth + +receiver_switch_to_chromecast: + alias: "Switch Receiver to Chromecast" + sequence: + - service: media_player.select_source + data: + entity_id: media_player.onkyo_receiver + source: net diff --git a/configuration/script/scripts.yaml b/configuration/script/scripts.yaml new file mode 100644 index 0000000..2d3d13a --- /dev/null +++ b/configuration/script/scripts.yaml @@ -0,0 +1,71 @@ +--- +cast_camera_doorbell: + alias: Cast Doorbell Camera + sequence: + - service: webrtc.dash_cast + entity_id: media_player.kitchen_max + data: + url: rtsp://10.10.11.110:8554/doorbell + extra: + mode: webrtc,mse + force: true + enabled: true + +cast_camera_frontyard: + alias: Cast Frontyard Camera + sequence: + - service: webrtc.dash_cast + entity_id: media_player.kitchen_max + data: + url: rtsp://10.10.11.110:8554/frontyard + extra: + mode: webrtc,mse + force: true + enabled: true + +cast_camera_entrance: + alias: Cast Entrance Camera + sequence: + - service: webrtc.dash_cast + entity_id: media_player.kitchen_max + data: + url: rtsp://10.10.11.110:8554/entrance + extra: + mode: webrtc,mse + force: true + enabled: true + +cast_camera_side1: + alias: Cast Side 1 Camera + sequence: + - service: webrtc.dash_cast + entity_id: media_player.kitchen_max + data: + url: rtsp://10.10.11.110:8554/side1 + extra: + mode: webrtc,mse + force: true + enabled: true + +cast_camera_doorbell_nvidia: + alias: Cast Doorbell to Nvidia ShieldTV + sequence: + - variables: + link_id: "{% for _ in range(10) %}{{ range(10)|random }}{% endfor %}" + - service: webrtc.create_link + data: + link_id: "{{ link_id }}" + url: rtsp://10.10.11.110:8554/doorbell-mid-res + open_limit: 0 + time_to_live: 90 +# - service: persistent_notification.create +# data: +# message: "https://house.savin.nyc/webrtc/embed?url={{ link_id }}&webrtc=true" + - service: rest_command.pipup_url + data: + title: Doorbell + message: You have a visitor! + width: 640 + height: 480 + url: "https://house.savin.nyc/webrtc/embed?url={{ link_id }}&webrtc=false" +# url: "https://house.savin.nyc/webrtc/embed?url={{ link_id }}&webrtc=false" diff --git a/configuration/sensor/template_door_open_number.yaml b/configuration/sensor/template_door_open_number.yaml new file mode 100644 index 0000000..16478a9 --- /dev/null +++ b/configuration/sensor/template_door_open_number.yaml @@ -0,0 +1,10 @@ +--- +- platform: template + sensors: + number_doors_open: + friendly_name: "Open Doors" + unit_of_measurement: door(s) + value_template: > + {{ label_entities(label_id('external')) | expand | selectattr('state', '==', 'on') | map(attribute='entity_id') | select('in', label_entities("door")) | list | count }} + +# {{ states.binary_sensor | selectattr('object_id', 'match', 'door_.*') | selectattr('state', '==', 'on') | map(attribute='entity_id') | list | count }} diff --git a/configuration/sensor/template_kwikset_locks.yaml b/configuration/sensor/template_kwikset_locks.yaml new file mode 100644 index 0000000..692a6bd --- /dev/null +++ b/configuration/sensor/template_kwikset_locks.yaml @@ -0,0 +1,52 @@ +--- +- platform: template + sensors: + lock_01_keycode: + friendly_name: 'Lock Last Key Code' + value_template: >- + {% if states('sensor.lock_01_alarm_level') | int == 0 and states('sensor.lock_01_alarm_type') | int == 19 %} + Locked + {% elif states('sensor.lock_01_alarm_level') | int == 1 and states('sensor.lock_01_alarm_type') | int == 19 %} + Alex + {% elif states('sensor.lock_01_alarm_level') | int == 2 and states('sensor.lock_01_alarm_type') | int == 19 %} + Tanya + {% elif states('sensor.lock_01_alarm_level') | int == 3 and states('sensor.lock_01_alarm_type') | int == 19 %} + Maxim + {% endif %} + +- platform: template + sensors: + lock_01_status: + friendly_name: 'Lock Status' + value_template: >- + {% if states('sensor.lock_01_alarm_type') | int == 17 %} + Lock Secured at Keypad – Bolt Jammed (Not fully extended) + {% elif states('sensor.lock_01_alarm_type') | int == 18 %} + Lock Secured at Keypad – Successful (Fully extended) + {% elif states('sensor.lock_01_alarm_type') | int == 21 %} + Lock Secured using Keyed cylinder or inside Thumb-Turn + {% elif states('sensor.lock_01_alarm_type') | int == 23 %} + Lock Secured by Controller – Bolt Jammed (Not fully extended) + {% elif states('sensor.lock_01_alarm_type') | int == 24 %} + Lock Secured by Controller – Successful (Fully extended) + {% elif states('sensor.lock_01_alarm_type') | int == 26 %} + Lock Auto Secured – Bolt Jammed (Not fully extended) + {% elif states('sensor.lock_01_alarm_type') | int == 27 %} + Lock Auto Secured – Successful (Fully extended) + {% elif states('sensor.lock_01_alarm_type') | int == 19 %} + Lock Un-Secured by User ({{ states('sensor.lock_01_alarm_level') | int }}) at Keypad + {% elif states('sensor.lock_01_alarm_type') | int == 22 %} + Lock Un-Secured using Keyed Cylinder or inside Thumb-Turn + {% elif states('sensor.lock_01_alarm_type') | int == 25 %} + Lock Un-Secured by Controller – Successful (Fully retracted) + {% elif states('sensor.lock_01_alarm_type') | int == 161 %} + Failed User Code attempt at Keypad + {% elif states('sensor.lock_01_alarm_type') | int == 167 %} + Low Battery Level + {% elif states('sensor.lock_01_alarm_type') | int == 168 %} + Critical Battery Level + {% elif states('sensor.lock_01_alarm_type') | int == 169 %} + Battery Level too Low to operate lock + {% else %} + Unknown State + {% endif %} diff --git a/configuration/sensor/template_light_on_number.yaml b/configuration/sensor/template_light_on_number.yaml new file mode 100644 index 0000000..a54f25a --- /dev/null +++ b/configuration/sensor/template_light_on_number.yaml @@ -0,0 +1,8 @@ +--- +- platform: template + sensors: + number_light_on: + friendly_name: "Lights ON" + unit_of_measurement: light(s) + value_template: > + {{ states.light | rejectattr('attributes.color_mode', '==', 'onoff') | rejectattr('attributes.entity_id', 'defined') | selectattr('state', '==', 'on') | map(attribute='entity_id') | list | count }} diff --git a/configuration/sensor/template_media_android_apps.yaml b/configuration/sensor/template_media_android_apps.yaml new file mode 100644 index 0000000..52b2fc8 --- /dev/null +++ b/configuration/sensor/template_media_android_apps.yaml @@ -0,0 +1,11 @@ +--- +#- platform: template +# switches: +# lr_fan: +# value_template: "{{ is_state('fan.xiaomi_fan', 'on') }}" +# turn_on: +# service: script.xiaomi_fan_normal_operation +# turn_off: +# service: fan.turn_off +# data: +# entity_id: fan.xiaomi_fan \ No newline at end of file diff --git a/configuration/sensor/template_sun_state.yaml b/configuration/sensor/template_sun_state.yaml new file mode 100644 index 0000000..1d92146 --- /dev/null +++ b/configuration/sensor/template_sun_state.yaml @@ -0,0 +1,19 @@ +--- +- platform: template + sensors: + sunset_time: + value_template: '{% set timestamp = as_timestamp(states.sun.sun.attributes.next_setting) | timestamp_custom("%I:%M") %} {{ timestamp.lstrip("0") }}' + friendly_name: 'Sunset' + + sunrise_time: + value_template: '{% set timestamp = as_timestamp(states.sun.sun.attributes.next_rising) | timestamp_custom("%I:%M") %} {{ timestamp.lstrip("0") }}' + friendly_name: 'Sunrise' + + sun_state: + friendly_name: 'Sun State' + value_template: '{{ states.sun.sun.state }}' + + sun_elevation: + friendly_name: 'Sun Elevation' + value_template: '{{ states.sun.sun.attributes.elevation }}' + unit_of_measurement: 'degrees' diff --git a/configuration/sensor/template_utilities_cost.yaml b/configuration/sensor/template_utilities_cost.yaml new file mode 100644 index 0000000..69f2333 --- /dev/null +++ b/configuration/sensor/template_utilities_cost.yaml @@ -0,0 +1,72 @@ +--- +- platform: template + sensors: + cost_energy_monthly: + friendly_name: "Energy Cost (Monthly)" + unit_of_measurement: '$' + value_template: > + {{ "%.2f" | format( states('sensor.power_house_total_1mon') | float * ( 0.112830 + 0.062540 ) + 4.27 ) }} + + cost_energy_daily: + friendly_name: "Energy Cost (Daily)" + unit_of_measurement: '$' + value_template: > + {{ "%.2f" | format( states('sensor.power_house_total_1d') | float * ( 0.112830 + 0.062540 ) ) }} + +# Price per kWh +# Delivery Price per kWh +# Customer charge 4.27 per month + +- platform: template + sensors: + cost_water_monthly: + friendly_name: "Water Cost (Monthly)" + unit_of_measurement: '$' + value_template: > + {{ "%.2f" | format( states('sensor.water_monthly') | float / 100 * ( 0.77752 + 0.05289 + 0.08791 + 0.00551) + 19.85 + 3.67 ) }} + + cost_water_daily: + friendly_name: "Water Cost (Daily)" + unit_of_measurement: '$' + value_template: > + {{ "%.2f" | format( states('sensor.water_daily') | float / 100 * ( 0.77752 + 0.05289 + 0.08791 + 0.00551 ) ) }} + +# Aug 02 + 31 day +# Water Service 50.95 +# Water Service Charge 19.85 +# Water Usage Charge (40 x $0.77752) 31.10 +# Other Charges 9.53 +# Purchased Water Surcharge (40 x $0.05289) 2.12 +# Distribution System Improvement Charge +# (1 x $3.67) 3.67 +# LSLRC Surcharge (40 x $0.08791) 3.52 +# Special Program Charge (40 x $0.00551) 0.22 + +- platform: template + sensors: + cost_gas_monthly: + friendly_name: "Gas Cost (Monthly)" + unit_of_measurement: '$' + value_template: > + {{ "%.2f" | format( states('sensor.gas_monthly') | float * 1.012 * 1.032 * (0.550932 + 0.397731) + 8.62 ) }} + + cost_gas_daily: + friendly_name: "Gas Cost (Daily)" + unit_of_measurement: '$' + value_template: > + {{ "%.2f" | format( states('sensor.gas_daily') | float * 1.012 * 1.032 * ( 0.550932 + 0.397731 ) ) }} + +# Converted to CCF x 1.012 13.156 +# Converted to therms x 1.032 13.577 +# Total gas you used in 29 days 13.577 therms + +# Delivery charges +# Monthly service charge $8.62 +# Charges for delivering gas to you: +# 13.577 therms x $0.550932 $7.48 +# Total gas delivery charges $16.10 +# Supply charges +# Cost of gas supplied by PSE&G: +# 13.577 therms x $0.397731 $5.40 +# Total gas supply charges $5.40 +# Total gas charges $21.50 diff --git a/configuration/sensor/template_window_open_number.yaml b/configuration/sensor/template_window_open_number.yaml new file mode 100644 index 0000000..a438ec3 --- /dev/null +++ b/configuration/sensor/template_window_open_number.yaml @@ -0,0 +1,8 @@ +--- +- platform: template + sensors: + number_windows_open: + friendly_name: "Windows Open" + unit_of_measurement: window(s) + value_template: > + {{ states.binary_sensor | selectattr('object_id', 'match', 'window_.*') | selectattr('state', '==', 'on') | map(attribute='entity_id') | list | count }} diff --git a/configuration/sensor/time_tracker_npfd.yaml b/configuration/sensor/time_tracker_npfd.yaml new file mode 100644 index 0000000..95b2546 --- /dev/null +++ b/configuration/sensor/time_tracker_npfd.yaml @@ -0,0 +1,8 @@ +--- +- platform: history_stats + name: "[Time Tracker] NPFD (monthly)" + entity_id: person.alexander_savin + state: "NPFD" + type: time + start: "{{ now().replace(day=1, hour=0, minute=0, second=0, microsecond=0 ) }}" #current month + end: "{{ now() }}" diff --git a/configuration/service/telegram.yaml b/configuration/service/telegram.yaml new file mode 100644 index 0000000..61bf593 --- /dev/null +++ b/configuration/service/telegram.yaml @@ -0,0 +1,22 @@ +--- +- platform: webhooks + url: !secret services_notification_telegram_url + api_key: !secret services_notification_telegram_api_key + parse_mode: html + allowed_chat_ids: + - !secret services_notification_telegram_chat_id_01 + - !secret services_notification_telegram_chat_id_02 + - !secret services_notification_telegram_chat_id_03 + - !secret services_notification_telegram_chat_id_04 + trusted_networks: + - 149.154.160.0/20 + - 91.108.4.0/22 + - !secret services_notification_telegram_trusted_network_01 +# - 149.154.167.197/32 +# - 149.154.167.198/31 +# - 149.154.167.200/29 +# - 149.154.167.208/28 +# - 149.154.167.224/29 +# - 149.154.167.232/31 +# - 149.154.167.226/32 +# - !secret services_notification_telegram_white_ip_01 diff --git a/configuration/service/twilio.yaml b/configuration/service/twilio.yaml new file mode 100644 index 0000000..a3a25c0 --- /dev/null +++ b/configuration/service/twilio.yaml @@ -0,0 +1,3 @@ +--- +account_sid: !secret service_twilio_sid +auth_token: !secret service_twilio_auth_token diff --git a/configuration/shell_command/tasmotas_restart.yaml b/configuration/shell_command/tasmotas_restart.yaml new file mode 100644 index 0000000..6fd1996 --- /dev/null +++ b/configuration/shell_command/tasmotas_restart.yaml @@ -0,0 +1,7 @@ +--- +restart_fan01: /bin/bash -c "wget -q -S -O - http://10.10.12.91/cm?cmnd=Restart%201 2>&1" +restart_fan02: /bin/bash -c "wget -q -S -O - http://10.10.12.92/cm?cmnd=Restart%201 2>&1" +restart_fan03: /bin/bash -c "wget -q -S -O - http://10.10.12.93/cm?cmnd=Restart%201 2>&1" +restart_fan04: /bin/bash -c "wget -q -S -O - http://10.10.12.94/cm?cmnd=Restart%201 2>&1" +restart_fan05: /bin/bash -c "wget -q -S -O - http://10.10.12.95/cm?cmnd=Restart%201 2>&1" +restart_light01: /bin/bash -c "wget -q -S -O - http://10.10.12.90/cm?cmnd=Restart%201 2>&1" diff --git a/configuration/switch/media_android_tv_apps.yaml b/configuration/switch/media_android_tv_apps.yaml new file mode 100644 index 0000000..8342d99 --- /dev/null +++ b/configuration/switch/media_android_tv_apps.yaml @@ -0,0 +1,54 @@ +--- +- platform: template + switches: + android_tv_netflix: + friendly_name: "Netflix" + value_template: "{% if states('media_player.nvidia_shield_tv_living_room_2') == 'on' %}{% set current_app = state_attr('media_player.nvidia_shield_tv_living_room_2', 'app_id') | string %}{% if current_app == 'com.netflix.ninja' %}true{% else %}false{% endif %}{% else %}false{% endif %}" + turn_on: + service: script.turn_on + data: + entity_id: script.netflix_start + turn_off: + service: script.turn_on + data: + entity_id: script.netflix_stop + icon_template: mdi:netflix + + android_tv_youtube: + friendly_name: "Youtube" + value_template: "{% if states('media_player.nvidia_shield_tv_living_room_2') == 'on' %}{% set current_app = state_attr('media_player.nvidia_shield_tv_living_room_2', 'app_id') | string %}{% if current_app == 'com.google.android.youtube.tv' %}true{% else %}false{% endif %}{% else %}false{% endif %}" + turn_on: + service: script.turn_on + data: + entity_id: script.youtube_start + turn_off: + service: script.turn_on + data: + entity_id: script.youtube_stop + icon_template: mdi:youtube + + android_tv_plex: + friendly_name: "Plex" + value_template: "{% if states('media_player.nvidia_shield_tv_living_room_2') == 'on' %}{% set current_app = state_attr('media_player.nvidia_shield_tv_living_room_2', 'app_id') | string %}{% if current_app == 'com.plexapp.android' %}true{% else %}false{% endif %}{% else %}false{% endif %}" + turn_on: + service: script.turn_on + data: + entity_id: script.plex_start + turn_off: + service: script.turn_on + data: + entity_id: script.plex_stop + icon_template: mdi:plex + + onkyo_source_nvidia_shield_tv: + friendly_name: "Nvidia Shield TV" + value_template: "{% if states('media_player.onkyo_receiver') == 'on' %}{% set current_source = state_attr('media_player.onkyo_receiver', 'source') | string %}{% if current_source == 'Nvidia Shield TV' %}true{% else %}false{% endif %}{% else %}false{% endif %}" + turn_on: + service: script.turn_on + data: + entity_id: script.receiver_switch_to_shield_tv + turn_off: + service: script.turn_on + data: + entity_id: script.receiver_switch_to_shield_tv + icon_template: mdi:youtube-tv diff --git a/configuration/ui-lovelace/000-default-page.yaml b/configuration/ui-lovelace/000-default-page.yaml new file mode 100644 index 0000000..d1b84fd --- /dev/null +++ b/configuration/ui-lovelace/000-default-page.yaml @@ -0,0 +1,298 @@ +--- +#name: Home +#icon: mdi:home + +title: Security +icon: mdi:shield-home +#panel: true +visible: + - user: 1614b22cbef54f979741cf8a6b3413ec # Alex + - user: 76e8af2547254ef0ab523ae1ad0bf81a # Tanya +cards: + - type: vertical-stack + cards: + - type: horizontal-stack + cards: + - type: custom:mushroom-chips-card + chips: + - type: template + icon: mdi:faucet-variant + icon_color: "{% if is_state('binary_sensor.presence_kitchen_sensor_1', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}" + entity: binary_sensor.presence_kitchen_sensor_1 + tap_action: + action: more-info + - type: template + icon: mdi:sofa + icon_color: "{% if is_state('binary_sensor.presence_living_room_sensor_1', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}" + entity: binary_sensor.presence_living_room_sensor_1 + tap_action: + action: more-info + - type: template + icon: mdi:bed-king + icon_color: "{% if is_state('binary_sensor.presence_bedroom_master_sensor_1', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}" + entity: binary_sensor.presence_bedroom_master_sensor_1 + tap_action: + action: more-info + - type: template + icon: mdi:bed + icon_color: "{% if is_state('binary_sensor.presence_bedroom_maxim_sensor_1', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}" + entity: binary_sensor.presence_bedroom_maxim_sensor_1 + tap_action: + action: more-info + - type: template + icon: mdi:bed + icon_color: "{% if is_state('binary_sensor.presence_bedroom_olivia_sensor_1', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}" + entity: binary_sensor.presence_bedroom_olivia_sensor_1 + tap_action: + action: more-info + - type: template + icon: mdi:stairs + icon_color: "{% if is_state('binary_sensor.presence_stairwell_sensor_1', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}" + entity: binary_sensor.presence_stairwell_sensor_1 + tap_action: + action: more-info + - type: template + icon: mdi:garage-variant + icon_color: "{% if is_state('binary_sensor.presence_garage_sensor_1', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}" + entity: binary_sensor.presence_garage_sensor_1 + tap_action: + action: more-info + - type: horizontal-stack + cards: + - type: custom:mushroom-template-card + icon: mdi:door-open + icon_color: blue + badge_icon: "{% if states('sensor.number_doors_open') | int > 0 -%}{{ 'mdi:numeric-' + states('sensor.number_doors_open') + '-circle' }}{%- endif %}" + badge_color: red + fill_container: false + card_mod: + style: "ha-card { border: none; background: none; }" + tap_action: + action: fire-dom-event + browser_mod: + service: browser_mod.popup + data: + title: HTML content + content: + type: glance + entities: + - binary_sensor.door_entrance_01 + - binary_sensor.door_kitchen_01 + - binary_sensor.door_garage_01_contact + - type: custom:mushroom-template-card + icon: mdi:window-open + icon_color: blue + badge_icon: "{% if states('sensor.number_windows_open') | int > 0 -%}{{ 'mdi:numeric-' + states('sensor.number_windows_open') + '-circle' }}{%- endif %}" + badge_color: red + fill_container: false + card_mod: + style: "ha-card { border: none; background: none; }" + - type: custom:mushroom-template-card + icon: mdi:lightbulb + icon_color: blue + badge_icon: "{% if states('sensor.number_light_on') | int > 0 -%}{{ 'mdi:numeric-' + states('sensor.number_light_on') + '-circle' }}{%- endif %}" + badge_color: red + fill_container: false + card_mod: + style: "ha-card { border: none; background: none; }" + tap_action: + action: fire-dom-event + browser_mod: + service: browser_mod.popup + data: + title: HTML content + content: + type: glance + entities: + - light.aisle_ceiling_01 + - light.aisle_ceiling_02 + - light.attic_bulb_01 + - light.backyard_01 + - light.bathroom_bedroom_wall_01 + - light.bathroom_living_room_01 + - light.bathroom_master_wall_01 + - light.bedroom_master_ceiling_01 + - light.bedroom_master_ceiling_02 + - light.bedroom_master_floor_lamp_01 + - light.bedroom_master_floor_lamp_02 + - light.bedroom_max_ceiling_01 + - light.bedroom_max_table_01 + - light.bedroom_olivia_ceiling_01 + - light.bedroom_olivia_floor_01 + - light.christmas_tree + - light.frontyard_decoration_01 + - light.garage_ceiling_01 + - light.garage_gate_01 + - light.kitchen_decorating_01 + - light.kitchen_led_01 + - light.kitchen_sink_01 + - light.light_bed_bedroom_master_01 + - light.light_bed_max_01 + - light.light_kitchen_ceiling_01 + - light.light_kitchen_ceiling_02 + - light.living_room_ceiling_01 + - light.living_room_ceiling_02 + - light.living_room_ceiling_03 + - light.living_room_ceiling_04 + - light.living_room_floor_lamp_01 + - light.living_room_strip_01 + - light.living_room_tiles_01 + - light.porch_01 + - type: custom:mushroom-chips-card + chips: + - type: template + content: "Open Windows ({{ states('sensor.number_windows_open') | int }}) Doors ({{ states('sensor.number_doors_open') | int }}) Light ({{ states('sensor.number_light_on') | int }})" + - type: horizontal-stack + cards: + - image: /local/profile_savin_alex.jpg + type: picture-entity + show_name: false + tap_action: + action: more-info + entity: person.alexander_savin + - image: /local/profile_savin_tanya.jpg + type: picture-entity + show_name: false + tap_action: + action: more-info + entity: person.tatiana_savin + - type: horizontal-stack + cards: + - image: /local/profile_savin_maxim.jpg + type: picture-entity + show_name: false + tap_action: + action: more-info + entity: person.maxim_savin + - image: /local/profile_savin_olivia.jpg + type: picture-entity + show_name: false + tap_action: + action: more-info + entity: person.olivia_savin + - type: map + aspect_ratio: 100% + entities: + - entity: person.alexander_savin + - entity: person.tatiana_savin + - entity: person.maxim_savin + - entity: person.olivia_savin + - entity: device_tracker.subaru_outback_txt + - zone.home + - zone.npfd + - zone.work_kiswe + - zone.ymca_berkley_heights + - zone.nphs_school + - zone.awr_school +# - type: map +# aspect_ratio: 100% +# entities: +# - entity: person.maxim + - type: vertical-stack + cards: + - type: horizontal-stack + cards: + - type: 'custom:mushroom-lock-card' + name: Main Lock + entity: lock.lock_01 + fill_container: true + layout: horizontal +# show_name: false +# icon: mdi:lock +# size: 50px +# state: +# - value: "locked" +# color: rgb(79, 114, 154) +# icon: mdi:lock-smart +# - value: "unlocked" +# color: red +# icon: mdi:lock-smart + tap_action: + action: toggle +# - type: custom:mushroom-climate-card +# entity: climate.living_room +# name: Thermostat +# show_temperature_control: true +# hvac_modes: +# - heat +# - cool +# - off +# layout: vertical + + - type: horizontal-stack + cards: + - type: 'custom:simple-thermostat' + entity: climate.living_room + step_size: 1 + header: false + control: + hvac: + 'off': + name: 'Off' + cool: + name: A/C + heat: + name: Heat + heat_cool: false + sensors: + - entity: sensor.power_house_6_1d + name: Blower Energy + - entity: sensor.power_house_8_1d + name: AC Energy +# - type: alarm-panel +# entity: alarm_control_panel.alarm +# title: Alarm Panel +# hide_keypad: false +# style: '--alarm-color-disarmed: var(--label-badge-blue);' +# states: +# - arm_home +# - arm_away +# - type: thermostat +# entity: climate.living_room + - type: horizontal-stack + cards: + - type: custom:xiaomi-vacuum-map-card + entity: vacuum.roborock_s5_max + map_source: + camera: camera.xiaomi_cloud_map_extractor + calibration_source: + camera: true + debug: false + map_modes: + - template: vacuum_clean_zone + - template: vacuum_goto + - template: vacuum_clean_zone_predefined + predefined_selections: + - zones: [[26600,21200,23600,27000]] # Kitchen + - zones: [[32700,26000,26600,20700]] # Living Room + map_locked: true + - type: vertical-stack + cards: + - type: weather-forecast + entity: weather.my_weather_station + secondary_info_attribute: humidity + show_current: true + show_forecast: true + - type: horizontal-stack + cards: + - type: picture + image: https://objects.savin.nyc/api/frontyard/person/best.jpg + - type: picture + image: https://objects.savin.nyc/api/side1/person/best.jpg + - type: horizontal-stack + cards: + - type: picture + image: https://objects.savin.nyc/api/doorbell/person/best.jpg + - type: picture + image: https://objects.savin.nyc/api/entrance/person/best.jpg + - type: horizontal-stack + cards: + - type: picture + image: https://objects.savin.nyc/api/side2/person/best.jpg + - type: picture + image: https://objects.savin.nyc/api/backyard/person/best.jpg +# - type: custom:auto-entities +# card: +# type: entities +# filter: +# template: "{{states.light | map(attribute='entity_id') | list}}" diff --git a/configuration/ui-lovelace/030-kitchen.yaml b/configuration/ui-lovelace/030-kitchen.yaml new file mode 100644 index 0000000..37e9d51 --- /dev/null +++ b/configuration/ui-lovelace/030-kitchen.yaml @@ -0,0 +1,258 @@ +--- +title: Kitchen +icon: mdi:countertop +panel: true +visible: + - user: 1614b22cbef54f979741cf8a6b3413ec # Alex + - user: 76e8af2547254ef0ab523ae1ad0bf81a # Tanya +cards: + - type: custom:layout-card + layout: vertical + cards: + - type: vertical-stack + cards: + - type: custom:mushroom-chips-card + chips: + - type: template + icon: "{% if is_state('binary_sensor.presence_kitchen_sensor_2', 'on') -%}mdi:account-multiple{%- else -%}mdi:account-off-outline{%- endif %}" + icon_color: "{% if is_state('binary_sensor.presence_kitchen_sensor_2', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}" + badge_icon: mdi:numeric-1-circle + badge_color: green + entity: binary_sensor.presence_kitchen_sensor_2 + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.window_kitchen_01_contact', 'on') -%}mdi:window-open{%- else -%}mdi:window-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.window_kitchen_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.window_kitchen_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.door_kitchen_01', 'on') -%}mdi:door-sliding-open{%- else -%}mdi:door-sliding{%- endif %}" + icon_color: "{% if is_state('binary_sensor.door_kitchen_01', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.door_kitchen_01 + tap_action: + action: more-info + - type: custom:stack-in-card + cards: + - type: grid + columns: 2 + square: false + cards: + - type: custom:mushroom-entity-card + entity: input_boolean.kitchen_light_state + name: Kitchen + icon: mdi:lightbulb-group + tap_action: + action: toggle + card_mod: + style: "ha-card { border: none; }" + - type: custom:paper-buttons-row + preset: mushroom + styles: + justify-content: flex-end + base_config: + styles: + button: + margin-top: 12px + margin-right: 12px + buttons: + - layout: icon + icon: mdi:lightbulb-group + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.kitchen_scenes + option: "All" + styles: + button: + color: "{% if is_state('input_boolean.kitchen_light_state', 'on') and is_state('input_select.kitchen_scenes', 'All') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.kitchen_light_state', 'on') and is_state('input_select.kitchen_scenes', 'All') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:countertop-outline + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.kitchen_scenes + option: "Work Zone Only" + styles: + button: + color: "{% if is_state('input_boolean.kitchen_light_state', 'on') and is_state('input_select.kitchen_scenes', 'Work Zone Only') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.kitchen_light_state', 'on') and is_state('input_select.kitchen_scenes', 'Work Zone Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:food-turkey + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.kitchen_scenes + option: "Dinning Zone Only" + styles: + button: + color: "{% if is_state('input_boolean.kitchen_light_state', 'on') and is_state('input_select.kitchen_scenes', 'Dinning Zone Only') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.kitchen_light_state', 'on') and is_state('input_select.kitchen_scenes', 'Dinning Zone Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:ceiling-light-multiple + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.kitchen_scenes + option: "Ceiling Only" + styles: + button: + color: "{% if is_state('input_boolean.kitchen_light_state', 'on') and is_state('input_select.kitchen_scenes', 'Ceiling Only') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.kitchen_light_state', 'on') and is_state('input_select.kitchen_scenes', 'Ceiling Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:globe-light-outline + tap_action: + action: call-service + service: light.toggle + service_data: + entity_id: light.kitchen_decorating_01 + styles: + button: + color: "{% if is_state('light.kitchen_decorating_01', 'on') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('light.kitchen_decorating_01', 'on') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - type: horizontal-stack + cards: + - type: custom:mini-graph-card +# name: Temperature + line_color: orange + font_size: 60 + font_size_header: 12 + entities: + - entity: sensor.climate_kitchen_01_temperature +# name: Temperature + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + icon: false +# card_mod: +# style: | +# ha-card { +# background: url("/local/outback.jpg"); +# background-size: 100% 400px; +# } + - type: custom:mini-graph-card + name: Humidity + line_color: blue + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_kitchen_01_humidity + name: Humidity + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card + name: Illuminance + line_color: red + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.presence_kitchen_light_level_2 + name: Illuminance + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card + name: Ppm25 + line_color: green + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_kitchen_02_pm25 + name: Ppm25 + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: horizontal-stack + cards: + - type: custom:mushroom-light-card + entity: light.kitchen_sink_01 + name: 'Kitchen Sink #01' + icon: mdi:ceiling-light + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: custom:mushroom-light-card + entity: light.kitchen_led_01 + name: 'Kitchen LED #01' + icon: mdi:led-strip-variant + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: horizontal-stack + cards: + - type: custom:mushroom-light-card + entity: light.kitchen_ceiling_01 + name: 'Kitchen Ceiling #1' + icon: mdi:dome-light + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: custom:mushroom-light-card + entity: light.kitchen_ceiling_02 + name: 'Kitchen Ceiling #2' + icon: mdi:dome-light + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: custom:layout-break + - type: vertical-stack + cards: + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.11.110:8554/kitchen' + title: 'Kitchen' + muted: true + mode: webrtc,mse + - type: custom:layout-break + - type: vertical-stack + cards: +# - type: entities +# title: Lights +# show_header_toggle: false +# entities: +# - entity: timer.app_lighting_kitchen +# - type: custom:flipdown-timer-card +# entity: timer.app_lighting_kitchen +# show_hour: false +# show_title: false +# show_header: false +# duration: "00:01:00" +# styles: +# rotor: +# width: 60px +# height: 80px +# button: +# width: 60px +# location: bottom + - type: horizontal-stack + cards: + - type: button + name: Occupancy + entity: input_boolean.occupancy_kitchen + - type: button + name: Operating Mode + entity: input_boolean.manually_operated_light_kitchen + - type: button + name: Occupants + entity: input_number.occupants_kitchen + - type: custom:mini-media-player + entity: media_player.kitchen_max + artwork: cover diff --git a/configuration/ui-lovelace/040-living-room.yaml b/configuration/ui-lovelace/040-living-room.yaml new file mode 100644 index 0000000..98688dc --- /dev/null +++ b/configuration/ui-lovelace/040-living-room.yaml @@ -0,0 +1,397 @@ +--- +title: Living Room +icon: mdi:sofa +panel: true +visible: + - user: 1614b22cbef54f979741cf8a6b3413ec # Alex + - user: 76e8af2547254ef0ab523ae1ad0bf81a # Tanya +cards: + - type: custom:layout-card + layout: vertical + cards: + - type: vertical-stack + cards: + - type: custom:mushroom-chips-card + chips: + - type: template + icon: "{% if is_state('binary_sensor.presence_living_room_sensor_1', 'on') -%}mdi:account-multiple{%- else -%}mdi:account-off-outline{%- endif %}" + icon_color: "{% if is_state('binary_sensor.presence_living_room_sensor_1', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}" + badge_icon: mdi:numeric-1-circle + badge_color: green + entity: binary_sensor.presence_living_room_sensor_1 + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.window_living_room_front_left_01_contact', 'on') -%}mdi:window-open{%- else -%}mdi:window-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.window_living_room_front_left_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.window_living_room_front_left_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.window_living_room_front_center_01_contact', 'on') -%}mdi:window-open{%- else -%}mdi:window-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.window_living_room_front_center_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.window_living_room_front_center_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.window_living_room_front_right_01_contact', 'on') -%}mdi:window-open{%- else -%}mdi:window-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.window_living_room_front_right_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.window_living_room_front_right_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.window_living_room_side_01_contact', 'on') -%}mdi:window-open{%- else -%}mdi:window-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.window_living_room_side_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.window_living_room_side_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.smoke_living_room_01_smoke', 'on') -%}mdi:smoke-detector-variant-alert{%- else -%}mdi:smoke-detector-variant{%- endif %}" + icon_color: "{% if is_state('binary_sensor.smoke_living_room_01_smoke', 'on') -%}#D40909{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.smoke_living_room_01_smoke + tap_action: + action: more-info + - type: custom:stack-in-card + cards: + - type: grid + columns: 2 + square: false + cards: + - type: custom:mushroom-entity-card + entity: input_boolean.living_room_light_state + name: Living Room + icon: mdi:lightbulb-group + tap_action: + action: toggle + card_mod: + style: "ha-card { border: none; }" + - type: custom:paper-buttons-row + preset: mushroom + styles: + justify-content: flex-end + base_config: + styles: + button: + margin-top: 12px + margin-right: 12px + buttons: + - layout: icon + icon: mdi:lightbulb-group + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.living_room_scenes + option: "All" + styles: + button: + color: "{% if is_state('input_boolean.living_room_light_state', 'on') and is_state('input_select.living_room_scenes', 'All') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.living_room_light_state', 'on') and is_state('input_select.living_room_scenes', 'All') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:ceiling-light-multiple + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.living_room_scenes + option: "Ceiling Only" + styles: + button: + color: "{% if is_state('input_boolean.living_room_light_state', 'on') and is_state('input_select.living_room_scenes', 'Ceiling Only') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.living_room_light_state', 'on') and is_state('input_select.living_room_scenes', 'Ceiling Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:floor-lamp-torchiere + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.living_room_scenes + option: "Floor Only" + styles: + button: + color: "{% if is_state('input_boolean.living_room_light_state', 'on') and is_state('input_select.living_room_scenes', 'Floor Only') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.living_room_light_state', 'on') and is_state('input_select.living_room_scenes', 'Floor Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - type: vertical-stack + cards: + - type: horizontal-stack + cards: + - type: custom:mini-graph-card +# name: Temperature + line_color: orange + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_living_room_01_temperature +# name: Temperature + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card +# name: Humidity + line_color: blue + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_living_room_01_humidity +# name: Humidity + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card +# name: Illuminance + line_color: red + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.presence_living_room_light_level +# name: Illuminance + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: horizontal-stack + cards: + - type: custom:mushroom-light-card + entity: light.living_room_ceiling_all + name: All Ceiling Lings + icon: mdi:ceiling-light-multiple + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: custom:mushroom-light-card + entity: light.living_room_floor_lamp_01 + name: Floor Lamp + icon: mdi:floor-lamp-torchiere-outline + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: horizontal-stack + cards: + - type: custom:mushroom-light-card + entity: light.living_room_ceiling_group_1 + name: 'Ceiling 1 (Couch)' + icon: mdi:ceiling-light-multiple + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: custom:mushroom-light-card + entity: light.living_room_ceiling_group_2 + name: 'Ceiling 2 (TV)' + icon: mdi:ceiling-light-multiple + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: horizontal-stack + cards: + - type: custom:mushroom-light-card + entity: light.living_room_tiles_01 + name: 'Tile' + icon: mdi:star-box-multiple + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: custom:mushroom-light-card + entity: light.living_room_strip_01 + name: 'LED Strip' + icon: mdi:led-strip-variant + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: horizontal-stack + cards: + - type: custom:mushroom-light-card + entity: light.christmas_tree + name: 'Christmas Tree' + icon: mdi:string-lights + show_brightness_control: false + collapsible_controls: false + use_light_color: false + - type: custom:layout-break + - type: vertical-stack + cards: + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.11.110:8554/living-room-01' + title: 'Living Room 1' + muted: true + mode: webrtc,mse + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.11.110:8554/living-room-02' + title: 'Living Room 2' + muted: true + mode: webrtc,mse + - type: custom:layout-break + - type: vertical-stack + cards: +# - type: entities +# title: Lights +# show_header_toggle: false +# entities: +# - entity: timer.app_lighting_kitchen +# - type: custom:flipdown-timer-card +# entity: timer.app_lighting_kitchen +# show_hour: false +# show_title: false +# show_header: false +# duration: "00:01:00" +# styles: +# rotor: +# width: 60px +# height: 80px +# button: +# width: 60px +# location: bottom + - type: horizontal-stack + cards: + - type: button + name: Occupancy + entity: input_boolean.occupancy_living_room + - type: custom:button-card + name: Operating Mode + entity: input_boolean.manually_operated_light_living_room + state: + - value: 'on' + icon: mdi:hand-front-right + color: orange + - value: 'off' + icon: mdi:brightness-auto + - type: button + name: Occupants + entity: input_number.occupants_living_room + - type: custom:mini-media-player + entity: media_player.pioneer_vsx_lx505_f5bae6 + artwork: cover +# - type: custom:mini-media-player +# entity: media_player.living_room_pair +# artwork: cover + - type: custom:mini-media-player + entity: media_player.living_room_speaker + artwork: cover +# - type: custom:mini-media-player +# entity: media_player.living_room_max_1 +# artwork: cover +# - type: custom:mini-media-player +# entity: media_player.living_room_max_2 +# artwork: cover + - type: custom:mini-media-player + entity: media_player.living_room_1 + artwork: cover + - type: custom:mini-media-player + entity: media_player.nvidia_shield_tv_living_room + artwork: cover + - type: media-control + entity: media_player.onkyo_receiver + - type: conditional + conditions: + - condition: state + entity: media_player.onkyo_receiver + state: "on" + card: + type: horizontal-stack + cards: + - name: Nvidia ShieldTV + entity: script.receiver_switch_to_shield_tv + type: button + icon: mdi:youtube-tv + tap_action: + action: toggle + hold_action: + action: more-info + show_name: false + show_icon: true + color: "{% if state_attr('media_player.onkyo_receiver', 'source') == 'Nvidia Shield TV' -%}#FFC107{%- else -%}#44739E{%- endif %}" + color_type: icon + - name: PS4 + entity: script.receiver_switch_to_playstation + type: button + icon: mdi:sony-playstation + tap_action: + action: toggle + hold_action: + action: more-info + show_name: false + show_icon: true + - name: Win11 + entity: script.receiver_switch_to_windows + type: button + icon: mdi:microsoft-windows + tap_action: + action: toggle + show_name: false + show_icon: true + show_state: false + - name: Cameras + entity: script.receiver_switch_to_security + type: button + icon: mdi:camera-wireless + tap_action: + action: toggle + hold_action: + action: more-info + show_name: false + show_icon: true + - type: conditional + conditions: + - condition: state + entity: media_player.onkyo_receiver + state: "on" + - condition: state + entity: switch.onkyo_source_nvidia_shield_tv + state: "on" + card: + type: horizontal-stack + cards: + - name: youtube + entity: switch.android_tv_youtube + type: button + icon: mdi:youtube + tap_action: + action: toggle + hold_action: + action: more-info + show_name: false + show_icon: true + - name: Netflix + entity: switch.android_tv_netflix + type: button + icon: mdi:netflix + tap_action: + action: toggle + hold_action: + action: more-info + show_name: false + show_icon: true + - name: Plex + entity: switch.android_tv_plex + type: button + icon: mdi:plex + tap_action: + action: toggle + hold_action: + action: more-info + show_name: false + show_icon: true + +# - name: Go to sleep +# entity: script.sleep +# type: button +# tap_action: +# action: toggle +# icon: mdi:sleep +# hold_action: +# action: more-info +# show_name: true +# show_icon: true + - type: media-control + entity: media_player.playstation_4_pro + - type: entities + entities: + - remote.living_room_harmony_hub + - select.living_room_harmony_hub_activities diff --git a/configuration/ui-lovelace/050-bedroom-master.yaml b/configuration/ui-lovelace/050-bedroom-master.yaml new file mode 100644 index 0000000..ad9fb93 --- /dev/null +++ b/configuration/ui-lovelace/050-bedroom-master.yaml @@ -0,0 +1,283 @@ +--- +title: Master Bedroom +icon: mdi:bed-king +panel: true +visible: + - user: 1614b22cbef54f979741cf8a6b3413ec # Alex + - user: 76e8af2547254ef0ab523ae1ad0bf81a # Tanya +cards: + - type: custom:layout-card + layout: vertical + cards: + - type: vertical-stack + cards: + - type: custom:mushroom-chips-card + chips: + - type: template + icon: "{% if is_state('binary_sensor.presence_bedroom_master_sensor_1', 'on') -%}mdi:account-multiple{%- else -%}mdi:account-off-outline{%- endif %}" + icon_color: "{% if is_state('binary_sensor.presence_bedroom_master_sensor_1', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}" + badge_icon: mdi:numeric-1-circle + badge_color: green + entity: binary_sensor.presence_bedroom_master_sensor_1 + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.window_bedroom_master_left_01_contact', 'on') -%}mdi:window-open{%- else -%}mdi:window-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.window_bedroom_master_left_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.window_bedroom_master_left_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.window_bedroom_master_center_01_contact', 'on') -%}mdi:window-open{%- else -%}mdi:window-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.window_bedroom_master_center_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.window_bedroom_master_center_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.window_bedroom_master_right_01_contact', 'on') -%}mdi:window-open{%- else -%}mdi:window-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.window_bedroom_master_right_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.window_bedroom_master_right_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.door_bedroom_master_01_contact', 'on') -%}mdi:door-open{%- else -%}mdi:door-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.door_bedroom_master_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.door_bedroom_master_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.door_bedroom_master_closet_01_contact', 'on') -%}mdi:door-open{%- else -%}mdi:door-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.door_bedroom_master_closet_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.door_bedroom_master_closet_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.smoke_bedroom_master_01_smoke', 'on') -%}mdi:smoke-detector-variant-alert{%- else -%}mdi:smoke-detector-variant{%- endif %}" + icon_color: "{% if is_state('binary_sensor.smoke_bedroom_master_01_smoke', 'on') -%}#D40909{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.smoke_bedroom_master_01_smoke + tap_action: + action: more-info + - type: custom:stack-in-card + cards: + - type: grid + columns: 2 + square: false + cards: + - type: custom:mushroom-entity-card + entity: input_boolean.bedroom_master_light_state + name: Master Bedroom + icon: mdi:lightbulb-group + tap_action: + action: toggle + card_mod: + style: "ha-card { border: none; }" + - type: custom:paper-buttons-row + preset: mushroom + styles: + justify-content: flex-end + base_config: + styles: + button: + margin-top: 12px + margin-right: 12px + buttons: + - layout: icon + icon: mdi:lightbulb-group + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.bedroom_master_scenes + option: "All" + styles: + button: + color: "{% if is_state('input_boolean.bedroom_master_light_state', 'on') and is_state('input_select.bedroom_master_scenes', 'All') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.bedroom_master_light_state', 'on') and is_state('input_select.bedroom_master_scenes', 'All') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:ceiling-light-multiple + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.bedroom_master_scenes + option: "Ceiling Only" + styles: + button: + color: "{% if is_state('input_boolean.bedroom_master_light_state', 'on') and is_state('input_select.bedroom_master_scenes', 'Ceiling Only') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.bedroom_master_light_state', 'on') and is_state('input_select.bedroom_master_scenes', 'Ceiling Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:floor-lamp-torchiere + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.bedroom_master_scenes + option: "Floor Only" + styles: + button: + color: "{% if is_state('input_boolean.bedroom_master_light_state', 'on') and is_state('input_select.bedroom_master_scenes', 'Floor Only') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.bedroom_master_light_state', 'on') and is_state('input_select.bedroom_master_scenes', 'Floor Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:bed-queen-outline + tap_action: + action: call-service + service: light.toggle + service_data: + entity_id: light.bedroom_master_bed_01 + styles: + button: + color: "{% if is_state('light.bedroom_master_bed_01', 'on') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('light.bedroom_master_bed_01', 'on') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - type: horizontal-stack + cards: + - type: custom:mini-graph-card +# name: Temperature + line_color: orange + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_bedroom_master_01_temperature +# name: Temperature + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card +# name: Humidity + line_color: blue + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_bedroom_master_01_humidity +# name: Humidity + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card +# name: Illuminance + line_color: red + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.presence_bedroom_master_light_level +# name: Illuminance + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card + name: Ppm25 + line_color: green + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_bedroom_master_02_pm25 + name: Ppm25 + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: horizontal-stack + cards: + - type: custom:mushroom-light-card + entity: light.bedroom_master_floor_all + name: Bed Lights + icon: mdi:lamps + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: custom:mushroom-light-card + entity: light.bedroom_master_ceiling_all + name: Ceiling Lights + icon: mdi:dome-light + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: horizontal-stack + cards: + - type: custom:mushroom-light-card + entity: light.bedroom_master_floor_lamp_02 + name: "Tanya's Bed Light" + icon: mdi:ceiling-light-multiple + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: custom:mushroom-light-card + entity: light.bedroom_master_floor_lamp_01 + name: "Alex's Bed Light" + icon: mdi:ceiling-light-multiple + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: horizontal-stack + cards: + - type: custom:mushroom-light-card + entity: light.bedroom_master_bed_01 + name: 'Bed Light' + icon: mdi:led-strip-variant + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: custom:layout-break + - type: vertical-stack + cards: + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.11.110:8554/bedroom-master' + title: 'Master Bedroom' + muted: true + mode: webrtc,mse + - type: custom:mushroom-chips-card + chips: + - type: entity + entity: + - type: entity + entity: + - type: entity + entity: + - type: custom:layout-break + - type: vertical-stack + cards: +# - type: entities +# title: Lights +# show_header_toggle: false +# entities: +# - entity: timer.app_lighting_bedroom_master +# - type: custom:flipdown-timer-card +# entity: timer.app_lighting_bedroom_master +# show_hour: false +# show_title: false +# show_header: false +# duration: "00:01:00" +# styles: +# rotor: +# width: 60px +# height: 80px +# button: +# width: 60px +# location: bottom + - type: horizontal-stack + cards: + - type: button + name: Occupancy + entity: input_boolean.occupancy_bedroom_master + - type: button + name: Operating Mode + entity: input_boolean.manually_operated_light_bedroom_master + - type: button + name: Occupants + entity: input_number.occupants_bedroom_master + - type: custom:mini-media-player + entity: media_player.master_bedroom_display + artwork: cover + - type: custom:mini-media-player + entity: media_player.master_bedroom_pair + artwork: cover diff --git a/configuration/ui-lovelace/060-bedroom-max.yaml b/configuration/ui-lovelace/060-bedroom-max.yaml new file mode 100644 index 0000000..0995401 --- /dev/null +++ b/configuration/ui-lovelace/060-bedroom-max.yaml @@ -0,0 +1,320 @@ +--- +title: "Maxim's Bedroom" +icon: mdi:bed +panel: true +visible: + - user: 1614b22cbef54f979741cf8a6b3413ec # Alex + - user: 76e8af2547254ef0ab523ae1ad0bf81a # Tanya +cards: + - type: custom:layout-card + layout: vertical + cards: + - type: vertical-stack + cards: + - type: horizontal-stack + cards: + - type: custom:mushroom-chips-card + chips: + - type: template + icon: "{% if is_state('binary_sensor.presence_bedroom_maxim_sensor_1', 'on') -%}mdi:account-multiple{%- else -%}mdi:account-off-outline{%- endif %}" + icon_color: "{% if is_state('binary_sensor.presence_bedroom_maxim_sensor_1', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}" + badge_icon: mdi:numeric-1-circle + badge_color: green + entity: binary_sensor.presence_bedroom_maxim_sensor_1 + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.window_bedroom_max_01_contact', 'on') -%}mdi:window-open{%- else -%}mdi:window-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.window_bedroom_max_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.window_bedroom_max_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.door_bedroom_max_01_contact', 'on') -%}mdi:door-open{%- else -%}mdi:door-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.door_bedroom_max_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.door_bedroom_max_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.smoke_bedroom_maxim_01_smoke', 'on') -%}mdi:smoke-detector-variant-alert{%- else -%}mdi:smoke-detector-variant{%- endif %}" + icon_color: "{% if is_state('binary_sensor.smoke_bedroom_maxim_01_smoke', 'on') -%}#D40909{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.smoke_bedroom_maxim_01_smoke + tap_action: + action: more-info + - type: custom:mushroom-chips-card + alignment: end + chips: + - type: template + entity: light.bedroom_guest_ceiling_01 + icon: mdi:ceiling-light + tap_action: + action: toggle + icon_color: "{% if is_state('light.bedroom_max_ceiling_01', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + - type: template + entity: fan.bedroom_max + icon: mdi:fan + icon_color: "{% if is_state('fan.bedroom_max', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + tap_action: + action: toggle + - type: custom:stack-in-card + cards: + - type: grid + columns: 2 + square: false + cards: + - type: custom:mushroom-entity-card + entity: input_boolean.bedroom_max_light_state + name: Max Bedroom + icon: mdi:lightbulb-group + tap_action: + action: toggle + card_mod: + style: "ha-card { border: none; }" + - type: custom:paper-buttons-row + preset: mushroom + styles: + justify-content: flex-end + base_config: + styles: + button: + margin-top: 12px + margin-right: 12px + buttons: + - layout: icon + icon: mdi:lightbulb-group + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.bedroom_max_scenes + option: "All" + styles: + button: + color: "{% if is_state('input_boolean.bedroom_max_light_state', 'on') and is_state('input_select.bedroom_max_scenes', 'All') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.bedroom_max_light_state', 'on') and is_state('input_select.bedroom_max_scenes', 'All') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:ceiling-light-multiple + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.bedroom_max_scenes + option: "Ceiling Only" + styles: + button: + color: "{% if is_state('input_boolean.bedroom_max_light_state', 'on') and is_state('input_select.bedroom_max_scenes', 'Ceiling Only') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.bedroom_max_light_state', 'on') and is_state('input_select.bedroom_max_scenes', 'Ceiling Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:floor-lamp-torchiere + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.bedroom_max_scenes + option: "Table Only" + styles: + button: + color: "{% if is_state('input_boolean.bedroom_max_light_state', 'on') and is_state('input_select.bedroom_max_scenes', 'Table Only') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.bedroom_max_light_state', 'on') and is_state('input_select.bedroom_max_scenes', 'Table Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:bed-queen-outline + tap_action: + action: call-service + service: light.toggle + service_data: + entity_id: light.bedroom_maxim_bed_01 + styles: + button: + color: "{% if is_state('light.bedroom_maxim_bed_01', 'on') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('light.bedroom_maxim_bed_01', 'on') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - type: horizontal-stack + cards: + - type: custom:mini-graph-card +# name: Temperature + line_color: orange + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_bedroom_max_01_temperature +# name: Temperature + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card +# name: Humidity + line_color: blue + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_bedroom_max_01_humidity +# name: Humidity + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card +# name: Illuminance + line_color: red + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.presence_bedroom_maxim_light_level +# name: Illuminance + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: horizontal-stack + cards: + - type: custom:mushroom-light-card + entity: light.bedroom_max_ceiling_01 + name: Ceiling Light + icon: mdi:ceiling-fan-light + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: custom:mushroom-light-card + entity: light.bedroom_max_table_01 + name: Table Light + icon: mdi:floor-lamp + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: horizontal-stack + cards: + - type: custom:mushroom-light-card + entity: light.bedroom_maxim_bed_01 + name: 'Bed Light' + icon: mdi:led-strip-variant + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: custom:mushroom-fan-card + entity: fan.bedroom_maxim + name: 'Ceiling Fan' + icon_animation: on + show_percentage_control: true + collapsible_controls: true +# - type: custom:stack-in-card +# cards: +# - type: grid +# columns: 2 +# square: false +# cards: +# - type: custom:mushroom-entity-card +# entity: fan.bedroom_max +# name: Fan +# icon: mdi:ceiling-fan-light +# use_light_color: false +# tap_action: +# action: toggle +# card_mod: +# style: "ha-card { border: none }" +# - type: custom:paper-buttons-row +# preset: mushroom +# styles: +# justify-content: flex-end +# base_config: +# styles: +# button: +# margin-top: 12px +# margin-right: 12px +# buttons: +# - layout: icon +# icon: mdi:fan-speed-1 +# tap_action: +# action: call-service +# service: fan.set_preset_mode +# service_data: +# entity_id: fan.bedroom_max +# preset_mode: low +# styles: +# button: +# color: "{% if is_state_attr('fan.bedroom_max', 'preset_mode', 'low') %}#FFC107{% else %}#44739E{% endif %}" +# - layout: icon +# icon: mdi:fan-speed-2 +# tap_action: +# action: call-service +# service: fan.set_preset_mode +# service_data: +# entity_id: fan.bedroom_max +# preset_mode: medium +# styles: +# button: +# color: "{% if is_state_attr('fan.bedroom_max', 'preset_mode', 'medium') %}#FFC107{% else %}#44739E{% endif %}" +# - layout: icon +# icon: mdi:fan-speed-3 +# tap_action: +# action: call-service +# service: fan.set_preset_mode +# service_data: +# entity_id: fan.bedroom_max +# preset_mode: high +# styles: +# button: +# color: "{% if is_state_attr('fan.bedroom_max', 'preset_mode', 'high') %}#FFC107{% else %}#44739E{% endif %}" +# - type: horizontal-stack +# cards: +# - type: entities +# show_header_toggle: false +# entities: +# - type: custom:mushroom-fan-card +# name: Fan +# entity: fan.bedroom_max +# icon_animation: true +# show_percentage_control: false +# collapsible_controls: true +# - type: custom:fan-mode-button-row +# entity: fan.bedroom_max +# name: Fan +# customTheme: false + - type: custom:layout-break + - type: vertical-stack + cards: + - type: custom:webrtc-camera + url: "rtsp://10.10.11.110:8554/bedroom-max" + title: "Maxim's Bedroom" + muted: true + mode: webrtc,mse + - type: custom:layout-break + - type: vertical-stack + cards: +# - type: entities +# title: Lights +# show_header_toggle: false +# entities: +# - entity: timer.app_lighting_bedroom_max +# - type: custom:flipdown-timer-card +# entity: timer.app_lighting_kitchen +# show_hour: false +# show_title: false +# show_header: false +# duration: "00:01:00" +# styles: +# rotor: +# width: 60px +# height: 80px +# button: +# width: 60px +# location: bottom + - type: horizontal-stack + cards: + - type: button + name: Occupancy + entity: input_boolean.occupancy_bedroom_max + - type: button + name: Operating Mode + entity: input_boolean.manually_operated_light_bedroom_max + - type: button + name: Occupants + entity: input_number.occupants_bedroom_max + - type: custom:mini-media-player + entity: media_player.max_s_bedroom_display + artwork: cover diff --git a/configuration/ui-lovelace/061-bedroom-max.yaml b/configuration/ui-lovelace/061-bedroom-max.yaml new file mode 100644 index 0000000..4e7ca83 --- /dev/null +++ b/configuration/ui-lovelace/061-bedroom-max.yaml @@ -0,0 +1,313 @@ +--- +title: "Maxim's Bedroom" +icon: mdi:bed +panel: true +visible: + - user: b51145d4c22245b4bf8de763ef5e0627 # Max +cards: + - type: custom:layout-card + layout: vertical + cards: + - type: vertical-stack + cards: + - type: horizontal-stack + cards: + - type: custom:mushroom-chips-card + chips: + - type: template + icon: "{% if is_state('binary_sensor.presence_bedroom_max_sensor_1', 'on') -%}mdi:account-multiple{%- else -%}mdi:account-off-outline{%- endif %}" + icon_color: "{% if is_state('binary_sensor.presence_bedroom_max_sensor_1', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}" + badge_icon: mdi:numeric-1-circle + badge_color: green + entity: binary_sensor.presence_bedroom_max_sensor_1 + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.window_bedroom_max_01_contact', 'on') -%}mdi:window-open{%- else -%}mdi:window-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.window_bedroom_max_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.window_bedroom_max_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.door_bedroom_max_01_contact', 'on') -%}mdi:door-open{%- else -%}mdi:door-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.door_bedroom_max_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.door_bedroom_max_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.smoke_bedroom_max_01_smoke', 'on') -%}mdi:smoke-detector-variant-alert{%- else -%}mdi:smoke-detector-variant{%- endif %}" + icon_color: "{% if is_state('binary_sensor.smoke_bedroom_max_01_smoke', 'on') -%}#D40909{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.smoke_bedroom_max_01_smoke + tap_action: + action: more-info + - type: custom:mushroom-chips-card + alignment: end + chips: + - type: template + entity: light.bedroom_guest_ceiling_01 + icon: mdi:ceiling-light + tap_action: + action: toggle + icon_color: "{% if is_state('light.bedroom_max_ceiling_01', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + - type: template + entity: fan.bedroom_max + icon: mdi:fan + icon_color: "{% if is_state('fan.bedroom_max', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + tap_action: + action: toggle + - type: custom:stack-in-card + cards: + - type: grid + columns: 2 + square: false + cards: + - type: custom:mushroom-entity-card + entity: input_boolean.bedroom_max_light_state + name: Max Bedroom + icon: mdi:lightbulb-group + tap_action: + action: toggle + card_mod: + style: "ha-card { border: none; }" + - type: custom:paper-buttons-row + preset: mushroom + styles: + justify-content: flex-end + base_config: + styles: + button: + margin-top: 12px + margin-right: 12px + buttons: + - layout: icon + icon: mdi:lightbulb-group + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.bedroom_max_scenes + option: "All" + styles: + button: + color: "{% if is_state('input_boolean.bedroom_max_light_state', 'on') and is_state('input_select.bedroom_max_scenes', 'All') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.bedroom_max_light_state', 'on') and is_state('input_select.bedroom_max_scenes', 'All') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:ceiling-light-multiple + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.bedroom_max_scenes + option: "Ceiling Only" + styles: + button: + color: "{% if is_state('input_boolean.bedroom_max_light_state', 'on') and is_state('input_select.bedroom_max_scenes', 'Ceiling Only') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.bedroom_max_light_state', 'on') and is_state('input_select.bedroom_max_scenes', 'Ceiling Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:floor-lamp-torchiere + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.bedroom_max_scenes + option: "Table Only" + styles: + button: + color: "{% if is_state('input_boolean.bedroom_max_light_state', 'on') and is_state('input_select.bedroom_max_scenes', 'Table Only') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.bedroom_max_light_state', 'on') and is_state('input_select.bedroom_max_scenes', 'Table Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:bed-queen-outline + tap_action: + action: call-service + service: light.toggle + service_data: + entity_id: light.light_bed_max_01 + styles: + button: + color: "{% if is_state('light.light_bed_max_01', 'on') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('light.light_bed_max_01', 'on') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - type: horizontal-stack + cards: + - type: custom:mini-graph-card +# name: Temperature + line_color: orange + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_bedroom_max_01_temperature +# name: Temperature + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card +# name: Humidity + line_color: blue + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_bedroom_max_01_humidity +# name: Humidity + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card +# name: Illuminance + line_color: red + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.presence_bedroom_max_light_level +# name: Illuminance + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: horizontal-stack + cards: + - type: custom:mushroom-light-card + entity: light.bedroom_max_ceiling_01 + name: Ceiling Light + icon: mdi:ceiling-fan-light + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: custom:mushroom-light-card + entity: light.bedroom_max_table_01 + name: Table Light + icon: mdi:floor-lamp + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: horizontal-stack + cards: + - type: custom:mushroom-light-card + entity: light.light_bed_max_01 + name: 'Bed Light' + icon: mdi:led-strip-variant + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: custom:stack-in-card + cards: + - type: grid + columns: 2 + square: false + cards: + - type: custom:mushroom-entity-card + entity: fan.bedroom_max + name: Fan + icon: mdi:ceiling-fan-light + use_light_color: false + tap_action: + action: toggle + card_mod: + style: "ha-card { border: none }" + - type: custom:paper-buttons-row + preset: mushroom + styles: + justify-content: flex-end + base_config: + styles: + button: + margin-top: 12px + margin-right: 12px + buttons: + - layout: icon + icon: mdi:fan-speed-1 + tap_action: + action: call-service + service: fan.set_preset_mode + service_data: + entity_id: fan.bedroom_max + preset_mode: low + styles: + button: + color: "{% if is_state_attr('fan.bedroom_max', 'preset_mode', 'low') %}#FFC107{% else %}#44739E{% endif %}" + - layout: icon + icon: mdi:fan-speed-2 + tap_action: + action: call-service + service: fan.set_preset_mode + service_data: + entity_id: fan.bedroom_max + preset_mode: medium + styles: + button: + color: "{% if is_state_attr('fan.bedroom_max', 'preset_mode', 'medium') %}#FFC107{% else %}#44739E{% endif %}" + - layout: icon + icon: mdi:fan-speed-3 + tap_action: + action: call-service + service: fan.set_preset_mode + service_data: + entity_id: fan.bedroom_max + preset_mode: high + styles: + button: + color: "{% if is_state_attr('fan.bedroom_max', 'preset_mode', 'high') %}#FFC107{% else %}#44739E{% endif %}" +# - type: horizontal-stack +# cards: +# - type: entities +# show_header_toggle: false +# entities: +# - type: custom:mushroom-fan-card +# name: Fan +# entity: fan.bedroom_max +# icon_animation: true +# show_percentage_control: false +# collapsible_controls: true +# - type: custom:fan-mode-button-row +# entity: fan.bedroom_max +# name: Fan +# customTheme: false +# - type: custom:layout-break +# - type: vertical-stack +# cards: +# - type: custom:webrtc-camera +# url: "rtsp://10.10.11.110:8554/bedroom-max" +# title: "Maxim's Bedroom" +# muted: true +# mode: webrtc,mse + - type: custom:layout-break + - type: vertical-stack + cards: +# - type: entities +# title: Lights +# show_header_toggle: false +# entities: +# - entity: timer.app_lighting_bedroom_max +# - type: custom:flipdown-timer-card +# entity: timer.app_lighting_kitchen +# show_hour: false +# show_title: false +# show_header: false +# duration: "00:01:00" +# styles: +# rotor: +# width: 60px +# height: 80px +# button: +# width: 60px +# location: bottom + - type: horizontal-stack + cards: + - type: button + name: Occupancy + entity: input_boolean.occupancy_bedroom_max + - type: button + name: Operating Mode + entity: input_boolean.manually_operated_light_bedroom_max + - type: button + name: Occupants + entity: input_number.occupants_bedroom_max + - type: custom:mini-media-player + entity: media_player.max_s_bedroom_display + artwork: cover diff --git a/configuration/ui-lovelace/070-bedroom-olivia.yaml b/configuration/ui-lovelace/070-bedroom-olivia.yaml new file mode 100644 index 0000000..4661c89 --- /dev/null +++ b/configuration/ui-lovelace/070-bedroom-olivia.yaml @@ -0,0 +1,655 @@ +--- +title: "Olivia's Bedroom" +icon: mdi:bed +panel: true +visible: + - user: 1614b22cbef54f979741cf8a6b3413ec # Alex + - user: 76e8af2547254ef0ab523ae1ad0bf81a # Tanya +cards: + - type: custom:layout-card + layout: vertical + cards: + - type: vertical-stack + cards: + - type: horizontal-stack + cards: + - type: custom:mushroom-chips-card + chips: + - type: template + icon: "{% if is_state('binary_sensor.presence_bedroom_olivia_sensor_1', 'on') -%}mdi:account-multiple{%- else -%}mdi:account-off-outline{%- endif %}" + icon_color: "{% if is_state('binary_sensor.presence_bedroom_olivia_sensor_1', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}" + badge_icon: mdi:numeric-1-circle + badge_color: green + entity: binary_sensor.presence_bedroom_olivia_sensor_1 + tap_action: + action: more-info +# - type: template +# icon: "{% if is_state('binary_sensor.presence_01_presence', 'on') -%}mdi:account-multiple{%- else -%}mdi:account-off-outline{%- endif %}" +# icon_color: "{% if is_state('binary_sensor.presence_01_presence', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}" +# badge_icon: mdi:numeric-1-circle +# badge_color: green +# - type: template +# icon: "{% if is_state('binary_sensor.dome_z_wave_plus_motion_detector_with_light_sensor_and_flexible_magnetic_mount_home_security_motion_detection_4', 'on') -%}mdi:motion-sensor{%- else -%}mdi:motion-sensor-off{%- endif %}" +# icon_color: "{% if is_state('binary_sensor.dome_z_wave_plus_motion_detector_with_light_sensor_and_flexible_magnetic_mount_home_security_motion_detection_4', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" +# entity: binary_sensor.dome_z_wave_plus_motion_detector_with_light_sensor_and_flexible_magnetic_mount_home_security_motion_detection_4 +# tap_action: +# action: more-info + - type: template + icon: "{% if is_state('binary_sensor.window_bedroom_olivia_01_contact', 'on') -%}mdi:window-open{%- else -%}mdi:window-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.window_bedroom_olivia_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.window_bedroom_olivia_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.door_bedroom_olivia_01_contact', 'on') -%}mdi:door-open{%- else -%}mdi:door-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.door_bedroom_olivia_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.door_bedroom_olivia_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.door_bedroom_olivia_closet_01_contact', 'on') -%}mdi:door-open{%- else -%}mdi:door-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.door_bedroom_olivia_closet_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.door_bedroom_olivia_closet_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.smoke_bedroom_olivia_01_smoke', 'on') -%}mdi:smoke-detector-variant-alert{%- else -%}mdi:smoke-detector-variant{%- endif %}" + icon_color: "{% if is_state('binary_sensor.smoke_bedroom_olivia_01_smoke', 'on') -%}#D40909{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.smoke_bedroom_olivia_01_smoke + tap_action: + action: more-info + - type: custom:mushroom-chips-card + alignment: end + chips: + - type: template + entity: light.bedroom_olivia_ceiling_01 + icon: mdi:ceiling-light + tap_action: + action: toggle + icon_color: "{% if is_state('light.bedroom_olivia_ceiling_01', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + - type: template + entity: fan.bedroom_olivia + icon: mdi:fan + icon_color: "{% if is_state('fan.bedroom_olivia', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + tap_action: + action: toggle + - type: custom:stack-in-card + cards: + - type: grid + columns: 2 + square: false + cards: + - type: custom:mushroom-entity-card + entity: input_boolean.bedroom_olivia_light_state + name: Olivia Bedroom + icon: mdi:lightbulb-group + tap_action: + action: toggle + card_mod: + style: "ha-card { border: none; }" + - type: custom:paper-buttons-row + preset: mushroom + styles: + justify-content: flex-end + base_config: + styles: + button: + margin-top: 12px + margin-right: 12px + buttons: + - layout: icon + icon: mdi:lightbulb-group + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.bedroom_olivia_scenes + option: "All" + styles: + button: + color: "{% if is_state('input_boolean.bedroom_olivia_light_state', 'on') and is_state('input_select.bedroom_olivia_scenes', 'All') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.bedroom_olivia_light_state', 'on') and is_state('input_select.bedroom_olivia_scenes', 'All') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:ceiling-light-multiple + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.bedroom_olivia_scenes + option: "Ceiling Only" + styles: + button: + color: "{% if is_state('input_boolean.bedroom_olivia_light_state', 'on') and is_state('input_select.bedroom_olivia_scenes', 'Ceiling Only') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.bedroom_olivia_light_state', 'on') and is_state('input_select.bedroom_olivia_scenes', 'Ceiling Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:floor-lamp-torchiere + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.bedroom_olivia_scenes + option: "Floor Only" + styles: + button: + color: "{% if is_state('input_boolean.bedroom_olivia_light_state', 'on') and is_state('input_select.bedroom_olivia_scenes', 'Floor Only') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.bedroom_olivia_light_state', 'on') and is_state('input_select.bedroom_olivia_scenes', 'Table Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - type: horizontal-stack + cards: + - type: custom:mini-graph-card +# name: Temperature + line_color: orange + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_bedroom_olivia_01_temperature +# name: Temperature + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card +# name: Humidity + line_color: blue + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_bedroom_olivia_01_humidity +# name: Humidity + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card +# name: Illuminance + line_color: red + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.presence_bedroom_olivia_light_level +# name: Illuminance + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: horizontal-stack + cards: + - type: custom:mushroom-light-card + entity: light.bedroom_olivia_ceiling_01 + name: Ceiling Light + icon: mdi:ceiling-fan-light + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: custom:mushroom-light-card + entity: light.bedroom_olivia_floor_01 + name: Floor Light + icon: mdi:floor-lamp + show_brightness_control: true + collapsible_controls: true + use_light_color: true + - type: custom:mushroom-fan-card + entity: fan.bedroom_maxim + name: 'Ceiling Fan' + icon_animation: on + show_percentage_control: true + collapsible_controls: true +# - type: custom:stack-in-card +# cards: +# - type: grid +# columns: 2 +# square: false +# cards: +# - type: custom:mushroom-entity-card +# entity: fan.bedroom_olivia +# name: Fan +# icon: mdi:ceiling-fan-light +# use_light_color: false +# tap_action: +# action: toggle +# card_mod: +# style: "ha-card { border: none }" +# - type: custom:paper-buttons-row +# preset: mushroom +# styles: +# justify-content: flex-end +# base_config: +# styles: +# button: +# margin-top: 12px +# margin-right: 12px +# buttons: +# - layout: icon +# icon: mdi:fan-speed-1 +# tap_action: +# action: call-service +# service: fan.set_preset_mode +# service_data: +# entity_id: fan.bedroom_olivia +# preset_mode: low +# styles: +# button: +# color: "{% if is_state_attr('fan.bedroom_olivia', 'preset_mode', 'low') %}#FFC107{% else %}#44739E{% endif %}" +# - layout: icon +# icon: mdi:fan-speed-2 +# tap_action: +# action: call-service +# service: fan.set_preset_mode +# service_data: +# entity_id: fan.bedroom_olivia +# preset_mode: medium +# styles: +# button: +# color: "{% if is_state_attr('fan.bedroom_olivia', 'preset_mode', 'medium') %}#FFC107{% else %}#44739E{% endif %}" +# - layout: icon +# icon: mdi:fan-speed-3 +# tap_action: +# action: call-service +# service: fan.set_preset_mode +# service_data: +# entity_id: fan.bedroom_olivia +# preset_mode: high +# styles: +# button: +# color: "{% if is_state_attr('fan.bedroom_olivia', 'preset_mode', 'high') %}#FFC107{% else %}#44739E{% endif %}" +# - type: entities +# show_header_toggle: false +# entities: +# - type: custom:fan-mode-button-row +# entity: fan.bedroom_olivia +# name: Fan +# customTheme: false + - type: custom:layout-break + - type: vertical-stack + cards: + - type: custom:webrtc-camera + url: "rtsp://10.10.11.110:8554/bedroom-olivia" + title: "Olivia's Bedroom" + muted: true + mode: webrtc,mse + - type: custom:mushroom-chips-card + chips: + - type: entity + entity: + - type: entity + entity: + - type: entity + entity: + - type: custom:layout-break + - type: vertical-stack + cards: +# - type: entities +# title: Lights +# show_header_toggle: false +# entities: +# - entity: timer.app_lighting_bedroom_olivia +# - type: custom:flipdown-timer-card +# entity: timer.app_lighting_bedroom_olivia +# show_hour: false +# show_title: false +# show_header: false +# duration: "00:01:00" +# styles: +# rotor: +# width: 60px +# height: 80px +# button: +# width: 60px +# location: bottom + - type: horizontal-stack + cards: + - type: button + name: Occupancy + entity: input_boolean.occupancy_bedroom_olivia + - type: button + name: Operating Mode + entity: input_boolean.manually_operated_light_bedroom_olivia + - type: button + name: Occupants + entity: input_number.occupants_bedroom_olivia +# - type: custom:mini-media-player +# entity: media_player.kitchen_max +# artwork: cover + - type: custom:plotly-graph + refresh_interval: 1 + hours_to_show: current_day + config: + modeBarButtonsToRemove: + - select2d + - lasso2d + - toImage + displaylogo: false + layout: + height: 240 + margin: + l: 40 + r: 20 + t: 20 + b: 55 + showlegend: true + xaxis: + showticklabels: true + dtick: 1000 + visible: true + gridcolor: RGBA(200,200,200,0.15) + zerolinecolor: RGBA(200,200,200,0.15) + type: number + fixedrange: true + range: + - 4000 + - -4000 + yaxis: + showticklabels: true + dtick: 1000 + visible: true + gridcolor: RGBA(200,200,200,0.15) + zerolinecolor: RGBA(200,200,200,0.15) + scaleanchor: x + scaleratio: 1 + fixedrange: true + range: + - 7500 + - 0 + entities: + - entity: '' + fn_var1: $ex vars.sensor_id = "d158f4"; + fn_var2: $ex vars.sensor_name_prefix = "sensor.screek_human_sensor_2a_" + vars.sensor_id + "_"; + fn_var3: $ex vars.number_name_prefix = "number.screek_human_sensor_2a_" + vars.sensor_id + "_"; + fn_var4: $ex vars.is_inch_unit = hass.states[vars.sensor_name_prefix + "target1_x"].attributes.unit_of_measurement == "in"; + # name: sensor_id + - entity: '' + name: Target1 + marker: + size: 10 + symbol: star-diamond + line: + shape: spline + width: 5 + x: + - $ex { + var x = hass.states[vars.sensor_name_prefix + "target1_x"].state; + var y = hass.states[vars.sensor_name_prefix + "target1_y"].state; + if (x == 0 && y == 0) { return -9999 }; + if (vars.is_inch_unit) { x = x * 25.4 }; + return x; + } + y: + - $ex { + var x = hass.states[vars.sensor_name_prefix + "target1_x"].state; + var y = hass.states[vars.sensor_name_prefix + "target1_y"].state; + if (x == 0 && y == 0) { return -9999 }; + if (vars.is_inch_unit) { y = y * 25.4 }; + return y; + } + - entity: '' + name: Target2 + marker: + size: 10 + symbol: star-diamond + line: + shape: spline + width: 5 + x: + - $ex { + var x = hass.states[vars.sensor_name_prefix + "target2_x"].state; + var y = hass.states[vars.sensor_name_prefix + "target2_y"].state; + if (x == 0 && y == 0) { return -9999 }; + if (vars.is_inch_unit) { x = x * 25.4 }; + return x; + } + y: + - $ex { + var x = hass.states[vars.sensor_name_prefix + "target2_x"].state; + var y = hass.states[vars.sensor_name_prefix + "target2_y"].state; + if (x == 0 && y == 0) { return -9999 }; + if (vars.is_inch_unit) { y = y * 25.4 }; + return y; + } + - entity: '' + internal: false + name: Target3 + marker: + size: 10 + symbol: star-diamond + line: + shape: spline + width: 5 + x: + - $ex { + var x = hass.states[vars.sensor_name_prefix + "target3_x"].state; + var y = hass.states[vars.sensor_name_prefix + "target3_y"].state; + if (x == 0 && y == 0) { return -9999 }; + if (vars.is_inch_unit) { x = x * 25.4 }; + return x; + } + y: + - $ex { + var x = hass.states[vars.sensor_name_prefix + "target3_x"].state; + var y = hass.states[vars.sensor_name_prefix + "target3_y"].state; + if (x == 0 && y == 0) { return -9999 }; + if (vars.is_inch_unit) { y = y * 25.4 }; + return y; + } + + - entity: '' + name: Zone1 + mode: lines + fill: toself + fillcolor: RGBA(20,200,0,0.06) + line: + color: RGBA(20,200,0,0.2) + shape: line + width: 2 + x: + - >- + $ex + hass.states[vars.number_name_prefix + "zone1_x_begin"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone1_x_begin"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone1_x_end"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone1_x_end"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone1_x_begin"].state + y: + - >- + $ex + hass.states[vars.number_name_prefix + "zone1_y_begin"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone1_y_end"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone1_y_end"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone1_y_begin"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone1_y_begin"].state + - entity: '' + name: Zone2 + mode: lines + fill: toself + fillcolor: RGBA(200,0,255,0.06) + line: + color: RGBA(200,0,255,0.2) + shape: line + width: 2 + x: + - >- + $ex + hass.states[vars.number_name_prefix + "zone2_x_begin"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone2_x_begin"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone2_x_end"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone2_x_end"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone2_x_begin"].state + y: + - >- + $ex + hass.states[vars.number_name_prefix + "zone2_y_begin"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone2_y_end"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone2_y_end"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone2_y_begin"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone2_y_begin"].state + - entity: '' + name: Zone3 + mode: lines + fill: toself + fillcolor: RGBA(200,120,55,0.06) + line: + color: RGBA(200,120,55,0.2) + shape: line + width: 2 + x: + - >- + $ex + hass.states[vars.number_name_prefix + "zone3_x_begin"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone3_x_begin"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone3_x_end"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone3_x_end"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone3_x_begin"].state + y: + - >- + $ex + hass.states[vars.number_name_prefix + "zone3_y_begin"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone3_y_end"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone3_y_end"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone3_y_begin"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zone3_y_begin"].state + - entity: '' + name: ExZone + mode: lines + fill: toself + fillcolor: RGBA(255,0,0,0.15) + line: + shape: line + width: 1 + color: RGBA(255,0,0,0.2) + x: + - >- + $ex + hass.states[vars.number_name_prefix + "zout1_x_begin"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zout1_x_begin"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zout1_x_end"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zout1_x_end"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zout1_x_begin"].state + y: + - >- + $ex + hass.states[vars.number_name_prefix + "zout1_y_begin"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zout1_y_end"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zout1_y_end"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zout1_y_begin"].state + - >- + $ex + hass.states[vars.number_name_prefix + "zout1_y_begin"].state + - entity: '' + name: Coverage + mode: lines + fill: tonexty + fillcolor: rgba(168, 216, 234, 0.15) + hoverinfo: none + line: + shape: line + width: 0.7 + dash: dot + x: + - 0 + - $ex 7500 * Math.sin((2 * Math.PI)/360 * 60) + - 6500 + - 5500 + - 4500 + - 4000 + - 3000 + - 2000 + - 1000 + - 0 + - -1000 + - -2000 + - -3000 + - -4000 + - -4500 + - -5500 + - -6500 + - $ex -7500 * Math.sin((2 * Math.PI)/360 * 60) + - 0 + 'y': + - 0 + - $ex 7500 * Math.cos((2 * Math.PI)/360 * 60) + - $ex Math.sqrt( 7500**2 - 6500**2 ) + - $ex Math.sqrt( 7500**2 - 5500**2 ) + - $ex Math.sqrt( 7500**2 - 4500**2 ) + - $ex Math.sqrt( 7500**2 - 4000**2 ) + - $ex Math.sqrt( 7500**2 - 3000**2 ) + - $ex Math.sqrt( 7500**2 - 2000**2 ) + - $ex Math.sqrt( 7500**2 - 1000**2 ) + - 7500 + - $ex Math.sqrt( 7500**2 - 1000**2 ) + - $ex Math.sqrt( 7500**2 - 2000**2 ) + - $ex Math.sqrt( 7500**2 - 3000**2 ) + - $ex Math.sqrt( 7500**2 - 4000**2 ) + - $ex Math.sqrt( 7500**2 - 4500**2 ) + - $ex Math.sqrt( 7500**2 - 5500**2 ) + - $ex Math.sqrt( 7500**2 - 6500**2 ) + - $ex 7500 * Math.cos((2 * Math.PI)/360 * 60) + - 0 + raw_plotly_config: true + + title: $ex "Human Sensor 2A " + vars.sensor_id + " Map" diff --git a/configuration/ui-lovelace/080-bathrooms.yaml b/configuration/ui-lovelace/080-bathrooms.yaml new file mode 100644 index 0000000..3c4ff49 --- /dev/null +++ b/configuration/ui-lovelace/080-bathrooms.yaml @@ -0,0 +1,414 @@ +--- +title: Bathrooms +icon: mdi:shower +panel: true +visible: + - user: 1614b22cbef54f979741cf8a6b3413ec # Alex + - user: 76e8af2547254ef0ab523ae1ad0bf81a # Tanya +cards: + - type: custom:layout-card + layout: vertical + cards: + - type: vertical-stack + cards: + - type: horizontal-stack + cards: + - type: custom:mushroom-chips-card + chips: + - type: template + icon: "{% if is_state('binary_sensor.presence_03_presence', 'on') -%}mdi:account-multiple{%- else -%}mdi:account-off-outline{%- endif %}" + icon_color: "{% if is_state('binary_sensor.presence_03_presence', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}" + badge_icon: mdi:numeric-1-circle + badge_color: green + entity: binary_sensor.presence_03_presence + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.bathroom_master_01_home_security_motion_detection', 'on') -%}mdi:motion-sensor{%- else -%}mdi:motion-sensor-off{%- endif %}" + icon_color: "{% if is_state('binary_sensor.bathroom_master_01_home_security_motion_detection', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.bathroom_master_01_home_security_motion_detection + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.window_bathroom_master_01_contact', 'on') -%}mdi:window-open{%- else -%}mdi:window-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.window_bathroom_master_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.window_bathroom_master_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.door_bathroom_master_01_contact', 'on') -%}mdi:door-open{%- else -%}mdi:door-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.door_bathroom_master_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.door_bathroom_master_01_contact + tap_action: + action: more-info + - type: custom:mushroom-chips-card + alignment: end + chips: + - type: template + icon: mdi:ceiling-light + icon_color: "{% if is_state('light.bathroom_master_wall_01', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: light.bathroom_master_wall_01 + tap_action: + action: toggle + - type: template + icon: mdi:fan + icon_color: "{% if is_state('fan.bathroom_master', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: fan.bathroom_master + tap_action: + action: toggle + - type: horizontal-stack + cards: + - type: custom:mini-graph-card + line_color: orange + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_bathroom_master_01_temperature + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card + line_color: blue + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_bathroom_master_01_humidity + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card + line_color: red + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.motion_bathroom_master_01_illuminance + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: horizontal-stack + cards: + - type: tile + entity: light.bathroom_master_wall_01 + icon: mdi:lamp + color: orange + features: + - type: "light-brightness" + tap_action: + action: toggle + hold_action: + action: more-info +# - type: horizontal-stack +# cards: +# - type: custom:button-card +# name: Fan +# entity: fan.master_bathroom +# show_state: false +# styles: +# card: +# - height: 140px +# - width: 140px +# icon: +# - animation: > +# [[[ return 'rotating ' + (states['sensor.air_purifier_fan_speed'].state) + 's linear infinite' ]]] + +# - type: custom:flipdown-timer-card +# entity: timer.app_lighting_bedroom_olivia +# show_hour: false +# show_title: false +# show_header: false +# duration: "00:01:00" +# styles: +# rotor: +# width: 60px +# height: 80px +# button: +# width: 60px +# location: bottom + - type: horizontal-stack + cards: + - type: button + name: Occupancy + entity: input_boolean.occupancy_bathroom_master + - type: button + name: Operating Mode + entity: input_boolean.manually_operated_light_bathroom_master + - type: button + name: Occupants + entity: input_number.occupants_bathroom_master +# - type: horizontal-stack +# cards: +# - type: custom:mini-media-player +# entity: media_player.master_bathroom +# artwork: cover + + - type: custom:layout-break + - type: vertical-stack + cards: + - type: horizontal-stack + cards: + - type: custom:mushroom-chips-card + chips: + - type: template + icon: "{% if is_state('binary_sensor.dome_z_wave_plus_motion_detector_with_light_sensor_and_flexible_magnetic_mount_home_security_motion_detection_7', 'on') -%}mdi:motion-sensor{%- else -%}mdi:motion-sensor-off{%- endif %}" + icon_color: "{% if is_state('binary_sensor.dome_z_wave_plus_motion_detector_with_light_sensor_and_flexible_magnetic_mount_home_security_motion_detection_7', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.dome_z_wave_plus_motion_detector_with_light_sensor_and_flexible_magnetic_mount_home_security_motion_detection_7 + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.window_bathroom_bedroom_01_contact', 'on') -%}mdi:window-open{%- else -%}mdi:window-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.window_bathroom_bedroom_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.window_bathroom_bedroom_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.door_bathroom_bedroom_01_contact', 'on') -%}mdi:door-open{%- else -%}mdi:door-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.door_bathroom_bedroom_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.door_bathroom_bedroom_01_contact + tap_action: + action: more-info + - type: custom:mushroom-chips-card + alignment: end + chips: + - type: template + icon: mdi:ceiling-light + icon_color: "{% if is_state('light.bathroom_bedroom_wall_01', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: light.bathroom_bedroom_wall_01 + tap_action: + action: toggle + - type: template + icon: mdi:fan + icon_color: "{% if is_state('fan.bathroom_bedroom', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: fan.bathroom_bedroom + tap_action: + action: toggle + - type: horizontal-stack + cards: + - type: custom:mini-graph-card + line_color: orange + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_bathroom_bedroom_01_temperature + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card + line_color: blue + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_bathroom_bedroom_01_humidity + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card + line_color: red + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.motion_bathroom_bedroom_01_illuminance + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: horizontal-stack + cards: + - type: tile + entity: light.bathroom_bedroom_wall_01 + icon: mdi:lamp + color: orange + features: + - type: "light-brightness" + tap_action: + action: toggle + hold_action: + action: more-info +# - type: horizontal-stack +# cards: +# - type: custom:button-card +# name: Fan +# entity: fan.master_bedroom_bathroom +# show_state: false +# state: +# - value: "locked" +# color: green +# icon: mdi:lock +# - value: "unlocked" +# color: red +# icon: mdi:lock-open-variant +# styles: +# card: +# - height: 140px +# - width: 140px +# icon: +# - animation: > +# [[[ return 'rotating ' + (states['sensor.air_purifier_fan_speed'].state) + 's linear infinite' ]]] + +# - type: custom:flipdown-timer-card +# entity: timer.app_lighting_bathroom_bedroom +# show_hour: false +# show_title: false +# show_header: false +# duration: "00:01:00" +# styles: +# rotor: +# width: 60px +# height: 80px +# button: +# width: 60px +# location: bottom + - type: horizontal-stack + cards: + - type: button + name: Occupancy + entity: input_boolean.occupancy_bathroom_bedroom + - type: button + name: Operating Mode + entity: input_boolean.manually_operated_light_bathroom_bedroom + - type: button + name: Occupants + entity: input_number.occupants_bathroom_bedroom + - type: custom:layout-break + - type: vertical-stack + cards: + - type: horizontal-stack + cards: + - type: custom:mushroom-chips-card + chips: +# - type: template +# icon: "{% if is_state('binary_sensor.presence_01_presence', 'on') -%}mdi:account-multiple{%- else -%}mdi:account-off-outline{%- endif %}" +# icon_color: "{% if is_state('binary_sensor.presence_01_presence', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}" +# badge_icon: mdi:numeric-1-circle +# badge_color: green + - type: template + icon: "{% if is_state('binary_sensor.dome_z_wave_plus_motion_detector_with_light_sensor_and_flexible_magnetic_mount_home_security_motion_detection_6', 'on') -%}mdi:motion-sensor{%- else -%}mdi:motion-sensor-off{%- endif %}" + icon_color: "{% if is_state('binary_sensor.dome_z_wave_plus_motion_detector_with_light_sensor_and_flexible_magnetic_mount_home_security_motion_detection_6', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.dome_z_wave_plus_motion_detector_with_light_sensor_and_flexible_magnetic_mount_home_security_motion_detection_6 + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.door_bathroom_living_01_contact', 'on') -%}mdi:door-open{%- else -%}mdi:door-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.door_bathroom_living_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.door_bathroom_living_01_contact + tap_action: + action: more-info + - type: custom:mushroom-chips-card + alignment: end + chips: + - type: template + icon: mdi:ceiling-light + icon_color: "{% if is_state('light.bathroom_living_room_01', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: light.bathroom_living_room_01 + tap_action: + action: toggle + - type: template + icon: mdi:fan + icon_color: "{% if is_state('fan.bathroom_living_room', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: fan.bathroom_living_room + tap_action: + action: toggle + - type: horizontal-stack + cards: + - type: custom:mini-graph-card + line_color: orange + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_bathroom_living_01_temperature + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card + line_color: blue + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_bathroom_living_01_humidity + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card + line_color: red + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.motion_bathroom_living_01_illuminance + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: horizontal-stack + cards: + - type: tile + entity: light.bathroom_living_room_01 + icon: mdi:lamp + color: orange + features: + - type: "light-brightness" + tap_action: + action: toggle + hold_action: + action: more-info +# - type: horizontal-stack +# cards: +# - type: custom:button-card +# name: Fan +# entity: fan.living_room_bathroom +# show_state: false +# styles: +# card: +# - height: 140px +# - width: 140px +# icon: +# - animation: > +# [[[ return 'rotating ' + (states['sensor.air_purifier_fan_speed'].state) + 's linear infinite' ]]] + +# - type: custom:flipdown-timer-card +# entity: timer.app_lighting_bathroom_living +# show_hour: false +# show_title: false +# show_header: false +# duration: "00:01:00" +# styles: +# rotor: +# width: 60px +# height: 80px +# button: +# width: 60px +# location: bottom + - type: horizontal-stack + cards: + - type: button + name: Occupancy + entity: input_boolean.occupancy_bathroom_living + - type: button + name: Operating Mode + entity: input_boolean.manually_operated_light_bathroom_living + - type: button + name: Occupants + entity: input_number.occupants_bathroom_living diff --git a/configuration/ui-lovelace/090-garage.yaml b/configuration/ui-lovelace/090-garage.yaml new file mode 100644 index 0000000..728a8fc --- /dev/null +++ b/configuration/ui-lovelace/090-garage.yaml @@ -0,0 +1,162 @@ +--- +title: Garage +icon: mdi:garage-variant +panel: true +visible: + - user: 1614b22cbef54f979741cf8a6b3413ec # Alex + - user: 76e8af2547254ef0ab523ae1ad0bf81a # Tanya +cards: + - type: custom:layout-card + layout: vertical + cards: + - type: vertical-stack + cards: + - type: custom:mushroom-chips-card + chips: + - type: template + icon: "{% if is_state('binary_sensor.presence_garage_sensor_1', 'on') -%}mdi:account-multiple{%- else -%}mdi:account-off-outline{%- endif %}" + icon_color: "{% if is_state('binary_sensor.presence_garage_sensor_1', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}" + badge_icon: mdi:numeric-1-circle + badge_color: green + entity: binary_sensor.presence_garage_sensor_1 + tap_action: + action: more-info +# - type: template +# icon: "{% if is_state('binary_sensor.dome_z_wave_plus_motion_detector_with_light_sensor_and_flexible_magnetic_mount_home_security_motion_detection_8', 'on') -%}mdi:motion-sensor{%- else -%}mdi:motion-sensor-off{%- endif %}" +# icon_color: "{% if is_state('binary_sensor.dome_z_wave_plus_motion_detector_with_light_sensor_and_flexible_magnetic_mount_home_security_motion_detection_8', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" +# entity: binary_sensor.dome_z_wave_plus_motion_detector_with_light_sensor_and_flexible_magnetic_mount_home_security_motion_detection_8 +# tap_action: +# action: more-info + - type: template + icon: "{% if is_state('binary_sensor.door_garage_01_contact', 'on') -%}mdi:door-open{%- else -%}mdi:door-closed{%- endif %}" + icon_color: "{% if is_state('binary_sensor.door_garage_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.door_garage_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.cover_garage_01_contact', 'on') -%}mdi:garage-open-variant{%- else -%}mdi:garage-variant{%- endif %}" + icon_color: "{% if is_state('binary_sensor.cover_garage_01_contact', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.cover_garage_01_contact + tap_action: + action: more-info + - type: template + icon: "{% if is_state('binary_sensor.smoke_garage_01_smoke', 'on') -%}mdi:smoke-detector-variant-alert{%- else -%}mdi:smoke-detector-variant{%- endif %}" + icon_color: "{% if is_state('binary_sensor.smoke_garage_01_smoke', 'on') -%}#D40909{%- else -%}#44739E{%- endif %}" + entity: binary_sensor.smoke_garage_01_smoke + tap_action: + action: more-info + - type: horizontal-stack + cards: + - type: custom:mini-graph-card + line_color: orange + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_garage_01_temperature + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card + line_color: blue + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.climate_garage_01_humidity + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: custom:mini-graph-card + line_color: red + font_size: 75 + font_size_header: 12 + entities: + - entity: sensor.presence_garage_light_level + hours_to_show: 24 + points_per_hour: 4 + align_icon: state + align_state: left + show: + name: false + - type: horizontal-stack + cards: + - type: tile + entity: light.garage_ceiling_01 + icon: mdi:ceiling-light + color: orange + features: + - type: "light-brightness" + tap_action: + action: toggle + hold_action: + action: more-info + - type: tile + entity: cover.garage_gate + features: + - type: "cover-open-close" + tap_action: + action: toggle + confirmation: + text: Are you sure you want to operate Garage Door? + - type: horizontal-stack + cards: + - type: tile + entity: lock.subaru_outback_txt_lock + features: + - type: "lock-commands" + tap_action: + action: toggle + confirmation: + text: Are you sure you want to lock Subaru? + - type: tile + entity: switch.subaru_outback_txt_ignition + - type: custom:layout-break + - type: vertical-stack + cards: + - type: horizontal-stack + cards: + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.11.110:8554/garage' + title: 'Garage' + muted: true + mode: webrtc,mse + - type: custom:layout-break + - type: vertical-stack + cards: +# - type: entities +# title: Lights +# show_header_toggle: false +# entities: +# - entity: timer.app_lighting_garage +# - type: custom:flipdown-timer-card +# entity: timer.app_lighting_garage +# show_hour: false +# show_title: false +# show_header: false +# duration: "00:01:00" +# styles: +# rotor: +# width: 60px +# height: 80px +# button: +# width: 60px +# location: bottom + - type: horizontal-stack + cards: + - type: button + name: Occupancy + entity: input_boolean.occupancy_garage + - type: button + name: Operating Mode + entity: input_boolean.manually_operated_light_garage + - type: button + name: Occupants + entity: input_number.occupants_garage + - type: custom:mini-media-player + entity: media_player.garage + artwork: cover diff --git a/configuration/ui-lovelace/100-outside.yaml b/configuration/ui-lovelace/100-outside.yaml new file mode 100644 index 0000000..3adf00a --- /dev/null +++ b/configuration/ui-lovelace/100-outside.yaml @@ -0,0 +1,234 @@ +--- +title: Porch/Backyard +icon: mdi:home-circle-outline +panel: true +visible: + - user: 1614b22cbef54f979741cf8a6b3413ec # Alex + - user: 76e8af2547254ef0ab523ae1ad0bf81a # Tanya +cards: + - type: custom:layout-card + layout_type: custom:vertical-layout + layout: + max_cols: 3 + cards: + - type: vertical-stack + cards: + - type: custom:stack-in-card + cards: + - type: grid + columns: 2 + square: false + cards: + - type: custom:mushroom-entity-card + entity: input_boolean.porch_light_state + name: Porch + icon: mdi:lightbulb-group + tap_action: + action: toggle + card_mod: + style: "ha-card { border: none; }" + - type: custom:paper-buttons-row + preset: mushroom + styles: + justify-content: flex-end + base_config: + styles: + button: + margin-top: 12px + margin-right: 12px + buttons: + - layout: icon + icon: mdi:lightbulb-group + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.porch_scenes + option: "All" + styles: + button: + color: "{% if is_state('input_boolean.porch_light_state', 'on') and is_state('input_select.porch_scenes', 'All') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.porch_light_state', 'on') and is_state('input_select.porch_scenes', 'All') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:outdoor-lamp + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.porch_scenes + option: "Porch Only" + styles: + button: + color: "{% if is_state('input_boolean.porch_light_state', 'on') and is_state('input_select.porch_scenes', 'Porch Only') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.porch_light_state', 'on') and is_state('input_select.porch_scenes', 'Porch Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:outdoor-lamp + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.porch_scenes + option: "Garage Only" + styles: + button: + color: "{% if is_state('input_boolean.porch_light_state', 'on') and is_state('input_select.porch_scenes', 'Garage Only') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.porch_light_state', 'on') and is_state('input_select.porch_scenes', 'Garage Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - type: horizontal-stack + cards: + - type: tile + entity: light.porch_01 + icon: mdi:outdoor-lamp + color: orange + features: + - type: "light-brightness" + tap_action: + action: toggle + hold_action: + action: more-info + - type: tile + entity: light.garage_gate_01 + icon: mdi:outdoor-lamp + color: orange + features: + - type: "light-brightness" + tap_action: + action: toggle + hold_action: + action: more-info + - type: horizontal-stack + cards: + - type: tile + entity: light.frontyard_decoration_01 + name: Frontyard Decoration + icon: mdi:string-lights + color: orange + tap_action: + action: toggle + hold_action: + action: more-info + - type: custom:stack-in-card + cards: + - type: grid + columns: 2 + square: false + cards: + - type: custom:mushroom-entity-card + entity: input_boolean.backyard_light_state + name: Backyard + icon: mdi:lightbulb-group + tap_action: + action: toggle + card_mod: + style: "ha-card { border: none; }" + - type: custom:paper-buttons-row + preset: mushroom + styles: + justify-content: flex-end + base_config: + styles: + button: + margin-top: 12px + margin-right: 12px + buttons: + - layout: icon + icon: mdi:lightbulb-group + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.backyard_scenes + option: "All" + styles: + button: + color: "{% if is_state('input_boolean.backyard_light_state', 'on') and is_state('input_select.backyard_scenes', 'All') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.backyard_light_state', 'on') and is_state('input_select.backyard_scenes', 'All') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:outdoor-lamp + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.backyard_scenes + option: "Wall Only" + styles: + button: + color: "{% if is_state('input_boolean.backyard_light_state', 'on') and is_state('input_select.backyard_scenes', 'Wall Only') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.backyard_light_state', 'on') and is_state('input_select.backyard_scenes', 'Wall Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - layout: icon + icon: mdi:led-strip-variant + tap_action: + action: call-service + service: input_select.select_option + service_data: + entity_id: input_select.backyard_scenes + option: "Pergola Only" + styles: + button: + color: "{% if is_state('input_boolean.backyard_light_state', 'on') and is_state('input_select.backyard_scenes', 'Pergola Only') %}#FFC107{% else %}#44739E{% endif %}" + background-color: "{% if is_state('input_boolean.backyard_light_state', 'on') and is_state('input_select.backyard_scenes', 'Pergola Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}" + - type: horizontal-stack + cards: + - type: tile + entity: light.backyard_01 + icon: mdi:outdoor-lamp + color: orange + features: + - type: "light-brightness" + tap_action: + action: toggle + hold_action: + action: more-info + - type: tile + entity: light.backyard_pergola_01 + icon: mdi:led-strip-variant + color: orange + features: + - type: "light-brightness" + tap_action: + action: toggle + hold_action: + action: more-info + - type: custom:layout-break + - type: vertical-stack + cards: + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/uLwsAUCTOoL2XBJs' + title: 'Doorbell' + muted: true + mode: webrtc,mse + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/9fJVNqwlimxGsti4' + title: 'Backyard' + muted: true + mode: webrtc,mse + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/hwDkiwOwIpvfjYfs' + title: 'Side 1' + muted: true + mode: webrtc,mse + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/GN0drubWN55tCDqr' + title: 'Side 2' + muted: true + mode: webrtc,mse + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/QmCaW7biBuX81RVu' + title: 'Entrance' + muted: true + mode: webrtc,mse + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/5jzOyi0guCMhbGq8' + title: 'Frontyard' + muted: true + mode: webrtc,mse + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/RqYpjyveu7AF3v6f' + title: 'Driveway' + muted: true + mode: webrtc,mse + - type: custom:layout-break + - type: vertical-stack + cards: + - type: custom:mini-media-player + entity: media_player.backyard + artwork: cover diff --git a/configuration/ui-lovelace/110-consumption.yaml b/configuration/ui-lovelace/110-consumption.yaml new file mode 100644 index 0000000..917aa43 --- /dev/null +++ b/configuration/ui-lovelace/110-consumption.yaml @@ -0,0 +1,118 @@ +--- +title: Consumption +icon: mdi:chart-bar-stacked +panel: true +visible: + - user: 1614b22cbef54f979741cf8a6b3413ec # Alex +cards: + - type: custom:layout-card + layout_type: custom:vertical-layout + layout: + max_cols: 3 + cards: + - type: vertical-stack + cards: + - type: horizontal-stack + cards: + - type: sensor + name: Day + graph: none + entity: sensor.power_house_total_1d + - type: sensor + name: Month + graph: none + entity: sensor.power_house_total_1mon + - type: horizontal-stack + cards: + - type: sensor + name: Day + graph: none + entity: sensor.cost_energy_daily + icon: mdi:cash-multiple + - type: sensor + name: Month + graph: none + entity: sensor.cost_energy_monthly + icon: mdi:cash-multiple + - type: energy-usage-graph + - type: custom:layout-break + - type: vertical-stack + cards: + - type: horizontal-stack + cards: +# mdi:storage-tank +# mdi:cup-water + - type: sensor + name: Day + entity: sensor.gas_daily + icon: mdi:meter-gas + graph: none + - type: sensor + name: Month + entity: sensor.gas_monthly + icon: mdi:meter-gas + graph: none + - type: horizontal-stack + cards: + - type: sensor + name: Day + graph: none + entity: sensor.cost_gas_daily + icon: mdi:cash-multiple + - type: sensor + name: Month + graph: none + entity: sensor.cost_gas_monthly + icon: mdi:cash-multiple + - type: energy-gas-graph + - type: custom:layout-break + - type: vertical-stack + cards: + - type: horizontal-stack + cards: + - type: sensor + name: Day + entity: sensor.water_daily + icon: mdi:cup-water + graph: none + - type: sensor + name: Month + entity: sensor.water_monthly + icon: mdi:cup-water + graph: none + - type: horizontal-stack + cards: + - type: sensor + name: Day + graph: none + entity: sensor.cost_water_daily + icon: mdi:cash-multiple + - type: sensor + name: Month + graph: none + entity: sensor.cost_water_monthly + icon: mdi:cash-multiple + - type: energy-water-graph +# - type: vertical-stack +# cards: +# - type: custom:mini-graph-card +# name: Daily Energy Consumption +# line_color: orange +# font_size: 75 +# font_size_header: 12 +# entities: +# - entity: sensor.power_house_1d +# hours_to_show: 168 +# aggregate_func: max +# group_by: date +## points_per_hour: 0.0416666 +# align_icon: right +# align_state: left +# show: +# graph: bar +## labels: true +# points: true +# - type: energy-usage-graph +# - type: energy-gas-graph +# - type: energy-water-graph +# - type: energy-sources-table diff --git a/configuration/ui-lovelace/160-batteries.yaml b/configuration/ui-lovelace/160-batteries.yaml new file mode 100644 index 0000000..03cc2ec --- /dev/null +++ b/configuration/ui-lovelace/160-batteries.yaml @@ -0,0 +1,53 @@ +--- +icon: mdi:battery +name: Batteries +panel: true +visible: + - user: 1614b22cbef54f979741cf8a6b3413ec # Alex + - user: 76e8af2547254ef0ab523ae1ad0bf81a # Tanya +cards: + - type: custom:layout-card + layout_type: custom:vertical-layout + layout: + max_cols: 3 + cards: + - type: vertical-stack + cards: + - type: entities + title: 'CyberPower UPS #1' + show_header_toggle: false + entities: + - entity: sensor.ups_cyberpower_01_status + - entity: sensor.ups_cyberpower_01_time_left + - entity: sensor.ups_cyberpower_01_battery_level + - entity: sensor.ups_cyberpower_01_transfers + - type: entities + title: 'CyberPower UPS #4' + show_header_toggle: false + entities: + - entity: sensor.ups_cyberpower_04_status + - entity: sensor.ups_cyberpower_04_time_left + - entity: sensor.ups_cyberpower_04_battery_level + - entity: sensor.ups_cyberpower_04_transfers + - type: custom:layout-break + - type: vertical-stack + cards: + - type: entities + title: 'CyberPower UPS #2' + show_header_toggle: false + entities: + - entity: sensor.ups_cyberpower_02_status + - entity: sensor.ups_cyberpower_02_time_left + - entity: sensor.ups_cyberpower_02_battery_level + - entity: sensor.ups_cyberpower_02_transfers + - type: custom:layout-break + - type: vertical-stack + cards: + - type: entities + title: 'CyberPower UPS #3' + show_header_toggle: false + entities: + - entity: sensor.ups_cyberpower_03_status + - entity: sensor.ups_cyberpower_03_time_left + - entity: sensor.ups_cyberpower_03_battery_level + - entity: sensor.ups_cyberpower_03_transfers diff --git a/configuration/ui-lovelace/170-cleaning.yaml b/configuration/ui-lovelace/170-cleaning.yaml new file mode 100644 index 0000000..e69de29 diff --git a/configuration/ui-lovelace/180-surveillance.yaml b/configuration/ui-lovelace/180-surveillance.yaml new file mode 100644 index 0000000..d2fe6b7 --- /dev/null +++ b/configuration/ui-lovelace/180-surveillance.yaml @@ -0,0 +1,77 @@ +--- +title: Surveillance +icon: mdi:video-image +panel: true +visible: + - user: 1614b22cbef54f979741cf8a6b3413ec # Alex +cards: + - type: custom:layout-card + layout: vertical + cards: + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/uLwsAUCTOoL2XBJs' + title: 'Doorbell' + muted: true + mse: false + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/9fJVNqwlimxGsti4' + title: 'Backyard' + muted: true + mse: false + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/RqYpjyveu7AF3v6f' + title: 'Driveway' + muted: true + mse: false + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/QmCaW7biBuX81RVu' + title: 'Entrance' + muted: true + mse: false + + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/5jzOyi0guCMhbGq8' + title: 'Frontyard' + muted: true + mse: false + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/7Sjj38TZIify1jKv' + title: 'Garage' + muted: true + mse: false + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/Ui2cuW0agIvgURHb' + title: 'Kitchen' + muted: true + mse: false + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/BedUwRNk0Gti9qBI' + title: 'Living Room 1' + muted: true + mse: false + + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/jE66VCqwWzZHLOXm' + title: 'Living Room 2' + muted: true + mse: false + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/U4JDroC1Mn7mVgZG' + title: 'Master Bedroom' + muted: true + mse: false + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/dAEzjivFj2FOcpOs' + title: 'Olivia Bedroom' + muted: true + mse: false + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/hwDkiwOwIpvfjYfs' + title: 'Side 1' + muted: true + mse: false + - type: 'custom:webrtc-camera' + url: 'rtsp://10.10.10.1:7447/GN0drubWN55tCDqr' + title: 'Side 2' + muted: true + mse: false diff --git a/configuration/ui-lovelace/190-apps.yaml b/configuration/ui-lovelace/190-apps.yaml new file mode 100644 index 0000000..43e3b97 --- /dev/null +++ b/configuration/ui-lovelace/190-apps.yaml @@ -0,0 +1,74 @@ +--- +title: Applications +icon: mdi:application-cog +panel: true +visible: + - user: 1614b22cbef54f979741cf8a6b3413ec # Alex +cards: + - type: custom:layout-card + layout_type: custom:vertical-layout + layout: + max_cols: 3 + cards: + - type: vertical-stack + cards: + - type: entities + title: Humidity Suppression + entities: + - input_boolean.app_climate_humidity_suppression_status + - input_number.app_climate_humidity_suppression_humidity_level + - input_datetime.app_humidity_suppression_time_start + - input_datetime.app_humidity_suppression_time_end + - type: vertical-stack + cards: + - type: entities + title: Voice Assistants Night mode + entities: + - input_boolean.app_va_night_mode_status + - input_datetime.app_va_night_mode_time_start + - input_datetime.app_va_night_mode_time_end + - type: custom:layout-break + - type: vertical-stack + cards: + - type: custom:auto-entities + card: + type: entities + filter: + template: "{{ states.light | rejectattr('attributes.color_mode', '==', 'onoff') | rejectattr('attributes.entity_id', 'defined') | selectattr('state', '==', 'on') | map(attribute='entity_id') | list }}" + - type: markdown + content: | + {% for device in states.light | rejectattr('attributes.color_mode', '==', 'onoff') | rejectattr('attributes.entity_id', 'defined') | selectattr('state', '==', 'on') | map(attribute='entity_id') | list %} + {{ device }} + {% else %} + No On Lights + {% endfor %} + - type: markdown + content: | + {% for device in states | selectattr('state', '==', 'unavailable') | map(attribute='entity_id') | list %} + {{ device }} + {% else %} + No Unavalable Devices + {% endfor %} + - type: custom:layout-break + - type: vertical-stack + cards: + - type: custom:battery-state-card +# title: "All Battery" + filter: + include: + - name: "attributes.device_class" + value: "battery" + exclude: + - name: "entity_id" + value: "binary_sensor.*" + - name: "entity_id" + value: "sensor.shutoff.*" + sort: + by: "state" + bulk_rename: + - from: "Battery level" # simple string replace (note: "to" is not required if you want to remove string) + to: "" + - from: "Battery" # simple string replace (note: "to" is not required if you want to remove string) + to: "" + collapse: + - name: 'Door Sensors (Qt: {count})' diff --git a/configuration/utility_meter/energy.yaml b/configuration/utility_meter/energy.yaml new file mode 100644 index 0000000..e69de29 diff --git a/configuration/utility_meter/gas.yaml b/configuration/utility_meter/gas.yaml new file mode 100644 index 0000000..693485d --- /dev/null +++ b/configuration/utility_meter/gas.yaml @@ -0,0 +1,7 @@ +--- +gas_daily: + source: sensor.meter_gas + cycle: daily +gas_monthly: + source: sensor.meter_gas + cycle: monthly diff --git a/configuration/utility_meter/water.yaml b/configuration/utility_meter/water.yaml new file mode 100644 index 0000000..a677180 --- /dev/null +++ b/configuration/utility_meter/water.yaml @@ -0,0 +1,7 @@ +--- +water_daily: + source: sensor.meter_water + cycle: daily +water_monthly: + source: sensor.meter_water + cycle: monthly diff --git a/configuration/weather/template.yaml b/configuration/weather/template.yaml new file mode 100644 index 0000000..9f7c61b --- /dev/null +++ b/configuration/weather/template.yaml @@ -0,0 +1,13 @@ +- platform: template + unique_id: "ACURITE-ATLAS-A-409" + name: "My Weather Station" + condition_template: "{{ states('weather.forecast_home') }}" + temperature_template: "{{ states('sensor.acurite_atlas_a_409_temperature') | float }}" + temperature_unit: "°C" + humidity_template: "{{ states('sensor.acurite_atlas_a_409_humidity') | float }}" + wind_speed_template: "{{ states('sensor.acurite_atlas_a_409_wind_average') | float }}" + wind_speed_unit: "km/h" + wind_bearing_template: "{{ states('sensor.acurite_atlas_a_409_wind_direction') | float }}" + precipitation_unit: "mm" + forecast_hourly_template: "{{ state_attr('weather.forecast_home', 'forecast_data') }}" + forecast_daily_template: "{{ state_attr('weather.forecast_home', 'forecast_data') }}" diff --git a/configuration/zone/zones.yaml b/configuration/zone/zones.yaml new file mode 100644 index 0000000..438cf18 --- /dev/null +++ b/configuration/zone/zones.yaml @@ -0,0 +1,69 @@ +--- +- name: "Home" + latitude: !secret zone_01_latitude + longitude: !secret zone_01_longitude + radius: 50 + icon: mdi:home-map-marker + +- name: '[Train] Summit' + latitude: !secret zone_03_latitude + longitude: !secret zone_03_longitude + radius: 100 + icon: mdi:train + +- name: '[Train] Murray Hill' + latitude: !secret zone_04_latitude + longitude: !secret zone_04_longitude + icon: mdi:train + +- name: '[Train] Morristown' + latitude: !secret zone_05_latitude + longitude: !secret zone_05_longitude + icon: mdi:train + +- name: '[Train] Hoboken' + latitude: !secret zone_10_latitude + longitude: !secret zone_10_longitude + icon: mdi:train + +- name: '[Work] Kiswe' + latitude: !secret zone_06_latitude + longitude: !secret zone_06_longitude + radius: 200 + icon: mdi:domain + +- name: '[Work] HealthFirst' + latitude: !secret zone_07_latitude + longitude: !secret zone_07_longitude + radius: 75 + icon: mdi:domain + +- name: 'NPFD' + latitude: !secret zone_08_latitude + longitude: !secret zone_08_longitude + radius: 75 + icon: mdi:fire-truck + +- name: '[Train] NY Penn Station' + latitude: !secret zone_09_latitude + longitude: !secret zone_09_longitude + radius: 75 + icon: mdi:train + +- name: "NPHS School" + latitude: !secret zone_11_latitude + longitude: !secret zone_11_longitude + radius: 200 + icon: mdi:school + +- name: "AWR School" + latitude: !secret zone_12_latitude + longitude: !secret zone_12_longitude + radius: 200 + icon: mdi:school + +- name: "YMCA Berkley Heights" + latitude: !secret zone_13_latitude + longitude: !secret zone_13_longitude + radius: 100 + icon: mdi:school diff --git a/scripts.yaml b/scripts.yaml new file mode 100644 index 0000000..c2627b3 --- /dev/null +++ b/scripts.yaml @@ -0,0 +1,179 @@ +--- +cast_camera_doorbell: + alias: Cast Doorbell Camera + sequence: + - service: webrtc.dash_cast + entity_id: media_player.kitchen_max + data: + url: rtsp://10.10.11.110:8554/doorbell + extra: + mode: webrtc,mse + force: true + enabled: true + +cast_camera_frontyard: + alias: Cast Frontyard Camera + sequence: + - service: webrtc.dash_cast + entity_id: media_player.kitchen_max + data: + url: rtsp://10.10.11.110:8554/frontyard + extra: + mode: webrtc,mse + force: true + enabled: true + +cast_camera_entrance: + alias: Cast Entrance Camera + sequence: + - service: webrtc.dash_cast + entity_id: media_player.kitchen_max + data: + url: rtsp://10.10.11.110:8554/entrance + extra: + mode: webrtc,mse + force: true + enabled: true + +cast_camera_side1: + alias: Cast Side 1 Camera + sequence: + - service: webrtc.dash_cast + entity_id: media_player.kitchen_max + data: + url: rtsp://10.10.11.110:8554/side1 + extra: + mode: webrtc,mse + force: true + enabled: true + +cast_camera_doorbell_nvidia: + alias: Cast Doorbell to Nvidia ShieldTV + sequence: + - variables: + link_id: "{% for _ in range(10) %}{{ range(10)|random }}{% endfor %}" + - service: webrtc.create_link + data: + link_id: "{{ link_id }}" + url: rtsp://10.10.11.110:8554/doorbell-mid-res + open_limit: 0 + time_to_live: 90 + - service: rest_command.pipup_url + data: + title: Doorbell + message: You have a visitor! + width: 640 + height: 480 + url: "https://house.savin.nyc/webrtc/embed?url={{ link_id }}&webrtc=false" + +receiver_switch_to_shield_tv: + alias: "Switch Receiver to Nvidia ShieldTV" + sequence: + - service: media_player.select_source + data: + entity_id: media_player.onkyo_receiver + source: dvd + +receiver_switch_to_playstation: + alias: "Switch Receiver to Playstation" + sequence: + - service: media_player.select_source + data: + entity_id: media_player.onkyo_receiver + source: game + +receiver_switch_to_security: + alias: "Switch Receiver to Unifi Cameras" + sequence: + - service: media_player.select_source + data: + entity_id: media_player.onkyo_receiver + source: strm-box + +receiver_switch_to_windows: + alias: "Switch Receiver to Windows 11" + sequence: + - service: media_player.select_source + data: + entity_id: media_player.onkyo_receiver + source: cbl + +receiver_switch_to_bluetooth: + alias: "Switch Receiver to Bluetooth" + sequence: + - service: media_player.select_source + data: + entity_id: media_player.onkyo_receiver + source: bluetooth + +receiver_switch_to_chromecast: + alias: "Switch Receiver to Chromecast" + sequence: + - service: media_player.select_source + data: + entity_id: media_player.onkyo_receiver + source: net + +netflix_start: + sequence: + - action: media_player.select_source + target: + entity_id: media_player.android_tv_10_10_12_101 + data: + source: "com.netflix.ninja" + +netflix_stop: + sequence: + - action: media_player.select_source + target: + entity_id: media_player.android_tv_10_10_12_101 + data: + source: "!com.netflix.ninja" + +youtube_start: + sequence: + - action: media_player.select_source + target: + entity_id: media_player.android_tv_10_10_12_101 + data: + source: "com.google.android.youtube.tv" + +youtube_stop: + sequence: + - action: media_player.select_source + target: + entity_id: media_player.android_tv_10_10_12_101 + data: + source: "!com.google.android.youtube.tv" + +plex_start: + sequence: + - action: media_player.select_source + target: + entity_id: media_player.android_tv_10_10_12_101 + data: + source: "com.plexapp.android" + +plex_stop: + sequence: + - action: media_player.select_source + target: + entity_id: media_player.android_tv_10_10_12_101 + data: + source: "!com.plexapp.android" + +primevideo_start: + sequence: + - action: media_player.select_source + target: + entity_id: media_player.android_tv_10_10_12_101 + data: + source: "com.amazon.amazonvideo.livingroom" + +primevideo_stop: + sequence: + - action: media_player.select_source + target: + entity_id: media_player.android_tv_10_10_12_101 + data: + source: "!com.amazon.amazonvideo.livingroom" diff --git a/sercets.sample.yaml b/sercets.sample.yaml new file mode 100644 index 0000000..e69de29 diff --git a/ui-lovelace.yaml b/ui-lovelace.yaml new file mode 100644 index 0000000..d0b62ae --- /dev/null +++ b/ui-lovelace.yaml @@ -0,0 +1,125 @@ +--- +title: Savin!Home + +swipe_nav: + enable: true + wrap: false + animate: swipe + skip_hidden: true + prevent_default: true + swipe_amount: 30 + +##################################################################################################### +### VIEWS ####################################################################################### +##################################################################################################### +views: + - strategy: + type: original-states + visible: + - user: 1614b22cbef54f979741cf8a6b3413ec # Alex + +##################################################################################################### +### DEFAULT PAGE ################################################################## VIEWS ### +##################################################################################################### + - !include configuration/ui-lovelace/000-default-page.yaml + +##################################################################################################### +### SECURITY VIEW ################################################################# VIEWS ### +##################################################################################################### +# - !include configuration/ui-lovelace/010-security.yaml + +##################################################################################################### +### MEDIA/CAST VIEW ############################################################### VIEWS ### +##################################################################################################### +# - !include configuration/ui-lovelace/020-media.yaml + +##################################################################################################### +### KITCHEN VIEW ################################################################## VIEWS ### +##################################################################################################### + - !include configuration/ui-lovelace/030-kitchen.yaml + +##################################################################################################### +### LIVING ROOM VIEW ############################################################## VIEWS ### +##################################################################################################### + - !include configuration/ui-lovelace/040-living-room.yaml + +##################################################################################################### +### MASTER BEDROOM VIEW ########################################################### VIEWS ### +##################################################################################################### + - !include configuration/ui-lovelace/050-bedroom-master.yaml + +##################################################################################################### +### MAX BEDROOM VIEW ############################################################## VIEWS ### +##################################################################################################### + - !include configuration/ui-lovelace/060-bedroom-max.yaml # Full Access + - !include configuration/ui-lovelace/061-bedroom-max.yaml # Only for Max (No Camera card) + +##################################################################################################### +### OLIVIA BEDROOM ################################################################ VIEWS ### +##################################################################################################### + - !include configuration/ui-lovelace/070-bedroom-olivia.yaml + +##################################################################################################### +### BATHROOMS VIEW ################################################################ VIEWS ### +##################################################################################################### + - !include configuration/ui-lovelace/080-bathrooms.yaml + +##################################################################################################### +### GARAGE VIEW ################################################################### VIEWS ### +##################################################################################################### + - !include configuration/ui-lovelace/090-garage.yaml + +##################################################################################################### +### PORCH / BACKYARD VIEW ######################################################### VIEWS ### +##################################################################################################### + - !include configuration/ui-lovelace/100-outside.yaml + +##################################################################################################### +### BATHROOM LIVING ROOM VIEW ##################################################### VIEWS ### +##################################################################################################### +# - !include configuration/ui-lovelace/100-bathroom-living-room.yaml + +##################################################################################################### +### STAIRWELL VIEW ################################################################ VIEWS ### +##################################################################################################### +# - !include configuration/ui-lovelace/110-stairwell.yaml + +##################################################################################################### +### GARAGE VIEW ################################################################### VIEWS ### +##################################################################################################### +# - !include configuration/ui-lovelace/120-garage.yaml + +##################################################################################################### +### NETWORK VIEW ################################################################## VIEWS ### +##################################################################################################### +# - !include configuration/ui-lovelace/130-network.yaml + +##################################################################################################### +### CLIMATE VIEW ################################################################## VIEWS ### +##################################################################################################### +# - !include configuration/ui-lovelace/140-climate.yaml + +##################################################################################################### +### METERS VIEW ################################################################### VIEWS ### +##################################################################################################### + - !include configuration/ui-lovelace/110-consumption.yaml + +##################################################################################################### +### BATTERIES VIEW ################################################################ VIEWS ### +##################################################################################################### + - !include configuration/ui-lovelace/160-batteries.yaml + +##################################################################################################### +### SETTINGS VIEW ################################################################# VIEWS ### +##################################################################################################### +# - !include configuration/ui-lovelace/170-settings.yaml + +##################################################################################################### +### SURVEILANCE VIEW ############################################################## VIEWS ### +##################################################################################################### + - !include configuration/ui-lovelace/180-surveillance.yaml + +##################################################################################################### +### APPLICATIONS VIEW ############################################################# VIEWS ### +##################################################################################################### + - !include configuration/ui-lovelace/190-apps.yaml