You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
7.0 KiB
141 lines
7.0 KiB
|
|
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"
|
|
|
|
|
|
template:
|
|
|
|
# Update screen only when occupancy is detected.
|
|
|
|
- binary_sensor:
|
|
- name: Weatherman Motion Detected
|
|
unique_id: "dfa78de7-d761-425f-9731-86f1af332eac"
|
|
device_class: "occupancy"
|
|
delay_off: 1min
|
|
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"
|
|
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.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.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.valhalla_hourly', 'forecast')[0].datetime) %}
|
|
{% if cond0_time < next_rising and next_rising < next_setting %}
|
|
{% if cond0 == 'sunny' %} night {% elif cond0 == 'partlycloudy' %} night-partly-cloudy {% else %} {{ cond0 }} {% endif %}
|
|
{% else %}
|
|
{{ cond0 }}
|
|
{% endif %}
|
|
weather_temperature_0: >
|
|
{{ state_attr('weather.valhalla_hourly', 'forecast')[0].temperature | round }}
|
|
weather_timestamp_0: >
|
|
{{ 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.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.valhalla_hourly', 'forecast')[1].datetime) %}
|
|
{% if cond1_time < next_rising and next_rising < next_setting %}
|
|
{% if cond1 == 'sunny' %} night {% elif cond1 == 'partlycloudy' %} night-partly-cloudy {% else %} {{ cond1 }} {% endif %}
|
|
{% else %}
|
|
{{ cond1 }}
|
|
{% endif %}
|
|
weather_temperature_1: >
|
|
{{ state_attr('weather.valhalla_hourly', 'forecast')[1].temperature | round }}
|
|
weather_timestamp_1: >
|
|
{{ 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.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.valhalla_hourly', 'forecast')[2].datetime) %}
|
|
{% if cond2_time < next_rising and next_rising < next_setting %}
|
|
{% if cond2 == 'sunny' %} night {% elif cond2 == 'partlycloudy' %} night-partly-cloudy {% else %} {{ cond2 }} {% endif %}
|
|
{% else %}
|
|
{{ cond2 }}
|
|
{% endif %}
|
|
weather_temperature_2: >
|
|
{{ state_attr('weather.valhalla_hourly', 'forecast')[2].temperature | round }}
|
|
weather_timestamp_2: >
|
|
{{ 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.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.valhalla_hourly', 'forecast')[3].datetime) %}
|
|
{% if cond3_time < next_rising and next_rising < next_setting %}
|
|
{% if cond3 == 'sunny' %} night {% elif cond3 == 'partlycloudy' %} night-partly-cloudy {% else %} {{ cond3 }} {% endif %}
|
|
{% else %}
|
|
{{ cond3 }}
|
|
{% endif %}
|
|
weather_temperature_3: >
|
|
{{ state_attr('weather.valhalla_hourly', 'forecast')[3].temperature | round }}
|
|
weather_timestamp_3: >
|
|
{{ 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') }}
|