diff --git a/automations/things/handle_dreamsurface_brightness.yaml b/automations/things/handle_dreamsurface_brightness.yaml
index b7975f4..b594def 100644
--- a/automations/things/handle_dreamsurface_brightness.yaml
+++ b/automations/things/handle_dreamsurface_brightness.yaml
@@ -1,48 +1,48 @@
-alias: Handle DreamSurface Brightness
-id: handle_dreamsurface_brightness
-description: "Handle DreamSurface Brightness"
-trigger:
- - platform: state
- id: going_to_bed
- entity_id: input_boolean.clint_in_bed
- from: "off"
- to: "on"
-
- - platform: state
- id: waking_up
- entity_id: input_boolean.clint_in_bed
- from: "on"
- to: "off"
-
-# condition:
-# - alias: "The home is occupied"
-# condition: state
-# entity_id: input_boolean.home_occupied
-# state: "on"
-
-# - alias: "Its not bedtime"
-# condition: state
-# entity_id: input_boolean.bedtime
-# state: "off"
-
-action:
- - choose:
- - conditions:
- - condition: trigger
- id: going_to_bed
-
- sequence:
- - service: button.press
- data: {}
- target:
- entity_id: button.dreamsurface_low_brightness
-
- - conditions:
- - condition: trigger
- id: waking_up
-
- sequence:
- - service: button.press
- data: {}
- target:
+alias: Handle DreamSurface Brightness
+id: handle_dreamsurface_brightness
+description: "Handle DreamSurface Brightness"
+trigger:
+ - platform: state
+ id: going_to_bed
+ entity_id: input_boolean.clint_in_bed
+ from: "off"
+ to: "on"
+
+ - platform: state
+ id: waking_up
+ entity_id: input_boolean.clint_in_bed
+ from: "on"
+ to: "off"
+
+# condition:
+# - alias: "The home is occupied"
+# condition: state
+# entity_id: input_boolean.home_occupied
+# state: "on"
+
+# - alias: "Its not bedtime"
+# condition: state
+# entity_id: input_boolean.bedtime
+# state: "off"
+
+action:
+ - choose:
+ - conditions:
+ - condition: trigger
+ id: going_to_bed
+
+ sequence:
+ - service: button.press
+ data: {}
+ target:
+ entity_id: button.dreamsurface_low_brightness
+
+ - conditions:
+ - condition: trigger
+ id: waking_up
+
+ sequence:
+ - service: button.press
+ data: {}
+ target:
entity_id: button.dreamsurface_normal_brightness
\ No newline at end of file
diff --git a/components/notifies/precipitation.yaml b/components/notifies/precipitation.yaml
index 8653078..ffca838 100644
--- a/components/notifies/precipitation.yaml
+++ b/components/notifies/precipitation.yaml
@@ -1,4 +1,4 @@
-name: Precipitation
-platform: file
-filename: /config/custom_logs/precipitation.csv
+name: Precipitation
+platform: file
+filename: /config/custom_logs/precipitation.csv
timestamp: false
\ No newline at end of file
diff --git a/components/packages/automatic_sprinkler_system.yaml b/components/packages/automatic_sprinkler_system.yaml
index d75eaed..0d7c31f 100644
--- a/components/packages/automatic_sprinkler_system.yaml
+++ b/components/packages/automatic_sprinkler_system.yaml
@@ -1,778 +1,778 @@
-input_boolean:
- sprinkler_is_winterized:
- name: "Sprinkler: Is Winterized"
- icon: mdi:sprinkler
-
- log_precipitation:
- name: "Log Precipitation"
- icon: mdi:file
-
- log_soil_moisture:
- name: "Log Soil Moisture"
- icon: mdi:file
-
-input_datetime:
- sprinkler_last_reset:
- name: "Sprinkler: Last Reset"
- icon: mdi:calendar
- has_date: true
- has_time: false
-
- sprinkler_last_run:
- name: "Sprinkler: Last Run"
- icon: mdi:calendar
- has_date: true
- has_time: false
-
- sprinkler_next_dawn:
- name: "Sprinkler: Next Dawn"
- icon: mdi:weather-sunset-up
- has_date: true
- has_time: true
-
-input_number:
- sprinkler_days_before_high_run:
- name: "Sprinkler: Days Before High Run"
- icon: mdi:calendar
- min: 0
- max: 10
- step: 1
- mode: box
-
- sprinkler_days_before_medium_run:
- name: "Sprinkler: Days Before Medium Run"
- icon: mdi:calendar
- min: 0
- max: 10
- step: 1
- mode: box
-
- sprinkler_days_before_low_run:
- name: "Sprinkler: Days Before Low Run"
- icon: mdi:calendar
- min: 0
- max: 10
- step: 1
- mode: box
-
- sprinkler_days_before_reset:
- name: "Sprinkler: Days Before Reset"
- icon: mdi:calendar
- min: 0
- max: 20
- step: 1
- mode: box
-
- sprinkler_precipitation_below_high_run:
- name: "Sprinkler: Precipitation Below - High Run"
- icon: mdi:water
- min: 0
- max: 50
- step: 0.1
- unit_of_measurement: mm
- mode: box
-
- sprinkler_precipitation_below_medium_run:
- name: "Sprinkler: Precipitation Below - Medium Run"
- icon: mdi:water
- min: 0
- max: 50
- step: 0.1
- unit_of_measurement: mm
- mode: box
-
- sprinkler_precipitation_below_low_run:
- name: "Sprinkler: Precipitation Below - Low Run"
- icon: mdi:water
- min: 0
- max: 50
- step: 0.1
- unit_of_measurement: mm
- mode: box
-
- sprinkler_temp_above_high_run:
- name: "Sprinkler: Temp Above - High Run"
- icon: mdi:thermometer-high
- min: 50
- max: 90
- step: 1
- unit_of_measurement: °F
-
- sprinkler_temp_above_medium_run:
- name: "Sprinkler: Temp Above - Medium Run"
- icon: mdi:thermometer
- min: 50
- max: 90
- step: 1
- unit_of_measurement: °F
-
- sprinkler_temp_above_low_run:
- name: "Sprinkler: Temp Above - Low Run"
- icon: mdi:thermometer-low
- min: 50
- max: 90
- step: 1
- unit_of_measurement: °F
-
- sprinkler_maximum_temperature_measured:
- name: "Sprinkler: Maximum Temperature Measured"
- icon: mdi:thermometer
- min: -20
- max: 150
- step: 0.01
- unit_of_measurement: °F
- mode: box
-
- sprinkler_repeat_program_amount:
- name: "Sprinkler: Repeat Program Amount"
- icon: mdi:pound
- min: 0
- max: 10
- step: 1
-
- sprinkler_high_water_level:
- name: "Sprinkler: High Water Level"
- icon: mdi:water-plus
- min: 0
- max: 300
- step: 1
- mode: box
-
- sprinkler_medium_water_level:
- name: "Sprinkler: Medium Water Level"
- icon: mdi:water
- min: 0
- max: 300
- step: 1
- mode: box
-
- sprinkler_low_water_level:
- name: "Sprinkler: Low Water Level"
- icon: mdi:water-minus
- min: 0
- max: 300
- step: 1
- mode: box
-
-template:
- - trigger:
- - platform: state
- entity_id:
- - input_number.sprinkler_maximum_temperature_measured
- - sensor.sprinkler_total_rain_fallen_plus_expected
- - sensor.sprinkler_days_since_last_watering
- - input_number.sprinkler_temp_above_high_run
- - input_number.sprinkler_temp_above_medium_run
- - input_number.sprinkler_temp_above_low_run
- - input_number.sprinkler_precipitation_below_high_run
- - input_number.sprinkler_precipitation_below_medium_run
- - input_number.sprinkler_precipitation_below_low_run
- - input_number.sprinkler_days_before_high_run
- - input_number.sprinkler_days_before_medium_run
- - input_number.sprinkler_days_before_low_run
- - switch.opensprinkler_enabled
- not_to: "unavailable"
-
- - platform: event
- event_type: event_template_reloaded
- id: "reload"
-
- - platform: homeassistant
- event: start
-
- sensor:
- - name: "Sprinkler: Current Status"
- unique_id: "custom_sensor.sprinkler_current_status"
- icon: mdi:sprinkler-variant
- state: >
- {%- if is_state('input_boolean.sprinkler_is_winterized','on') %}
- Sprinkler is winterized
- {%- else %}
- {%- if is_state('switch.opensprinkler_enabled','on') %}
- {%- if states('input_number.sprinkler_maximum_temperature_measured') | int(default=0) > states('input_number.sprinkler_temp_above_low_run') | int(default=0) %}
- {%- if states('input_number.sprinkler_maximum_temperature_measured') | int(default=0) > states('input_number.sprinkler_temp_above_medium_run') | int(default=0) %}
- {%- if states('input_number.sprinkler_maximum_temperature_measured') | int(default=0) > states('input_number.sprinkler_temp_above_high_run') | int(default=0) %}
- {%- if states('sensor.sprinkler_total_rain_fallen_plus_expected') | float(default=0) < states('input_number.sprinkler_precipitation_below_high_run') | float(default=0.0) -%}
- {%- if states('sensor.sprinkler_days_since_last_watering') | float(default=0) > states('input_number.sprinkler_days_before_high_run') | float(default=10.0) -%}
- High
- {%- else %}
- Too Soon
- {% endif %}
- {%- else %}
- Too Wet
- {% endif %}
- {%- else %}
- {%- if states('sensor.sprinkler_total_rain_fallen_plus_expected') | float(default=0) < states('input_number.sprinkler_precipitation_below_medium_run') | float(default=0.0) %}
- {%- if states('sensor.sprinkler_days_since_last_watering') | float(default=0) > states('input_number.sprinkler_days_before_medium_run') | float(default=10.0) %}
- Medium
- {%- else %}
- Too Soon
- {% endif %}
- {%- else %}
- Too Wet
- {%- endif %}
- {% endif %}
- {%- else %}
- {%- if states('sensor.sprinkler_total_rain_fallen_plus_expected') | float(default=0) < states('input_number.sprinkler_precipitation_below_low_run') | float(default=0.0) %}
- {%- if states('sensor.sprinkler_days_since_last_watering') | float(default=0) > states('input_number.sprinkler_days_before_low_run') | float(default=10.0) %}
- Low
- {%- else %}
- Too Soon
- {% endif %}
- {%- else %}
- Too Wet
- {% endif %}
- {% endif %}
- {%- else %}
- Too Cold
- {% endif %}
- {%- else %}
- Off
- {% endif %}
- {% endif %}
-
- - trigger:
- - platform: state
- entity_id: sensor.sprinkler_recent_rain_precipitation
-
- - platform: event
- event_type: event_template_reloaded
- id: "reload"
-
- - platform: homeassistant
- event: start
-
- sensor:
- - name: "Sprinkler: Total Rain Fallen Plus Expected"
- unique_id: "custom_sensor.sprinkler_total_rain_fallen_plus_expected"
- icon: mdi:weather-pouring
- unit_of_measurement: mm
- availability: "{{ states('sensor.sprinkler_recent_rain_precipitation') not in ['unkown', 'unavailable'] }}"
- state: >
- {{ (states('sensor.sprinkler_recent_rain_precipitation') | float + states('sensor.sprinkler_total_expected_precipitation') | float(default=100.0) ) | round(2) }}
-
- - trigger:
- - platform: state
- entity_id: sensor.sun_next_rising
-
- - platform: event
- event_type: event_template_reloaded
- id: "reload"
-
- - platform: homeassistant
- event: start
-
- sensor:
- - name: "Sprinkler: One Hour Before Sunrise"
- unique_id: "custom_sensor.sprinkler_one_hour_before_sunrise"
- icon: mdi:clock
- device_class: timestamp
- state: >
- {{ (( as_timestamp(states('sensor.sun_next_rising')) - 3600) | timestamp_utc) }}
-
- - trigger:
- - platform: state
- entity_id:
- - sensor.opensprinkler_water_level
- - input_number.front_yard_station_minutes
- - input_number.east_side_station_minutes
- - input_number.back_yard_station_minutes
- - input_number.west_side_station_minutes
- - input_number.sprinkler_repeat_program_amount
-
- - platform: event
- event_type: event_template_reloaded
- id: "reload"
-
- - platform: homeassistant
- event: start
-
- sensor:
- - name: "Sprinkler: Expected Run Length"
- unique_id: "custom_sensor.sprinkler_expected_run_length"
- icon: mdi:clock
- unit_of_measurement: seconds
- availability: >
- {{ states('sensor.opensprinkler_water_level') not in ['unkown', 'unavailable'] and
- states('input_number.front_yard_station_minutes') not in ['unkown', 'unavailable'] and
- states('input_number.east_side_station_minutes') not in ['unkown', 'unavailable'] and
- states('input_number.back_yard_station_minutes') not in ['unkown', 'unavailable'] and
- states('input_number.west_side_station_minutes') not in ['unkown', 'unavailable'] and
- states('input_number.sprinkler_repeat_program_amount') not in ['unkown', 'unavailable'] }}
- state: >
- {{ states("sensor.opensprinkler_water_level")| float(default=0) | multiply(0.01) | multiply(states("input_number.front_yard_station_minutes") | multiply(60)) | float(default=0) +
- states("sensor.opensprinkler_water_level")| float(default=0) | multiply(0.01) | multiply(states("input_number.east_side_station_minutes") | multiply(60)) | float(default=0) +
- states("sensor.opensprinkler_water_level")| float(default=0) | multiply(0.01) | multiply(states("input_number.back_yard_station_minutes") | multiply(60)) | float(default=0) +
- states("sensor.opensprinkler_water_level")| float(default=0) | multiply(0.01) | multiply(states("input_number.west_side_station_minutes") | multiply(60)) | float(default=0) *
- states("input_number.sprinkler_repeat_program_amount") | float(default=0) }}
-
- attributes:
- front_yard: "{{ states('sensor.opensprinkler_water_level')| float(default=0) | multiply(0.01) | multiply(states('input_number.front_yard_station_minutes') | multiply(60)) | float(default=0) }} seconds"
- east_side: "{{ states('sensor.opensprinkler_water_level')| float(default=0) | multiply(0.01) | multiply(states('input_number.east_side_station_minutes') | multiply(60)) | float(default=0) }} seconds"
- back_yard: "{{ states('sensor.opensprinkler_water_level')| float(default=0) | multiply(0.01) | multiply(states('input_number.back_yard_station_minutes') | multiply(60)) | float(default=0) }} seconds"
- west_side: "{{ states('sensor.opensprinkler_water_level')| float(default=0) | multiply(0.01) | multiply(states('input_number.west_side_station_minutes') | multiply(60)) | float(default=0) }} seconds"
- water_level: "{{ states('sensor.opensprinkler_water_level') | float(default=0) }}%"
- run_cycle: "{{ states('input_number.sprinkler_repeat_program_amount') | float(default=0) }} time(s)"
-
- - trigger:
- - platform: time_pattern
- minutes: "/5"
-
- - platform: state
- entity_id: input_datetime.sprinkler_last_reset
-
- - platform: state
- entity_id: input_datetime.sprinkler_next_dawn
-
- - platform: event
- event_type: event_template_reloaded
- id: "reload"
-
- - platform: homeassistant
- event: start
-
- sensor:
- - name: "Sprinkler: Days Since Last Watering"
- unique_id: "custom_sensor.sprinkler_days_since_last_watering"
- icon: mdi:calendar
- state: >
- {{ ((as_timestamp(states('sensor.sprinkler_one_hour_before_sunrise')) - as_timestamp(states('input_datetime.sprinkler_last_reset'))) / 86400 | float) | round(2) }}
-
- # This really isn't needed. It just checks the trend binary_sensor.is_raining, and keeps it 'on' an extra 15 minutes
- - trigger:
- - platform: state
- entity_id: binary_sensor.is_raining
- not_from:
- - "unknown"
- - "unavailable"
-
- binary_sensor:
- - name: "Sprinkler: Raining"
- unique_id: "custom_binary_sensor.sprinkler_raining"
- device_class: moisture
- delay_off:
- minutes: 15
- # availability: "{{ states('sensor.rain_quarter_hourly_precipitation') not in ['unkown', 'unavailable'] }}"
- # state: >
- # {{ states('sensor.rain_quarter_hourly_precipitation') | float(default=0) > 0.0 }}
- availability: "{{ states('binary_sensor.is_raining') not in ['unkown', 'unavailable'] }}"
- state: >
- {{ states('binary_sensor.is_raining') }}
-
- - trigger:
- # - platform: homeassistant
- # event: start
-
- # - platform: time
- # at: '01:00:00'
-
- # - platform: state
- # entity_id: input_boolean.sprinkler_is_winterized
-
- binary_sensor:
- - name: "Sprinkler: In Season"
- unique_id: "custom_binary_sensor.sprinkler_in_season"
- device_class: moisture
- state: "{{ now().month > 4 and now().month < 10 }}"
-
- # - trigger:
- # - platform: homeassistant
- # event: start
-
- # - platform: time
- # at: '01:00:00'
-
- # - platform: state
- # entity_id: input_boolean.sprinkler_is_winterized
-
- # - platform: event
- # event_type: event_template_reloaded
- # id: "reload"
-
- # binary_sensor:
- # - name: "Sprinkler: Should Winterize"
- # unique_id: "custom_binary_sensor.sprinkler_should_winterize"
- # device_class: problem
- # state: "{{ iif(is_state('binary_sensor.sprinkler_in_season', 'off'), iif(is_state('input_boolean.sprinkler_is_winterized', 'off'), 'on', 'off'), 'off') }}"
-
- # - trigger:
- # - platform: homeassistant
- # event: start
-
- # - platform: time
- # at: '01:00:00'
-
- # - platform: state
- # entity_id: input_boolean.sprinkler_is_winterized
-
- # - platform: event
- # event_type: event_template_reloaded
- # id: "reload"
-
- # binary_sensor:
- # - name: "Sprinkler: Should Dewinterize"
- # unique_id: "custom_binary_sensor.sprinkler_should_dewinterize"
- # device_class: problem
- # state: "{{ iif(is_state('binary_sensor.sprinkler_in_season', 'on'), iif(is_state('input_boolean.sprinkler_is_winterized', 'on'), 'on', 'off'), 'off') }}"
-
-automation:
- - alias: "Log Precipitation"
- id: 1f133cd1-7e69-4eb9-ba5f-7fa967dd869d
- trigger:
- - platform: state
- entity_id: input_boolean.log_precipitation
- from: "off"
- to: "on"
-
- - platform: state
- entity_id: sensor.ecowitt_wh40_21917_precipitation
- not_to:
- - "unknown"
- - "unavailable"
-
- - platform: state
- entity_id: binary_sensor.is_raining
-
- condition:
- - condition: state
- entity_id: input_boolean.log_precipitation
- state: "on"
- action:
- - service: notify.precipitation
- data:
- message: "{{now().strftime('%Y-%m-%d')}}T{{now().strftime('%H:%M:%S.%f')}},{{states('sensor.ecowitt_wh40_21917_precipitation')}},{{states('binary_sensor.is_raining')}},{{state_attr('binary_sensor.is_raining','sample_count')}},{{state_attr('binary_sensor.is_raining','sample_duration')}},{{state_attr('binary_sensor.is_raining','min_gradient')}},{{state_attr('binary_sensor.is_raining','gradient')}}"
-
-
- - alias: "Log Soil Moisture"
- id: 362fbc8d-64f1-47dd-a686-e460e9c18690
- trigger:
- - platform: state
- entity_id: input_boolean.log_soil_moisture
- from: "off"
- to: "on"
-
- - platform: state
- entity_id: sensor.fineoffset_wh51_00f935_moisture
- not_to:
- - "unknown"
- - "unavailable"
-
- - platform: state
- entity_id: sensor.fineoffset_wh51_0ce593_moisture
- not_to:
- - "unknown"
- - "unavailable"
-
- - platform: state
- entity_id: sensor.fineoffset_wh51_0d1e11_moisture
- not_to:
- - "unknown"
- - "unavailable"
-
- condition:
- - condition: state
- entity_id: input_boolean.log_soil_moisture
- state: "on"
- action:
- - service: notify.soil_moisture
- data:
- message: "{{now().strftime('%Y-%m-%d')}}T{{now().strftime('%H:%M:%S.%f')}},{{states('sensor.fineoffset_wh51_00f935_moisture')}},{{states('sensor.fineoffset_wh51_0ce593_moisture')}},{{states('sensor.fineoffset_wh51_0d1e11_moisture')}}"
-
- - alias: "Sprinkler: Reset After Automatic Run"
- id: automation_sprinkler_reset_after_automatic_run
- trigger:
- - platform: state
- entity_id: binary_sensor.automatic_run_program_running
- from: "on"
- to: "off"
- action:
- - service: script.sprinkler_reset_helper_values
-
- - service: input_datetime.set_datetime
- target:
- entity_id: input_datetime.sprinkler_last_run
- data:
- timestamp: "{{ as_timestamp(now()) }}"
-
- - alias: "Sprinkler: Update Next Dawn"
- id: automation_sprinkler_update_next_dawn
- trigger:
- - platform: state
- entity_id: sensor.sun_next_dawn
- condition: "{{ states('sensor.sun_next_dawn') not in ['unkown', 'unavailable'] }}"
- action:
- - service: input_datetime.set_datetime
- target:
- entity_id: input_datetime.sprinkler_next_dawn
- data:
- timestamp: "{{ as_timestamp(states('sensor.sun_next_dawn')) }}"
-
- - alias: "Sprinkler: Check Maximum Temperature When Temperature Changes"
- id: automation_sprinkler_check_maximum_temperature_when_temperature_changes
- trigger:
- - platform: state
- entity_id: sensor.outdoors_mean_temperature
- condition:
- - condition: numeric_state
- entity_id: sensor.outdoors_mean_temperature
- above: input_number.sprinkler_maximum_temperature_measured
- action:
- service: input_number.set_value
- target:
- entity_id: input_number.sprinkler_maximum_temperature_measured
- data:
- value: "{{ states('sensor.outdoors_mean_temperature') | float(default=50) }}"
-
- - alias: "Sprinkler: Stop Watering If Starts Raining"
- id: 74ef91ed-6665-4e24-a817-c1a3540d2e3d
- trigger:
- - platform: state
- entity_id: binary_sensor.is_raining
- to: 'on'
-
- condition:
- condition: or
- conditions:
- - condition: state
- entity_id: binary_sensor.back_yard_station_running
- state: "on"
- - condition: state
- entity_id: binary_sensor.front_yard_station_running
- state: "on"
- - condition: state
- entity_id: binary_sensor.east_side_station_running
- state: "on"
- - condition: state
- entity_id: binary_sensor.west_side_station_running
- state: "on"
- - condition: state
- entity_id: binary_sensor.s05_station_running
- state: "on"
- - condition: state
- entity_id: binary_sensor.s06_station_running
- state: "on"
- - condition: state
- entity_id: binary_sensor.s07_station_running
- state: "on"
- - condition: state
- entity_id: binary_sensor.master_station_running
- state: "on"
-
- action:
- service: opensprinkler.stop
- data:
- entity_id: switch.opensprinkler_enabled
-
- - alias: "Sprinkler: Check If Yard Needs to Be Watered"
- id: automation_sprinkler_check_if_yard_needs_to_be_watered
- description: "If OpenSprinkler is enabled and the sprinkler system is not winterized, then check if the grass should be watered"
- mode: queued
- trigger:
- - platform: sun
- event: sunrise
- offset: "-01:15:00"
- - platform: state
- entity_id: sensor.sprinkler_total_rain_fallen_plus_expected
- - platform: state
- entity_id: input_number.sprinkler_maximum_temperature_measured
- - platform: state
- entity_id: sensor.sprinkler_days_since_last_watering
- - platform: state
- entity_id: input_number.sprinkler_temp_above_high_run
- - platform: state
- entity_id: input_number.sprinkler_temp_above_medium_run
- - platform: state
- entity_id: input_number.sprinkler_temp_above_low_run
-
- condition:
- - condition: state
- entity_id: switch.opensprinkler_enabled
- state: "on"
-
- - condition: state
- entity_id: input_boolean.sprinkler_is_winterized
- state: "off"
-
- action:
- - choose:
- # Check for High run
- - conditions:
- - condition: numeric_state
- entity_id: input_number.sprinkler_maximum_temperature_measured
- above: input_number.sprinkler_temp_above_high_run
- - condition: numeric_state
- entity_id: sensor.sprinkler_days_since_last_watering
- above: input_number.sprinkler_days_before_high_run #0
- - condition: numeric_state
- entity_id: sensor.sprinkler_total_rain_fallen_plus_expected
- below: input_number.sprinkler_precipitation_below_high_run #20.1
- sequence:
- - service: input_number.set_value
- target:
- entity_id: input_number.sprinkler_repeat_program_amount
- data:
- value: 1
- - service: opensprinkler.set_water_level
- data:
- entity_id: sensor.opensprinkler_water_level
- water_level: "{{ states('input_number.sprinkler_high_water_level') | int }}"
-
- # Check for Medium run
- - conditions:
- - condition: numeric_state
- entity_id: sensor.sprinkler_days_since_last_watering
- above: input_number.sprinkler_days_before_medium_run #2
- - condition: numeric_state
- entity_id: input_number.sprinkler_maximum_temperature_measured
- above: input_number.sprinkler_temp_above_medium_run
- below: input_number.sprinkler_temp_above_high_run
- - condition: numeric_state
- entity_id: sensor.sprinkler_total_rain_fallen_plus_expected
- below: input_number.sprinkler_precipitation_below_medium_run #15.1
- sequence:
- - service: input_number.set_value
- target:
- entity_id: input_number.sprinkler_repeat_program_amount
- data:
- value: 1
- - service: opensprinkler.set_water_level
- data:
- entity_id: sensor.opensprinkler_water_level
- water_level: "{{ states('input_number.sprinkler_medium_water_level') | int }}"
-
- # Check for Low run
- - conditions:
- - condition: numeric_state
- entity_id: sensor.sprinkler_days_since_last_watering
- above: input_number.sprinkler_days_before_low_run #3
- - condition: numeric_state
- entity_id: input_number.sprinkler_maximum_temperature_measured
- above: input_number.sprinkler_temp_above_low_run
- below: input_number.sprinkler_temp_above_medium_run
- - condition: numeric_state
- entity_id: sensor.sprinkler_total_rain_fallen_plus_expected
- below: input_number.sprinkler_precipitation_below_low_run #10.1
- sequence:
- - service: input_number.set_value
- target:
- entity_id: input_number.sprinkler_repeat_program_amount
- data:
- value: 1
- - service: opensprinkler.set_water_level
- data:
- entity_id: sensor.opensprinkler_water_level
- water_level: "{{ states('input_number.sprinkler_low_water_level') | int }}"
-
- # Check for reset
- - conditions:
- - condition: numeric_state
- entity_id: sensor.sprinkler_days_since_last_watering
- above: input_number.sprinkler_days_before_reset #4
- sequence:
- - service: script.sprinkler_reset_helper_values
- data: {}
-
- default:
- - service: input_number.set_value
- target:
- entity_id: input_number.sprinkler_repeat_program_amount
- data:
- value: 0
- - service: opensprinkler.set_water_level
- data:
- entity_id: sensor.opensprinkler_water_level
- water_level: 0
-
-script:
- sprinkler_reset_helper_values:
- alias: "Sprinkler: Reset Helper Values"
- icon: mdi:refresh
- sequence:
- - service: input_number.set_value
- target:
- entity_id: input_number.sprinkler_maximum_temperature_measured
- data:
- value: "{{ states('sensor.outdoors_mean_temperature') | float(default=50) }}"
-
- - service: input_datetime.set_datetime
- target:
- entity_id: input_datetime.sprinkler_last_reset
- data:
- timestamp: "{{ as_timestamp(now()) }}"
-
- - service: utility_meter.reset
- data: {}
- target:
- entity_id: select.sprinkler_recent_rain
-
- sprinkler_start_scripted_watering:
- alias: "Sprinkler: Start Scripted Watering"
- icon: mdi:sprinkler-variant
- sequence:
- - alias: "Run the sprinkler program the appropriate number of times"
- repeat:
- count: "{{states('input_number.sprinkler_repeat_program_amount') | int }}"
- sequence:
- - service: opensprinkler.run
- data:
- entity_id: switch.opensprinkler_enabled
- run_seconds:
- - '{{ states("sensor.opensprinkler_water_level") | multiply(0.01) | multiply(states("input_number.front_yard_station_minutes") | multiply(60)) | int }}'
- - '{{ states("sensor.opensprinkler_water_level") | multiply(0.01) | multiply(states("input_number.east_side_station_minutes") | multiply(60)) | int }}'
- - '{{ states("sensor.opensprinkler_water_level") | multiply(0.01) | multiply(states("input_number.back_yard_station_minutes") | multiply(60)) | int }}'
- - '{{ states("sensor.opensprinkler_water_level") | multiply(0.01) | multiply(states("input_number.west_side_station_minutes") | multiply(60)) | int }}'
-
- - delay: '{{ states("sensor.opensprinkler_water_level") | multiply(0.01) | multiply(states("input_number.front_yard_station_minutes") | multiply(60)) | int }}'
- - delay: '{{ states("sensor.opensprinkler_water_level") | multiply(0.01) | multiply(states("input_number.east_side_station_minutes") | multiply(60)) | int }}'
- - delay: '{{ states("sensor.opensprinkler_water_level") | multiply(0.01) | multiply(states("input_number.back_yard_station_minutes") | multiply(60)) | int }}'
- - delay: '{{ states("sensor.opensprinkler_water_level") | multiply(0.01) | multiply(states("input_number.west_side_station_minutes") | multiply(60)) | int }}'
-
-utility_meter:
- rain_quarter_hourly:
- unique_id: utility_meter_rain_quarter_hourly
- name: "Rain: Quarter Hourly"
- source: sensor.ecowitt_wh40_21917_precipitation
- cycle: quarter-hourly
- tariffs:
- - Precipitation
-
- rain_hourly:
- unique_id: utility_meter_rain_hourly
- name: "Rain: Hourly"
- source: sensor.ecowitt_wh40_21917_precipitation
- cycle: hourly
- tariffs:
- - Precipitation
-
- rain_daily:
- unique_id: utility_meter_rain_daily
- name: "Rain: Daily"
- source: sensor.ecowitt_wh40_21917_precipitation
- cycle: daily
- offset: "12:00"
- tariffs:
- - Precipitation
-
- rain_monthly:
- unique_id: utility_meter_rain_monthly
- name: "Rain: Monthly"
- source: sensor.ecowitt_wh40_21917_precipitation
- cycle: monthly
- tariffs:
- - Precipitation
-
- rain_yearly:
- unique_id: utility_meter_rain_yearly
- name: "Rain: Yearly"
- source: sensor.ecowitt_wh40_21917_precipitation
- cycle: yearly
- tariffs:
- - Precipitation
-
- sprinkler_recent_rain:
- unique_id: utility_meter_sprinkler_recent_rain
- name: "Sprinkler: Recent Rain"
- source: sensor.ecowitt_wh40_21917_precipitation
- cycle: yearly
- tariffs:
- - Precipitation
+input_boolean:
+ sprinkler_is_winterized:
+ name: "Sprinkler: Is Winterized"
+ icon: mdi:sprinkler
+
+ log_precipitation:
+ name: "Log Precipitation"
+ icon: mdi:file
+
+ log_soil_moisture:
+ name: "Log Soil Moisture"
+ icon: mdi:file
+
+input_datetime:
+ sprinkler_last_reset:
+ name: "Sprinkler: Last Reset"
+ icon: mdi:calendar
+ has_date: true
+ has_time: false
+
+ sprinkler_last_run:
+ name: "Sprinkler: Last Run"
+ icon: mdi:calendar
+ has_date: true
+ has_time: false
+
+ sprinkler_next_dawn:
+ name: "Sprinkler: Next Dawn"
+ icon: mdi:weather-sunset-up
+ has_date: true
+ has_time: true
+
+input_number:
+ sprinkler_days_before_high_run:
+ name: "Sprinkler: Days Before High Run"
+ icon: mdi:calendar
+ min: 0
+ max: 10
+ step: 1
+ mode: box
+
+ sprinkler_days_before_medium_run:
+ name: "Sprinkler: Days Before Medium Run"
+ icon: mdi:calendar
+ min: 0
+ max: 10
+ step: 1
+ mode: box
+
+ sprinkler_days_before_low_run:
+ name: "Sprinkler: Days Before Low Run"
+ icon: mdi:calendar
+ min: 0
+ max: 10
+ step: 1
+ mode: box
+
+ sprinkler_days_before_reset:
+ name: "Sprinkler: Days Before Reset"
+ icon: mdi:calendar
+ min: 0
+ max: 20
+ step: 1
+ mode: box
+
+ sprinkler_precipitation_below_high_run:
+ name: "Sprinkler: Precipitation Below - High Run"
+ icon: mdi:water
+ min: 0
+ max: 50
+ step: 0.1
+ unit_of_measurement: mm
+ mode: box
+
+ sprinkler_precipitation_below_medium_run:
+ name: "Sprinkler: Precipitation Below - Medium Run"
+ icon: mdi:water
+ min: 0
+ max: 50
+ step: 0.1
+ unit_of_measurement: mm
+ mode: box
+
+ sprinkler_precipitation_below_low_run:
+ name: "Sprinkler: Precipitation Below - Low Run"
+ icon: mdi:water
+ min: 0
+ max: 50
+ step: 0.1
+ unit_of_measurement: mm
+ mode: box
+
+ sprinkler_temp_above_high_run:
+ name: "Sprinkler: Temp Above - High Run"
+ icon: mdi:thermometer-high
+ min: 50
+ max: 90
+ step: 1
+ unit_of_measurement: °F
+
+ sprinkler_temp_above_medium_run:
+ name: "Sprinkler: Temp Above - Medium Run"
+ icon: mdi:thermometer
+ min: 50
+ max: 90
+ step: 1
+ unit_of_measurement: °F
+
+ sprinkler_temp_above_low_run:
+ name: "Sprinkler: Temp Above - Low Run"
+ icon: mdi:thermometer-low
+ min: 50
+ max: 90
+ step: 1
+ unit_of_measurement: °F
+
+ sprinkler_maximum_temperature_measured:
+ name: "Sprinkler: Maximum Temperature Measured"
+ icon: mdi:thermometer
+ min: -20
+ max: 150
+ step: 0.01
+ unit_of_measurement: °F
+ mode: box
+
+ sprinkler_repeat_program_amount:
+ name: "Sprinkler: Repeat Program Amount"
+ icon: mdi:pound
+ min: 0
+ max: 10
+ step: 1
+
+ sprinkler_high_water_level:
+ name: "Sprinkler: High Water Level"
+ icon: mdi:water-plus
+ min: 0
+ max: 300
+ step: 1
+ mode: box
+
+ sprinkler_medium_water_level:
+ name: "Sprinkler: Medium Water Level"
+ icon: mdi:water
+ min: 0
+ max: 300
+ step: 1
+ mode: box
+
+ sprinkler_low_water_level:
+ name: "Sprinkler: Low Water Level"
+ icon: mdi:water-minus
+ min: 0
+ max: 300
+ step: 1
+ mode: box
+
+template:
+ - trigger:
+ - platform: state
+ entity_id:
+ - input_number.sprinkler_maximum_temperature_measured
+ - sensor.sprinkler_total_rain_fallen_plus_expected
+ - sensor.sprinkler_days_since_last_watering
+ - input_number.sprinkler_temp_above_high_run
+ - input_number.sprinkler_temp_above_medium_run
+ - input_number.sprinkler_temp_above_low_run
+ - input_number.sprinkler_precipitation_below_high_run
+ - input_number.sprinkler_precipitation_below_medium_run
+ - input_number.sprinkler_precipitation_below_low_run
+ - input_number.sprinkler_days_before_high_run
+ - input_number.sprinkler_days_before_medium_run
+ - input_number.sprinkler_days_before_low_run
+ - switch.opensprinkler_enabled
+ not_to: "unavailable"
+
+ - platform: event
+ event_type: event_template_reloaded
+ id: "reload"
+
+ - platform: homeassistant
+ event: start
+
+ sensor:
+ - name: "Sprinkler: Current Status"
+ unique_id: "custom_sensor.sprinkler_current_status"
+ icon: mdi:sprinkler-variant
+ state: >
+ {%- if is_state('input_boolean.sprinkler_is_winterized','on') %}
+ Sprinkler is winterized
+ {%- else %}
+ {%- if is_state('switch.opensprinkler_enabled','on') %}
+ {%- if states('input_number.sprinkler_maximum_temperature_measured') | int(default=0) > states('input_number.sprinkler_temp_above_low_run') | int(default=0) %}
+ {%- if states('input_number.sprinkler_maximum_temperature_measured') | int(default=0) > states('input_number.sprinkler_temp_above_medium_run') | int(default=0) %}
+ {%- if states('input_number.sprinkler_maximum_temperature_measured') | int(default=0) > states('input_number.sprinkler_temp_above_high_run') | int(default=0) %}
+ {%- if states('sensor.sprinkler_total_rain_fallen_plus_expected') | float(default=0) < states('input_number.sprinkler_precipitation_below_high_run') | float(default=0.0) -%}
+ {%- if states('sensor.sprinkler_days_since_last_watering') | float(default=0) > states('input_number.sprinkler_days_before_high_run') | float(default=10.0) -%}
+ High
+ {%- else %}
+ Too Soon
+ {% endif %}
+ {%- else %}
+ Too Wet
+ {% endif %}
+ {%- else %}
+ {%- if states('sensor.sprinkler_total_rain_fallen_plus_expected') | float(default=0) < states('input_number.sprinkler_precipitation_below_medium_run') | float(default=0.0) %}
+ {%- if states('sensor.sprinkler_days_since_last_watering') | float(default=0) > states('input_number.sprinkler_days_before_medium_run') | float(default=10.0) %}
+ Medium
+ {%- else %}
+ Too Soon
+ {% endif %}
+ {%- else %}
+ Too Wet
+ {%- endif %}
+ {% endif %}
+ {%- else %}
+ {%- if states('sensor.sprinkler_total_rain_fallen_plus_expected') | float(default=0) < states('input_number.sprinkler_precipitation_below_low_run') | float(default=0.0) %}
+ {%- if states('sensor.sprinkler_days_since_last_watering') | float(default=0) > states('input_number.sprinkler_days_before_low_run') | float(default=10.0) %}
+ Low
+ {%- else %}
+ Too Soon
+ {% endif %}
+ {%- else %}
+ Too Wet
+ {% endif %}
+ {% endif %}
+ {%- else %}
+ Too Cold
+ {% endif %}
+ {%- else %}
+ Off
+ {% endif %}
+ {% endif %}
+
+ - trigger:
+ - platform: state
+ entity_id: sensor.sprinkler_recent_rain_precipitation
+
+ - platform: event
+ event_type: event_template_reloaded
+ id: "reload"
+
+ - platform: homeassistant
+ event: start
+
+ sensor:
+ - name: "Sprinkler: Total Rain Fallen Plus Expected"
+ unique_id: "custom_sensor.sprinkler_total_rain_fallen_plus_expected"
+ icon: mdi:weather-pouring
+ unit_of_measurement: mm
+ availability: "{{ states('sensor.sprinkler_recent_rain_precipitation') not in ['unkown', 'unavailable'] }}"
+ state: >
+ {{ (states('sensor.sprinkler_recent_rain_precipitation') | float + states('sensor.sprinkler_total_expected_precipitation') | float(default=100.0) ) | round(2) }}
+
+ - trigger:
+ - platform: state
+ entity_id: sensor.sun_next_rising
+
+ - platform: event
+ event_type: event_template_reloaded
+ id: "reload"
+
+ - platform: homeassistant
+ event: start
+
+ sensor:
+ - name: "Sprinkler: One Hour Before Sunrise"
+ unique_id: "custom_sensor.sprinkler_one_hour_before_sunrise"
+ icon: mdi:clock
+ device_class: timestamp
+ state: >
+ {{ (( as_timestamp(states('sensor.sun_next_rising')) - 3600) | timestamp_utc) }}
+
+ - trigger:
+ - platform: state
+ entity_id:
+ - sensor.opensprinkler_water_level
+ - input_number.front_yard_station_minutes
+ - input_number.east_side_station_minutes
+ - input_number.back_yard_station_minutes
+ - input_number.west_side_station_minutes
+ - input_number.sprinkler_repeat_program_amount
+
+ - platform: event
+ event_type: event_template_reloaded
+ id: "reload"
+
+ - platform: homeassistant
+ event: start
+
+ sensor:
+ - name: "Sprinkler: Expected Run Length"
+ unique_id: "custom_sensor.sprinkler_expected_run_length"
+ icon: mdi:clock
+ unit_of_measurement: seconds
+ availability: >
+ {{ states('sensor.opensprinkler_water_level') not in ['unkown', 'unavailable'] and
+ states('input_number.front_yard_station_minutes') not in ['unkown', 'unavailable'] and
+ states('input_number.east_side_station_minutes') not in ['unkown', 'unavailable'] and
+ states('input_number.back_yard_station_minutes') not in ['unkown', 'unavailable'] and
+ states('input_number.west_side_station_minutes') not in ['unkown', 'unavailable'] and
+ states('input_number.sprinkler_repeat_program_amount') not in ['unkown', 'unavailable'] }}
+ state: >
+ {{ states("sensor.opensprinkler_water_level")| float(default=0) | multiply(0.01) | multiply(states("input_number.front_yard_station_minutes") | multiply(60)) | float(default=0) +
+ states("sensor.opensprinkler_water_level")| float(default=0) | multiply(0.01) | multiply(states("input_number.east_side_station_minutes") | multiply(60)) | float(default=0) +
+ states("sensor.opensprinkler_water_level")| float(default=0) | multiply(0.01) | multiply(states("input_number.back_yard_station_minutes") | multiply(60)) | float(default=0) +
+ states("sensor.opensprinkler_water_level")| float(default=0) | multiply(0.01) | multiply(states("input_number.west_side_station_minutes") | multiply(60)) | float(default=0) *
+ states("input_number.sprinkler_repeat_program_amount") | float(default=0) }}
+
+ attributes:
+ front_yard: "{{ states('sensor.opensprinkler_water_level')| float(default=0) | multiply(0.01) | multiply(states('input_number.front_yard_station_minutes') | multiply(60)) | float(default=0) }} seconds"
+ east_side: "{{ states('sensor.opensprinkler_water_level')| float(default=0) | multiply(0.01) | multiply(states('input_number.east_side_station_minutes') | multiply(60)) | float(default=0) }} seconds"
+ back_yard: "{{ states('sensor.opensprinkler_water_level')| float(default=0) | multiply(0.01) | multiply(states('input_number.back_yard_station_minutes') | multiply(60)) | float(default=0) }} seconds"
+ west_side: "{{ states('sensor.opensprinkler_water_level')| float(default=0) | multiply(0.01) | multiply(states('input_number.west_side_station_minutes') | multiply(60)) | float(default=0) }} seconds"
+ water_level: "{{ states('sensor.opensprinkler_water_level') | float(default=0) }}%"
+ run_cycle: "{{ states('input_number.sprinkler_repeat_program_amount') | float(default=0) }} time(s)"
+
+ - trigger:
+ - platform: time_pattern
+ minutes: "/5"
+
+ - platform: state
+ entity_id: input_datetime.sprinkler_last_reset
+
+ - platform: state
+ entity_id: input_datetime.sprinkler_next_dawn
+
+ - platform: event
+ event_type: event_template_reloaded
+ id: "reload"
+
+ - platform: homeassistant
+ event: start
+
+ sensor:
+ - name: "Sprinkler: Days Since Last Watering"
+ unique_id: "custom_sensor.sprinkler_days_since_last_watering"
+ icon: mdi:calendar
+ state: >
+ {{ ((as_timestamp(states('sensor.sprinkler_one_hour_before_sunrise')) - as_timestamp(states('input_datetime.sprinkler_last_reset'))) / 86400 | float) | round(2) }}
+
+ # This really isn't needed. It just checks the trend binary_sensor.is_raining, and keeps it 'on' an extra 15 minutes
+ - trigger:
+ - platform: state
+ entity_id: binary_sensor.is_raining
+ not_from:
+ - "unknown"
+ - "unavailable"
+
+ binary_sensor:
+ - name: "Sprinkler: Raining"
+ unique_id: "custom_binary_sensor.sprinkler_raining"
+ device_class: moisture
+ delay_off:
+ minutes: 15
+ # availability: "{{ states('sensor.rain_quarter_hourly_precipitation') not in ['unkown', 'unavailable'] }}"
+ # state: >
+ # {{ states('sensor.rain_quarter_hourly_precipitation') | float(default=0) > 0.0 }}
+ availability: "{{ states('binary_sensor.is_raining') not in ['unkown', 'unavailable'] }}"
+ state: >
+ {{ states('binary_sensor.is_raining') }}
+
+ - trigger:
+ # - platform: homeassistant
+ # event: start
+
+ # - platform: time
+ # at: '01:00:00'
+
+ # - platform: state
+ # entity_id: input_boolean.sprinkler_is_winterized
+
+ binary_sensor:
+ - name: "Sprinkler: In Season"
+ unique_id: "custom_binary_sensor.sprinkler_in_season"
+ device_class: moisture
+ state: "{{ now().month > 4 and now().month < 10 }}"
+
+ # - trigger:
+ # - platform: homeassistant
+ # event: start
+
+ # - platform: time
+ # at: '01:00:00'
+
+ # - platform: state
+ # entity_id: input_boolean.sprinkler_is_winterized
+
+ # - platform: event
+ # event_type: event_template_reloaded
+ # id: "reload"
+
+ # binary_sensor:
+ # - name: "Sprinkler: Should Winterize"
+ # unique_id: "custom_binary_sensor.sprinkler_should_winterize"
+ # device_class: problem
+ # state: "{{ iif(is_state('binary_sensor.sprinkler_in_season', 'off'), iif(is_state('input_boolean.sprinkler_is_winterized', 'off'), 'on', 'off'), 'off') }}"
+
+ # - trigger:
+ # - platform: homeassistant
+ # event: start
+
+ # - platform: time
+ # at: '01:00:00'
+
+ # - platform: state
+ # entity_id: input_boolean.sprinkler_is_winterized
+
+ # - platform: event
+ # event_type: event_template_reloaded
+ # id: "reload"
+
+ # binary_sensor:
+ # - name: "Sprinkler: Should Dewinterize"
+ # unique_id: "custom_binary_sensor.sprinkler_should_dewinterize"
+ # device_class: problem
+ # state: "{{ iif(is_state('binary_sensor.sprinkler_in_season', 'on'), iif(is_state('input_boolean.sprinkler_is_winterized', 'on'), 'on', 'off'), 'off') }}"
+
+automation:
+ - alias: "Log Precipitation"
+ id: 1f133cd1-7e69-4eb9-ba5f-7fa967dd869d
+ trigger:
+ - platform: state
+ entity_id: input_boolean.log_precipitation
+ from: "off"
+ to: "on"
+
+ - platform: state
+ entity_id: sensor.ecowitt_wh40_21917_precipitation
+ not_to:
+ - "unknown"
+ - "unavailable"
+
+ - platform: state
+ entity_id: binary_sensor.is_raining
+
+ condition:
+ - condition: state
+ entity_id: input_boolean.log_precipitation
+ state: "on"
+ action:
+ - service: notify.precipitation
+ data:
+ message: "{{now().strftime('%Y-%m-%d')}}T{{now().strftime('%H:%M:%S.%f')}},{{states('sensor.ecowitt_wh40_21917_precipitation')}},{{states('binary_sensor.is_raining')}},{{state_attr('binary_sensor.is_raining','sample_count')}},{{state_attr('binary_sensor.is_raining','sample_duration')}},{{state_attr('binary_sensor.is_raining','min_gradient')}},{{state_attr('binary_sensor.is_raining','gradient')}}"
+
+
+ - alias: "Log Soil Moisture"
+ id: 362fbc8d-64f1-47dd-a686-e460e9c18690
+ trigger:
+ - platform: state
+ entity_id: input_boolean.log_soil_moisture
+ from: "off"
+ to: "on"
+
+ - platform: state
+ entity_id: sensor.fineoffset_wh51_00f935_moisture
+ not_to:
+ - "unknown"
+ - "unavailable"
+
+ - platform: state
+ entity_id: sensor.fineoffset_wh51_0ce593_moisture
+ not_to:
+ - "unknown"
+ - "unavailable"
+
+ - platform: state
+ entity_id: sensor.fineoffset_wh51_0d1e11_moisture
+ not_to:
+ - "unknown"
+ - "unavailable"
+
+ condition:
+ - condition: state
+ entity_id: input_boolean.log_soil_moisture
+ state: "on"
+ action:
+ - service: notify.soil_moisture
+ data:
+ message: "{{now().strftime('%Y-%m-%d')}}T{{now().strftime('%H:%M:%S.%f')}},{{states('sensor.fineoffset_wh51_00f935_moisture')}},{{states('sensor.fineoffset_wh51_0ce593_moisture')}},{{states('sensor.fineoffset_wh51_0d1e11_moisture')}}"
+
+ - alias: "Sprinkler: Reset After Automatic Run"
+ id: automation_sprinkler_reset_after_automatic_run
+ trigger:
+ - platform: state
+ entity_id: binary_sensor.automatic_run_program_running
+ from: "on"
+ to: "off"
+ action:
+ - service: script.sprinkler_reset_helper_values
+
+ - service: input_datetime.set_datetime
+ target:
+ entity_id: input_datetime.sprinkler_last_run
+ data:
+ timestamp: "{{ as_timestamp(now()) }}"
+
+ - alias: "Sprinkler: Update Next Dawn"
+ id: automation_sprinkler_update_next_dawn
+ trigger:
+ - platform: state
+ entity_id: sensor.sun_next_dawn
+ condition: "{{ states('sensor.sun_next_dawn') not in ['unkown', 'unavailable'] }}"
+ action:
+ - service: input_datetime.set_datetime
+ target:
+ entity_id: input_datetime.sprinkler_next_dawn
+ data:
+ timestamp: "{{ as_timestamp(states('sensor.sun_next_dawn')) }}"
+
+ - alias: "Sprinkler: Check Maximum Temperature When Temperature Changes"
+ id: automation_sprinkler_check_maximum_temperature_when_temperature_changes
+ trigger:
+ - platform: state
+ entity_id: sensor.outdoors_mean_temperature
+ condition:
+ - condition: numeric_state
+ entity_id: sensor.outdoors_mean_temperature
+ above: input_number.sprinkler_maximum_temperature_measured
+ action:
+ service: input_number.set_value
+ target:
+ entity_id: input_number.sprinkler_maximum_temperature_measured
+ data:
+ value: "{{ states('sensor.outdoors_mean_temperature') | float(default=50) }}"
+
+ - alias: "Sprinkler: Stop Watering If Starts Raining"
+ id: 74ef91ed-6665-4e24-a817-c1a3540d2e3d
+ trigger:
+ - platform: state
+ entity_id: binary_sensor.is_raining
+ to: 'on'
+
+ condition:
+ condition: or
+ conditions:
+ - condition: state
+ entity_id: binary_sensor.back_yard_station_running
+ state: "on"
+ - condition: state
+ entity_id: binary_sensor.front_yard_station_running
+ state: "on"
+ - condition: state
+ entity_id: binary_sensor.east_side_station_running
+ state: "on"
+ - condition: state
+ entity_id: binary_sensor.west_side_station_running
+ state: "on"
+ - condition: state
+ entity_id: binary_sensor.s05_station_running
+ state: "on"
+ - condition: state
+ entity_id: binary_sensor.s06_station_running
+ state: "on"
+ - condition: state
+ entity_id: binary_sensor.s07_station_running
+ state: "on"
+ - condition: state
+ entity_id: binary_sensor.master_station_running
+ state: "on"
+
+ action:
+ service: opensprinkler.stop
+ data:
+ entity_id: switch.opensprinkler_enabled
+
+ - alias: "Sprinkler: Check If Yard Needs to Be Watered"
+ id: automation_sprinkler_check_if_yard_needs_to_be_watered
+ description: "If OpenSprinkler is enabled and the sprinkler system is not winterized, then check if the grass should be watered"
+ mode: queued
+ trigger:
+ - platform: sun
+ event: sunrise
+ offset: "-01:15:00"
+ - platform: state
+ entity_id: sensor.sprinkler_total_rain_fallen_plus_expected
+ - platform: state
+ entity_id: input_number.sprinkler_maximum_temperature_measured
+ - platform: state
+ entity_id: sensor.sprinkler_days_since_last_watering
+ - platform: state
+ entity_id: input_number.sprinkler_temp_above_high_run
+ - platform: state
+ entity_id: input_number.sprinkler_temp_above_medium_run
+ - platform: state
+ entity_id: input_number.sprinkler_temp_above_low_run
+
+ condition:
+ - condition: state
+ entity_id: switch.opensprinkler_enabled
+ state: "on"
+
+ - condition: state
+ entity_id: input_boolean.sprinkler_is_winterized
+ state: "off"
+
+ action:
+ - choose:
+ # Check for High run
+ - conditions:
+ - condition: numeric_state
+ entity_id: input_number.sprinkler_maximum_temperature_measured
+ above: input_number.sprinkler_temp_above_high_run
+ - condition: numeric_state
+ entity_id: sensor.sprinkler_days_since_last_watering
+ above: input_number.sprinkler_days_before_high_run #0
+ - condition: numeric_state
+ entity_id: sensor.sprinkler_total_rain_fallen_plus_expected
+ below: input_number.sprinkler_precipitation_below_high_run #20.1
+ sequence:
+ - service: input_number.set_value
+ target:
+ entity_id: input_number.sprinkler_repeat_program_amount
+ data:
+ value: 1
+ - service: opensprinkler.set_water_level
+ data:
+ entity_id: sensor.opensprinkler_water_level
+ water_level: "{{ states('input_number.sprinkler_high_water_level') | int }}"
+
+ # Check for Medium run
+ - conditions:
+ - condition: numeric_state
+ entity_id: sensor.sprinkler_days_since_last_watering
+ above: input_number.sprinkler_days_before_medium_run #2
+ - condition: numeric_state
+ entity_id: input_number.sprinkler_maximum_temperature_measured
+ above: input_number.sprinkler_temp_above_medium_run
+ below: input_number.sprinkler_temp_above_high_run
+ - condition: numeric_state
+ entity_id: sensor.sprinkler_total_rain_fallen_plus_expected
+ below: input_number.sprinkler_precipitation_below_medium_run #15.1
+ sequence:
+ - service: input_number.set_value
+ target:
+ entity_id: input_number.sprinkler_repeat_program_amount
+ data:
+ value: 1
+ - service: opensprinkler.set_water_level
+ data:
+ entity_id: sensor.opensprinkler_water_level
+ water_level: "{{ states('input_number.sprinkler_medium_water_level') | int }}"
+
+ # Check for Low run
+ - conditions:
+ - condition: numeric_state
+ entity_id: sensor.sprinkler_days_since_last_watering
+ above: input_number.sprinkler_days_before_low_run #3
+ - condition: numeric_state
+ entity_id: input_number.sprinkler_maximum_temperature_measured
+ above: input_number.sprinkler_temp_above_low_run
+ below: input_number.sprinkler_temp_above_medium_run
+ - condition: numeric_state
+ entity_id: sensor.sprinkler_total_rain_fallen_plus_expected
+ below: input_number.sprinkler_precipitation_below_low_run #10.1
+ sequence:
+ - service: input_number.set_value
+ target:
+ entity_id: input_number.sprinkler_repeat_program_amount
+ data:
+ value: 1
+ - service: opensprinkler.set_water_level
+ data:
+ entity_id: sensor.opensprinkler_water_level
+ water_level: "{{ states('input_number.sprinkler_low_water_level') | int }}"
+
+ # Check for reset
+ - conditions:
+ - condition: numeric_state
+ entity_id: sensor.sprinkler_days_since_last_watering
+ above: input_number.sprinkler_days_before_reset #4
+ sequence:
+ - service: script.sprinkler_reset_helper_values
+ data: {}
+
+ default:
+ - service: input_number.set_value
+ target:
+ entity_id: input_number.sprinkler_repeat_program_amount
+ data:
+ value: 0
+ - service: opensprinkler.set_water_level
+ data:
+ entity_id: sensor.opensprinkler_water_level
+ water_level: 0
+
+script:
+ sprinkler_reset_helper_values:
+ alias: "Sprinkler: Reset Helper Values"
+ icon: mdi:refresh
+ sequence:
+ - service: input_number.set_value
+ target:
+ entity_id: input_number.sprinkler_maximum_temperature_measured
+ data:
+ value: "{{ states('sensor.outdoors_mean_temperature') | float(default=50) }}"
+
+ - service: input_datetime.set_datetime
+ target:
+ entity_id: input_datetime.sprinkler_last_reset
+ data:
+ timestamp: "{{ as_timestamp(now()) }}"
+
+ - service: utility_meter.reset
+ data: {}
+ target:
+ entity_id: select.sprinkler_recent_rain
+
+ sprinkler_start_scripted_watering:
+ alias: "Sprinkler: Start Scripted Watering"
+ icon: mdi:sprinkler-variant
+ sequence:
+ - alias: "Run the sprinkler program the appropriate number of times"
+ repeat:
+ count: "{{states('input_number.sprinkler_repeat_program_amount') | int }}"
+ sequence:
+ - service: opensprinkler.run
+ data:
+ entity_id: switch.opensprinkler_enabled
+ run_seconds:
+ - '{{ states("sensor.opensprinkler_water_level") | multiply(0.01) | multiply(states("input_number.front_yard_station_minutes") | multiply(60)) | int }}'
+ - '{{ states("sensor.opensprinkler_water_level") | multiply(0.01) | multiply(states("input_number.east_side_station_minutes") | multiply(60)) | int }}'
+ - '{{ states("sensor.opensprinkler_water_level") | multiply(0.01) | multiply(states("input_number.back_yard_station_minutes") | multiply(60)) | int }}'
+ - '{{ states("sensor.opensprinkler_water_level") | multiply(0.01) | multiply(states("input_number.west_side_station_minutes") | multiply(60)) | int }}'
+
+ - delay: '{{ states("sensor.opensprinkler_water_level") | multiply(0.01) | multiply(states("input_number.front_yard_station_minutes") | multiply(60)) | int }}'
+ - delay: '{{ states("sensor.opensprinkler_water_level") | multiply(0.01) | multiply(states("input_number.east_side_station_minutes") | multiply(60)) | int }}'
+ - delay: '{{ states("sensor.opensprinkler_water_level") | multiply(0.01) | multiply(states("input_number.back_yard_station_minutes") | multiply(60)) | int }}'
+ - delay: '{{ states("sensor.opensprinkler_water_level") | multiply(0.01) | multiply(states("input_number.west_side_station_minutes") | multiply(60)) | int }}'
+
+utility_meter:
+ rain_quarter_hourly:
+ unique_id: utility_meter_rain_quarter_hourly
+ name: "Rain: Quarter Hourly"
+ source: sensor.ecowitt_wh40_21917_precipitation
+ cycle: quarter-hourly
+ tariffs:
+ - Precipitation
+
+ rain_hourly:
+ unique_id: utility_meter_rain_hourly
+ name: "Rain: Hourly"
+ source: sensor.ecowitt_wh40_21917_precipitation
+ cycle: hourly
+ tariffs:
+ - Precipitation
+
+ rain_daily:
+ unique_id: utility_meter_rain_daily
+ name: "Rain: Daily"
+ source: sensor.ecowitt_wh40_21917_precipitation
+ cycle: daily
+ offset: "12:00"
+ tariffs:
+ - Precipitation
+
+ rain_monthly:
+ unique_id: utility_meter_rain_monthly
+ name: "Rain: Monthly"
+ source: sensor.ecowitt_wh40_21917_precipitation
+ cycle: monthly
+ tariffs:
+ - Precipitation
+
+ rain_yearly:
+ unique_id: utility_meter_rain_yearly
+ name: "Rain: Yearly"
+ source: sensor.ecowitt_wh40_21917_precipitation
+ cycle: yearly
+ tariffs:
+ - Precipitation
+
+ sprinkler_recent_rain:
+ unique_id: utility_meter_sprinkler_recent_rain
+ name: "Sprinkler: Recent Rain"
+ source: sensor.ecowitt_wh40_21917_precipitation
+ cycle: yearly
+ tariffs:
+ - Precipitation
diff --git a/components/packages/automation.yaml b/components/packages/automation.yaml
index b777d75..caf1d41 100644
--- a/components/packages/automation.yaml
+++ b/components/packages/automation.yaml
@@ -1,2 +1,2 @@
-# Import default automations file
+# Import default automations file
automation: !include ../../automations.yaml
\ No newline at end of file
diff --git a/components/packages/bayesian_testing.yaml b/components/packages/bayesian_testing.yaml
index 23241fe..34ff486 100644
--- a/components/packages/bayesian_testing.yaml
+++ b/components/packages/bayesian_testing.yaml
@@ -1,68 +1,68 @@
-binary_sensor:
- - name: 'Bayesian Crunching'
- platform: 'bayesian'
- prior: 0.25
- probability_threshold: 0.7
- observations:
- - entity_id: 'input_boolean.bayesian_test_1' # Motion
- prob_given_true: 0.99
- prob_given_false: 0.85
- platform: 'state'
- to_state: 'on'
-
- - entity_id: 'input_boolean.bayesian_test_2' # Person
- prob_given_true: 0.99
- prob_given_false: 0.85
- platform: 'state'
- to_state: 'on'
-
- - entity_id: 'input_boolean.bayesian_test_3' # Home Occupied
- prob_given_true: 0.99
- prob_given_false: 0.01
- platform: 'state'
- to_state: 'on'
-
- # - entity_id: 'input_boolean.bayesian_test_4' # person occupancy
- # prob_given_true: 0.99
- # prob_given_false: 0.97
- # platform: 'state'
- # to_state: 'on'
-
- # - entity_id: 'input_boolean.bayesian_test_5' # dreambox recently active
- # prob_given_true: 0.75
- # prob_given_false: 0.5
- # platform: 'state'
- # to_state: 'on'
-
-input_boolean:
- bayesian_test_1:
- name: Bayesian Test 1
- icon: mdi:numeric-1-circle
-
- bayesian_test_2:
- name: Bayesian Test 2
- icon: mdi:numeric-2-circle
-
- bayesian_test_3:
- name: Bayesian Test 3
- icon: mdi:numeric-3-circle
-
- bayesian_test_4:
- name: Bayesian Test 4
- icon: mdi:numeric-4-circle
-
- bayesian_test_5:
- name: Bayesian Test 5
- icon: mdi:numeric-5-circle
-
- bayesian_test_6:
- name: Bayesian Test 6
- icon: mdi:numeric-6-circle
-
- bayesian_test_7:
- name: Bayesian Test 7
- icon: mdi:numeric-7-circle
-
- bayesian_test_8:
- name: Bayesian Test 8
+binary_sensor:
+ - name: 'Bayesian Crunching'
+ platform: 'bayesian'
+ prior: 0.25
+ probability_threshold: 0.7
+ observations:
+ - entity_id: 'input_boolean.bayesian_test_1' # Motion
+ prob_given_true: 0.99
+ prob_given_false: 0.85
+ platform: 'state'
+ to_state: 'on'
+
+ - entity_id: 'input_boolean.bayesian_test_2' # Person
+ prob_given_true: 0.99
+ prob_given_false: 0.85
+ platform: 'state'
+ to_state: 'on'
+
+ - entity_id: 'input_boolean.bayesian_test_3' # Home Occupied
+ prob_given_true: 0.99
+ prob_given_false: 0.01
+ platform: 'state'
+ to_state: 'on'
+
+ # - entity_id: 'input_boolean.bayesian_test_4' # person occupancy
+ # prob_given_true: 0.99
+ # prob_given_false: 0.97
+ # platform: 'state'
+ # to_state: 'on'
+
+ # - entity_id: 'input_boolean.bayesian_test_5' # dreambox recently active
+ # prob_given_true: 0.75
+ # prob_given_false: 0.5
+ # platform: 'state'
+ # to_state: 'on'
+
+input_boolean:
+ bayesian_test_1:
+ name: Bayesian Test 1
+ icon: mdi:numeric-1-circle
+
+ bayesian_test_2:
+ name: Bayesian Test 2
+ icon: mdi:numeric-2-circle
+
+ bayesian_test_3:
+ name: Bayesian Test 3
+ icon: mdi:numeric-3-circle
+
+ bayesian_test_4:
+ name: Bayesian Test 4
+ icon: mdi:numeric-4-circle
+
+ bayesian_test_5:
+ name: Bayesian Test 5
+ icon: mdi:numeric-5-circle
+
+ bayesian_test_6:
+ name: Bayesian Test 6
+ icon: mdi:numeric-6-circle
+
+ bayesian_test_7:
+ name: Bayesian Test 7
+ icon: mdi:numeric-7-circle
+
+ bayesian_test_8:
+ name: Bayesian Test 8
icon: mdi:numeric-8-circle
\ No newline at end of file
diff --git a/components/packages/hvac_details.yaml b/components/packages/hvac_details.yaml
index 461e21d..ceb9845 100644
--- a/components/packages/hvac_details.yaml
+++ b/components/packages/hvac_details.yaml
@@ -1,69 +1,69 @@
-template:
- # - trigger:
- # - platform: state
- # entity_id: climate.thermostat
- # not_from:
- # - "unknown"
- # - "unavailable"
-
- # - platform: event
- # event_type: event_template_reloaded
- # id: "reload"
-
- # - platform: homeassistant
- # event: start
-
- - binary_sensor:
- - name: "HVAC: Aux"
- unique_id: "custom_binary_sensor.hvac_aux"
- icon: mdi:fire
- device_class: running
- availability: "{{ states('climate.thermostat') not in ['unkown', 'unavailable'] }}"
- state: >
- {% if 'aux' in state_attr('climate.thermostat','equipment_running') %}{{'true'}}{% else %}{{'false'}}{% endif %}
-
- # - trigger:
- # - platform: state
- # entity_id: climate.thermostat
- # not_from:
- # - "unknown"
- # - "unavailable"
-
- # - platform: event
- # event_type: event_template_reloaded
- # id: "reload"
-
- # - platform: homeassistant
- # event: start
-
- - binary_sensor:
- - name: "HVAC: Fan"
- unique_id: "custom_binary_sensor.hvac_fan"
- icon: mdi:fan
- device_class: running
- availability: "{{ states('climate.thermostat') not in ['unkown', 'unavailable'] }}"
- state: >
- {% if 'fan' in state_attr('climate.thermostat','equipment_running') %}{{'true'}}{% else %}{{'false'}}{% endif %}
-
- # - trigger:
- # - platform: state
- # entity_id: climate.thermostat
- # not_from:
- # - "unknown"
- # - "unavailable"
-
- # - platform: event
- # event_type: event_template_reloaded
- # id: "reload"
-
- # - platform: homeassistant
- # event: start
-
- - binary_sensor:
- - name: "HVAC: Heat Pump"
- unique_id: "custom_binary_sensor.hvac_heatpump"
- icon: mdi:hvac
- device_class: running
- availability: "{{ states('climate.thermostat') not in ['unkown', 'unavailable'] }}"
- state: >
+template:
+ # - trigger:
+ # - platform: state
+ # entity_id: climate.thermostat
+ # not_from:
+ # - "unknown"
+ # - "unavailable"
+
+ # - platform: event
+ # event_type: event_template_reloaded
+ # id: "reload"
+
+ # - platform: homeassistant
+ # event: start
+
+ - binary_sensor:
+ - name: "HVAC: Aux"
+ unique_id: "custom_binary_sensor.hvac_aux"
+ icon: mdi:fire
+ device_class: running
+ availability: "{{ states('climate.thermostat') not in ['unkown', 'unavailable'] }}"
+ state: >
+ {% if 'aux' in state_attr('climate.thermostat','equipment_running') %}{{'true'}}{% else %}{{'false'}}{% endif %}
+
+ # - trigger:
+ # - platform: state
+ # entity_id: climate.thermostat
+ # not_from:
+ # - "unknown"
+ # - "unavailable"
+
+ # - platform: event
+ # event_type: event_template_reloaded
+ # id: "reload"
+
+ # - platform: homeassistant
+ # event: start
+
+ - binary_sensor:
+ - name: "HVAC: Fan"
+ unique_id: "custom_binary_sensor.hvac_fan"
+ icon: mdi:fan
+ device_class: running
+ availability: "{{ states('climate.thermostat') not in ['unkown', 'unavailable'] }}"
+ state: >
+ {% if 'fan' in state_attr('climate.thermostat','equipment_running') %}{{'true'}}{% else %}{{'false'}}{% endif %}
+
+ # - trigger:
+ # - platform: state
+ # entity_id: climate.thermostat
+ # not_from:
+ # - "unknown"
+ # - "unavailable"
+
+ # - platform: event
+ # event_type: event_template_reloaded
+ # id: "reload"
+
+ # - platform: homeassistant
+ # event: start
+
+ - binary_sensor:
+ - name: "HVAC: Heat Pump"
+ unique_id: "custom_binary_sensor.hvac_heatpump"
+ icon: mdi:hvac
+ device_class: running
+ availability: "{{ states('climate.thermostat') not in ['unkown', 'unavailable'] }}"
+ state: >
{% if 'heatPump' in state_attr('climate.thermostat','equipment_running') %}{{'true'}}{% else %}{{'false'}}{% endif %}
\ No newline at end of file
diff --git a/components/packages/openmindsai/gpt_prompt.yaml b/components/packages/openmindsai/gpt_prompt.yaml
index b81dd41..41be634 100644
--- a/components/packages/openmindsai/gpt_prompt.yaml
+++ b/components/packages/openmindsai/gpt_prompt.yaml
@@ -1,10 +1,10 @@
-input_text:
- gpt_prompt:
- initial: ""
- max: 255
- name: GPT Prompt
-
-input_button:
- update_gpt_response:
- name: Update GPT Response
+input_text:
+ gpt_prompt:
+ initial: ""
+ max: 255
+ name: GPT Prompt
+
+input_button:
+ update_gpt_response:
+ name: Update GPT Response
icon: mdi:brain
\ No newline at end of file
diff --git a/components/packages/openmindsai/update_response_log.yaml b/components/packages/openmindsai/update_response_log.yaml
index 4a53173..23a1a35 100644
--- a/components/packages/openmindsai/update_response_log.yaml
+++ b/components/packages/openmindsai/update_response_log.yaml
@@ -1,16 +1,16 @@
-automation:
- description: ""
- mode: single
- trigger:
- - platform: state
- entity_id:
- - sensor.hassio_mindsdb_response
- attribute: response_text
- condition: []
- action:
- - service: notify.mindsdb_responses
- data:
- message: >
- "input":"{{ states('input_text.gpt_prompt') }}","output":"{{ state_attr('sensor.hassio_mindsdb_response','response_text')}}"
-
-
+automation:
+ description: ""
+ mode: single
+ trigger:
+ - platform: state
+ entity_id:
+ - sensor.hassio_mindsdb_response
+ attribute: response_text
+ condition: []
+ action:
+ - service: notify.mindsdb_responses
+ data:
+ message: >
+ "input":"{{ states('input_text.gpt_prompt') }}","output":"{{ state_attr('sensor.hassio_mindsdb_response','response_text')}}"
+
+
diff --git a/components/packages/pixel_7_coordinates.yaml b/components/packages/pixel_7_coordinates.yaml
index 779c379..20363ec 100644
--- a/components/packages/pixel_7_coordinates.yaml
+++ b/components/packages/pixel_7_coordinates.yaml
@@ -1,38 +1,38 @@
-# Toggle controlling the status of coordinate logging
-input_boolean:
- log_pixel_7_coordinates:
- name: "Log Pixel 7 Coordinates"
- icon: mdi:crosshairs-gps
-
-# Coordinate log configuration
-notify:
- - name: Pixel 7 Coordinates
- platform: file
- filename: /config/custom_logs/pixel_7_coordinates.csv
- timestamp: false
-
-# Automation to handle the actual logging of coordinates
-automation:
- - alias: "Log Pixel 7 Coordinates"
- id: 7e726150-6bd7-40c8-a990-13df987d0fca
- trigger:
- - platform: state
- entity_id: input_boolean.log_pixel_7_coordinates
- from: "off"
- to: "on"
-
- - platform: state
- entity_id: device_tracker.pixel_7
-
- - platform: homeassistant
- event: start
-
- condition:
- - condition: state
- entity_id: input_boolean.log_pixel_7_coordinates
- state: "on"
-
- action:
- - service: notify.pixel_7_coordinates
- data:
+# Toggle controlling the status of coordinate logging
+input_boolean:
+ log_pixel_7_coordinates:
+ name: "Log Pixel 7 Coordinates"
+ icon: mdi:crosshairs-gps
+
+# Coordinate log configuration
+notify:
+ - name: Pixel 7 Coordinates
+ platform: file
+ filename: /config/custom_logs/pixel_7_coordinates.csv
+ timestamp: false
+
+# Automation to handle the actual logging of coordinates
+automation:
+ - alias: "Log Pixel 7 Coordinates"
+ id: 7e726150-6bd7-40c8-a990-13df987d0fca
+ trigger:
+ - platform: state
+ entity_id: input_boolean.log_pixel_7_coordinates
+ from: "off"
+ to: "on"
+
+ - platform: state
+ entity_id: device_tracker.pixel_7
+
+ - platform: homeassistant
+ event: start
+
+ condition:
+ - condition: state
+ entity_id: input_boolean.log_pixel_7_coordinates
+ state: "on"
+
+ action:
+ - service: notify.pixel_7_coordinates
+ data:
message: "{{now().strftime('%Y-%m-%d')}}T{{now().strftime('%H:%M:%S.%f')}},{{states('device_tracker.pixel_7')}},{{state_attr('device_tracker.pixel_7','latitude')}},{{state_attr('device_tracker.pixel_7','longitude')}}"
\ No newline at end of file
diff --git a/components/packages/rtl_433_devices/daisy_soil_moisture.yaml b/components/packages/rtl_433_devices/daisy_soil_moisture.yaml
index aa5ba4d..0df00fb 100644
--- a/components/packages/rtl_433_devices/daisy_soil_moisture.yaml
+++ b/components/packages/rtl_433_devices/daisy_soil_moisture.yaml
@@ -1,44 +1,44 @@
-# White Ziptie
-mqtt:
- sensor:
- - name: "Timestamp"
- device_class: timestamp
- icon: mdi:clock-in
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/00f935/time"
- force_update: true
- entity_category: diagnostic
- unique_id: Fineoffset-WH51-00f935-UTC
- device:
- identifiers: Fineoffset-WH51-00f935
- name: Fineoffset-WH51-00f935
- model: Fineoffset-WH51
- manufacturer: rtl_433
-
- - name: "Battery"
- device_class: battery
- unit_of_measurement: "%"
- value_template: "{{ (float(value) * 99 + 1) | round(0) }}"
- state_class: measurement
- entity_category: diagnostic
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/00f935/battery_ok"
- force_update: true
- unique_id: Fineoffset-WH51-00f935-B
- device:
- identifiers: Fineoffset-WH51-00f935
- name: Fineoffset-WH51-00f935
- model: Fineoffset-WH51
- manufacturer: rtl_433
-
- - name: "Moisture"
- device_class: moisture
- unit_of_measurement: "%"
- value_template: "{{ value|float }}"
- state_class: measurement
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/00f935/moisture"
- force_update: true
- unique_id: Fineoffset-WH51-00f935-H
- device:
- identifiers: Fineoffset-WH51-00f935
- name: Fineoffset-WH51-00f935
- model: Fineoffset-WH51
- manufacturer: rtl_433
+# White Ziptie
+mqtt:
+ sensor:
+ - name: "Timestamp"
+ device_class: timestamp
+ icon: mdi:clock-in
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/00f935/time"
+ force_update: true
+ entity_category: diagnostic
+ unique_id: Fineoffset-WH51-00f935-UTC
+ device:
+ identifiers: Fineoffset-WH51-00f935
+ name: Fineoffset-WH51-00f935
+ model: Fineoffset-WH51
+ manufacturer: rtl_433
+
+ - name: "Battery"
+ device_class: battery
+ unit_of_measurement: "%"
+ value_template: "{{ (float(value) * 99 + 1) | round(0) }}"
+ state_class: measurement
+ entity_category: diagnostic
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/00f935/battery_ok"
+ force_update: true
+ unique_id: Fineoffset-WH51-00f935-B
+ device:
+ identifiers: Fineoffset-WH51-00f935
+ name: Fineoffset-WH51-00f935
+ model: Fineoffset-WH51
+ manufacturer: rtl_433
+
+ - name: "Moisture"
+ device_class: moisture
+ unit_of_measurement: "%"
+ value_template: "{{ value|float }}"
+ state_class: measurement
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/00f935/moisture"
+ force_update: true
+ unique_id: Fineoffset-WH51-00f935-H
+ device:
+ identifiers: Fineoffset-WH51-00f935
+ name: Fineoffset-WH51-00f935
+ model: Fineoffset-WH51
+ manufacturer: rtl_433
diff --git a/components/packages/rtl_433_devices/deck_thermostat.yaml b/components/packages/rtl_433_devices/deck_thermostat.yaml
index 3d5e1cf..a46a1bf 100644
--- a/components/packages/rtl_433_devices/deck_thermostat.yaml
+++ b/components/packages/rtl_433_devices/deck_thermostat.yaml
@@ -1,57 +1,57 @@
-mqtt:
- sensor:
- - name: "Timestamp"
- device_class: timestamp
- icon: mdi:clock-in
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Nexus-TH/1/69/time"
- force_update: true
- entity_category: diagnostic
- unique_id: Nexus-TH-1-69-UTC
- device:
- identifiers: Nexus-TH-1-69
- name: Nexus-TH-1-69
- model: Nexus-TH
- manufacturer: rtl_433
-
- - name: "Battery"
- device_class: battery
- unit_of_measurement: "%"
- value_template: "{{ (float(value) * 99 + 1) | round(0) }}"
- state_class: measurement
- entity_category: diagnostic
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Nexus-TH/1/69/battery_ok"
- force_update: true
- unique_id: Nexus-TH-1-69-B
- device:
- identifiers: Nexus-TH-1-69
- name: Nexus-TH-1-69
- model: Nexus-TH
- manufacturer: rtl_433
-
- - name: "Temperature"
- device_class: temperature
- unit_of_measurement: "°C"
- value_template: "{{ value|float }}"
- state_class: measurement
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Nexus-TH/1/69/temperature_C"
- force_update: true
- unique_id: Nexus-TH-1-69-T
- device:
- identifiers: Nexus-TH-1-69
- name: Nexus-TH-1-69
- model: Nexus-TH
- manufacturer: rtl_433
-
- - name: "Humidity"
- device_class: humidity
- unit_of_measurement: "%"
- value_template: "{{ value|float }}"
- state_class: measurement
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Nexus-TH/1/69/humidity"
- force_update: true
- unique_id: Nexus-TH-1-69-H
- device:
- identifiers: Nexus-TH-1-69
- name: Nexus-TH-1-69
- model: Nexus-TH
+mqtt:
+ sensor:
+ - name: "Timestamp"
+ device_class: timestamp
+ icon: mdi:clock-in
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Nexus-TH/1/69/time"
+ force_update: true
+ entity_category: diagnostic
+ unique_id: Nexus-TH-1-69-UTC
+ device:
+ identifiers: Nexus-TH-1-69
+ name: Nexus-TH-1-69
+ model: Nexus-TH
+ manufacturer: rtl_433
+
+ - name: "Battery"
+ device_class: battery
+ unit_of_measurement: "%"
+ value_template: "{{ (float(value) * 99 + 1) | round(0) }}"
+ state_class: measurement
+ entity_category: diagnostic
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Nexus-TH/1/69/battery_ok"
+ force_update: true
+ unique_id: Nexus-TH-1-69-B
+ device:
+ identifiers: Nexus-TH-1-69
+ name: Nexus-TH-1-69
+ model: Nexus-TH
+ manufacturer: rtl_433
+
+ - name: "Temperature"
+ device_class: temperature
+ unit_of_measurement: "°C"
+ value_template: "{{ value|float }}"
+ state_class: measurement
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Nexus-TH/1/69/temperature_C"
+ force_update: true
+ unique_id: Nexus-TH-1-69-T
+ device:
+ identifiers: Nexus-TH-1-69
+ name: Nexus-TH-1-69
+ model: Nexus-TH
+ manufacturer: rtl_433
+
+ - name: "Humidity"
+ device_class: humidity
+ unit_of_measurement: "%"
+ value_template: "{{ value|float }}"
+ state_class: measurement
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Nexus-TH/1/69/humidity"
+ force_update: true
+ unique_id: Nexus-TH-1-69-H
+ device:
+ identifiers: Nexus-TH-1-69
+ name: Nexus-TH-1-69
+ model: Nexus-TH
manufacturer: rtl_433
\ No newline at end of file
diff --git a/components/packages/rtl_433_devices/hasta_moisture.yaml b/components/packages/rtl_433_devices/hasta_moisture.yaml
index 5aa829a..38a6761 100644
--- a/components/packages/rtl_433_devices/hasta_moisture.yaml
+++ b/components/packages/rtl_433_devices/hasta_moisture.yaml
@@ -1,44 +1,44 @@
-# Green Ziptie
-mqtt:
- sensor:
- - name: "Timestamp"
- device_class: timestamp
- icon: mdi:clock-in
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/0ce593/time"
- force_update: true
- entity_category: diagnostic
- unique_id: Fineoffset-WH51-0ce593-UTC
- device:
- identifiers: Fineoffset-WH51-0ce593
- name: Fineoffset-WH51-0ce593
- model: Fineoffset-WH51
- manufacturer: rtl_433
-
- - name: "Battery"
- device_class: battery
- unit_of_measurement: "%"
- value_template: "{{ (float(value) * 99 + 1) | round(0) }}"
- state_class: measurement
- entity_category: diagnostic
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/0ce593/battery_ok"
- force_update: true
- unique_id: Fineoffset-WH51-0ce593-B
- device:
- identifiers: Fineoffset-WH51-0ce593
- name: Fineoffset-WH51-0ce593
- model: Fineoffset-WH51
- manufacturer: rtl_433
-
- - name: "Moisture"
- device_class: moisture
- unit_of_measurement: "%"
- value_template: "{{ value|float }}"
- state_class: measurement
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/0ce593/moisture"
- force_update: true
- unique_id: Fineoffset-WH51-0ce593-H
- device:
- identifiers: Fineoffset-WH51-0ce593
- name: Fineoffset-WH51-0ce593
- model: Fineoffset-WH51
- manufacturer: rtl_433
+# Green Ziptie
+mqtt:
+ sensor:
+ - name: "Timestamp"
+ device_class: timestamp
+ icon: mdi:clock-in
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/0ce593/time"
+ force_update: true
+ entity_category: diagnostic
+ unique_id: Fineoffset-WH51-0ce593-UTC
+ device:
+ identifiers: Fineoffset-WH51-0ce593
+ name: Fineoffset-WH51-0ce593
+ model: Fineoffset-WH51
+ manufacturer: rtl_433
+
+ - name: "Battery"
+ device_class: battery
+ unit_of_measurement: "%"
+ value_template: "{{ (float(value) * 99 + 1) | round(0) }}"
+ state_class: measurement
+ entity_category: diagnostic
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/0ce593/battery_ok"
+ force_update: true
+ unique_id: Fineoffset-WH51-0ce593-B
+ device:
+ identifiers: Fineoffset-WH51-0ce593
+ name: Fineoffset-WH51-0ce593
+ model: Fineoffset-WH51
+ manufacturer: rtl_433
+
+ - name: "Moisture"
+ device_class: moisture
+ unit_of_measurement: "%"
+ value_template: "{{ value|float }}"
+ state_class: measurement
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/0ce593/moisture"
+ force_update: true
+ unique_id: Fineoffset-WH51-0ce593-H
+ device:
+ identifiers: Fineoffset-WH51-0ce593
+ name: Fineoffset-WH51-0ce593
+ model: Fineoffset-WH51
+ manufacturer: rtl_433
diff --git a/components/packages/rtl_433_devices/kitchen_freezer_thermostat.yaml b/components/packages/rtl_433_devices/kitchen_freezer_thermostat.yaml
index f741c22..c2d9d8e 100644
--- a/components/packages/rtl_433_devices/kitchen_freezer_thermostat.yaml
+++ b/components/packages/rtl_433_devices/kitchen_freezer_thermostat.yaml
@@ -1,43 +1,43 @@
-mqtt:
- sensor:
- - name: "Timestamp"
- device_class: timestamp
- icon: mdi:clock-in
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Acurite-986/2F/42383/time"
- force_update: true
- entity_category: diagnostic
- unique_id: Acurite-986-2F-42383-UTC
- device:
- identifiers: Acurite-986-2F-42383
- name: Acurite-986-2F-42383
- model: Acurite-986
- manufacturer: rtl_433
-
- - name: "Battery"
- device_class: battery
- unit_of_measurement: "%"
- value_template: "{{ (float(value) * 99 + 1) | round(0) }}"
- state_class: measurement
- entity_category: diagnostic
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Acurite-986/2F/42383/battery_ok"
- force_update: true
- unique_id: Acurite-986-2F-42383-B
- device:
- identifiers: Acurite-986-2F-42383
- name: Acurite-986-2F-42383
- model: Acurite-986
- manufacturer: rtl_433
-
- - name: "Temperature"
- device_class: temperature
- unit_of_measurement: "°C"
- value_template: "{{ value|float }}"
- state_class: measurement
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Acurite-986/2F/42383/temperature_C"
- force_update: true
- unique_id: Acurite-986-2F-42383-T
- device:
- identifiers: Acurite-986-2F-42383
- name: Acurite-986-2F-42383
- model: Acurite-986
+mqtt:
+ sensor:
+ - name: "Timestamp"
+ device_class: timestamp
+ icon: mdi:clock-in
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Acurite-986/2F/42383/time"
+ force_update: true
+ entity_category: diagnostic
+ unique_id: Acurite-986-2F-42383-UTC
+ device:
+ identifiers: Acurite-986-2F-42383
+ name: Acurite-986-2F-42383
+ model: Acurite-986
+ manufacturer: rtl_433
+
+ - name: "Battery"
+ device_class: battery
+ unit_of_measurement: "%"
+ value_template: "{{ (float(value) * 99 + 1) | round(0) }}"
+ state_class: measurement
+ entity_category: diagnostic
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Acurite-986/2F/42383/battery_ok"
+ force_update: true
+ unique_id: Acurite-986-2F-42383-B
+ device:
+ identifiers: Acurite-986-2F-42383
+ name: Acurite-986-2F-42383
+ model: Acurite-986
+ manufacturer: rtl_433
+
+ - name: "Temperature"
+ device_class: temperature
+ unit_of_measurement: "°C"
+ value_template: "{{ value|float }}"
+ state_class: measurement
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Acurite-986/2F/42383/temperature_C"
+ force_update: true
+ unique_id: Acurite-986-2F-42383-T
+ device:
+ identifiers: Acurite-986-2F-42383
+ name: Acurite-986-2F-42383
+ model: Acurite-986
manufacturer: rtl_433
\ No newline at end of file
diff --git a/components/packages/rtl_433_devices/kitchen_fridge_thermostat.yaml b/components/packages/rtl_433_devices/kitchen_fridge_thermostat.yaml
index 7dbebb7..94abd02 100644
--- a/components/packages/rtl_433_devices/kitchen_fridge_thermostat.yaml
+++ b/components/packages/rtl_433_devices/kitchen_fridge_thermostat.yaml
@@ -1,43 +1,43 @@
-mqtt:
- sensor:
- - name: "Timestamp"
- device_class: timestamp
- icon: mdi:clock-in
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Acurite-986/1R/48226/time"
- force_update: true
- entity_category: diagnostic
- unique_id: Acurite-986-1R-48226-UTC
- device:
- identifiers: Acurite-986-1R-48226
- name: Acurite-986-1R-48226
- model: Acurite-986
- manufacturer: rtl_433
-
- - name: "Battery"
- device_class: battery
- unit_of_measurement: "%"
- value_template: "{{ (float(value) * 99 + 1) | round(0) }}"
- state_class: measurement
- entity_category: diagnostic
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Acurite-986/1R/48226/battery_ok"
- force_update: true
- unique_id: Acurite-986-1R-48226-B
- device:
- identifiers: Acurite-986-1R-48226
- name: Acurite-986-1R-48226
- model: Acurite-986
- manufacturer: rtl_433
-
- - name: "Temperature"
- device_class: temperature
- unit_of_measurement: "°C"
- value_template: "{{ value|float }}"
- state_class: measurement
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Acurite-986/1R/48226/temperature_C"
- force_update: true
- unique_id: Acurite-986-1R-48226-H
- device:
- identifiers: Acurite-986-1R-48226
- name: Acurite-986-1R-48226
- model: Acurite-986
+mqtt:
+ sensor:
+ - name: "Timestamp"
+ device_class: timestamp
+ icon: mdi:clock-in
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Acurite-986/1R/48226/time"
+ force_update: true
+ entity_category: diagnostic
+ unique_id: Acurite-986-1R-48226-UTC
+ device:
+ identifiers: Acurite-986-1R-48226
+ name: Acurite-986-1R-48226
+ model: Acurite-986
+ manufacturer: rtl_433
+
+ - name: "Battery"
+ device_class: battery
+ unit_of_measurement: "%"
+ value_template: "{{ (float(value) * 99 + 1) | round(0) }}"
+ state_class: measurement
+ entity_category: diagnostic
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Acurite-986/1R/48226/battery_ok"
+ force_update: true
+ unique_id: Acurite-986-1R-48226-B
+ device:
+ identifiers: Acurite-986-1R-48226
+ name: Acurite-986-1R-48226
+ model: Acurite-986
+ manufacturer: rtl_433
+
+ - name: "Temperature"
+ device_class: temperature
+ unit_of_measurement: "°C"
+ value_template: "{{ value|float }}"
+ state_class: measurement
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Acurite-986/1R/48226/temperature_C"
+ force_update: true
+ unique_id: Acurite-986-1R-48226-H
+ device:
+ identifiers: Acurite-986-1R-48226
+ name: Acurite-986-1R-48226
+ model: Acurite-986
manufacturer: rtl_433
\ No newline at end of file
diff --git a/components/packages/rtl_433_devices/outdoor_rain_gauge_sensor.yaml b/components/packages/rtl_433_devices/outdoor_rain_gauge_sensor.yaml
index dfc83a0..4b7b546 100644
--- a/components/packages/rtl_433_devices/outdoor_rain_gauge_sensor.yaml
+++ b/components/packages/rtl_433_devices/outdoor_rain_gauge_sensor.yaml
@@ -1,73 +1,73 @@
-mqtt:
- sensor:
- - name: "Timestamp"
- device_class: timestamp
- icon: mdi:clock-in
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/EcoWitt-WH40/21917/time"
- force_update: true
- entity_category: diagnostic
- unique_id: EcoWitt-WH40-21917-UTC
- device:
- identifiers: EcoWitt-WH40-21917
- name: EcoWitt-WH40-21917
- model: EcoWitt-WH40
- manufacturer: rtl_433
-
- # - name: "Data"
- # value_template: "{{ value }}"
- # state_class: measurement
- # entity_category: diagnostic
- # state_topic: "rtl_433/9b13b3f4-rtl433/devices/EcoWitt-WH40/21917/data"
- # force_update: true
- # unique_id: EcoWitt-WH40-21917-D
- # device:
- # identifiers: EcoWitt-WH40-21917
- # name: EcoWitt-WH40-21917
- # model: EcoWitt-WH40
- # manufacturer: rtl_433
-
- - name: "Precipitation"
- device_class: precipitation
- unit_of_measurement: "mm"
- value_template: "{{ value|float }}"
- state_class: measurement
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/EcoWitt-WH40/21917/rain_mm"
- force_update: true
- unique_id: EcoWitt-WH40-21917-H
- device:
- identifiers: EcoWitt-WH40-21917
- name: EcoWitt-WH40-21917
- model: EcoWitt-WH40
- manufacturer: rtl_433
-
- - name: "Battery"
- device_class: battery
- unit_of_measurement: "%"
- value_template: "{{ (float(value) / 1.5) * 100 | round(0) }}"
- state_class: measurement
- entity_category: diagnostic
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/EcoWitt-WH40/21917/battery_V"
- force_update: true
- unique_id: EcoWitt-WH40-21917-V
- device:
- identifiers: EcoWitt-WH40-21917
- name: EcoWitt-WH40-21917
- model: EcoWitt-WH40
- manufacturer: rtl_433
-
- binary_sensor:
-
- - name: "Battery OK"
- value_template: "{{ value|int }}"
- device_class: problem
- entity_category: diagnostic
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/EcoWitt-WH40/21917/battery_ok"
- payload_on: "1"
- payload_off: "0"
- force_update: true
- unique_id: EcoWitt-WH40-21917-Battery-OK
- device:
- identifiers: EcoWitt-WH40-21917
- name: EcoWitt-WH40-21917
- model: EcoWitt-WH40
+mqtt:
+ sensor:
+ - name: "Timestamp"
+ device_class: timestamp
+ icon: mdi:clock-in
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/EcoWitt-WH40/21917/time"
+ force_update: true
+ entity_category: diagnostic
+ unique_id: EcoWitt-WH40-21917-UTC
+ device:
+ identifiers: EcoWitt-WH40-21917
+ name: EcoWitt-WH40-21917
+ model: EcoWitt-WH40
+ manufacturer: rtl_433
+
+ # - name: "Data"
+ # value_template: "{{ value }}"
+ # state_class: measurement
+ # entity_category: diagnostic
+ # state_topic: "rtl_433/9b13b3f4-rtl433/devices/EcoWitt-WH40/21917/data"
+ # force_update: true
+ # unique_id: EcoWitt-WH40-21917-D
+ # device:
+ # identifiers: EcoWitt-WH40-21917
+ # name: EcoWitt-WH40-21917
+ # model: EcoWitt-WH40
+ # manufacturer: rtl_433
+
+ - name: "Precipitation"
+ device_class: precipitation
+ unit_of_measurement: "mm"
+ value_template: "{{ value|float }}"
+ state_class: measurement
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/EcoWitt-WH40/21917/rain_mm"
+ force_update: true
+ unique_id: EcoWitt-WH40-21917-H
+ device:
+ identifiers: EcoWitt-WH40-21917
+ name: EcoWitt-WH40-21917
+ model: EcoWitt-WH40
+ manufacturer: rtl_433
+
+ - name: "Battery"
+ device_class: battery
+ unit_of_measurement: "%"
+ value_template: "{{ (float(value) / 1.5) * 100 | round(0) }}"
+ state_class: measurement
+ entity_category: diagnostic
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/EcoWitt-WH40/21917/battery_V"
+ force_update: true
+ unique_id: EcoWitt-WH40-21917-V
+ device:
+ identifiers: EcoWitt-WH40-21917
+ name: EcoWitt-WH40-21917
+ model: EcoWitt-WH40
+ manufacturer: rtl_433
+
+ binary_sensor:
+
+ - name: "Battery OK"
+ value_template: "{{ value|int }}"
+ device_class: problem
+ entity_category: diagnostic
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/EcoWitt-WH40/21917/battery_ok"
+ payload_on: "1"
+ payload_off: "0"
+ force_update: true
+ unique_id: EcoWitt-WH40-21917-Battery-OK
+ device:
+ identifiers: EcoWitt-WH40-21917
+ name: EcoWitt-WH40-21917
+ model: EcoWitt-WH40
manufacturer: rtl_433
\ No newline at end of file
diff --git a/components/packages/rtl_433_devices/outdoor_thermostat.yaml b/components/packages/rtl_433_devices/outdoor_thermostat.yaml
index cc770e3..0ae392c 100644
--- a/components/packages/rtl_433_devices/outdoor_thermostat.yaml
+++ b/components/packages/rtl_433_devices/outdoor_thermostat.yaml
@@ -1,57 +1,57 @@
-mqtt:
- sensor:
- - name: "Timestamp"
- device_class: timestamp
- icon: mdi:clock-in
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/LaCrosse-TX141THBv2/0/54/time"
- force_update: true
- entity_category: diagnostic
- unique_id: LaCrosse-TX141THBv2-0-54-UTC
- device:
- identifiers: LaCrosse-TX141THBv2-0-54
- name: LaCrosse-TX141THBv2-0-54
- model: LaCrosse-TX141THBv2
- manufacturer: rtl_433
-
- - name: "Battery"
- device_class: battery
- unit_of_measurement: "%"
- value_template: "{{ (float(value) * 99 + 1) | round(0) }}"
- state_class: measurement
- entity_category: diagnostic
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/LaCrosse-TX141THBv2/0/54/battery_ok"
- force_update: true
- unique_id: LaCrosse-TX141THBv2-0-54-B
- device:
- identifiers: LaCrosse-TX141THBv2-0-54
- name: LaCrosse-TX141THBv2-0-54
- model: LaCrosse-TX141THBv2
- manufacturer: rtl_433
-
- - name: "Temperature"
- device_class: temperature
- unit_of_measurement: "°C"
- value_template: "{{ value|float }}"
- state_class: measurement
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/LaCrosse-TX141THBv2/0/54/temperature_C"
- force_update: true
- unique_id: LaCrosse-TX141THBv2-0-54-T
- device:
- identifiers: LaCrosse-TX141THBv2-0-54
- name: LaCrosse-TX141THBv2-0-54
- model: LaCrosse-TX141THBv2
- manufacturer: rtl_433
-
- - name: "Humidity"
- device_class: humidity
- unit_of_measurement: "%"
- value_template: "{{ value|float }}"
- state_class: measurement
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/LaCrosse-TX141THBv2/0/54/humidity"
- force_update: true
- unique_id: LaCrosse-TX141THBv2-0-54-H
- device:
- identifiers: LaCrosse-TX141THBv2-0-54
- name: LaCrosse-TX141THBv2-0-54
- model: LaCrosse-TX141THBv2
+mqtt:
+ sensor:
+ - name: "Timestamp"
+ device_class: timestamp
+ icon: mdi:clock-in
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/LaCrosse-TX141THBv2/0/54/time"
+ force_update: true
+ entity_category: diagnostic
+ unique_id: LaCrosse-TX141THBv2-0-54-UTC
+ device:
+ identifiers: LaCrosse-TX141THBv2-0-54
+ name: LaCrosse-TX141THBv2-0-54
+ model: LaCrosse-TX141THBv2
+ manufacturer: rtl_433
+
+ - name: "Battery"
+ device_class: battery
+ unit_of_measurement: "%"
+ value_template: "{{ (float(value) * 99 + 1) | round(0) }}"
+ state_class: measurement
+ entity_category: diagnostic
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/LaCrosse-TX141THBv2/0/54/battery_ok"
+ force_update: true
+ unique_id: LaCrosse-TX141THBv2-0-54-B
+ device:
+ identifiers: LaCrosse-TX141THBv2-0-54
+ name: LaCrosse-TX141THBv2-0-54
+ model: LaCrosse-TX141THBv2
+ manufacturer: rtl_433
+
+ - name: "Temperature"
+ device_class: temperature
+ unit_of_measurement: "°C"
+ value_template: "{{ value|float }}"
+ state_class: measurement
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/LaCrosse-TX141THBv2/0/54/temperature_C"
+ force_update: true
+ unique_id: LaCrosse-TX141THBv2-0-54-T
+ device:
+ identifiers: LaCrosse-TX141THBv2-0-54
+ name: LaCrosse-TX141THBv2-0-54
+ model: LaCrosse-TX141THBv2
+ manufacturer: rtl_433
+
+ - name: "Humidity"
+ device_class: humidity
+ unit_of_measurement: "%"
+ value_template: "{{ value|float }}"
+ state_class: measurement
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/LaCrosse-TX141THBv2/0/54/humidity"
+ force_update: true
+ unique_id: LaCrosse-TX141THBv2-0-54-H
+ device:
+ identifiers: LaCrosse-TX141THBv2-0-54
+ name: LaCrosse-TX141THBv2-0-54
+ model: LaCrosse-TX141THBv2
manufacturer: rtl_433
\ No newline at end of file
diff --git a/components/packages/rtl_433_devices/sunflower_box_moisture.yaml b/components/packages/rtl_433_devices/sunflower_box_moisture.yaml
index d5166c6..019d14d 100644
--- a/components/packages/rtl_433_devices/sunflower_box_moisture.yaml
+++ b/components/packages/rtl_433_devices/sunflower_box_moisture.yaml
@@ -1,44 +1,44 @@
-# Yellow Ziptie
-mqtt:
- sensor:
- - name: "Timestamp"
- device_class: timestamp
- icon: mdi:clock-in
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/0d1e11/time"
- force_update: true
- entity_category: diagnostic
- unique_id: Fineoffset-WH51-0d1e11-UTC
- device:
- identifiers: Fineoffset-WH51-0d1e11
- name: Fineoffset-WH51-0d1e11
- model: Fineoffset-WH51
- manufacturer: rtl_433
-
- - name: "Battery"
- device_class: battery
- unit_of_measurement: "%"
- value_template: "{{ (float(value) * 99 + 1) | round(0) }}"
- state_class: measurement
- entity_category: diagnostic
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/0d1e11/battery_ok"
- force_update: true
- unique_id: Fineoffset-WH51-0d1e11-B
- device:
- identifiers: Fineoffset-WH51-0d1e11
- name: Fineoffset-WH51-0d1e11
- model: Fineoffset-WH51
- manufacturer: rtl_433
-
- - name: "Moisture"
- device_class: moisture
- unit_of_measurement: "%"
- value_template: "{{ value|float }}"
- state_class: measurement
- state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/0d1e11/moisture"
- force_update: true
- unique_id: Fineoffset-WH51-0d1e11-H
- device:
- identifiers: Fineoffset-WH51-0d1e11
- name: Fineoffset-WH51-0d1e11
- model: Fineoffset-WH51
- manufacturer: rtl_433
+# Yellow Ziptie
+mqtt:
+ sensor:
+ - name: "Timestamp"
+ device_class: timestamp
+ icon: mdi:clock-in
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/0d1e11/time"
+ force_update: true
+ entity_category: diagnostic
+ unique_id: Fineoffset-WH51-0d1e11-UTC
+ device:
+ identifiers: Fineoffset-WH51-0d1e11
+ name: Fineoffset-WH51-0d1e11
+ model: Fineoffset-WH51
+ manufacturer: rtl_433
+
+ - name: "Battery"
+ device_class: battery
+ unit_of_measurement: "%"
+ value_template: "{{ (float(value) * 99 + 1) | round(0) }}"
+ state_class: measurement
+ entity_category: diagnostic
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/0d1e11/battery_ok"
+ force_update: true
+ unique_id: Fineoffset-WH51-0d1e11-B
+ device:
+ identifiers: Fineoffset-WH51-0d1e11
+ name: Fineoffset-WH51-0d1e11
+ model: Fineoffset-WH51
+ manufacturer: rtl_433
+
+ - name: "Moisture"
+ device_class: moisture
+ unit_of_measurement: "%"
+ value_template: "{{ value|float }}"
+ state_class: measurement
+ state_topic: "rtl_433/9b13b3f4-rtl433/devices/Fineoffset-WH51/0d1e11/moisture"
+ force_update: true
+ unique_id: Fineoffset-WH51-0d1e11-H
+ device:
+ identifiers: Fineoffset-WH51-0d1e11
+ name: Fineoffset-WH51-0d1e11
+ model: Fineoffset-WH51
+ manufacturer: rtl_433
diff --git a/lovelace/appliances/dishwasher.yaml b/lovelace/appliances/dishwasher.yaml
index 0ccd36e..3c746e0 100644
--- a/lovelace/appliances/dishwasher.yaml
+++ b/lovelace/appliances/dishwasher.yaml
@@ -1,84 +1,84 @@
-theme: Mushroom
-title: Dishwasher
-path: dishwasher
-icon: mdi:dishwasher
-subview: true
-type: sidebar
-badges: []
-cards:
- - type: vertical-stack
- cards:
- - type: history-graph
- entities:
- - entity: sensor.pm_dishwasher_w
- - entity: sensor.shelly_dishwasher_w
- hours_to_show: 2
-
- - type: vertical-stack
- view_layout:
- position: sidebar
- cards:
- - type: grid
- cards:
- - type: tile
- entity: sensor.dishwasher
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/dishwasher
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/dishwasher
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: binary_sensor.keurig
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/keurig
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/keurig
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: binary_sensor.stove
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/stove
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/stove
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: sensor.tumble_dryer
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/tumble-dryer
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/tumble-dryer
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: sensor.washing_machine
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/washing-machine
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/washing-machine
- show_entity_picture: true
- vertical: true
- - type: glance
- entities:
- - entity: input_boolean.empty_dishwasher
- - entity: sensor.pm_dishwasher_w
- - entity: input_number.dishwasher_delay_on
- - entity: input_number.dishwasher_on
- - entity: input_number.dishwasher_delay_off
- - entity: sensor.dishwasher
- - entity: binary_sensor.dishwasher
- - entity: binary_sensor.dishwasher_door_contact
- - entity: sensor.dishwasher_door_device_temperature
+theme: Mushroom
+title: Dishwasher
+path: dishwasher
+icon: mdi:dishwasher
+subview: true
+type: sidebar
+badges: []
+cards:
+ - type: vertical-stack
+ cards:
+ - type: history-graph
+ entities:
+ - entity: sensor.pm_dishwasher_w
+ - entity: sensor.shelly_dishwasher_w
+ hours_to_show: 2
+
+ - type: vertical-stack
+ view_layout:
+ position: sidebar
+ cards:
+ - type: grid
+ cards:
+ - type: tile
+ entity: sensor.dishwasher
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/dishwasher
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/dishwasher
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: binary_sensor.keurig
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/keurig
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/keurig
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: binary_sensor.stove
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/stove
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/stove
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: sensor.tumble_dryer
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/tumble-dryer
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/tumble-dryer
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: sensor.washing_machine
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/washing-machine
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/washing-machine
+ show_entity_picture: true
+ vertical: true
+ - type: glance
+ entities:
+ - entity: input_boolean.empty_dishwasher
+ - entity: sensor.pm_dishwasher_w
+ - entity: input_number.dishwasher_delay_on
+ - entity: input_number.dishwasher_on
+ - entity: input_number.dishwasher_delay_off
+ - entity: sensor.dishwasher
+ - entity: binary_sensor.dishwasher
+ - entity: binary_sensor.dishwasher_door_contact
+ - entity: sensor.dishwasher_door_device_temperature
- entity: sensor.shelly_dishwasher_w
\ No newline at end of file
diff --git a/lovelace/appliances/keurig.yaml b/lovelace/appliances/keurig.yaml
index 9cafd86..56e5766 100644
--- a/lovelace/appliances/keurig.yaml
+++ b/lovelace/appliances/keurig.yaml
@@ -1,84 +1,84 @@
-theme: Mushroom
-title: Keurig
-path: keurig
-icon: mdi:coffee-maker
-subview: true
-type: sidebar
-badges: []
-cards:
- - type: vertical-stack
- cards:
- - type: history-graph
- entities:
- - entity: sensor.pm_dishwasher_w
- - entity: sensor.shelly_dishwasher_w
- hours_to_show: 2
-
- - type: vertical-stack
- view_layout:
- position: sidebar
- cards:
- - type: grid
- cards:
- - type: tile
- entity: sensor.dishwasher
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/dishwasher
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/dishwasher
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: binary_sensor.keurig
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/keurig
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/keurig
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: binary_sensor.stove
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/stove
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/stove
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: sensor.tumble_dryer
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/tumble-dryer
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/tumble-dryer
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: sensor.washing_machine
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/washing-machine
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/washing-machine
- show_entity_picture: true
- vertical: true
- - type: glance
- entities:
- - entity: input_boolean.empty_dishwasher
- - entity: sensor.pm_dishwasher_w
- - entity: input_number.dishwasher_delay_on
- - entity: input_number.dishwasher_on
- - entity: input_number.dishwasher_delay_off
- - entity: sensor.dishwasher
- - entity: binary_sensor.dishwasher
- - entity: binary_sensor.dishwasher_door_contact
- - entity: sensor.dishwasher_door_device_temperature
+theme: Mushroom
+title: Keurig
+path: keurig
+icon: mdi:coffee-maker
+subview: true
+type: sidebar
+badges: []
+cards:
+ - type: vertical-stack
+ cards:
+ - type: history-graph
+ entities:
+ - entity: sensor.pm_dishwasher_w
+ - entity: sensor.shelly_dishwasher_w
+ hours_to_show: 2
+
+ - type: vertical-stack
+ view_layout:
+ position: sidebar
+ cards:
+ - type: grid
+ cards:
+ - type: tile
+ entity: sensor.dishwasher
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/dishwasher
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/dishwasher
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: binary_sensor.keurig
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/keurig
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/keurig
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: binary_sensor.stove
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/stove
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/stove
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: sensor.tumble_dryer
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/tumble-dryer
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/tumble-dryer
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: sensor.washing_machine
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/washing-machine
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/washing-machine
+ show_entity_picture: true
+ vertical: true
+ - type: glance
+ entities:
+ - entity: input_boolean.empty_dishwasher
+ - entity: sensor.pm_dishwasher_w
+ - entity: input_number.dishwasher_delay_on
+ - entity: input_number.dishwasher_on
+ - entity: input_number.dishwasher_delay_off
+ - entity: sensor.dishwasher
+ - entity: binary_sensor.dishwasher
+ - entity: binary_sensor.dishwasher_door_contact
+ - entity: sensor.dishwasher_door_device_temperature
- entity: sensor.shelly_dishwasher_w
\ No newline at end of file
diff --git a/lovelace/appliances/stove.yaml b/lovelace/appliances/stove.yaml
index 82421ca..cd2e4f8 100644
--- a/lovelace/appliances/stove.yaml
+++ b/lovelace/appliances/stove.yaml
@@ -1,76 +1,76 @@
-theme: Mushroom
-title: Stove
-path: stove
-icon: mdi:stove
-subview: true
-type: sidebar
-badges: []
-cards:
- - type: vertical-stack
- cards:
- - type: history-graph
- entities:
- - entity: sensor.pm_stove_w
- hours_to_show: 2
-
- - type: vertical-stack
- view_layout:
- position: sidebar
- cards:
- - type: grid
- cards:
- - type: tile
- entity: sensor.dishwasher
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/dishwasher
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/dishwasher
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: binary_sensor.keurig
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/keurig
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/keurig
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: binary_sensor.stove
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/stove
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/stove
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: sensor.tumble_dryer
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/tumble-dryer
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/tumble-dryer
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: sensor.washing_machine
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/washing-machine
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/washing-machine
- show_entity_picture: true
- vertical: true
- - type: glance
- entities:
- - entity: sensor.pm_stove_w
- - entity: input_number.stove_on
-
+theme: Mushroom
+title: Stove
+path: stove
+icon: mdi:stove
+subview: true
+type: sidebar
+badges: []
+cards:
+ - type: vertical-stack
+ cards:
+ - type: history-graph
+ entities:
+ - entity: sensor.pm_stove_w
+ hours_to_show: 2
+
+ - type: vertical-stack
+ view_layout:
+ position: sidebar
+ cards:
+ - type: grid
+ cards:
+ - type: tile
+ entity: sensor.dishwasher
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/dishwasher
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/dishwasher
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: binary_sensor.keurig
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/keurig
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/keurig
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: binary_sensor.stove
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/stove
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/stove
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: sensor.tumble_dryer
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/tumble-dryer
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/tumble-dryer
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: sensor.washing_machine
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/washing-machine
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/washing-machine
+ show_entity_picture: true
+ vertical: true
+ - type: glance
+ entities:
+ - entity: sensor.pm_stove_w
+ - entity: input_number.stove_on
+
diff --git a/lovelace/appliances/tumble-dryer.yaml b/lovelace/appliances/tumble-dryer.yaml
index 67a8231..36d5ee8 100644
--- a/lovelace/appliances/tumble-dryer.yaml
+++ b/lovelace/appliances/tumble-dryer.yaml
@@ -1,82 +1,82 @@
-theme: Mushroom
-title: Tumble Dryer
-path: tumble-dryer
-icon: mdi:tumble-dryer
-subview: true
-type: sidebar
-badges: []
-cards:
- - type: vertical-stack
- cards:
- - type: history-graph
- entities:
- - entity: sensor.pm_dryer_w
- hours_to_show: 2
-
- - type: vertical-stack
- view_layout:
- position: sidebar
- cards:
- - type: grid
- cards:
- - type: tile
- entity: sensor.dishwasher
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/dishwasher
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/dishwasher
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: binary_sensor.keurig
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/keurig
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/keurig
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: binary_sensor.stove
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/stove
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/stove
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: sensor.tumble_dryer
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/tumble-dryer
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/tumble-dryer
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: sensor.washing_machine
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/washing-machine
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/washing-machine
- show_entity_picture: true
- vertical: true
- - type: glance
- entities:
- - entity: input_boolean.fold_clothes
- - entity: sensor.pm_dryer_w
- - entity: input_number.tumble_dryer_delay_on
- - entity: input_number.tumble_dryer_on
- - entity: input_number.tumble_dryer_delay_off
- - entity: sensor.tumble_dryer
- - entity: binary_sensor.tumble_dryer
- - entity: binary_sensor.tumble_dryer_door_contact
- - entity: sensor.tumble_dryer_door_device_temperature
+theme: Mushroom
+title: Tumble Dryer
+path: tumble-dryer
+icon: mdi:tumble-dryer
+subview: true
+type: sidebar
+badges: []
+cards:
+ - type: vertical-stack
+ cards:
+ - type: history-graph
+ entities:
+ - entity: sensor.pm_dryer_w
+ hours_to_show: 2
+
+ - type: vertical-stack
+ view_layout:
+ position: sidebar
+ cards:
+ - type: grid
+ cards:
+ - type: tile
+ entity: sensor.dishwasher
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/dishwasher
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/dishwasher
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: binary_sensor.keurig
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/keurig
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/keurig
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: binary_sensor.stove
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/stove
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/stove
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: sensor.tumble_dryer
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/tumble-dryer
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/tumble-dryer
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: sensor.washing_machine
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/washing-machine
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/washing-machine
+ show_entity_picture: true
+ vertical: true
+ - type: glance
+ entities:
+ - entity: input_boolean.fold_clothes
+ - entity: sensor.pm_dryer_w
+ - entity: input_number.tumble_dryer_delay_on
+ - entity: input_number.tumble_dryer_on
+ - entity: input_number.tumble_dryer_delay_off
+ - entity: sensor.tumble_dryer
+ - entity: binary_sensor.tumble_dryer
+ - entity: binary_sensor.tumble_dryer_door_contact
+ - entity: sensor.tumble_dryer_door_device_temperature
diff --git a/lovelace/appliances/washing-machine.yaml b/lovelace/appliances/washing-machine.yaml
index 4c8173d..1f6f0dc 100644
--- a/lovelace/appliances/washing-machine.yaml
+++ b/lovelace/appliances/washing-machine.yaml
@@ -1,84 +1,84 @@
-theme: Mushroom
-title: Washing Machine
-path: washing-machine
-icon: mdi:washing-machine
-subview: true
-type: sidebar
-badges: []
-cards:
- - type: vertical-stack
- cards:
- - type: history-graph
- entities:
- - entity: sensor.pm_laundry_plug_w
- - entity: sensor.shelly_washing_machine_w
- hours_to_show: 2
-
- - type: vertical-stack
- view_layout:
- position: sidebar
- cards:
- - type: grid
- cards:
- - type: tile
- entity: sensor.dishwasher
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/dishwasher
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/dishwasher
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: binary_sensor.keurig
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/keurig
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/keurig
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: binary_sensor.stove
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/stove
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/stove
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: sensor.tumble_dryer
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/tumble-dryer
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/tumble-dryer
- show_entity_picture: true
- vertical: true
- - type: tile
- entity: sensor.washing_machine
- icon_tap_action:
- action: navigate
- navigation_path: /phone-yaml/washing-machine
- tap_action:
- action: navigate
- navigation_path: /phone-yaml/washing-machine
- show_entity_picture: true
- vertical: true
- - type: glance
- entities:
- - entity: input_boolean.swap_laundry
- - entity: sensor.pm_laundry_plug_w
- - entity: input_number.washing_machine_delay_on
- - entity: input_number.washing_machine_on
- - entity: input_number.washing_machine_delay_off
- - entity: sensor.washing_machine
- - entity: binary_sensor.washing_machine
- - entity: binary_sensor.washing_machine_door_contact
- - entity: sensor.washing_machine_door_device_temperature
- - entity: sensor.shelly_washing_machine_w
+theme: Mushroom
+title: Washing Machine
+path: washing-machine
+icon: mdi:washing-machine
+subview: true
+type: sidebar
+badges: []
+cards:
+ - type: vertical-stack
+ cards:
+ - type: history-graph
+ entities:
+ - entity: sensor.pm_laundry_plug_w
+ - entity: sensor.shelly_washing_machine_w
+ hours_to_show: 2
+
+ - type: vertical-stack
+ view_layout:
+ position: sidebar
+ cards:
+ - type: grid
+ cards:
+ - type: tile
+ entity: sensor.dishwasher
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/dishwasher
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/dishwasher
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: binary_sensor.keurig
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/keurig
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/keurig
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: binary_sensor.stove
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/stove
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/stove
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: sensor.tumble_dryer
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/tumble-dryer
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/tumble-dryer
+ show_entity_picture: true
+ vertical: true
+ - type: tile
+ entity: sensor.washing_machine
+ icon_tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/washing-machine
+ tap_action:
+ action: navigate
+ navigation_path: /phone-yaml/washing-machine
+ show_entity_picture: true
+ vertical: true
+ - type: glance
+ entities:
+ - entity: input_boolean.swap_laundry
+ - entity: sensor.pm_laundry_plug_w
+ - entity: input_number.washing_machine_delay_on
+ - entity: input_number.washing_machine_on
+ - entity: input_number.washing_machine_delay_off
+ - entity: sensor.washing_machine
+ - entity: binary_sensor.washing_machine
+ - entity: binary_sensor.washing_machine_door_contact
+ - entity: sensor.washing_machine_door_device_temperature
+ - entity: sensor.shelly_washing_machine_w
diff --git a/lovelace/details/view-openminds.yaml b/lovelace/details/view-openminds.yaml
index 35b27b4..80011ce 100644
--- a/lovelace/details/view-openminds.yaml
+++ b/lovelace/details/view-openminds.yaml
@@ -1,16 +1,16 @@
-title: OpenMinds AI
-path: openminds-ai
-icon: mdi:brain
-visible:
- - user: 24a4bd075e7f41a497dd0390a1dd4a9f
-cards:
- - type: grid
- square: false
- columns: 1
- cards:
- - type: entities
- entities:
- - entity: input_text.gpt_prompt
- - type: markdown
- content: '{{ state_attr(''sensor.hassio_mindsdb_response'', ''response_text'') }}'
+title: OpenMinds AI
+path: openminds-ai
+icon: mdi:brain
+visible:
+ - user: 24a4bd075e7f41a497dd0390a1dd4a9f
+cards:
+ - type: grid
+ square: false
+ columns: 1
+ cards:
+ - type: entities
+ entities:
+ - entity: input_text.gpt_prompt
+ - type: markdown
+ content: '{{ state_attr(''sensor.hassio_mindsdb_response'', ''response_text'') }}'
title: OpenAI Response
\ No newline at end of file
diff --git a/lovelace/templates/nws_alerts_tab.yaml b/lovelace/templates/nws_alerts_tab.yaml
index b0f7ae1..16c2aa8 100644
--- a/lovelace/templates/nws_alerts_tab.yaml
+++ b/lovelace/templates/nws_alerts_tab.yaml
@@ -1,151 +1,151 @@
-#########################################################################################
-title: "Alerts"
-
-type: custom:vertical-layout
-layout:
- max_cols: 4
-cards:
- - type: custom:stack-in-card
- cards:
- - type: entities
- title: Severe Weather Alerts
- show_header_toggle: false
- entities: sensor.nws_alerts
- - type: conditional
- conditions:
- - entity: sensor.nws_alerts
- state_not: '0'
- card:
- type: markdown
- content: >
- ---
-
- # NWS First Active Alert
- {% if state_attr('sensor.nws_alerts', 'title') != None and state_attr('sensor.nws_alerts', 'title').split(' - ')[0] is defined %}
-
- ## {{ states.sensor.nws_alerts.attributes.title.split(' - ')[0] }}
-
- {{ state_attr('sensor.nws_alerts', 'display_desc').split('\n\n-\n\n')[0] }}
-
- {% else %}
- none
- {% endif %}
- - type: conditional
- conditions:
- - entity: sensor.nws_alerts
- state_not: "0"
- - entity: sensor.nws_alerts
- state_not: "1"
- card:
- type: markdown
- content: >
- ---
-
- # NWS Second Active Alert
- {% if state_attr('sensor.nws_alerts', 'title').split(' - ')[1] is defined %}
-
- ## {{ states.sensor.nws_alerts.attributes.title.split(' - ')[1] }}
-
- {{ state_attr('sensor.nws_alerts', 'display_desc').split('\n\n-\n\n')[1] }}
-
- {% else %}
- none
- {% endif %}
- - type: conditional
- conditions:
- - entity: sensor.nws_alerts
- state_not: "0"
- - entity: sensor.nws_alerts
- state_not: "1"
- - entity: sensor.nws_alerts
- state_not: "2"
- card:
- type: markdown
- content: >
- ---
-
- # NWS Third Active Alert
- {% if state_attr('sensor.nws_alerts', 'title').split(' - ')[2] is defined %}
-
- ## {{ states.sensor.nws_alerts.attributes.title.split(' - ')[2] }}
-
- {{ state_attr('sensor.nws_alerts', 'display_desc').split('\n\n-\n\n')[2] }}
-
- {% else %}
- none
- {% endif %}
- - type: conditional
- conditions:
- - entity: sensor.nws_alerts
- state_not: "0"
- - entity: sensor.nws_alerts
- state_not: "1"
- - entity: sensor.nws_alerts
- state_not: "2"
- - entity: sensor.nws_alerts
- state_not: "3"
- card:
- type: markdown
- content: >
- ---
-
- # NWS Fourth Active Alert
- {% if state_attr('sensor.nws_alerts', 'title').split(' - ')[3] is defined %}
-
- ## {{ states.sensor.nws_alerts.attributes.title.split(' - ')[3] }}
-
- {{ state_attr('sensor.nws_alerts', 'display_desc').split('\n\n-\n\n')[3] }}
-
- {% else %}
- none
- {% endif %}
- - type: conditional
- conditions:
- - entity: sensor.nws_alerts
- state_not: "0"
- - entity: sensor.nws_alerts
- state_not: "1"
- - entity: sensor.nws_alerts
- state_not: "2"
- - entity: sensor.nws_alerts
- state_not: "3"
- - entity: sensor.nws_alerts
- state_not: "4"
- card:
- type: markdown
- content: >
- ---
-
- # NWS Fifth Active Alert
- {% if state_attr('sensor.nws_alerts', 'title').split(' - ')[4] is defined %}
-
- ## {{ states.sensor.nws_alerts.attributes.title.split(' - ')[4] }}
-
- {{ state_attr('sensor.nws_alerts', 'display_desc').split('\n\n-\n\n')[4] }}
-
- {% else %}
- none
- {% endif %}
-
- - type: entities
- title: NWS Alerts History
- show_header_toggle: false
- state_color: true
- entities:
- - variable.nws_alerts_event_ids
- - type: custom:entity-attributes-card
- heading_name: Name
- heading_state: State
- entity: variable.nws_alerts_event_ids
- filter:
- include:
- - variable.nws_alerts_event_ids.history_1
- - variable.nws_alerts_event_ids.history_2
- - variable.nws_alerts_event_ids.history_3
- - variable.nws_alerts_event_ids.history_4
- - variable.nws_alerts_event_ids.history_5
- - variable.nws_alerts_event_ids.history_6
- - variable.nws_alerts_event_ids.history_7
- - variable.nws_alerts_event_ids.history_8
- - variable.nws_alerts_event_ids.history_9
+#########################################################################################
+title: "Alerts"
+
+type: custom:vertical-layout
+layout:
+ max_cols: 4
+cards:
+ - type: custom:stack-in-card
+ cards:
+ - type: entities
+ title: Severe Weather Alerts
+ show_header_toggle: false
+ entities: sensor.nws_alerts
+ - type: conditional
+ conditions:
+ - entity: sensor.nws_alerts
+ state_not: '0'
+ card:
+ type: markdown
+ content: >
+ ---
+
+ # NWS First Active Alert
+ {% if state_attr('sensor.nws_alerts', 'title') != None and state_attr('sensor.nws_alerts', 'title').split(' - ')[0] is defined %}
+
+ ## {{ states.sensor.nws_alerts.attributes.title.split(' - ')[0] }}
+
+ {{ state_attr('sensor.nws_alerts', 'display_desc').split('\n\n-\n\n')[0] }}
+
+ {% else %}
+ none
+ {% endif %}
+ - type: conditional
+ conditions:
+ - entity: sensor.nws_alerts
+ state_not: "0"
+ - entity: sensor.nws_alerts
+ state_not: "1"
+ card:
+ type: markdown
+ content: >
+ ---
+
+ # NWS Second Active Alert
+ {% if state_attr('sensor.nws_alerts', 'title').split(' - ')[1] is defined %}
+
+ ## {{ states.sensor.nws_alerts.attributes.title.split(' - ')[1] }}
+
+ {{ state_attr('sensor.nws_alerts', 'display_desc').split('\n\n-\n\n')[1] }}
+
+ {% else %}
+ none
+ {% endif %}
+ - type: conditional
+ conditions:
+ - entity: sensor.nws_alerts
+ state_not: "0"
+ - entity: sensor.nws_alerts
+ state_not: "1"
+ - entity: sensor.nws_alerts
+ state_not: "2"
+ card:
+ type: markdown
+ content: >
+ ---
+
+ # NWS Third Active Alert
+ {% if state_attr('sensor.nws_alerts', 'title').split(' - ')[2] is defined %}
+
+ ## {{ states.sensor.nws_alerts.attributes.title.split(' - ')[2] }}
+
+ {{ state_attr('sensor.nws_alerts', 'display_desc').split('\n\n-\n\n')[2] }}
+
+ {% else %}
+ none
+ {% endif %}
+ - type: conditional
+ conditions:
+ - entity: sensor.nws_alerts
+ state_not: "0"
+ - entity: sensor.nws_alerts
+ state_not: "1"
+ - entity: sensor.nws_alerts
+ state_not: "2"
+ - entity: sensor.nws_alerts
+ state_not: "3"
+ card:
+ type: markdown
+ content: >
+ ---
+
+ # NWS Fourth Active Alert
+ {% if state_attr('sensor.nws_alerts', 'title').split(' - ')[3] is defined %}
+
+ ## {{ states.sensor.nws_alerts.attributes.title.split(' - ')[3] }}
+
+ {{ state_attr('sensor.nws_alerts', 'display_desc').split('\n\n-\n\n')[3] }}
+
+ {% else %}
+ none
+ {% endif %}
+ - type: conditional
+ conditions:
+ - entity: sensor.nws_alerts
+ state_not: "0"
+ - entity: sensor.nws_alerts
+ state_not: "1"
+ - entity: sensor.nws_alerts
+ state_not: "2"
+ - entity: sensor.nws_alerts
+ state_not: "3"
+ - entity: sensor.nws_alerts
+ state_not: "4"
+ card:
+ type: markdown
+ content: >
+ ---
+
+ # NWS Fifth Active Alert
+ {% if state_attr('sensor.nws_alerts', 'title').split(' - ')[4] is defined %}
+
+ ## {{ states.sensor.nws_alerts.attributes.title.split(' - ')[4] }}
+
+ {{ state_attr('sensor.nws_alerts', 'display_desc').split('\n\n-\n\n')[4] }}
+
+ {% else %}
+ none
+ {% endif %}
+
+ - type: entities
+ title: NWS Alerts History
+ show_header_toggle: false
+ state_color: true
+ entities:
+ - variable.nws_alerts_event_ids
+ - type: custom:entity-attributes-card
+ heading_name: Name
+ heading_state: State
+ entity: variable.nws_alerts_event_ids
+ filter:
+ include:
+ - variable.nws_alerts_event_ids.history_1
+ - variable.nws_alerts_event_ids.history_2
+ - variable.nws_alerts_event_ids.history_3
+ - variable.nws_alerts_event_ids.history_4
+ - variable.nws_alerts_event_ids.history_5
+ - variable.nws_alerts_event_ids.history_6
+ - variable.nws_alerts_event_ids.history_7
+ - variable.nws_alerts_event_ids.history_8
+ - variable.nws_alerts_event_ids.history_9
- variable.nws_alerts_event_ids.history_10
\ No newline at end of file
diff --git a/scripts/cameras/cam03_computer_area.yaml b/scripts/cameras/cam03_computer_area.yaml
index 8c55353..1f51ddd 100644
--- a/scripts/cameras/cam03_computer_area.yaml
+++ b/scripts/cameras/cam03_computer_area.yaml
@@ -1,8 +1,8 @@
-alias: Cam03 on Computer Area Hub
-sequence:
-- service: webrtc.dash_cast
- data:
- entity_id: media_player.computer_area_hub
- url: rtsp_cam03
- extra:
+alias: Cam03 on Computer Area Hub
+sequence:
+- service: webrtc.dash_cast
+ data:
+ entity_id: media_player.computer_area_hub
+ url: rtsp_cam03
+ extra:
mode: webrtc
\ No newline at end of file
diff --git a/scripts/cameras/cam03_sub_computer_area.yaml b/scripts/cameras/cam03_sub_computer_area.yaml
index ae1407f..4dc96df 100644
--- a/scripts/cameras/cam03_sub_computer_area.yaml
+++ b/scripts/cameras/cam03_sub_computer_area.yaml
@@ -1,8 +1,8 @@
-alias: Cam03_sub on Computer Area Hub
-sequence:
-- service: webrtc.dash_cast
- data:
- entity_id: media_player.computer_area_hub
- url: rtsp_cam03_sub
- extra:
+alias: Cam03_sub on Computer Area Hub
+sequence:
+- service: webrtc.dash_cast
+ data:
+ entity_id: media_player.computer_area_hub
+ url: rtsp_cam03_sub
+ extra:
mode: webrtc
\ No newline at end of file
diff --git a/scripts/cameras/cam08_computer_area.yaml b/scripts/cameras/cam08_computer_area.yaml
index 87b5c90..c057c98 100644
--- a/scripts/cameras/cam08_computer_area.yaml
+++ b/scripts/cameras/cam08_computer_area.yaml
@@ -1,8 +1,8 @@
-alias: Cam08 on Computer Area Hub
-sequence:
-- service: webrtc.dash_cast
- data:
- entity_id: media_player.computer_area_hub
- url: rtsp_cam08
- extra:
+alias: Cam08 on Computer Area Hub
+sequence:
+- service: webrtc.dash_cast
+ data:
+ entity_id: media_player.computer_area_hub
+ url: rtsp_cam08
+ extra:
mode: webrtc
\ No newline at end of file
diff --git a/scripts/cameras/cam08_front_room.yaml b/scripts/cameras/cam08_front_room.yaml
index a10a146..6729a6b 100644
--- a/scripts/cameras/cam08_front_room.yaml
+++ b/scripts/cameras/cam08_front_room.yaml
@@ -1,8 +1,8 @@
-alias: Cam08 on Front Room Hub
-sequence:
-- service: webrtc.dash_cast
- data:
- entity_id: media_player.front_room_hub
- url: rtsp_cam08_sub
- extra:
+alias: Cam08 on Front Room Hub
+sequence:
+- service: webrtc.dash_cast
+ data:
+ entity_id: media_player.front_room_hub
+ url: rtsp_cam08_sub
+ extra:
mode: webrtc
\ No newline at end of file
diff --git a/scripts/cameras/cam13_computer_area.yaml b/scripts/cameras/cam13_computer_area.yaml
index cd89ac1..2e659a6 100644
--- a/scripts/cameras/cam13_computer_area.yaml
+++ b/scripts/cameras/cam13_computer_area.yaml
@@ -1,8 +1,8 @@
-alias: Cam13 on Computer Area Hub
-sequence:
-- service: webrtc.dash_cast
- data:
- entity_id: media_player.computer_area_hub
- url: rtsp://192.168.1.7:8554/rtsp_cam13_sub
- extra:
+alias: Cam13 on Computer Area Hub
+sequence:
+- service: webrtc.dash_cast
+ data:
+ entity_id: media_player.computer_area_hub
+ url: rtsp://192.168.1.7:8554/rtsp_cam13_sub
+ extra:
mode: webrtc
\ No newline at end of file
diff --git a/scripts/cameras/cam13_front_room.yaml b/scripts/cameras/cam13_front_room.yaml
index 1237860..19af03f 100644
--- a/scripts/cameras/cam13_front_room.yaml
+++ b/scripts/cameras/cam13_front_room.yaml
@@ -1,8 +1,8 @@
-alias: Cam13 on Front Room Hub
-sequence:
-- service: webrtc.dash_cast
- data:
- entity_id: media_player.front_room_hub
- url: rtsp://192.168.1.7:8554/rtsp_cam13_sub
- extra:
+alias: Cam13 on Front Room Hub
+sequence:
+- service: webrtc.dash_cast
+ data:
+ entity_id: media_player.front_room_hub
+ url: rtsp://192.168.1.7:8554/rtsp_cam13_sub
+ extra:
mode: webrtc
\ No newline at end of file
diff --git a/scripts/cameras/cam19_computer_area.yaml b/scripts/cameras/cam19_computer_area.yaml
index d396500..18b5bfd 100644
--- a/scripts/cameras/cam19_computer_area.yaml
+++ b/scripts/cameras/cam19_computer_area.yaml
@@ -1,8 +1,8 @@
-alias: Cam19 on Computer Area Hub
-sequence:
-- service: webrtc.dash_cast
- data:
- entity_id: media_player.computer_area_hub
- url: rtsp://192.168.1.7:8554/rtsp_cam19_sub
- extra:
+alias: Cam19 on Computer Area Hub
+sequence:
+- service: webrtc.dash_cast
+ data:
+ entity_id: media_player.computer_area_hub
+ url: rtsp://192.168.1.7:8554/rtsp_cam19_sub
+ extra:
mode: webrtc
\ No newline at end of file
diff --git a/scripts/cameras/cam19_front_room.yaml b/scripts/cameras/cam19_front_room.yaml
index 716dfc9..13406cb 100644
--- a/scripts/cameras/cam19_front_room.yaml
+++ b/scripts/cameras/cam19_front_room.yaml
@@ -1,8 +1,8 @@
-alias: Cam19 on Front Room Hub
-sequence:
-- service: webrtc.dash_cast
- data:
- entity_id: media_player.front_room_hub
- url: rtsp://192.168.1.7:8554/rtsp_cam19_sub
- extra:
+alias: Cam19 on Front Room Hub
+sequence:
+- service: webrtc.dash_cast
+ data:
+ entity_id: media_player.front_room_hub
+ url: rtsp://192.168.1.7:8554/rtsp_cam19_sub
+ extra:
mode: webrtc
\ No newline at end of file
diff --git a/scripts/cameras/create_camera_link.yaml b/scripts/cameras/create_camera_link.yaml
index 6065783..3b17852 100644
--- a/scripts/cameras/create_camera_link.yaml
+++ b/scripts/cameras/create_camera_link.yaml
@@ -1,17 +1,17 @@
-alias: Create temporary camera link
-sequence:
- - variables:
- link_id: "{% for _ in range(40) %}{{ range(10)|random }}{% endfor %}"
-
- - service: webrtc.create_link
- data:
- link_id: "{{ link_id }}" # create a random or permanent link ID
- # url: rtsp://rtsp:12345678@192.168.1.123:554/av_stream/ch0
- # entity: camera.sonoff # you can use camera entity_id or url
- url: rtsp://192.168.1.7:8554/rtsp_cam03_sub
- open_limit: 1 # how many times a link can be opened (0 - unlimit, 1 - default)
- time_to_live: 60 # how many seconds will the link live (0 - unlimit, 60 - default)
-
- - service: persistent_notification.create
- data:
+alias: Create temporary camera link
+sequence:
+ - variables:
+ link_id: "{% for _ in range(40) %}{{ range(10)|random }}{% endfor %}"
+
+ - service: webrtc.create_link
+ data:
+ link_id: "{{ link_id }}" # create a random or permanent link ID
+ # url: rtsp://rtsp:12345678@192.168.1.123:554/av_stream/ch0
+ # entity: camera.sonoff # you can use camera entity_id or url
+ url: rtsp://192.168.1.7:8554/rtsp_cam03_sub
+ open_limit: 1 # how many times a link can be opened (0 - unlimit, 1 - default)
+ time_to_live: 60 # how many seconds will the link live (0 - unlimit, 60 - default)
+
+ - service: persistent_notification.create
+ data:
message: 'Open Camera'
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/cloudy-day-1.svg b/www/icons/weather_icons/animated/cloudy-day-1.svg
new file mode 100644
index 0000000..c1f1922
--- /dev/null
+++ b/www/icons/weather_icons/animated/cloudy-day-1.svg
@@ -0,0 +1,175 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/cloudy-day-2.svg b/www/icons/weather_icons/animated/cloudy-day-2.svg
new file mode 100644
index 0000000..712a564
--- /dev/null
+++ b/www/icons/weather_icons/animated/cloudy-day-2.svg
@@ -0,0 +1,176 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/cloudy-day-3.svg b/www/icons/weather_icons/animated/cloudy-day-3.svg
new file mode 100644
index 0000000..ddcd408
--- /dev/null
+++ b/www/icons/weather_icons/animated/cloudy-day-3.svg
@@ -0,0 +1,175 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/cloudy-night-1.svg b/www/icons/weather_icons/animated/cloudy-night-1.svg
new file mode 100644
index 0000000..bc6360d
--- /dev/null
+++ b/www/icons/weather_icons/animated/cloudy-night-1.svg
@@ -0,0 +1,198 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/cloudy-night-2.svg b/www/icons/weather_icons/animated/cloudy-night-2.svg
new file mode 100644
index 0000000..391ceeb
--- /dev/null
+++ b/www/icons/weather_icons/animated/cloudy-night-2.svg
@@ -0,0 +1,198 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/cloudy-night-3.svg b/www/icons/weather_icons/animated/cloudy-night-3.svg
new file mode 100644
index 0000000..2425af9
--- /dev/null
+++ b/www/icons/weather_icons/animated/cloudy-night-3.svg
@@ -0,0 +1,198 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/cloudy.svg b/www/icons/weather_icons/animated/cloudy.svg
new file mode 100644
index 0000000..d94fd30
--- /dev/null
+++ b/www/icons/weather_icons/animated/cloudy.svg
@@ -0,0 +1,500 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/day.svg b/www/icons/weather_icons/animated/day.svg
new file mode 100644
index 0000000..6566b16
--- /dev/null
+++ b/www/icons/weather_icons/animated/day.svg
@@ -0,0 +1,521 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/night.svg b/www/icons/weather_icons/animated/night.svg
new file mode 100644
index 0000000..0c13686
--- /dev/null
+++ b/www/icons/weather_icons/animated/night.svg
@@ -0,0 +1,503 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/rainy-1.svg b/www/icons/weather_icons/animated/rainy-1.svg
new file mode 100644
index 0000000..575df6c
--- /dev/null
+++ b/www/icons/weather_icons/animated/rainy-1.svg
@@ -0,0 +1,157 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/rainy-2.svg b/www/icons/weather_icons/animated/rainy-2.svg
new file mode 100644
index 0000000..faa8cf0
--- /dev/null
+++ b/www/icons/weather_icons/animated/rainy-2.svg
@@ -0,0 +1,133 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/rainy-3.svg b/www/icons/weather_icons/animated/rainy-3.svg
new file mode 100644
index 0000000..bfb2a4c
--- /dev/null
+++ b/www/icons/weather_icons/animated/rainy-3.svg
@@ -0,0 +1,157 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/rainy-4.svg b/www/icons/weather_icons/animated/rainy-4.svg
new file mode 100644
index 0000000..52252b4
--- /dev/null
+++ b/www/icons/weather_icons/animated/rainy-4.svg
@@ -0,0 +1,66 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/rainy-5.svg b/www/icons/weather_icons/animated/rainy-5.svg
new file mode 100644
index 0000000..52461db
--- /dev/null
+++ b/www/icons/weather_icons/animated/rainy-5.svg
@@ -0,0 +1,90 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/rainy-6.svg b/www/icons/weather_icons/animated/rainy-6.svg
new file mode 100644
index 0000000..ea384b1
--- /dev/null
+++ b/www/icons/weather_icons/animated/rainy-6.svg
@@ -0,0 +1,91 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/rainy-7.svg b/www/icons/weather_icons/animated/rainy-7.svg
new file mode 100644
index 0000000..220dcf8
--- /dev/null
+++ b/www/icons/weather_icons/animated/rainy-7.svg
@@ -0,0 +1,91 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/snowy-1.svg b/www/icons/weather_icons/animated/snowy-1.svg
new file mode 100644
index 0000000..1045466
--- /dev/null
+++ b/www/icons/weather_icons/animated/snowy-1.svg
@@ -0,0 +1,230 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/snowy-2.svg b/www/icons/weather_icons/animated/snowy-2.svg
new file mode 100644
index 0000000..f01f8b7
--- /dev/null
+++ b/www/icons/weather_icons/animated/snowy-2.svg
@@ -0,0 +1,237 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/snowy-3.svg b/www/icons/weather_icons/animated/snowy-3.svg
new file mode 100644
index 0000000..8c51ef8
--- /dev/null
+++ b/www/icons/weather_icons/animated/snowy-3.svg
@@ -0,0 +1,268 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/snowy-4.svg b/www/icons/weather_icons/animated/snowy-4.svg
new file mode 100644
index 0000000..e282d18
--- /dev/null
+++ b/www/icons/weather_icons/animated/snowy-4.svg
@@ -0,0 +1,94 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/snowy-5.svg b/www/icons/weather_icons/animated/snowy-5.svg
new file mode 100644
index 0000000..463d6d8
--- /dev/null
+++ b/www/icons/weather_icons/animated/snowy-5.svg
@@ -0,0 +1,166 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/snowy-6.svg b/www/icons/weather_icons/animated/snowy-6.svg
new file mode 100644
index 0000000..beba9e4
--- /dev/null
+++ b/www/icons/weather_icons/animated/snowy-6.svg
@@ -0,0 +1,225 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/thunder.svg b/www/icons/weather_icons/animated/thunder.svg
new file mode 100644
index 0000000..a27ff55
--- /dev/null
+++ b/www/icons/weather_icons/animated/thunder.svg
@@ -0,0 +1,268 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/weather-sprite.svg b/www/icons/weather_icons/animated/weather-sprite.svg
new file mode 100644
index 0000000..b0117b7
--- /dev/null
+++ b/www/icons/weather_icons/animated/weather-sprite.svg
@@ -0,0 +1,1245 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/weather.svg b/www/icons/weather_icons/animated/weather.svg
new file mode 100644
index 0000000..7258930
--- /dev/null
+++ b/www/icons/weather_icons/animated/weather.svg
@@ -0,0 +1,1245 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/weather_sagittarius.svg b/www/icons/weather_icons/animated/weather_sagittarius.svg
new file mode 100644
index 0000000..4285ab7
--- /dev/null
+++ b/www/icons/weather_icons/animated/weather_sagittarius.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/animated/weather_sunset.svg b/www/icons/weather_icons/animated/weather_sunset.svg
new file mode 100644
index 0000000..f491da7
--- /dev/null
+++ b/www/icons/weather_icons/animated/weather_sunset.svg
@@ -0,0 +1,14 @@
+
+
+
+
diff --git a/www/icons/weather_icons/static/cloudy-day-1.svg b/www/icons/weather_icons/static/cloudy-day-1.svg
new file mode 100644
index 0000000..0779355
--- /dev/null
+++ b/www/icons/weather_icons/static/cloudy-day-1.svg
@@ -0,0 +1,59 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/cloudy-day-2.svg b/www/icons/weather_icons/static/cloudy-day-2.svg
new file mode 100644
index 0000000..e8d51a2
--- /dev/null
+++ b/www/icons/weather_icons/static/cloudy-day-2.svg
@@ -0,0 +1,60 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/cloudy-day-3.svg b/www/icons/weather_icons/static/cloudy-day-3.svg
new file mode 100644
index 0000000..6ccf90b
--- /dev/null
+++ b/www/icons/weather_icons/static/cloudy-day-3.svg
@@ -0,0 +1,59 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/cloudy-night-1.svg b/www/icons/weather_icons/static/cloudy-night-1.svg
new file mode 100644
index 0000000..1f43b45
--- /dev/null
+++ b/www/icons/weather_icons/static/cloudy-night-1.svg
@@ -0,0 +1,41 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/cloudy-night-2.svg b/www/icons/weather_icons/static/cloudy-night-2.svg
new file mode 100644
index 0000000..054d6ef
--- /dev/null
+++ b/www/icons/weather_icons/static/cloudy-night-2.svg
@@ -0,0 +1,41 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/cloudy-night-3.svg b/www/icons/weather_icons/static/cloudy-night-3.svg
new file mode 100644
index 0000000..3e9df40
--- /dev/null
+++ b/www/icons/weather_icons/static/cloudy-night-3.svg
@@ -0,0 +1,41 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/cloudy.svg b/www/icons/weather_icons/static/cloudy.svg
new file mode 100644
index 0000000..a95dacd
--- /dev/null
+++ b/www/icons/weather_icons/static/cloudy.svg
@@ -0,0 +1,33 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/day.svg b/www/icons/weather_icons/static/day.svg
new file mode 100644
index 0000000..e638ec7
--- /dev/null
+++ b/www/icons/weather_icons/static/day.svg
@@ -0,0 +1,54 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/night.svg b/www/icons/weather_icons/static/night.svg
new file mode 100644
index 0000000..918ffd5
--- /dev/null
+++ b/www/icons/weather_icons/static/night.svg
@@ -0,0 +1,36 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/rainy-1.svg b/www/icons/weather_icons/static/rainy-1.svg
new file mode 100644
index 0000000..f3bdb19
--- /dev/null
+++ b/www/icons/weather_icons/static/rainy-1.svg
@@ -0,0 +1,63 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/rainy-2.svg b/www/icons/weather_icons/static/rainy-2.svg
new file mode 100644
index 0000000..294e2d0
--- /dev/null
+++ b/www/icons/weather_icons/static/rainy-2.svg
@@ -0,0 +1,62 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/rainy-3.svg b/www/icons/weather_icons/static/rainy-3.svg
new file mode 100644
index 0000000..2576756
--- /dev/null
+++ b/www/icons/weather_icons/static/rainy-3.svg
@@ -0,0 +1,63 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/rainy-4.svg b/www/icons/weather_icons/static/rainy-4.svg
new file mode 100644
index 0000000..ca0a309
--- /dev/null
+++ b/www/icons/weather_icons/static/rainy-4.svg
@@ -0,0 +1,33 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/rainy-5.svg b/www/icons/weather_icons/static/rainy-5.svg
new file mode 100644
index 0000000..423a393
--- /dev/null
+++ b/www/icons/weather_icons/static/rainy-5.svg
@@ -0,0 +1,34 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/rainy-6.svg b/www/icons/weather_icons/static/rainy-6.svg
new file mode 100644
index 0000000..ebb00e6
--- /dev/null
+++ b/www/icons/weather_icons/static/rainy-6.svg
@@ -0,0 +1,35 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/rainy-7.svg b/www/icons/weather_icons/static/rainy-7.svg
new file mode 100644
index 0000000..6535324
--- /dev/null
+++ b/www/icons/weather_icons/static/rainy-7.svg
@@ -0,0 +1,35 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/snowy-1.svg b/www/icons/weather_icons/static/snowy-1.svg
new file mode 100644
index 0000000..d8217db
--- /dev/null
+++ b/www/icons/weather_icons/static/snowy-1.svg
@@ -0,0 +1,77 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/snowy-2.svg b/www/icons/weather_icons/static/snowy-2.svg
new file mode 100644
index 0000000..ba822b9
--- /dev/null
+++ b/www/icons/weather_icons/static/snowy-2.svg
@@ -0,0 +1,67 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/snowy-3.svg b/www/icons/weather_icons/static/snowy-3.svg
new file mode 100644
index 0000000..28fde7a
--- /dev/null
+++ b/www/icons/weather_icons/static/snowy-3.svg
@@ -0,0 +1,75 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/snowy-4.svg b/www/icons/weather_icons/static/snowy-4.svg
new file mode 100644
index 0000000..6825143
--- /dev/null
+++ b/www/icons/weather_icons/static/snowy-4.svg
@@ -0,0 +1,38 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/snowy-5.svg b/www/icons/weather_icons/static/snowy-5.svg
new file mode 100644
index 0000000..08345bf
--- /dev/null
+++ b/www/icons/weather_icons/static/snowy-5.svg
@@ -0,0 +1,46 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/snowy-6.svg b/www/icons/weather_icons/static/snowy-6.svg
new file mode 100644
index 0000000..f24d541
--- /dev/null
+++ b/www/icons/weather_icons/static/snowy-6.svg
@@ -0,0 +1,54 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/thunder.svg b/www/icons/weather_icons/static/thunder.svg
new file mode 100644
index 0000000..e2da380
--- /dev/null
+++ b/www/icons/weather_icons/static/thunder.svg
@@ -0,0 +1,36 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/weather-sprite.svg b/www/icons/weather_icons/static/weather-sprite.svg
new file mode 100644
index 0000000..654fb42
--- /dev/null
+++ b/www/icons/weather_icons/static/weather-sprite.svg
@@ -0,0 +1,1245 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/weather.svg b/www/icons/weather_icons/static/weather.svg
new file mode 100644
index 0000000..c194c2c
--- /dev/null
+++ b/www/icons/weather_icons/static/weather.svg
@@ -0,0 +1,622 @@
+
+
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/weather_sagittarius.svg b/www/icons/weather_icons/static/weather_sagittarius.svg
new file mode 100644
index 0000000..4285ab7
--- /dev/null
+++ b/www/icons/weather_icons/static/weather_sagittarius.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/www/icons/weather_icons/static/weather_sunset.svg b/www/icons/weather_icons/static/weather_sunset.svg
new file mode 100644
index 0000000..f491da7
--- /dev/null
+++ b/www/icons/weather_icons/static/weather_sunset.svg
@@ -0,0 +1,14 @@
+
+
+
+