mirror of
https://github.com/michivonah/esphome-eink-dashboard.git
synced 2025-12-22 21:16:28 +01:00
I didn't notice a bug in my nigh time symbol check to make the Moon symbols appear after Sun set. Turns out when the Sun has set, the original code was checking the setting of the FOLLOWING day, so the condition was never met, so night time symbols during night were reverting to day time. This update checks if Sun has set or not, and checks for appropriate rising or setting times depending if Sun has set or not. (future update would be to swap out Sun rising and setting times with Sun dusk and dawn times, as a bright Sun icon for 8pm (here in UK in summer) looks odd when it is getting dark, meh, maybe?! ¯\_(ツ)_/¯
132 lines
7.2 KiB
YAML
132 lines
7.2 KiB
YAML
|
|
sensor:
|
|
|
|
# Look up train arrival times using the GTFS_RT custom component (https://github.com/zacs/ha-gtfs-rt).
|
|
# You need to get your own MTA API Key, and also look up the stopID of your station at: https://transitfeeds.com/p/mta/79/latest/stops
|
|
|
|
# Alternatively, you can also use the GoodService.io API:
|
|
# https://www.goodservice.io/api/stops/<stop_id>
|
|
|
|
- platform: gtfs_rt
|
|
trip_update_url: "https://api-endpoint.mta.info/Dataservice/mtagtfsfeeds/nyct%2Fgtfs-l"
|
|
x_api_key: ENTER_YOUR_OWN_API_KEY
|
|
scan_interval: 60
|
|
entity_namespace: gtfs_mta_subway
|
|
departures:
|
|
- name: "Station (Northbound)"
|
|
route: "X"
|
|
stopid: "X00N"
|
|
- name: "Station (Southboard)"
|
|
route: "X"
|
|
stopid: "X00S"
|
|
|
|
|
|
# Get train service status from Goodservice.io
|
|
|
|
- platform: rest
|
|
resource: https://www.goodservice.io/api/routes/L
|
|
method: GET
|
|
scan_interval: 300
|
|
name: "MTA Subway L Service Status"
|
|
value_template: "{{ value_json.status }}"
|
|
json_attributes:
|
|
- "color"
|
|
- "service_change_summaries"
|
|
- "direction_statuses"
|
|
- "delay_summaries"
|
|
- "service_irregularity_summaries"
|
|
- "service_changes"
|
|
|
|
|
|
# Bundle up all the data to send over to Weatherman.
|
|
template:
|
|
|
|
- trigger:
|
|
platform: time_pattern
|
|
minutes: "/1"
|
|
sensor:
|
|
- name: Weatherman Data
|
|
state: "OK"
|
|
attributes:
|
|
train_status: >
|
|
{{ states('sensor.mta_subway_l_service_status') | upper }}
|
|
train_status_manhattan: >
|
|
{{ 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') %}
|
|
{% 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 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 %}
|
|
{% 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 }}
|
|
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') }}
|
|
|
|
weather_condition_1: >
|
|
{% set cond1 = state_attr('weather.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 %}
|
|
{% 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 }}
|
|
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') }}
|
|
|
|
weather_condition_2: >
|
|
{% set cond2 = state_attr('weather.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 %}
|
|
{% 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 }}
|
|
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') }}
|
|
|
|
weather_condition_3: >
|
|
{% set cond3 = state_attr('weather.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 %}
|
|
{% 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 }}
|
|
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') }}
|