commit f2472a8dd24905ee6d7eee9eadcc5e02dd8679fe Author: Dylan Thies Date: Fri Jul 4 15:04:50 2025 -0400 Initial commit diff --git a/.HA_VERSION b/.HA_VERSION new file mode 100644 index 0000000..cee73db --- /dev/null +++ b/.HA_VERSION @@ -0,0 +1 @@ +2025.7.0 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6969a77 --- /dev/null +++ b/.gitignore @@ -0,0 +1,55 @@ +# Logs +logs +*.log +# Python cache +__pycache__ +*.pyc + +# Other +*.uuid +*.conf +*.db +*.db-journal +*.log +*.noload +*.txt +*.sqlite +*.xml +*.backup +*.json +life360.sh +.ip_authenticated.yaml +ip_bans.yaml +.config_entries.json +*.google.token +.google.token +.ring_cache.pickle +.spotify-token-cache +.storage +abodepy_cache.pickle +camera_recording.py +home-assistant.env +home-assistant.* +known_devices.yaml +entity_registry.yaml +secrets.yaml +google_calendars.yaml +SERVICE_ACCOUNT.json +components +deps +tts +www/icons +www/floorplans +www/community +custom_components +downloads +icloud +dlib_faces +dlib_nofaces +dlib_known_faces +dlib_unknown_faces +.cloud +*.pickle +.pc-session +google*.deb +.homekit.state \ No newline at end of file diff --git a/automations.yaml b/automations.yaml new file mode 100644 index 0000000..e01f508 --- /dev/null +++ b/automations.yaml @@ -0,0 +1,893 @@ +- id: '1735610848452' + alias: Get home + description: '' + triggers: + - trigger: zone + entity_id: person.dylan + zone: zone.home + event: enter + conditions: + - condition: sun + before: sunrise + after: sunset + actions: + - action: light.turn_on + metadata: {} + data: {} + target: + device_id: 68e12c12e16970a2d56c0c2e88f200c4 + mode: single +- id: '1736027512732' + alias: Garage door open when no one home + description: '' + triggers: + - trigger: numeric_state + entity_id: + - zone.home + for: + hours: 0 + minutes: 1 + seconds: 0 + attribute: persons + below: 1 + conditions: + - condition: device + device_id: 0fafc0f1910b6a3850552e9365768156 + domain: cover + entity_id: 0b5f312231544f01ad3c23e7bb84ab48 + type: is_open + actions: + - action: notify.notify + metadata: {} + data: + message: Garage Door open!!!!!! + title: Check The Garage door + data: + clickAction: entityId:cover.ratgdov32_df20c0_door + url: entityId:cover.ratgdov32_df20c0_door + mode: single +- id: '1737323197259' + alias: Living Room Tv save your eyes + description: Turn on Lights if in living room and it gets too dark + triggers: + - type: illuminance + device_id: 488c540e918a8b690e170e040fbd5614 + entity_id: 1daaae0003d372ac931a475889742dfe + domain: sensor + trigger: device + below: 1.2 + conditions: [] + actions: + - choose: + - conditions: + - type: is_occupied + condition: device + device_id: 488c540e918a8b690e170e040fbd5614 + entity_id: a81a4d936e2d10266bc9d110228fdc2b + domain: binary_sensor + - condition: device + device_id: 892cf6fdfce4144f8ecd47d2a3ea3b98 + domain: media_player + entity_id: 1c641a606aa4ccd87a08f84b9838cf10 + type: is_on + sequence: + - type: turn_on + device_id: ad27e0f6d3839d64c99d656a6906af04 + entity_id: 178e9744e6539f4888b0eabadf077e3d + domain: light + mode: single +- id: '1738379876080' + alias: Office light automation + description: '' + triggers: + - type: value + device_id: ad0187dc58ad2db669eb3f3a780bbbc1 + entity_id: ebfc15bb8395c6bf6a294875723c6720 + domain: sensor + trigger: device + above: 0 + conditions: [] + actions: + - choose: + - conditions: + - type: is_illuminance + condition: device + device_id: ad0187dc58ad2db669eb3f3a780bbbc1 + entity_id: 1698501b4cbd21b5cced2d837671714a + domain: sensor + below: 3 + - condition: sun + before: sunrise + after: sunset + sequence: + - action: light.turn_on + metadata: {} + data: {} + target: + device_id: + - 208f05d85e32934045f8434138edf907 + - conditions: + - type: is_value + condition: device + device_id: ad0187dc58ad2db669eb3f3a780bbbc1 + entity_id: ebfc15bb8395c6bf6a294875723c6720 + domain: sensor + below: 1 + - condition: state + entity_id: light.office_light + state: 'on' + for: + hours: 0 + minutes: 0 + seconds: 30 + sequence: + - action: light.turn_off + metadata: {} + data: {} + target: + device_id: + - 208f05d85e32934045f8434138edf907 + mode: single +- id: '1738380348989' + alias: Office Lights Off + description: '' + triggers: + - type: value + device_id: ad0187dc58ad2db669eb3f3a780bbbc1 + entity_id: ebfc15bb8395c6bf6a294875723c6720 + domain: sensor + trigger: device + below: 1 + for: + hours: 0 + minutes: 0 + seconds: 15 + conditions: [] + actions: + - choose: + - conditions: + - condition: state + entity_id: light.office_light + state: 'on' + sequence: + - action: light.turn_off + metadata: {} + data: {} + target: + device_id: + - 208f05d85e32934045f8434138edf907 + mode: single +- id: '1738545948899' + alias: 'Island Light on ' + description: '' + triggers: + - type: occupied + device_id: cc748bb29a5a249f4810e64dcded05be + entity_id: 7eb6e21998efacc0b944d48bd571ac4a + domain: binary_sensor + trigger: device + conditions: [] + actions: + - choose: + - conditions: + - type: is_illuminance + condition: device + device_id: ad0187dc58ad2db669eb3f3a780bbbc1 + entity_id: 1698501b4cbd21b5cced2d837671714a + domain: sensor + below: 3 + - condition: sun + before: sunrise + after: sunset + sequence: + - action: light.turn_on + metadata: {} + data: {} + target: + device_id: 4f78e722c63294171fee7b98d282eec8 + - conditions: + - type: is_value + condition: device + device_id: ad0187dc58ad2db669eb3f3a780bbbc1 + entity_id: ebfc15bb8395c6bf6a294875723c6720 + domain: sensor + below: 1 + - condition: state + entity_id: light.office_light + state: 'on' + for: + hours: 0 + minutes: 0 + seconds: 30 + sequence: + - action: light.turn_off + metadata: {} + data: {} + target: + device_id: + - 208f05d85e32934045f8434138edf907 + mode: single +- id: '1738546097282' + alias: 'Island Lights Off ' + description: '' + triggers: + - type: not_occupied + device_id: cc748bb29a5a249f4810e64dcded05be + entity_id: 7eb6e21998efacc0b944d48bd571ac4a + domain: binary_sensor + trigger: device + conditions: [] + actions: + - choose: + - conditions: + - condition: state + entity_id: light.island_light + state: 'on' + sequence: + - action: light.turn_off + metadata: {} + data: + transition: 32 + target: + device_id: 4f78e722c63294171fee7b98d282eec8 + mode: single +- id: '1747147655646' + alias: Pool Night Cycle On + description: Turn on pool pump in off hours + triggers: + - trigger: time + at: 03:00:00 + conditions: + - condition: state + entity_id: input_boolean.pool_open + state: 'on' + actions: + - type: turn_on + device_id: 5bdd11f1eab7addd24d15c9f8e738222 + entity_id: 64841d6b9950dad4932bc5f3c34baad5 + domain: switch + mode: single +- id: '1747147728447' + alias: Pool on durring peak heat + description: Turn on pool pump in off hours + triggers: + - trigger: time + at: '15:00:00' + conditions: + - condition: state + entity_id: input_boolean.pool_open + state: 'on' + actions: + - type: turn_on + device_id: 5bdd11f1eab7addd24d15c9f8e738222 + entity_id: 64841d6b9950dad4932bc5f3c34baad5 + domain: switch + mode: single +- id: '1747147841458' + alias: Morning pool pump off + description: Turn off pool pump in off hours + triggers: + - trigger: time + at: 07:00:00 + conditions: + - condition: state + entity_id: input_boolean.pool_open + state: 'on' + actions: + - type: turn_off + device_id: 5bdd11f1eab7addd24d15c9f8e738222 + entity_id: 64841d6b9950dad4932bc5f3c34baad5 + domain: switch + mode: single +- id: '1747147937731' + alias: Evening turn pool pump off + description: Turn off pool pump off in the evening + triggers: + - trigger: time + at: '22:00:00' + conditions: + - condition: state + entity_id: input_boolean.pool_open + state: 'on' + actions: + - type: turn_off + device_id: 5bdd11f1eab7addd24d15c9f8e738222 + entity_id: 64841d6b9950dad4932bc5f3c34baad5 + domain: switch + mode: single +- id: '1747151502155' + alias: Close Pool + description: '' + triggers: + - trigger: state + entity_id: + - input_boolean.pool_open + from: 'on' + to: 'off' + conditions: [] + actions: + - action: homeassistant.disable_device + metadata: {} + data: + device_id: + - 5bdd11f1eab7addd24d15c9f8e738222 + - 82ec2369c31363e2a119223ed2153060 + - 35bb41588f12c21f8c1ff8989dd7bdee + - 30f1d5aaf5debab5be7b2d335d9a8260 + - action: automation.turn_off + metadata: {} + data: + stop_actions: true + target: + label_id: pool + mode: single +- id: '1747151731876' + alias: Open Pool + description: '' + triggers: + - trigger: state + entity_id: + - input_boolean.pool_open + from: 'off' + to: 'on' + conditions: [] + actions: + - action: homeassistant.enable_device + metadata: {} + data: + device_id: + - 5bdd11f1eab7addd24d15c9f8e738222 + - 82ec2369c31363e2a119223ed2153060 + - 35bb41588f12c21f8c1ff8989dd7bdee + - 30f1d5aaf5debab5be7b2d335d9a8260 + - action: automation.turn_on + metadata: {} + data: {} + target: + label_id: pool + mode: single +- id: '1747699194888' + alias: Island Light Presence + description: '' + triggers: + - trigger: state + entity_id: + - binary_sensor.everything_presence_lite_ccb818_zone_1_occupancy + to: 'on' + id: island presence detected + - trigger: state + entity_id: + - binary_sensor.everything_presence_lite_ccb818_zone_1_occupancy + from: 'on' + id: island presence clear + - trigger: event + event_type: timer.finished + event_data: + entity_id: timer.island_on_timmer + id: timed out + conditions: [] + actions: + - choose: + - conditions: + - condition: and + conditions: + - condition: not + conditions: + - condition: or + conditions: + - condition: state + entity_id: input_select.day_mode + state: Asleep + - condition: state + entity_id: input_select.day_mode + state: 'Away ' + - condition: trigger + id: + - island presence detected + sequence: + - action: light.turn_on + metadata: {} + data: {} + target: + device_id: 4f78e722c63294171fee7b98d282eec8 + - action: timer.cancel + target: + entity_id: timer.island_on_timmer + data: {} + - conditions: + - condition: trigger + id: + - island presence clear + sequence: + - action: timer.start + target: + entity_id: timer.island_on_timmer + data: + duration: '{{ states(''input_number.default_off_timmer'') | int }}' + - conditions: + - condition: trigger + id: + - timed out + sequence: + - action: light.turn_off + metadata: {} + data: {} + target: + device_id: 4f78e722c63294171fee7b98d282eec8 + mode: restart +- id: '1749747136744' + alias: 'Range cooking ' + description: '' + triggers: + - trigger: state + entity_id: + - sensor.oven_operating_state + to: run + id: Range on + - trigger: state + entity_id: + - sensor.oven_operating_state + from: run + id: range off + - trigger: event + event_type: timer.finished + event_data: + entity_id: timer.range_initial_time + id: intial range on timer + - trigger: event + event_type: timer.finished + id: range off timer + event_data: + entity_id: timer.range_off_timer + conditions: [] + actions: + - choose: + - conditions: + - condition: trigger + id: + - Range on + sequence: + - device_id: e7e277dd4e37f6e2ee84d4ff4bbe46ff + domain: number + entity_id: 312a37255518a0f5feeb83ef8201f14d + type: set_value + value: 1 + - device_id: e7e277dd4e37f6e2ee84d4ff4bbe46ff + domain: select + entity_id: c8e2a66048bd31b0f94e908942ce8864 + type: select_option + option: high + - action: timer.start + metadata: {} + data: + duration: 00:03:00 + target: + entity_id: timer.range_initial_time + - action: timer.cancel + metadata: {} + data: {} + target: + entity_id: timer.range_off_timer + - conditions: + - condition: trigger + id: + - range off + sequence: + - action: timer.start + metadata: {} + data: + duration: 00:04:00 + target: + entity_id: timer.range_off_timer + - action: timer.cancel + metadata: {} + data: {} + target: + entity_id: timer.range_initial_time + - conditions: + - condition: trigger + id: + - intial range on timer + sequence: + - device_id: e7e277dd4e37f6e2ee84d4ff4bbe46ff + domain: number + entity_id: 312a37255518a0f5feeb83ef8201f14d + type: set_value + value: 4 + - conditions: + - condition: trigger + id: + - range off timer + sequence: + - device_id: e7e277dd4e37f6e2ee84d4ff4bbe46ff + domain: number + entity_id: 312a37255518a0f5feeb83ef8201f14d + type: set_value + value: 0 + - device_id: e7e277dd4e37f6e2ee84d4ff4bbe46ff + domain: select + entity_id: c8e2a66048bd31b0f94e908942ce8864 + type: select_option + option: 'off' + - action: timer.cancel + metadata: {} + data: {} + target: + entity_id: timer.range_initial_time + mode: single +- id: '1749986655210' + alias: Day mode status + description: '' + triggers: + - trigger: numeric_state + entity_id: + - sensor.pixel_9_pro_xl_sleep_confidence + for: + hours: 0 + minutes: 5 + seconds: 0 + above: 80 + id: Dylan sleep + - trigger: numeric_state + entity_id: + - sensor.pixel_9_pro_xl_sleep_confidence + for: + hours: 0 + minutes: 5 + seconds: 0 + below: 75 + id: 'Dylan awake ' + conditions: [] + actions: + - choose: + - conditions: + - condition: and + conditions: + - condition: trigger + id: + - Dylan sleep + - condition: sun + before: sunrise + after: sunset + sequence: + - action: input_select.select_option + metadata: {} + data: + option: Asleep + target: + entity_id: input_select.day_mode + - conditions: + - condition: trigger + id: + - 'Dylan awake ' + sequence: + - choose: + - conditions: + - condition: sun + before: sunrise + after: sunset + after_offset: '3:00:00' + before_offset: '1:00:00' + sequence: + - action: input_select.select_option + metadata: {} + data: + option: 'Evening ' + target: + entity_id: input_select.day_mode + - conditions: + - condition: and + conditions: + - condition: sun + after: sunrise + after_offset: -01:00:00 + - condition: time + weekday: + - sat + - fri + - thu + - wed + - tue + - mon + - sun + before: 09:00:00 + sequence: + - action: input_select.select_option + metadata: {} + data: + option: Morning + target: + entity_id: input_select.day_mode + mode: single +- id: '1750164121548' + alias: Set Sleep Statuses + description: '' + triggers: + - trigger: numeric_state + entity_id: + - sensor.pixel_9_pro_xl_sleep_confidence + for: + hours: 0 + minutes: 5 + seconds: 0 + above: 80 + id: Dylan went to sleep + - trigger: numeric_state + entity_id: + - sensor.pixel_9_pro_xl_sleep_confidence + id: Dylan Woke Up + for: + hours: 0 + minutes: 5 + seconds: 0 + below: 75 + conditions: [] + actions: + - choose: + - conditions: + - condition: trigger + id: + - Dylan went to sleep + sequence: + - action: counter.increment + metadata: {} + data: {} + target: + entity_id: counter.number_sleeping + - action: input_boolean.turn_on + metadata: {} + data: {} + target: + entity_id: input_boolean.dylan_s_sleep_status + - conditions: + - condition: trigger + id: + - Dylan Woke Up + sequence: + - action: counter.decrement + metadata: {} + data: {} + target: + entity_id: counter.number_sleeping + - action: input_boolean.turn_off + metadata: {} + data: {} + target: + entity_id: input_boolean.dylan_s_sleep_status + mode: single +- id: '1750186760396' + alias: Set Time of Day + description: '' + triggers: + - trigger: sun + event: sunrise + offset: '-1:00:00' + id: Morning + - trigger: sun + event: sunset + offset: '-1:00:00' + id: Evening + - trigger: time + at: '10:00:00' + id: Late Morning + - trigger: time + at: '12:00:00' + id: Afternoon + - trigger: sun + event: sunset + offset: '3:00:00' + id: Night + - trigger: homeassistant + event: start + id: Startup + conditions: [] + actions: + - choose: + - conditions: + - condition: trigger + id: + - Morning + sequence: + - action: input_select.select_option + metadata: {} + data: + option: Morning + target: + entity_id: input_select.time_of_day + - conditions: + - condition: trigger + id: + - Late Morning + sequence: + - action: input_select.select_option + metadata: {} + data: + option: Late Morning + target: + entity_id: input_select.time_of_day + - conditions: + - condition: trigger + id: + - Afternoon + sequence: + - action: input_select.select_option + metadata: {} + data: + option: Afternoon + target: + entity_id: input_select.time_of_day + - conditions: + - condition: trigger + id: + - Evening + sequence: + - action: input_select.select_option + metadata: {} + data: + option: Evening + target: + entity_id: input_select.time_of_day + - conditions: + - condition: trigger + id: + - Night + sequence: + - action: input_select.select_option + metadata: {} + data: + option: Night + target: + entity_id: input_select.time_of_day + default: + - choose: + - conditions: + - condition: sun + after: sunrise + after_offset: '-1:00:00' + - condition: time + before: '10:00:00' + sequence: + - action: input_select.select_option + metadata: {} + data: + option: Morning + target: + entity_id: input_select.time_of_day + - conditions: + - condition: time + before: '12:00:00' + after: '10:00:00' + sequence: + - action: input_select.select_option + metadata: {} + data: + option: Late Morning + target: + entity_id: input_select.time_of_day + - conditions: + - condition: sun + before: sunset + before_offset: '-1:00:00' + - condition: time + after: '12:00:00' + sequence: + - action: input_select.select_option + metadata: {} + data: + option: Afternoon + target: + entity_id: input_select.time_of_day + - conditions: + - condition: sun + after: sunset + after_offset: '-1:00:00' + before: sunset + before_offset: '3:00:00' + sequence: + - action: input_select.select_option + metadata: {} + data: + option: Evening + target: + entity_id: input_select.time_of_day + - conditions: + - condition: sun + after: sunset + after_offset: '3:00:00' + before: sunrise + before_offset: '-1:00:00' + sequence: + - action: input_select.select_option + metadata: {} + data: + option: Night + target: + entity_id: input_select.time_of_day + mode: single +- id: '1750351885412' + alias: Living room ac + description: '' + triggers: + - trigger: numeric_state + entity_id: + - sensor.living_room_temperature + above: 75 + id: 'Turn on living room AC ' + - trigger: numeric_state + entity_id: + - sensor.living_room_temperature + below: 70 + id: Turn Living Room AC off + conditions: + - condition: state + entity_id: climate.living_room + attribute: hvac_action + state: 'off' + actions: + - choose: + - conditions: + - condition: trigger + id: + - 'Turn on living room AC ' + sequence: + - type: turn_on + device_id: da2464177a95a38d3709f9431e511374 + entity_id: 3c7de36d7b5cb7fa2f50181ffbb44cbf + domain: switch + - conditions: + - condition: trigger + id: + - Turn Living Room AC off + sequence: + - type: turn_off + device_id: da2464177a95a38d3709f9431e511374 + entity_id: 8d109abd5d6fce8537e5395f0c639753 + domain: light + mode: single +- id: '1750429176429' + alias: Master Bedroom AC + description: '' + triggers: + - trigger: numeric_state + entity_id: + - sensor.master_bedroom_temperature + above: 75 + id: 'Turn on master bedroom AC ' + - trigger: numeric_state + entity_id: + - sensor.master_bedroom_temperature + below: 70 + id: Turn Master Bedroom AC off + conditions: + - condition: state + entity_id: climate.master_bedroom + attribute: hvac_action + state: 'off' + - condition: not + conditions: + - condition: state + entity_id: climate.portable_air_conditioner + state: unavailable + actions: + - choose: + - conditions: + - condition: trigger + id: + - 'Turn on master bedroom AC ' + sequence: + - device_id: b407b8688ac2f8588a8c665f67066748 + domain: climate + entity_id: c9e55f517a5bd6328d494953e99c7e02 + type: set_hvac_mode + hvac_mode: cool + - conditions: + - condition: trigger + id: + - Turn Master Bedroom AC off + sequence: + - device_id: b407b8688ac2f8588a8c665f67066748 + domain: climate + entity_id: c9e55f517a5bd6328d494953e99c7e02 + type: set_hvac_mode + hvac_mode: 'off' + mode: single diff --git a/blueprints/automation/homeassistant/motion_light.yaml b/blueprints/automation/homeassistant/motion_light.yaml new file mode 100644 index 0000000..1190070 --- /dev/null +++ b/blueprints/automation/homeassistant/motion_light.yaml @@ -0,0 +1,58 @@ +blueprint: + name: Motion-activated Light + description: Turn on a light when motion is detected. + domain: automation + source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/motion_light.yaml + author: Home Assistant + input: + motion_entity: + name: Motion Sensor + selector: + entity: + filter: + - device_class: occupancy + domain: binary_sensor + - device_class: motion + domain: binary_sensor + light_target: + name: Light + selector: + target: + entity: + domain: light + no_motion_wait: + name: Wait time + description: Time to leave the light on after last motion is detected. + default: 120 + selector: + number: + min: 0 + max: 3600 + unit_of_measurement: seconds + +# If motion is detected within the delay, +# we restart the script. +mode: restart +max_exceeded: silent + +triggers: + trigger: state + entity_id: !input motion_entity + from: "off" + to: "on" + +actions: + - alias: "Turn on the light" + action: light.turn_on + target: !input light_target + - alias: "Wait until there is no motion from device" + wait_for_trigger: + trigger: state + entity_id: !input motion_entity + from: "on" + to: "off" + - alias: "Wait the number of seconds that has been set" + delay: !input no_motion_wait + - alias: "Turn off the light" + action: light.turn_off + target: !input light_target diff --git a/blueprints/automation/homeassistant/notify_leaving_zone.yaml b/blueprints/automation/homeassistant/notify_leaving_zone.yaml new file mode 100644 index 0000000..e072aad --- /dev/null +++ b/blueprints/automation/homeassistant/notify_leaving_zone.yaml @@ -0,0 +1,50 @@ +blueprint: + name: Zone Notification + description: Send a notification to a device when a person leaves a specific zone. + domain: automation + source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/notify_leaving_zone.yaml + author: Home Assistant + input: + person_entity: + name: Person + selector: + entity: + filter: + domain: person + zone_entity: + name: Zone + selector: + entity: + filter: + domain: zone + notify_device: + name: Device to notify + description: Device needs to run the official Home Assistant app to receive notifications. + selector: + device: + filter: + integration: mobile_app + +triggers: + trigger: state + entity_id: !input person_entity + +variables: + zone_entity: !input zone_entity + # This is the state of the person when it's in this zone. + zone_state: "{{ states[zone_entity].name }}" + person_entity: !input person_entity + person_name: "{{ states[person_entity].name }}" + +conditions: + condition: template + # The first case handles leaving the Home zone which has a special state when zoning called 'home'. + # The second case handles leaving all other zones. + value_template: "{{ zone_entity == 'zone.home' and trigger.from_state.state == 'home' and trigger.to_state.state != 'home' or trigger.from_state.state == zone_state and trigger.to_state.state != zone_state }}" + +actions: + - alias: "Notify that a person has left the zone" + domain: mobile_app + type: notify + device_id: !input notify_device + message: "{{ person_name }} has left {{ zone_state }}" diff --git a/blueprints/script/homeassistant/confirmable_notification.yaml b/blueprints/script/homeassistant/confirmable_notification.yaml new file mode 100644 index 0000000..c5f4249 --- /dev/null +++ b/blueprints/script/homeassistant/confirmable_notification.yaml @@ -0,0 +1,86 @@ +blueprint: + name: Confirmable Notification + description: >- + A script that sends an actionable notification with a confirmation before + running the specified action. + domain: script + source_url: https://github.com/home-assistant/core/blob/master/homeassistant/components/script/blueprints/confirmable_notification.yaml + author: Home Assistant + input: + notify_device: + name: Device to notify + description: Device needs to run the official Home Assistant app to receive notifications. + selector: + device: + filter: + integration: mobile_app + title: + name: "Title" + description: "The title of the button shown in the notification." + default: "" + selector: + text: + message: + name: "Message" + description: "The message body" + selector: + text: + confirm_text: + name: "Confirmation Text" + description: "Text to show on the confirmation button" + default: "Confirm" + selector: + text: + confirm_action: + name: "Confirmation Action" + description: "Action to run when notification is confirmed" + default: [] + selector: + action: + dismiss_text: + name: "Dismiss Text" + description: "Text to show on the dismiss button" + default: "Dismiss" + selector: + text: + dismiss_action: + name: "Dismiss Action" + description: "Action to run when notification is dismissed" + default: [] + selector: + action: + +mode: restart + +sequence: + - alias: "Set up variables" + variables: + action_confirm: "{{ 'CONFIRM_' ~ context.id }}" + action_dismiss: "{{ 'DISMISS_' ~ context.id }}" + - alias: "Send notification" + domain: mobile_app + type: notify + device_id: !input notify_device + title: !input title + message: !input message + data: + actions: + - action: "{{ action_confirm }}" + title: !input confirm_text + - action: "{{ action_dismiss }}" + title: !input dismiss_text + - alias: "Awaiting response" + wait_for_trigger: + - platform: event + event_type: mobile_app_notification_action + event_data: + action: "{{ action_confirm }}" + - platform: event + event_type: mobile_app_notification_action + event_data: + action: "{{ action_dismiss }}" + - choose: + - conditions: "{{ wait.trigger.event.data.action == action_confirm }}" + sequence: !input confirm_action + - conditions: "{{ wait.trigger.event.data.action == action_dismiss }}" + sequence: !input dismiss_action diff --git a/blueprints/template/homeassistant/inverted_binary_sensor.yaml b/blueprints/template/homeassistant/inverted_binary_sensor.yaml new file mode 100644 index 0000000..5be1840 --- /dev/null +++ b/blueprints/template/homeassistant/inverted_binary_sensor.yaml @@ -0,0 +1,27 @@ +blueprint: + name: Invert a binary sensor + description: Creates a binary_sensor which holds the inverted value of a reference binary_sensor + domain: template + source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/template/blueprints/inverted_binary_sensor.yaml + input: + reference_entity: + name: Binary sensor to be inverted + description: The binary_sensor which needs to have its value inverted + selector: + entity: + domain: binary_sensor +variables: + reference_entity: !input reference_entity +binary_sensor: + state: > + {% if states(reference_entity) == 'on' %} + off + {% elif states(reference_entity) == 'off' %} + on + {% else %} + {{ states(reference_entity) }} + {% endif %} + # delay_on: not_used in this example + # delay_off: not_used in this example + # auto_off: not_used in this example + availability: "{{ states(reference_entity) not in ('unknown', 'unavailable') }}" diff --git a/configuration.yaml b/configuration.yaml new file mode 100644 index 0000000..9eed6c9 --- /dev/null +++ b/configuration.yaml @@ -0,0 +1,48 @@ + +# Loads default set of integrations. Do not remove. +default_config: + +# Load frontend themes from the themes folder +frontend: + themes: !include_dir_merge_named themes + +automation: !include automations.yaml +script: !include scripts.yaml +scene: !include scenes.yaml +http: + base_url: "https://homeassistant.lostorienteer.net" + use_x_forwarded_for: true + trusted_proxies: + - 127.0.0.1 + - 10.0.0.20 + - 10.0.0.10 +#media_player: +# - platform: panasonic_bluray +# host: 10.0.1.150 +#media_player: +# - platform: universal +# name: livingroom_tv +# children: +# - media_player.living_room_tv +# - media_player.samsung_8_series_65 +# commands: +# turn_on: +# action: media_player.turn_on +# target: +# entity_id: media_player.living_room_tv +# turn_off: +# action: media_player.turn_off +# target: +# entity_id: media_player.living_room_tv +# volume_up: +# action: media_player.volume_up +# target: +# entity_id: media_player.samsung_8_series_65 +# volume_down: +# action: media_player.volume_down +# target: +# entity_id: media_player.samsung_8_series_65 +# volume_mute: +# action: media_player.volume_mute +# target: +# entity_id: media_player.samsung_8_series_65 \ No newline at end of file diff --git a/esphome/.gitignore b/esphome/.gitignore new file mode 100644 index 0000000..d8b4157 --- /dev/null +++ b/esphome/.gitignore @@ -0,0 +1,5 @@ +# Gitignore settings for ESPHome +# This is an example and may include too much for your use-case. +# You can modify this file to suit your needs. +/.esphome/ +/secrets.yaml diff --git a/esphome/archive/home-assistant-voice-094561.yaml b/esphome/archive/home-assistant-voice-094561.yaml new file mode 100644 index 0000000..2ef8a97 --- /dev/null +++ b/esphome/archive/home-assistant-voice-094561.yaml @@ -0,0 +1,17 @@ +substitutions: + name: home-assistant-voice-094561 + friendly_name: Home Assistant Voice 094561 +packages: + Nabu Casa.Home Assistant Voice PE: github://esphome/home-assistant-voice-pe/home-assistant-voice.yaml +esphome: + name: ${name} + name_add_mac_suffix: false + friendly_name: ${friendly_name} +api: + encryption: + key: 3bjwvC9p56LwEyXXaC5xJjr2XZ1bz4mjXt7+qHQlY/o= + + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password diff --git a/esphome/archive/ratgdov32-df20c0.yaml b/esphome/archive/ratgdov32-df20c0.yaml new file mode 100644 index 0000000..52e351e --- /dev/null +++ b/esphome/archive/ratgdov32-df20c0.yaml @@ -0,0 +1,14 @@ +packages: + ratgdo.esphome: "github://ratgdo/esphome-ratgdo/v32board_secplusv1.yaml@ratgdo32" + #name: ratgdov32-df20c0 + #name_add_mac_suffix: false + #friendly_name: "Garage Door" + +api: + encryption: + key: Bx8oDXaSKv8KZcICMwkKL4CSnMYUVsPqt3Pxz21GHdY= + + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password diff --git a/esphome/everything-presence-lite-7e7bac.yaml b/esphome/everything-presence-lite-7e7bac.yaml new file mode 100644 index 0000000..c33ce0f --- /dev/null +++ b/esphome/everything-presence-lite-7e7bac.yaml @@ -0,0 +1,17 @@ +substitutions: + name: everything-presence-lite-7e7bac + friendly_name: 'Everything Presence Lite Master Bedroom ' +packages: + EverythingSmartTechnology.Everything_Presence_Lite: github://everythingsmarthome/everything-presence-lite/everything-presence-lite-ha.yaml@main +esphome: + name: ${name} + name_add_mac_suffix: false + friendly_name: ${friendly_name} +api: + encryption: + key: VTVqXKoMyCk78gDSAU77EklV1I1/wYaMp5dkp7avjYs= + + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password diff --git a/esphome/everything-presence-lite-8fbc14.yaml b/esphome/everything-presence-lite-8fbc14.yaml new file mode 100644 index 0000000..a3859a3 --- /dev/null +++ b/esphome/everything-presence-lite-8fbc14.yaml @@ -0,0 +1,17 @@ +substitutions: + name: everything-presence-lite-8fbc14 + friendly_name: 'Everything Presence Lite living room ' +packages: + EverythingSmartTechnology.Everything_Presence_Lite: github://everythingsmarthome/everything-presence-lite/everything-presence-lite-ha.yaml@main +esphome: + name: ${name} + name_add_mac_suffix: false + friendly_name: ${friendly_name} +api: + encryption: + key: MbYAq9r480Vqspd2HrZc4KkfxZxJ5sDHzYtnKVKWe6Q= + + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password diff --git a/esphome/everything-presence-lite-ccb818.yaml b/esphome/everything-presence-lite-ccb818.yaml new file mode 100644 index 0000000..fc8beb6 --- /dev/null +++ b/esphome/everything-presence-lite-ccb818.yaml @@ -0,0 +1,17 @@ +substitutions: + name: everything-presence-lite-ccb818 + friendly_name: Everything Presence Lite Kitchen +packages: + EverythingSmartTechnology.Everything_Presence_Lite: github://everythingsmarthome/everything-presence-lite/everything-presence-lite-ha.yaml@main +esphome: + name: ${name} + name_add_mac_suffix: false + friendly_name: ${friendly_name} +api: + encryption: + key: 84PtbLHcr4u3aa5Q7MagzNaX13F2qTDkbmbKWjDtGzc= + + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password diff --git a/esphome/everything-presence-lite-ccb930.yaml b/esphome/everything-presence-lite-ccb930.yaml new file mode 100644 index 0000000..b5665ac --- /dev/null +++ b/esphome/everything-presence-lite-ccb930.yaml @@ -0,0 +1,17 @@ +substitutions: + name: everything-presence-lite-ccb930 + friendly_name: 'Everything Presence Lite Office ' +packages: + EverythingSmartTechnology.Everything_Presence_Lite: github://everythingsmarthome/everything-presence-lite/everything-presence-lite-ha.yaml@main +esphome: + name: ${name} + name_add_mac_suffix: false + friendly_name: ${friendly_name} +api: + encryption: + key: exj7aPEaQNCb6r2uBLMYXoS671pzRUrKb0iHwN01d6k= + + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password diff --git a/esphome/home-assistant-voice-091c47.yaml b/esphome/home-assistant-voice-091c47.yaml new file mode 100644 index 0000000..b15af4b --- /dev/null +++ b/esphome/home-assistant-voice-091c47.yaml @@ -0,0 +1,17 @@ +substitutions: + name: home-assistant-voice-091c47 + friendly_name: Home Assistant Voice 091c47 +packages: + Nabu Casa.Home Assistant Voice PE: github://esphome/home-assistant-voice-pe/home-assistant-voice.yaml +esphome: + name: ${name} + name_add_mac_suffix: false + friendly_name: ${friendly_name} +api: + encryption: + key: C+JPfpK/4LXUNlwXHAVtSUKlbJQ3mSjpPVj0aYutOB8= + + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password diff --git a/esphome/home-assistant-voice-094561.yaml b/esphome/home-assistant-voice-094561.yaml new file mode 100644 index 0000000..f07184c --- /dev/null +++ b/esphome/home-assistant-voice-094561.yaml @@ -0,0 +1,17 @@ +substitutions: + name: home-assistant-voice-094561 + friendly_name: Home Assistant Voice 094561 +packages: + Nabu Casa.Home Assistant Voice PE: github://esphome/home-assistant-voice-pe/home-assistant-voice.yaml +esphome: + name: ${name} + name_add_mac_suffix: false + friendly_name: ${friendly_name} +api: + encryption: + key: 57+JgEDCLIBaRre9lZRRnLSx6DWqmt2kHFISsDykRfM= + + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password diff --git a/esphome/ratgdov32-df20c0.yaml b/esphome/ratgdov32-df20c0.yaml new file mode 100644 index 0000000..038ed49 --- /dev/null +++ b/esphome/ratgdov32-df20c0.yaml @@ -0,0 +1,20 @@ +substitutions: + name: ratgdov32-df20c0 + friendly_name: garage-door +packages: + ratgdo.esphome: github://ratgdo/esphome-ratgdo/v32board_secplusv1.yaml +esphome: + name: ${name} + name_add_mac_suffix: false + friendly_name: ${friendly_name} +api: + encryption: + key: X4srLaZ5ceRjhWN3bPdcOLDobFVb0kgm11n4OB4CJPE= + + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + +bluetooth_proxy: + active: True \ No newline at end of file diff --git a/esphome/upsy-desky-df8860.yaml b/esphome/upsy-desky-df8860.yaml new file mode 100644 index 0000000..15a7d2d --- /dev/null +++ b/esphome/upsy-desky-df8860.yaml @@ -0,0 +1,20 @@ +substitutions: + name: upsy-desky-df8860 + friendly_name: Upsy Desky Work Desk +packages: + tj_horner.upsy_desky: github://tjhorner/upsy-desky/firmware/stock.yaml@v4.0.2 +esphome: + name: ${name} + name_add_mac_suffix: false + friendly_name: ${friendly_name} +api: + encryption: + key: xEp2xN88nvfVNbmv2+7vIfFxBBd7ggjCbUgwbq+GYrI= + + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + +bluetooth_proxy: + active: True \ No newline at end of file diff --git a/esphome/upsy-desky-e16470.yaml b/esphome/upsy-desky-e16470.yaml new file mode 100644 index 0000000..3deee99 --- /dev/null +++ b/esphome/upsy-desky-e16470.yaml @@ -0,0 +1,20 @@ +substitutions: + name: upsy-desky-e16470 + friendly_name: Upsy Desky Personal Desk +packages: + tj_horner.upsy_desky: github://tjhorner/upsy-desky/firmware/stock.yaml@v4.0.2 +esphome: + name: ${name} + name_add_mac_suffix: false + friendly_name: ${friendly_name} +api: + encryption: + key: mvVhxqdLvDgiFJ85D3WGzTMuuJWjPd4klVJVqxqipkE= + + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + +bluetooth_proxy: + active: True diff --git a/home-assistant_v2.db-shm b/home-assistant_v2.db-shm new file mode 100644 index 0000000..685d41d Binary files /dev/null and b/home-assistant_v2.db-shm differ diff --git a/home-assistant_v2.db-wal b/home-assistant_v2.db-wal new file mode 100644 index 0000000..6bb1015 Binary files /dev/null and b/home-assistant_v2.db-wal differ diff --git a/scenes.yaml b/scenes.yaml new file mode 100644 index 0000000..e69de29 diff --git a/scripts.yaml b/scripts.yaml new file mode 100644 index 0000000..e69de29