From d3f0fbb372590cc6d14954f2804cec157fc829dc Mon Sep 17 00:00:00 2001 From: root Date: Sun, 14 Apr 2024 14:24:35 -0400 Subject: [PATCH] adding weird untracked --- .../handle_dreamsurface_brightness.yaml | 94 +- components/notifies/precipitation.yaml | 6 +- .../packages/automatic_sprinkler_system.yaml | 1556 ++++++++--------- components/packages/automation.yaml | 2 +- components/packages/bayesian_testing.yaml | 134 +- components/packages/hvac_details.yaml | 136 +- .../packages/openmindsai/gpt_prompt.yaml | 18 +- .../openmindsai/update_response_log.yaml | 32 +- components/packages/pixel_7_coordinates.yaml | 74 +- .../rtl_433_devices/daisy_soil_moisture.yaml | 88 +- .../rtl_433_devices/deck_thermostat.yaml | 112 +- .../rtl_433_devices/hasta_moisture.yaml | 88 +- .../kitchen_freezer_thermostat.yaml | 84 +- .../kitchen_fridge_thermostat.yaml | 84 +- .../outdoor_rain_gauge_sensor.yaml | 144 +- .../rtl_433_devices/outdoor_thermostat.yaml | 112 +- .../sunflower_box_moisture.yaml | 88 +- lovelace/appliances/dishwasher.yaml | 166 +- lovelace/appliances/keurig.yaml | 166 +- lovelace/appliances/stove.yaml | 152 +- lovelace/appliances/tumble-dryer.yaml | 164 +- lovelace/appliances/washing-machine.yaml | 168 +- lovelace/details/view-openminds.yaml | 30 +- lovelace/templates/nws_alerts_tab.yaml | 300 ++-- scripts/cameras/cam03_computer_area.yaml | 14 +- scripts/cameras/cam03_sub_computer_area.yaml | 14 +- scripts/cameras/cam08_computer_area.yaml | 14 +- scripts/cameras/cam08_front_room.yaml | 14 +- scripts/cameras/cam13_computer_area.yaml | 14 +- scripts/cameras/cam13_front_room.yaml | 14 +- scripts/cameras/cam19_computer_area.yaml | 14 +- scripts/cameras/cam19_front_room.yaml | 14 +- scripts/cameras/create_camera_link.yaml | 32 +- .../weather_icons/animated/cloudy-day-1.svg | 175 ++ .../weather_icons/animated/cloudy-day-2.svg | 176 ++ .../weather_icons/animated/cloudy-day-3.svg | 175 ++ .../weather_icons/animated/cloudy-night-1.svg | 198 +++ .../weather_icons/animated/cloudy-night-2.svg | 198 +++ .../weather_icons/animated/cloudy-night-3.svg | 198 +++ www/icons/weather_icons/animated/cloudy.svg | 500 ++++++ www/icons/weather_icons/animated/day.svg | 521 ++++++ www/icons/weather_icons/animated/night.svg | 503 ++++++ www/icons/weather_icons/animated/rainy-1.svg | 157 ++ www/icons/weather_icons/animated/rainy-2.svg | 133 ++ www/icons/weather_icons/animated/rainy-3.svg | 157 ++ www/icons/weather_icons/animated/rainy-4.svg | 66 + www/icons/weather_icons/animated/rainy-5.svg | 90 + www/icons/weather_icons/animated/rainy-6.svg | 91 + www/icons/weather_icons/animated/rainy-7.svg | 91 + www/icons/weather_icons/animated/snowy-1.svg | 230 +++ www/icons/weather_icons/animated/snowy-2.svg | 237 +++ www/icons/weather_icons/animated/snowy-3.svg | 268 +++ www/icons/weather_icons/animated/snowy-4.svg | 94 + www/icons/weather_icons/animated/snowy-5.svg | 166 ++ www/icons/weather_icons/animated/snowy-6.svg | 225 +++ www/icons/weather_icons/animated/thunder.svg | 268 +++ .../weather_icons/animated/weather-sprite.svg | 1245 +++++++++++++ www/icons/weather_icons/animated/weather.svg | 1245 +++++++++++++ .../animated/weather_sagittarius.svg | 9 + .../weather_icons/animated/weather_sunset.svg | 14 + .../weather_icons/static/cloudy-day-1.svg | 59 + .../weather_icons/static/cloudy-day-2.svg | 60 + .../weather_icons/static/cloudy-day-3.svg | 59 + .../weather_icons/static/cloudy-night-1.svg | 41 + .../weather_icons/static/cloudy-night-2.svg | 41 + .../weather_icons/static/cloudy-night-3.svg | 41 + www/icons/weather_icons/static/cloudy.svg | 33 + www/icons/weather_icons/static/day.svg | 54 + www/icons/weather_icons/static/night.svg | 36 + www/icons/weather_icons/static/rainy-1.svg | 63 + www/icons/weather_icons/static/rainy-2.svg | 62 + www/icons/weather_icons/static/rainy-3.svg | 63 + www/icons/weather_icons/static/rainy-4.svg | 33 + www/icons/weather_icons/static/rainy-5.svg | 34 + www/icons/weather_icons/static/rainy-6.svg | 35 + www/icons/weather_icons/static/rainy-7.svg | 35 + www/icons/weather_icons/static/snowy-1.svg | 77 + www/icons/weather_icons/static/snowy-2.svg | 67 + www/icons/weather_icons/static/snowy-3.svg | 75 + www/icons/weather_icons/static/snowy-4.svg | 38 + www/icons/weather_icons/static/snowy-5.svg | 46 + www/icons/weather_icons/static/snowy-6.svg | 54 + www/icons/weather_icons/static/thunder.svg | 36 + .../weather_icons/static/weather-sprite.svg | 1245 +++++++++++++ www/icons/weather_icons/static/weather.svg | 622 +++++++ .../static/weather_sagittarius.svg | 9 + .../weather_icons/static/weather_sunset.svg | 14 + 87 files changed, 12533 insertions(+), 2071 deletions(-) create mode 100644 www/icons/weather_icons/animated/cloudy-day-1.svg create mode 100644 www/icons/weather_icons/animated/cloudy-day-2.svg create mode 100644 www/icons/weather_icons/animated/cloudy-day-3.svg create mode 100644 www/icons/weather_icons/animated/cloudy-night-1.svg create mode 100644 www/icons/weather_icons/animated/cloudy-night-2.svg create mode 100644 www/icons/weather_icons/animated/cloudy-night-3.svg create mode 100644 www/icons/weather_icons/animated/cloudy.svg create mode 100644 www/icons/weather_icons/animated/day.svg create mode 100644 www/icons/weather_icons/animated/night.svg create mode 100644 www/icons/weather_icons/animated/rainy-1.svg create mode 100644 www/icons/weather_icons/animated/rainy-2.svg create mode 100644 www/icons/weather_icons/animated/rainy-3.svg create mode 100644 www/icons/weather_icons/animated/rainy-4.svg create mode 100644 www/icons/weather_icons/animated/rainy-5.svg create mode 100644 www/icons/weather_icons/animated/rainy-6.svg create mode 100644 www/icons/weather_icons/animated/rainy-7.svg create mode 100644 www/icons/weather_icons/animated/snowy-1.svg create mode 100644 www/icons/weather_icons/animated/snowy-2.svg create mode 100644 www/icons/weather_icons/animated/snowy-3.svg create mode 100644 www/icons/weather_icons/animated/snowy-4.svg create mode 100644 www/icons/weather_icons/animated/snowy-5.svg create mode 100644 www/icons/weather_icons/animated/snowy-6.svg create mode 100644 www/icons/weather_icons/animated/thunder.svg create mode 100644 www/icons/weather_icons/animated/weather-sprite.svg create mode 100644 www/icons/weather_icons/animated/weather.svg create mode 100644 www/icons/weather_icons/animated/weather_sagittarius.svg create mode 100644 www/icons/weather_icons/animated/weather_sunset.svg create mode 100644 www/icons/weather_icons/static/cloudy-day-1.svg create mode 100644 www/icons/weather_icons/static/cloudy-day-2.svg create mode 100644 www/icons/weather_icons/static/cloudy-day-3.svg create mode 100644 www/icons/weather_icons/static/cloudy-night-1.svg create mode 100644 www/icons/weather_icons/static/cloudy-night-2.svg create mode 100644 www/icons/weather_icons/static/cloudy-night-3.svg create mode 100644 www/icons/weather_icons/static/cloudy.svg create mode 100644 www/icons/weather_icons/static/day.svg create mode 100644 www/icons/weather_icons/static/night.svg create mode 100644 www/icons/weather_icons/static/rainy-1.svg create mode 100644 www/icons/weather_icons/static/rainy-2.svg create mode 100644 www/icons/weather_icons/static/rainy-3.svg create mode 100644 www/icons/weather_icons/static/rainy-4.svg create mode 100644 www/icons/weather_icons/static/rainy-5.svg create mode 100644 www/icons/weather_icons/static/rainy-6.svg create mode 100644 www/icons/weather_icons/static/rainy-7.svg create mode 100644 www/icons/weather_icons/static/snowy-1.svg create mode 100644 www/icons/weather_icons/static/snowy-2.svg create mode 100644 www/icons/weather_icons/static/snowy-3.svg create mode 100644 www/icons/weather_icons/static/snowy-4.svg create mode 100644 www/icons/weather_icons/static/snowy-5.svg create mode 100644 www/icons/weather_icons/static/snowy-6.svg create mode 100644 www/icons/weather_icons/static/thunder.svg create mode 100644 www/icons/weather_icons/static/weather-sprite.svg create mode 100644 www/icons/weather_icons/static/weather.svg create mode 100644 www/icons/weather_icons/static/weather_sagittarius.svg create mode 100644 www/icons/weather_icons/static/weather_sunset.svg 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 @@ + + + Created with Sketch. + + + + + + \ 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 @@ + + + Created with Sketch. + + + + + + \ 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 @@ + + + + + + + + + + + +