diff --git a/sensor.yaml b/sensor.yaml index 46438ca..993c5a7 100644 --- a/sensor.yaml +++ b/sensor.yaml @@ -38,9 +38,28 @@ sensor: - "service_changes" -# Bundle up all the data to send over to Weatherman. template: + # Update screen only when occupancy is detected. + + - trigger: + platform: time_pattern + seconds: "/5" + binary_sensor: + - name: Weatherman Motion Detected + unique_id: "dfa78de7-d761-425f-9731-86f1af332eac" + device_class: "occupancy" + delay_off: 5min + state: >- + {%- if states('binary_sensor.living_room_hue_sensor_motion') == 'on' or states('binary_sensor.front_door_switchbot_contact_sensor_motion_detected') == 'on' or states('binary_sensor.kitchen_counter_motion_sensor_motion') == 'on' %} + on + {%- else -%} + off + {%- endif -%} + + + # Bundle up all the data to send over to Weatherman (ESPHome device). + - trigger: platform: time_pattern minutes: "/1" @@ -54,79 +73,71 @@ template: {{ state_attr('sensor.mta_subway_l_service_status', 'direction_statuses').north | upper }} train_status_canarsie: > {{ state_attr('sensor.mta_subway_l_service_status', 'direction_statuses').south | upper }} - + weather_condition_now: > - {% set cond_now = states('weather.hourly') %} + {% set cond_now = states('weather.valhalla_hourly') %} {% if states('sun.sun') == 'below_horizon' %} {% if cond_now == 'sunny' %} night {% elif cond_now == 'partlycloudy' %} night-partly-cloudy {% else %} {{ cond_now }} {% endif %} {% else %} {{ cond_now }} {% endif %} - + weather_condition_0: > - {% set cond0 = state_attr('weather.hourly', 'forecast')[0].condition %} + {% set cond0 = state_attr('weather.valhalla_hourly', 'forecast')[0].condition %} {% set next_setting = as_timestamp(state_attr('sun.sun', 'next_setting')) %} {% set next_rising = as_timestamp(state_attr('sun.sun', 'next_rising')) %} - {% set cond0_time = as_timestamp(state_attr('weather.hourly', 'forecast')[0].datetime) %} - {% if states('sun.sun') == 'above_horizon' and cond0_time > next_setting %} - {% if cond0 == 'sunny' %} night {% elif cond0 == 'partlycloudy' %} night-partly-cloudy {% else %} {{ cond0 }} {% endif %} - {% elif states('sun.sun') == 'below_horizon' and cond0_time < next_rising %} + {% set cond0_time = as_timestamp(state_attr('weather.valhalla_hourly', 'forecast')[0].datetime) %} + {% if cond0_time > next_setting and cond0_time < next_rising %} {% if cond0 == 'sunny' %} night {% elif cond0 == 'partlycloudy' %} night-partly-cloudy {% else %} {{ cond0 }} {% endif %} {% else %} {{ cond0 }} {% endif %} weather_temperature_0: > - {{ state_attr('weather.hourly', 'forecast')[0].temperature | round }} + {{ state_attr('weather.valhalla_hourly', 'forecast')[0].temperature | round }} weather_timestamp_0: > - {{ as_timestamp(state_attr('weather.hourly', 'forecast')[0].datetime) | timestamp_custom('%I') | int }} {{ as_timestamp(state_attr('weather.hourly', 'forecast')[0].datetime) | timestamp_custom('%p') }} - + {{ as_timestamp(state_attr('weather.valhalla_hourly', 'forecast')[0].datetime) | timestamp_custom('%I') | int }} {{ as_timestamp(state_attr('weather.valhalla_hourly', 'forecast')[0].datetime) | timestamp_custom('%p') }} + weather_condition_1: > - {% set cond1 = state_attr('weather.hourly', 'forecast')[1].condition %} + {% set cond1 = state_attr('weather.valhalla_hourly', 'forecast')[1].condition %} {% set next_setting = as_timestamp(state_attr('sun.sun', 'next_setting')) %} {% set next_rising = as_timestamp(state_attr('sun.sun', 'next_rising')) %} - {% set cond1_time = as_timestamp(state_attr('weather.hourly', 'forecast')[1].datetime) %} - {% if states('sun.sun') == 'above_horizon' and cond1_time > next_setting %} - {% if cond1 == 'sunny' %} night {% elif cond1 == 'partlycloudy' %} night-partly-cloudy {% else %} {{ cond1 }} {% endif %} - {% elif states('sun.sun') == 'below_horizon' and cond1_time < next_rising %} + {% set cond1_time = as_timestamp(state_attr('weather.valhalla_hourly', 'forecast')[1].datetime) %} + {% if cond1_time > next_setting and cond1_time < next_rising %} {% if cond1 == 'sunny' %} night {% elif cond1 == 'partlycloudy' %} night-partly-cloudy {% else %} {{ cond1 }} {% endif %} {% else %} {{ cond1 }} {% endif %} weather_temperature_1: > - {{ state_attr('weather.hourly', 'forecast')[1].temperature | round }} + {{ state_attr('weather.valhalla_hourly', 'forecast')[1].temperature | round }} weather_timestamp_1: > - {{ as_timestamp(state_attr('weather.hourly', 'forecast')[1].datetime) | timestamp_custom('%I') | int }} {{ as_timestamp(state_attr('weather.hourly', 'forecast')[1].datetime) | timestamp_custom('%p') }} - + {{ as_timestamp(state_attr('weather.valhalla_hourly', 'forecast')[1].datetime) | timestamp_custom('%I') | int }} {{ as_timestamp(state_attr('weather.valhalla_hourly', 'forecast')[1].datetime) | timestamp_custom('%p') }} + weather_condition_2: > - {% set cond2 = state_attr('weather.hourly', 'forecast')[2].condition %} + {% set cond2 = state_attr('weather.valhalla_hourly', 'forecast')[2].condition %} {% set next_setting = as_timestamp(state_attr('sun.sun', 'next_setting')) %} {% set next_rising = as_timestamp(state_attr('sun.sun', 'next_rising')) %} - {% set cond2_time = as_timestamp(state_attr('weather.hourly', 'forecast')[2].datetime) %} - {% if states('sun.sun') == 'above_horizon' and cond2_time > next_setting %} - {% if cond2 == 'sunny' %} night {% elif cond2 == 'partlycloudy' %} night-partly-cloudy {% else %} {{ cond2 }} {% endif %} - {% elif states('sun.sun') == 'below_horizon' and cond2_time < next_rising %} + {% set cond2_time = as_timestamp(state_attr('weather.valhalla_hourly', 'forecast')[2].datetime) %} + {% if cond2_time > next_setting and cond2_time < next_rising %} {% if cond2 == 'sunny' %} night {% elif cond2 == 'partlycloudy' %} night-partly-cloudy {% else %} {{ cond2 }} {% endif %} {% else %} {{ cond2 }} {% endif %} weather_temperature_2: > - {{ state_attr('weather.hourly', 'forecast')[2].temperature | round }} + {{ state_attr('weather.valhalla_hourly', 'forecast')[2].temperature | round }} weather_timestamp_2: > - {{ as_timestamp(state_attr('weather.hourly', 'forecast')[2].datetime) | timestamp_custom('%I') | int }} {{ as_timestamp(state_attr('weather.hourly', 'forecast')[2].datetime) | timestamp_custom('%p') }} - + {{ as_timestamp(state_attr('weather.valhalla_hourly', 'forecast')[2].datetime) | timestamp_custom('%I') | int }} {{ as_timestamp(state_attr('weather.valhalla_hourly', 'forecast')[2].datetime) | timestamp_custom('%p') }} + weather_condition_3: > - {% set cond3 = state_attr('weather.hourly', 'forecast')[3].condition %} + {% set cond3 = state_attr('weather.valhalla_hourly', 'forecast')[3].condition %} {% set next_setting = as_timestamp(state_attr('sun.sun', 'next_setting')) %} {% set next_rising = as_timestamp(state_attr('sun.sun', 'next_rising')) %} - {% set cond3_time = as_timestamp(state_attr('weather.hourly', 'forecast')[3].datetime) %} - {% if states('sun.sun') == 'above_horizon' and cond3_time > next_setting %} - {% if cond3 == 'sunny' %} night {% elif cond3 == 'partlycloudy' %} night-partly-cloudy {% else %} {{ cond3 }} {% endif %} - {% elif states('sun.sun') == 'below_horizon' and cond3_time < next_rising %} + {% set cond3_time = as_timestamp(state_attr('weather.valhalla_hourly', 'forecast')[3].datetime) %} + {% if cond3_time > next_setting and cond3_time < next_rising %} {% if cond3 == 'sunny' %} night {% elif cond3 == 'partlycloudy' %} night-partly-cloudy {% else %} {{ cond3 }} {% endif %} {% else %} {{ cond3 }} {% endif %} weather_temperature_3: > - {{ state_attr('weather.hourly', 'forecast')[3].temperature | round }} + {{ state_attr('weather.valhalla_hourly', 'forecast')[3].temperature | round }} weather_timestamp_3: > - {{ as_timestamp(state_attr('weather.hourly', 'forecast')[3].datetime) | timestamp_custom('%I') | int }} {{ as_timestamp(state_attr('weather.hourly', 'forecast')[3].datetime) | timestamp_custom('%p') }} + {{ as_timestamp(state_attr('weather.valhalla_hourly', 'forecast')[3].datetime) | timestamp_custom('%I') | int }} {{ as_timestamp(state_attr('weather.valhalla_hourly', 'forecast')[3].datetime) | timestamp_custom('%p') }}