diff --git a/home-assistant/FRIGATE- Person Detect Logic - Backyard Camera.yml b/home-assistant/FRIGATE- Person Detect Logic - Backyard Camera.yml index 8fb7f2c..2c3e43f 100644 --- a/home-assistant/FRIGATE- Person Detect Logic - Backyard Camera.yml +++ b/home-assistant/FRIGATE- Person Detect Logic - Backyard Camera.yml @@ -28,10 +28,7 @@ conditions: - condition: template value_template: "{{ before_zones | length == 0 }}" enabled: true -# - condition: template -# value_template: "{{ trigger.payload_json[\"after\"][\"entered_zones\"]|length > 0 }}" -# enabled: true - - alias: Object is in Backyard + - alias: Object is in Back Yard condition: template value_template: "{{ [\"backyard_z1\"] | select(\"in\", after_zones) | list | length > 0 }}" enabled: true @@ -40,10 +37,26 @@ actions: - conditions: - condition: trigger id: frigate-event + - condition: or + conditions: + - condition: template + value_template: "{{ trigger.payload_json[\"before\"][\"stationary\"] != 'true' }}" + - condition: template + value_template: "{{ trigger.payload_json[\"after\"][\"stationary\"] != 'true' }}" + alias: Object is moving sequence: + - action: input_boolean.turn_on + metadata: {} + data: {} + target: + entity_id: input_boolean.backyard_motion_detected + alias: Set Backyard motion detected - action: script.person_detect_actions + alias: Trigger alarm and send critical priority event to devices data: send_to_sm_n986b: "true" + send_to_sm_x115: "true" + send_to_nokia_c20: "true" send_to_nova_4k: "false" id: "{{ id }}" title: >- @@ -59,7 +72,7 @@ actions: importance: max priority: critical image: /api/frigate/notifications/{{ id }}/snapshot.jpg - video: "" + video: null base_url: https://home-assistant.sthome.org when: "{{ detect_time }}" camera: "{{ camera }}" @@ -72,11 +85,16 @@ actions: trigger: mqtt continue_on_timeout: false timeout: "00:02:00" + alias: 2 min timeout - condition: template value_template: "{{ wait.trigger.payload_json['type'] == 'end' }}" + alias: Wait for end event - action: script.person_detect_actions + alias: Send high priority notification to devices data: send_to_sm_n986b: "true" + send_to_sm_x115: "true" + send_to_nokia_c20: "true" send_to_nova_4k: "false" id: "{{ id }}" title: > @@ -102,9 +120,16 @@ actions: base_url: https://home-assistant.sthome.org when: "{{ detect_time }}" camera: "{{ camera }}" + - action: input_boolean.turn_off + metadata: {} + data: {} + target: + entity_id: input_boolean.backyard_motion_detected + alias: Reset Backyard motion detected until: - condition: template value_template: "{{ wait.trigger.payload_json[\"type\"] == \"end\" }}" + alias: End event is detected default: [] mode: parallel max: 10 diff --git a/home-assistant/FRIGATE- Person Detect Logic - Driveway Camera.yml b/home-assistant/FRIGATE- Person Detect Logic - Driveway Camera.yml index 354183b..ffdd88a 100644 --- a/home-assistant/FRIGATE- Person Detect Logic - Driveway Camera.yml +++ b/home-assistant/FRIGATE- Person Detect Logic - Driveway Camera.yml @@ -30,21 +30,35 @@ conditions: enabled: true - alias: Object is in Street or Front Yard condition: template - value_template: "{{ [\"driveway_z1\", \"Driveway_Paving\"] | select(\"in\", after_zones) | list | length > 0 }}" - enabled: true - - alias: Object is not a Car - condition: template - value_template: "{{ trigger.payload_json[\"after\"][\"label\"] != 'car' }}" + value_template: >- + {{ ["driveway_z1", "Driveway_Paving"] | select("in", after_zones) | list | + length > 0 }} enabled: true actions: - choose: - conditions: - condition: trigger id: frigate-event + - condition: or + conditions: + - condition: template + value_template: "{{ trigger.payload_json[\"before\"][\"stationary\"] != 'true' }}" + - condition: template + value_template: "{{ trigger.payload_json[\"after\"][\"stationary\"] != 'true' }}" + alias: Object is moving sequence: + - action: input_boolean.turn_on + metadata: {} + data: {} + target: + entity_id: input_boolean.driveway_motion_detected + alias: Set Driveway motion detected - action: script.person_detect_actions + alias: Trigger alarm and send critical priority event to devices data: send_to_sm_n986b: "true" + send_to_sm_x115: "true" + send_to_nokia_c20: "true" send_to_nova_4k: "false" id: "{{ id }}" title: >- @@ -60,7 +74,7 @@ actions: importance: max priority: critical image: /api/frigate/notifications/{{ id }}/snapshot.jpg - video: "" + video: null base_url: https://home-assistant.sthome.org when: "{{ detect_time }}" camera: "{{ camera }}" @@ -73,11 +87,16 @@ actions: trigger: mqtt continue_on_timeout: false timeout: "00:02:00" + alias: 2 min timeout - condition: template value_template: "{{ wait.trigger.payload_json['type'] == 'end' }}" + alias: Wait for end event - action: script.person_detect_actions + alias: Send high priority notification to devices data: send_to_sm_n986b: "true" + send_to_sm_x115: "true" + send_to_nokia_c20: "true" send_to_nova_4k: "false" id: "{{ id }}" title: > @@ -103,9 +122,16 @@ actions: base_url: https://home-assistant.sthome.org when: "{{ detect_time }}" camera: "{{ camera }}" + - action: input_boolean.turn_off + metadata: {} + data: {} + target: + entity_id: input_boolean.driveway_motion_detected + alias: Reset Driveway motion detected until: - condition: template value_template: "{{ wait.trigger.payload_json[\"type\"] == \"end\" }}" + alias: End event is detected default: [] mode: parallel max: 10 diff --git a/home-assistant/FRIGATE- Person Detect Logic - Eastwall Camera.yml b/home-assistant/FRIGATE- Person Detect Logic - Eastwall Camera.yml index af10f68..d17f810 100644 --- a/home-assistant/FRIGATE- Person Detect Logic - Eastwall Camera.yml +++ b/home-assistant/FRIGATE- Person Detect Logic - Eastwall Camera.yml @@ -28,10 +28,7 @@ conditions: - condition: template value_template: "{{ before_zones | length == 0 }}" enabled: true -# - condition: template -# value_template: "{{ trigger.payload_json[\"after\"][\"entered_zones\"]|length > 0 }}" -# enabled: true - - alias: Object is on the East side of house + - alias: Object is on east side condition: template value_template: "{{ [\"eastwall_z1\"] | select(\"in\", after_zones) | list | length > 0 }}" enabled: true @@ -40,10 +37,25 @@ actions: - conditions: - condition: trigger id: frigate-event + - condition: or + conditions: + - condition: template + value_template: "{{ trigger.payload_json[\"before\"][\"stationary\"] != 'true' }}" + - condition: template + value_template: "{{ trigger.payload_json[\"after\"][\"stationary\"] != 'true' }}" + alias: Object is moving sequence: + - action: input_boolean.turn_on + metadata: {} + data: {} + target: + entity_id: input_boolean.eastwall_motion_detected + alias: Set Eastwall motion detected - action: script.person_detect_actions data: send_to_sm_n986b: "true" + send_to_sm_x115: "true" + send_to_nokia_c20: "true" send_to_nova_4k: "false" id: "{{ id }}" title: >- @@ -59,7 +71,7 @@ actions: importance: max priority: critical image: /api/frigate/notifications/{{ id }}/snapshot.jpg - video: "" + video: null base_url: https://home-assistant.sthome.org when: "{{ detect_time }}" camera: "{{ camera }}" @@ -72,11 +84,15 @@ actions: trigger: mqtt continue_on_timeout: false timeout: "00:02:00" + alias: 2 min timeout - condition: template value_template: "{{ wait.trigger.payload_json['type'] == 'end' }}" + alias: Wait for end event - action: script.person_detect_actions data: send_to_sm_n986b: "true" + send_to_sm_x115: "true" + send_to_nokia_c20: "true" send_to_nova_4k: "false" id: "{{ id }}" title: > @@ -102,6 +118,12 @@ actions: base_url: https://home-assistant.sthome.org when: "{{ detect_time }}" camera: "{{ camera }}" + - action: input_boolean.turn_off + metadata: {} + data: {} + target: + entity_id: input_boolean.eastwall_motion_detected + alias: Reset Eastwall motion detected until: - condition: template value_template: "{{ wait.trigger.payload_json[\"type\"] == \"end\" }}" diff --git a/home-assistant/FRIGATE- Person Detect Logic - Patio Camera.yml b/home-assistant/FRIGATE- Person Detect Logic - Patio Camera.yml index 70a770d..096b0cb 100644 --- a/home-assistant/FRIGATE- Person Detect Logic - Patio Camera.yml +++ b/home-assistant/FRIGATE- Person Detect Logic - Patio Camera.yml @@ -49,6 +49,12 @@ actions: value_template: "{{ trigger.payload_json[\"after\"][\"stationary\"] != 'true' }}" alias: Object is moving sequence: + - action: input_boolean.turn_on + metadata: {} + data: {} + target: + entity_id: input_boolean.patio_motion_detected + alias: Set Patio motion detected - action: script.person_detect_actions data: send_to_nova_4k: "false" @@ -110,6 +116,12 @@ actions: base_url: https://home-assistant.sthome.org when: "{{ detect_time }}" camera: "{{ camera }}" + - action: input_boolean.turn_off + metadata: {} + data: {} + target: + entity_id: input_boolean.patio_motion_detected + alias: Reset Patio motion detected until: - condition: template value_template: "{{ wait.trigger.payload_json[\"type\"] == \"end\" }}" diff --git a/home-assistant/FRIGATE- Person Detect Logic - Westwall Camera.yml b/home-assistant/FRIGATE- Person Detect Logic - Westwall Camera.yml index 33f4c73..7288e2d 100644 --- a/home-assistant/FRIGATE- Person Detect Logic - Westwall Camera.yml +++ b/home-assistant/FRIGATE- Person Detect Logic - Westwall Camera.yml @@ -28,7 +28,7 @@ conditions: - condition: template value_template: "{{ before_zones | length == 0 }}" enabled: true - - alias: Object is on West side + - alias: Object is on west side condition: template value_template: "{{ [\"westwall_z1\"] | select(\"in\", after_zones) | list | length > 0 }}" enabled: true @@ -37,10 +37,25 @@ actions: - conditions: - condition: trigger id: frigate-event + - condition: or + conditions: + - condition: template + value_template: "{{ trigger.payload_json[\"before\"][\"stationary\"] != 'true' }}" + - condition: template + value_template: "{{ trigger.payload_json[\"after\"][\"stationary\"] != 'true' }}" + alias: Object is moving sequence: + - action: input_boolean.turn_on + metadata: {} + data: {} + target: + entity_id: input_boolean.westwall_motion_detected + alias: Set Westwall motion detected - action: script.person_detect_actions data: send_to_sm_n986b: "true" + send_to_sm_x115: "true" + send_to_nokia_c20: "true" send_to_nova_4k: "false" id: "{{ id }}" title: >- @@ -56,7 +71,7 @@ actions: importance: max priority: critical image: /api/frigate/notifications/{{ id }}/snapshot.jpg - video: "" + video: null base_url: https://home-assistant.sthome.org when: "{{ detect_time }}" camera: "{{ camera }}" @@ -69,11 +84,15 @@ actions: trigger: mqtt continue_on_timeout: false timeout: "00:02:00" + alias: 2 min timeout - condition: template value_template: "{{ wait.trigger.payload_json['type'] == 'end' }}" + alias: Wait for end event - action: script.person_detect_actions data: send_to_sm_n986b: "true" + send_to_sm_x115: "true" + send_to_nokia_c20: "true" send_to_nova_4k: "false" id: "{{ id }}" title: > @@ -99,6 +118,12 @@ actions: base_url: https://home-assistant.sthome.org when: "{{ detect_time }}" camera: "{{ camera }}" + - action: input_boolean.turn_off + metadata: {} + data: {} + target: + entity_id: input_boolean.westwall_motion_detected + alias: Reset Westwall motion detected until: - condition: template value_template: "{{ wait.trigger.payload_json[\"type\"] == \"end\" }}" diff --git a/home-assistant/configuration.yml b/home-assistant/configuration.yml index ed969c7..c9bf69a 100644 --- a/home-assistant/configuration.yml +++ b/home-assistant/configuration.yml @@ -1,5 +1,8 @@ # Configure a default setup of Home Assistant (frontend, api, etc) default_config: +frontend: + extra_module_url: + - /local/card-mod.js # Text to speech tts: - platform: google_translate @@ -98,7 +101,29 @@ template: {%- else -%} mdi:lock-off {%- endif -%} - + - unique_id: motion_detected_gui + name: Motion Detected + state: > + {{ 'on' if is_state('input_boolean.backyard_motion_detected', 'on') or is_state('input_boolean.westwall_motion_detected', 'on') or is_state('input_boolean.eastwall_motion_detected', 'on') or is_state('input_boolean.patio_motion_detected', 'on') or is_state('input_boolean.driveway_motion_detected', 'on') else 'off' }} + icon: > + {% if this.state == 'on' %} + mdi:motion-sensor + {% elif this.state == 'off'%} + mdi:motion-sensor-off + {% else %} + mdi:motion-sensor-off + {% endif %} + - unique_id: motion_detect_enabled + name: Motion Detect Enabled + state: "{{ states('input_boolean.person_detect') }}" + icon: > + {% if this.state == 'on' %} + mdi:motion-sensor + {% elif this.state == 'off' %} + mdi:motion-sensor-off + {% else %} + mdi:motion-sensor-off + {% endif %} #notify: # - platform: androidtv # name: Android TV diff --git a/home-assistant/custom-buttoncard examples.yaml b/home-assistant/custom-buttoncard examples.yaml new file mode 100644 index 0000000..50e0f88 --- /dev/null +++ b/home-assistant/custom-buttoncard examples.yaml @@ -0,0 +1,635 @@ + # https://www.youtube.com/watch?v=5Pi21pqfbxA + cards: + - type: vertical-stack + cards: + - text: Physical Switches / Lights + type: custom:text-divider-row + - square: false + columns: 4 + type: grid + cards: + - aspect_ratio: 1.2/1 + color: rgb(252,255,158) + color_type: icon + entity: switch.kitchen_sink_light + icon: mdi:ceiling-light + name: Kitchen Sink + tap_action: + action: toggle + type: custom:button-card + - aspect_ratio: 1.2/1 + color: rgb(252,0,158) + color_type: card + entity: switch.family_room_lamp + icon: mdi:lamp + name: Family Room + tap_action: + action: toggle + type: custom:button-card + - aspect_ratio: 1.2/1 + color: rgb(252,255,158) + color_type: card + entity: switch.driveway_lights + icon: mdi:coach-lamp + name: Driveway + tap_action: + action: toggle + type: custom:button-card + - aspect_ratio: 1.2/1 + color: rgb(252,255,158) + color_type: card + entity: switch.master_bedroom_lamp + icon: mdi:lamp + name: Master BR + tap_action: + action: toggle + type: custom:button-card + - text: Template (virtual) Switches + type: custom:text-divider-row + - type: grid + square: false + columns: 4 + cards: + - aspect_ratio: 1.2/1 + color: rgb(0,255,0) + color_type: card + entity: light.basement + show_name: false + show_state: true + state: + - color: rgb(200,0,0) + icon: mdi:lightbulb-off + value: 'off' + type: custom:button-card + - aspect_ratio: 1.2/1 + color_type: card + entity: switch.sw_basement_100 + icon: mdi:circle-slice-8 + name: 100% + state: + - color: rgb(0,128,0) + value: 'on' + type: custom:button-card + - aspect_ratio: 1.2/1 + color_type: card + entity: switch.sw_basement_75 + icon: mdi:circle-slice-6 + name: 75% + state: + - color: rgb(0,75,0) + value: 'on' + type: custom:button-card + - aspect_ratio: 1.2/1 + color_type: card + entity: switch.sw_basement_50 + icon: mdi:circle-slice-4 + name: 50% + state: + - color: rgb(0,50,0) + value: 'on' + type: custom:button-card + - text: Binary Sensors + type: custom:text-divider-row + - square: false + columns: 4 + type: grid + cards: + - aspect_ratio: 1.2/1 + color: rgb(0,255,0) + color_type: icon + entity: binary_sensor.garage_laundry_door + name: Laundry Door + show_name: true + show_state: false + state: + - color: rgb(255,0,0) + icon: mdi:door + value: 'off' + - color: rgb(0,255,0) + icon: mdi:door-open + styles: + icon: + - animation: blink 2s ease infinite + value: 'on' + type: custom:button-card + - aspect_ratio: 1.2/1 + color: rgb(0,255,0) + color_type: icon + entity: binary_sensor.garage_service_door + name: Service Door + show_name: true + show_state: false + state: + - color: rgb(255,0,0) + icon: mdi:door + value: 'off' + - color: rgb(0,255,0) + icon: mdi:door-open + styles: + icon: + - animation: blink 2s ease infinite + value: 'on' + type: custom:button-card + - aspect_ratio: 1.2/1 + color: rgb(0,255,0) + color_type: icon + entity: cover.garage_door + name: Garage Door + show_name: false + show_state: true + state: + - color: rgb(255,0,0) + icon: mdi:garage + value: closed + - color: rgb(0,255,0) + icon: mdi:garage-open + styles: + icon: + - animation: blink 2s ease infinite + value: open + type: custom:button-card + - aspect_ratio: 1.2/1 + color-type: card + entity: binary_sensor.mailbox_zb + name: Door Status + show_state: true + state: + - color: rgb(128,128,128) + icon: mdi:mailbox-outline + value: 'off' + - color: rgb(0,255,0) + icon: mdi:mailbox-open-up-outline + styles: + icon: + - animation: blink 2s ease infinite + value: 'on' + type: custom:button-card + - text: Input Booleans + type: custom:text-divider-row + - aspect_ratio: 5/1 + color_type: card + entity: input_boolean.voice_notifications + name: Voice Notifications - ON + icon: mdi:account-voice + state: + - color: rgb(0,0,255) + value: 'on' + - color: rgb(50,50,50) + icon: mdi:account-voice-off + name: Voice Notifications - OFF + value: 'off' + type: custom:button-card + - square: false + columns: 4 + type: grid + cards: + - aspect_ratio: 1.3/1 + color: rgb(3, 157, 252) + color_type: card + entity: input_boolean.notify_washer + icon: mdi:account-voice + name: Washer + state: + - color: rgb(70,70,70) + icon: mdi:account-voice-off + value: 'off' + type: custom:button-card + - aspect_ratio: 1.3/1 + color: rgb(3, 157, 252) + color_type: card + entity: input_boolean.notify_dryer + icon: mdi:account-voice + name: Dryer + state: + - color: rgb(70,70,70) + icon: mdi:account-voice-off + value: 'off' + type: custom:button-card + - aspect_ratio: 1.3/1 + color: rgb(3, 157, 252) + color_type: card + entity: input_boolean.notify_ender3 + icon: mdi:account-voice + name: Printer + state: + - color: rgb(70,70,70) + icon: mdi:account-voice-off + value: 'off' + type: custom:button-card + - aspect_ratio: 1.3/1 + color: rgb(3, 157, 252) + color_type: card + entity: input_boolean.notify_mail + icon: mdi:account-voice + name: Mail + state: + - color: rgb(70,70,70) + icon: mdi:account-voice-off + value: 'off' + type: custom:button-card + - type: vertical-stack + cards: + - text: Numeric Entities / Sensors + type: custom:text-divider-row + - square: false + columns: 4 + type: grid + cards: + - aspect_ratio: 1.2/1 + entity: sensor.mailbox_zb_battery + name: Mailbox + show_state: true + state: + - color: rgb(0,255,0) + icon: mdi:battery + operator: '>=' + value: 95 + - color: rgb(0,255,0) + icon: mdi:battery-90 + operator: '>=' + value: 85 + - color: rgb(0,255,0) + operator: '>=' + value: 75 + icon: mdi:battery-80 + - color: rgb(0,255,0) + operator: '>=' + value: 65 + icon: mdi:battery-70 + - color: rgb(0,255,0) + operator: '>=' + value: 55 + icon: mdi:battery-60 + - color: rgb(0,255,0) + icon: mdi:battery-50 + operator: '>=' + value: 45 + - color: rgb(0,255,0) + icon: mdi:battery-40 + operator: '>=' + value: 31 + - color: rgb(255,255,0) + icon: mdi:battery-30 + operator: '>=' + value: 25 + - color: rgb(255,255,0) + icon: mdi:battery-20 + operator: '>=' + value: 16 + - color: rgb(255,0,0) + icon: mdi:battery-10 + operator: < + styles: + icon: + - animation: blink 2s ease infinite + value: 16 + type: custom:button-card + - aspect_ratio: 1.2/1 + entity: sensor.garage_laundry_door_battery + name: Laundry Door + show_state: true + state: + - color: rgb(0,255,0) + icon: mdi:battery + operator: '>=' + value: 95 + - color: rgb(0,255,0) + icon: mdi:battery-90 + operator: '>=' + value: 85 + - color: rgb(0,255,0) + operator: '>=' + value: 75 + icon: mdi:battery-80 + - color: rgb(0,255,0) + operator: '>=' + value: 65 + icon: mdi:battery-70 + - color: rgb(0,255,0) + operator: '>=' + value: 55 + icon: mdi:battery-60 + - color: rgb(0,255,0) + icon: mdi:battery-50 + operator: '>=' + value: 45 + - color: rgb(0,255,0) + icon: mdi:battery-40 + operator: '>=' + value: 31 + - color: rgb(255,255,0) + icon: mdi:battery-30 + operator: '>=' + value: 25 + - color: rgb(255,255,0) + icon: mdi:battery-20 + operator: '>=' + value: 16 + - color: rgb(255,0,0) + icon: mdi:battery-10 + operator: < + styles: + icon: + - animation: blink 2s ease infinite + value: 16 + type: custom:button-card + - aspect_ratio: 1.2/1 + entity: sensor.garage_service_door_battery + name: Service Door + show_state: true + state: + - color: rgb(0,255,0) + icon: mdi:battery + operator: '>=' + value: 95 + - color: rgb(0,255,0) + icon: mdi:battery-90 + operator: '>=' + value: 85 + - color: rgb(0,255,0) + operator: '>=' + value: 75 + icon: mdi:battery-80 + - color: rgb(0,255,0) + operator: '>=' + value: 65 + icon: mdi:battery-70 + - color: rgb(0,255,0) + operator: '>=' + value: 55 + icon: mdi:battery-60 + - color: rgb(0,255,0) + icon: mdi:battery-50 + operator: '>=' + value: 45 + - color: rgb(0,255,0) + icon: mdi:battery-40 + operator: '>=' + value: 31 + - color: rgb(255,255,0) + icon: mdi:battery-30 + operator: '>=' + value: 25 + - color: rgb(255,255,0) + icon: mdi:battery-20 + operator: '>=' + value: 16 + - color: rgb(255,0,0) + icon: mdi:battery-10 + operator: < + styles: + icon: + - animation: blink 2s ease infinite + value: 16 + type: custom:button-card + - aspect_ratio: 1.2/1 + entity: sensor.galaxys10_battery_level + name: Galaxy S10 + show_state: true + state: + - color: rgb(0,255,0) + icon: mdi:battery + operator: '>=' + value: 95 + - color: rgb(0,255,0) + icon: mdi:battery-90 + operator: '>=' + value: 85 + - color: rgb(0,255,0) + operator: '>=' + value: 75 + icon: mdi:battery-80 + - color: rgb(0,255,0) + operator: '>=' + value: 65 + icon: mdi:battery-70 + - color: rgb(0,255,0) + operator: '>=' + value: 55 + icon: mdi:battery-60 + - color: rgb(0,255,0) + icon: mdi:battery-50 + operator: '>=' + value: 45 + - color: rgb(0,255,0) + icon: mdi:battery-40 + operator: '>=' + value: 31 + - color: rgb(255,255,0) + icon: mdi:battery-30 + operator: '>=' + value: 25 + - color: rgb(255,255,0) + icon: mdi:battery-20 + operator: '>=' + value: 16 + - color: rgb(255,0,0) + icon: mdi:battery-10 + operator: < + styles: + icon: + - animation: blink 2s ease infinite + value: 16 + type: custom:button-card + - text: Navigation + type: custom:text-divider-row + - type: grid + square: false + columns: 4 + cards: + - aspect_ratio: 1.2/1 + color_type: icon + icon: mdi:theater + name: Entertain. + tap_action: + action: navigate + navigation_path: /lovelace-tablet/home-theater + type: custom:button-card + - aspect_ratio: 1.2/1 + color_type: icon + icon: mdi:lightbulb + name: All Lights + tap_action: + action: navigate + navigation_path: /lovelace/all_lights + type: custom:button-card + - aspect_ratio: 1.2/1 + color_type: icon + icon: mdi:cast-audio + name: Media + tap_action: + action: navigate + navigation_path: /lovelace-tablet/media-players + type: custom:button-card + - aspect_ratio: 1.2/1 + color_type: icon + icon: mdi:video + name: Security + tap_action: + action: navigate + navigation_path: /lovelace-tablet/security + type: custom:button-card + - text: Scripts / Automations / Services + type: custom:text-divider-row + - square: false + columns: 4 + type: grid + cards: + - aspect_ratio: 1.7/1 + entity_picture: /local/espn.png + name: ESPN + show_entity_picture: true + show_name: true + tap_action: + action: call-service + service: script.espn + type: custom:button-card + - aspect_ratio: 1.7/1 + entity_picture: /local/golf.jpg + name: Golf + show_entity_picture: true + show_name: true + tap_action: + action: call-service + service: script.golf + type: custom:button-card + - aspect_ratio: 1.7/1 + entity_picture: /local/nfl.jpg + name: NFL + show_entity_picture: true + show_name: true + tap_action: + action: call-service + service: script.nfl + type: custom:button-card + - aspect_ratio: 1.7/1 + entity_picture: /local/nhl.jpg + name: NHL + show_entity_picture: true + show_name: true + tap_action: + action: call-service + service: script.nhl + type: custom:button-card + - aspect_ratio: 1.7/1 + entity_picture: /local/usa.png + name: USA + show_entity_picture: true + show_name: true + tap_action: + action: call-service + service: script.usa + type: custom:button-card + - aspect_ratio: 1.7/1 + entity_picture: /local/history.jpg + name: History + show_entity_picture: true + show_name: true + tap_action: + action: call-service + service: script.history + type: custom:button-card + - aspect_ratio: 1.7/1 + entity_picture: /local/paramount.png + name: Paramount + show_entity_picture: true + show_name: true + tap_action: + action: call-service + service: script.paramount + type: custom:button-card + - aspect_ratio: 1.7/1 + entity_picture: /local/ifc.png + name: IFC + show_entity_picture: true + show_name: true + tap_action: + action: call-service + service: script.ifc + type: custom:button-card + - type: vertical-stack + cards: + - text: Animation and Styles + type: custom:text-divider-row + - square: false + columns: 4 + type: grid + cards: + - type: custom:button-card + entity: sensor.thermostat_current_mode + aspect_ratio: 1.3/1 + color_type: icon + name: HVAC - Idle + show_state: false + show_name: true + icon: mdi:fan + color: rgb(128,128,128) + state: + - value: heating + name: HVAC - Heating + styles: + icon: + - animation: rotating 2s linear infinite + - color: rgb(255,0,0) + name: + - color: rgb(255,0,0) + - value: cooling + name: HVAC - Cooling + styles: + icon: + - animation: rotating 2s linear infinite + - color: rgb(0,217,255) + name: + - color: rgb(0,217,255) + - value: 'off' + name: HVAC - OFF + styles: + icon: + - color: rgb(255,255,0) + name: + - color: rgb(255,255,0) + - type: custom:button-card + aspect_ratio: 1.2/1 + color: rgb(0,255,0) + color_type: icon + entity: cover.garage_door + name: Garage Door + show_name: true + show_state: false + state: + - color: rgb(255,0,0) + icon: mdi:garage + value: open + - color: rgb(0,255,0) + icon: mdi:garage-open + styles: + icon: + - animation: blink 2s ease infinite + value: closed + - type: custom:button-card + name: Change Background + aspect_ratio: 2/1 + extra_styles: | + @keyframes bgswap1 { + 0% { + background-image: url("/local/scarlett_home.jpg"); + } + 25% { + background-image: url("/local/scarlett_away.jpg"); + } + 50% { + background-image: url("/local/mks_away.jpg"); + } + 75% { + background-image: url("/local/mks_home.jpg"); + } + 100% { + background-image: url("/local/scarlett_home.jpg"); + } + } + styles: + card: + - animation: bgswap1 10s linear infinite + - background-size: cover + name: + - color: white \ No newline at end of file diff --git a/home-assistant/input_boolean.json b/home-assistant/input_boolean.json index 84810c8..cdbc8f2 100644 --- a/home-assistant/input_boolean.json +++ b/home-assistant/input_boolean.json @@ -6,7 +6,7 @@ "items": [ { "id": "enable_person_detect_alarm", - "name": "Enable Person Detect Alarm", + "name": "Person Detect", "icon": "mdi:run" }, { @@ -23,6 +23,31 @@ "id": "notify_nokia_c20", "name": "Notify Nokia C20", "icon": "mdi:cellphone-text" + }, + { + "id": "driveway_motion_detected", + "name": "Driveway Motion Detected", + "icon": "mdi:motion-sensor" + }, + { + "id": "westwall_motion_detected", + "name": "Westwall Motion Detected", + "icon": "mdi:motion-sensor" + }, + { + "id": "backyard_motion_detected", + "name": "Backyard Motion Detected", + "icon": "mdi:motion-sensor" + }, + { + "id": "eastwall_motion_detected", + "name": "Eastwall Motion Detected", + "icon": "mdi:motion-sensor" + }, + { + "id": "patio_motion_detected", + "name": "Patio Motion Detected", + "icon": "mdi:motion-sensor" } ] }