609 lines
21 KiB
YAML
609 lines
21 KiB
YAML
bus:
|
|
|
|
# Время после которого будет разрешено работать автоматизации tg|ntf|tram10_rad-gor_<20m
|
|
|
|
input_datetime:
|
|
tram10_r_g_enable_time:
|
|
name: INPT|tram10_r_g_enable_time
|
|
has_date: false
|
|
has_time: true
|
|
initial: "07:15:00"
|
|
|
|
|
|
|
|
# Сенсоры, которые получают даннные о автобусе из API
|
|
|
|
#################34#####################################
|
|
|
|
sensor:
|
|
- platform: rest
|
|
name: bustime_34_kuz_pr
|
|
resource: "https://ru.busti.me/api/notify_stop/?stop_id=460789&bus_id=11299"
|
|
method: GET
|
|
scan_interval: 30
|
|
value_template: "{{ value_json.time }}"
|
|
json_attributes:
|
|
- name
|
|
- time
|
|
- x
|
|
- y
|
|
- updated
|
|
|
|
- platform: rest
|
|
name: bustime_34_circ
|
|
resource: "https://ru.busti.me/api/notify_stop/?stop_id=8880&bus_id=11299"
|
|
method: GET
|
|
scan_interval: 30
|
|
value_template: "{{ value_json.time }}"
|
|
json_attributes:
|
|
- name
|
|
- time
|
|
- x
|
|
- y
|
|
- updated
|
|
|
|
- platform: rest
|
|
name: bustime_34_univ
|
|
resource: "https://ru.busti.me/api/notify_stop/?stop_id=87239&bus_id=11299"
|
|
method: GET
|
|
scan_interval: 15
|
|
value_template: "{{ value_json.time }}"
|
|
json_attributes:
|
|
- name
|
|
- time
|
|
- x
|
|
- y
|
|
- updated
|
|
|
|
#################127#####################################
|
|
|
|
- platform: rest
|
|
name: bustime_127_circ
|
|
resource: "https://ru.busti.me/api/notify_stop/?stop_id=9277&bus_id=751"
|
|
method: GET
|
|
scan_interval: 30
|
|
value_template: "{{ value_json.time }}"
|
|
json_attributes:
|
|
- name
|
|
- time
|
|
- x
|
|
- y
|
|
- updated
|
|
|
|
#################100#####################################
|
|
|
|
- platform: rest
|
|
name: bustime_100_circ
|
|
resource: "https://ru.busti.me/api/notify_stop/?stop_id=8899&bus_id=649"
|
|
method: GET
|
|
scan_interval: 30
|
|
value_template: "{{ value_json.time }}"
|
|
json_attributes:
|
|
- name
|
|
- time
|
|
- x
|
|
- y
|
|
- updated
|
|
|
|
#################40#####################################
|
|
|
|
- platform: rest
|
|
name: bustime_40_circ
|
|
resource: "https://ru.busti.me/api/notify_stop/?stop_id=8880&bus_id=696"
|
|
method: GET
|
|
scan_interval: 30
|
|
value_template: "{{ value_json.time }}"
|
|
json_attributes:
|
|
- name
|
|
- time
|
|
- x
|
|
- y
|
|
- updated
|
|
|
|
#################12#####################################
|
|
|
|
- platform: rest
|
|
name: bustime_12_circ
|
|
resource: "https://ru.busti.me/api/notify_stop/?stop_id=9277&bus_id=652"
|
|
method: GET
|
|
scan_interval: 30
|
|
value_template: "{{ value_json.time }}"
|
|
json_attributes:
|
|
- name
|
|
- time
|
|
- x
|
|
- y
|
|
- updated
|
|
|
|
########################################################
|
|
|
|
# Остановка: Серебряный бор - мжк
|
|
#################10#####################################
|
|
|
|
- platform: rest
|
|
name: bustime_10_sereb_sbb
|
|
resource: "https://ru.busti.me/api/notify_stop/?stop_id=9395&bus_id=647"
|
|
method: GET
|
|
scan_interval: 15
|
|
value_template: "{{ value_json.time }}"
|
|
json_attributes:
|
|
- name
|
|
- time
|
|
- x
|
|
- y
|
|
- updated
|
|
|
|
- platform: rest
|
|
name: bustime_10_sereb_sb
|
|
resource: "https://ru.busti.me/api/notify_stop/?stop_id=9397&bus_id=647"
|
|
method: GET
|
|
scan_interval: 15
|
|
value_template: "{{ value_json.time }}"
|
|
json_attributes:
|
|
- name
|
|
- time
|
|
- x
|
|
- y
|
|
- updated
|
|
|
|
- platform: rest
|
|
name: bustime_10_sereb_a
|
|
resource: "https://ru.busti.me/api/notify_stop/?stop_id=9407&bus_id=647"
|
|
method: GET
|
|
scan_interval: 15
|
|
value_template: "{{ value_json.time }}"
|
|
json_attributes:
|
|
- name
|
|
- time
|
|
- x
|
|
- y
|
|
- updated
|
|
|
|
|
|
# Остановка: Кузбассэнерго (трамвай)- Радуга
|
|
#################10#####################################
|
|
|
|
- platform: rest
|
|
name: bustime_10_kemdor
|
|
resource: "https://ru.busti.me/api/notify_stop/?stop_id=8956&bus_id=647"
|
|
method: GET
|
|
scan_interval: 30
|
|
value_template: "{{ value_json.time }}"
|
|
json_attributes:
|
|
- name
|
|
- time
|
|
- x
|
|
- y
|
|
- updated
|
|
|
|
- platform: rest
|
|
name: bustime_10_kuzbass
|
|
resource: "https://ru.busti.me/api/notify_stop/?stop_id=125776&bus_id=647"
|
|
method: GET
|
|
scan_interval: 30
|
|
value_template: "{{ value_json.time }}"
|
|
json_attributes:
|
|
- name
|
|
- time
|
|
- x
|
|
- y
|
|
- updated
|
|
|
|
################шаблоны########################################
|
|
|
|
################10########################################
|
|
|
|
#сенсор показывющий время до остановки сельская б и до серебряный бор в сторону города 🚌 10 | Сельская Б: 12:49 (8 мин) | Ближ: 12:46
|
|
template:
|
|
- sensor:
|
|
- name: "tram10.raduga-gorod"
|
|
state: >
|
|
{% set s = 'sensor.bustime_10_sereb_a' %}
|
|
{% set e = 'sensor.bustime_10_sereb_sb' %}
|
|
|
|
{% set sereb_time = states(s) %}
|
|
{% set end_time = states(e) %}
|
|
|
|
{% set has_end = end_time not in ['unknown','unavailable',''] %}
|
|
{% set has_sereb = sereb_time not in ['unknown','unavailable',''] %}
|
|
|
|
{% if has_end %}
|
|
{% set now_ts = now() %}
|
|
{% set end_ts = today_at(end_time) %}
|
|
{% set delta = (end_ts - now_ts).total_seconds() / 60 %}
|
|
{% if delta < -720 %}
|
|
{% set end_ts = end_ts + timedelta(days=1) %}
|
|
{% endif %}
|
|
{% set diff = ((end_ts - now_ts).total_seconds() / 60) | round(0) %}
|
|
{% endif %}
|
|
|
|
🚌 10 | Сельская Б: {{ end_time if has_end else 'нет данных' }}{% if has_end %} ({{ diff }} мин){% endif %} | Ближ: {{ sereb_time if has_sereb else 'нет данных' }}
|
|
|
|
#сенсор показывющий время до остановки кузбассэнерго в сторону радуги 🚌 10 | нет данных
|
|
- sensor:
|
|
- name: "tram10.gorod-raduga"
|
|
state: >
|
|
{% set s = 'sensor.bustime_10_kuzbass' %}
|
|
|
|
{% set route = state_attr(s,'name') or '10' %}
|
|
{% set stop_time = states(s) %}
|
|
{% set has_time = stop_time not in ['unknown','unavailable',''] %}
|
|
|
|
{% if has_time %}
|
|
{% set now_ts = now() %}
|
|
{% set stop_ts = today_at(stop_time) %}
|
|
{% set delta = (stop_ts - now_ts).total_seconds() / 60 %}
|
|
|
|
{# если ушло сильно в минус — значит это уже завтра #}
|
|
{% if delta < -720 %}
|
|
{% set stop_ts = stop_ts + timedelta(days=1) %}
|
|
{% endif %}
|
|
|
|
{% set diff = ((stop_ts - now_ts).total_seconds() / 60) | round(0) %}
|
|
{% endif %}
|
|
|
|
🚌 {{ route }} | {{ stop_time if has_time else 'нет данных' }}{% if has_time %} ({{ diff }} мин){% endif %}
|
|
|
|
#сенсор проверки, что осталось от 3 до 1 минуты до остановки сельская больница трамвая 10, используется в tg|ntf|tram10_rad-gor_<20m
|
|
|
|
- sensor:
|
|
- name: "tram10.raduga<3m"
|
|
state: >
|
|
{% set t = states('sensor.bustime_10_sereb_sb') %}
|
|
{% if t in ['unknown','unavailable',''] %}
|
|
false
|
|
{% else %}
|
|
{% set now_ts = now() %}
|
|
{% set arr = today_at(t) %}
|
|
{% if arr < now_ts %}
|
|
{% set arr = arr + timedelta(days=1) %}
|
|
{% endif %}
|
|
{% set diff = ((arr - now_ts).total_seconds() / 60) %}
|
|
{{ 1 <= diff <= 4 }}
|
|
{% endif %}
|
|
|
|
#сенсоры сравнения координат автобуса и остановки sensor.bus34_stop_ub, используется в tg|ntf|bus34_ub_check
|
|
#34
|
|
- sensor:
|
|
- name: "bus34_stop_ub_gps_true"
|
|
state: >
|
|
{% set lat1 = state_attr('sensor.bus34_stop_univ','latitude') %}
|
|
{% set lon1 = state_attr('sensor.bus34_stop_univ','longitude') %}
|
|
|
|
{% set lat2 = state_attr('sensor.bustime_34_univ','y') %}
|
|
{% set lon2 = state_attr('sensor.bustime_34_univ','x') %}
|
|
|
|
{% if lat2 and lon2 %}
|
|
{{ distance(lat1, lon1, lat2, lon2) <= 0.02 }}
|
|
{% else %}
|
|
false
|
|
{% endif %}
|
|
|
|
#10
|
|
- sensor:
|
|
- name: "tram10_stop_kemdor_gps_true"
|
|
state: >
|
|
{% set lat1 = state_attr('sensor.tram10_stop_kemdor','latitude') %}
|
|
{% set lon1 = state_attr('sensor.tram10_stop_kemdor','longitude') %}
|
|
|
|
{% set lat2 = state_attr('sensor.bustime_10_kemdor','y') %}
|
|
{% set lon2 = state_attr('sensor.bustime_10_kemdor','x') %}
|
|
|
|
{% if lat2 and lon2 %}
|
|
{{ distance(lat1, lon1, lat2, lon2) <= 0.2 }}
|
|
{% else %}
|
|
false
|
|
{% endif %}
|
|
|
|
|
|
#Сенсор с координатами
|
|
#34
|
|
- sensor:
|
|
- name: "bus34_stop_univ"
|
|
state: "ok"
|
|
attributes:
|
|
latitude: 55.344968
|
|
longitude: 86.127703
|
|
|
|
|
|
#10
|
|
#34
|
|
- sensor:
|
|
- name: "tram10_stop_kemdor"
|
|
state: "ok"
|
|
attributes:
|
|
latitude: 55.348193
|
|
longitude: 86.061649
|
|
|
|
|
|
|
|
automation:
|
|
#####################################10#########################################
|
|
##############################10Радуга-Город####################################
|
|
|
|
###########################запуск автоматизации#################################
|
|
|
|
- alias: tg|ntf|tram10_rad-gor_ask_run
|
|
description: ""
|
|
mode: single
|
|
triggers:
|
|
- trigger: time
|
|
at: "22:00:00"
|
|
weekday:
|
|
- mon
|
|
- tue
|
|
- wed
|
|
- thu
|
|
- sun
|
|
action:
|
|
- action: input_datetime.set_datetime
|
|
metadata: {}
|
|
target:
|
|
entity_id: input_datetime.tram10_r_g_enable_time
|
|
data:
|
|
time: "07:15:00"
|
|
- action: automation.turn_on
|
|
metadata: {}
|
|
target:
|
|
entity_id: automation.tg_ntf_tram10_rad_gor_20m
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
chat_id:
|
|
- "-1002006010424"
|
|
message: "🚌 Запустить автоматизацию уведомления трамвая 10?"
|
|
inline_keyboard:
|
|
- "▶ Запустить:/tram10_r_g_run, ❌ Не запускать:/tram10_r_g_skip"
|
|
- '{{''\U0001F552''}}Время:/toggle_bs_r_g_time, {{''\U0001F553''}}Сброс:/toggle_bs_r_g_cancel'
|
|
|
|
|
|
## Управление временем запуска уведомления прихода трамвая 10 радуга-город
|
|
- id: tg|mn|tram10_start_time_raduga_gorod
|
|
alias: tg|mn|tram10_start_time_raduga_gorod
|
|
initial_state: true
|
|
trigger:
|
|
- platform: event
|
|
event_type: telegram_callback
|
|
event_data: {}
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{ trigger.event.data.command == '/toggle_bs_r_g_time' }}"
|
|
sequence:
|
|
- service: telegram_bot.delete_message
|
|
data_template:
|
|
message_id: "{{ trigger.event.data.message.message_id }}"
|
|
chat_id: "{{ trigger.event.data.chat_id }}"
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
chat_id: "{{ trigger.event.data.chat_id }}"
|
|
message: &msg_bs_t10_r_g |
|
|
{{'\U0001F30A'}}Выбор времени начала уведомлений: {{ states('input_datetime.tram10_r_g_enable_time') }}
|
|
|
|
inline_keyboard: &keyb_bs_t10_r_g
|
|
- '{{''\U0001F556''}}7:00:/toggle_bs_r_g_time7, {{''\U0001F557''}}8:00:/toggle_bs_r_g_time8'
|
|
- "▶ Запустить:/tram10_r_g_run, ❌ Не запускать:/tram10_r_g_skip"
|
|
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{ trigger.event.data.command == '/toggle_bs_r_g_time7' }}"
|
|
sequence:
|
|
- service: input_datetime.set_datetime
|
|
data:
|
|
time: "07:00:00"
|
|
target:
|
|
entity_id: input_datetime.tram10_r_g_enable_time
|
|
- delay:
|
|
milliseconds: 500
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: "{{ trigger.event.data.id }}"
|
|
message: |
|
|
{{"\U0001F4AC"}} Время установлено на 7:00
|
|
- service: telegram_bot.delete_message
|
|
data_template:
|
|
message_id: "{{ trigger.event.data.message.message_id }}"
|
|
chat_id: "{{ trigger.event.data.chat_id }}"
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
chat_id: "{{ trigger.event.data.chat_id }}"
|
|
message: *msg_bs_t10_r_g
|
|
inline_keyboard: *keyb_bs_t10_r_g
|
|
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{ trigger.event.data.command == '/toggle_bs_r_g_time8' }}"
|
|
sequence:
|
|
- service: input_datetime.set_datetime
|
|
data:
|
|
time: "08:00:00"
|
|
target:
|
|
entity_id: input_datetime.tram10_r_g_enable_time
|
|
- delay:
|
|
milliseconds: 500
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: "{{ trigger.event.data.id }}"
|
|
message: |
|
|
{{"\U0001F4AC"}} Время установлено на 8:00
|
|
- service: telegram_bot.delete_message
|
|
data_template:
|
|
message_id: "{{ trigger.event.data.message.message_id }}"
|
|
chat_id: "{{ trigger.event.data.chat_id }}"
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
chat_id: "{{ trigger.event.data.chat_id }}"
|
|
message: *msg_bs_t10_r_g
|
|
inline_keyboard: *keyb_bs_t10_r_g
|
|
|
|
|
|
- alias: tg|tram10_rad_gor_run
|
|
mode: single
|
|
trigger:
|
|
- platform: event
|
|
event_type: telegram_callback
|
|
event_data:
|
|
data: "/tram10_r_g_run"
|
|
|
|
action:
|
|
- service: automation.turn_on
|
|
target:
|
|
entity_id: automation.tg_ntf_tram10_rad_gor_20m
|
|
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
chat_id:
|
|
- "-1002006010424"
|
|
message: "✅ Автоматизация трамвая 10 включена"
|
|
|
|
|
|
- alias: tg|tram10_rad_gor_skip
|
|
mode: single
|
|
trigger:
|
|
- platform: event
|
|
event_type: telegram_callback
|
|
event_data:
|
|
command: "/tram10_r_g_skip"
|
|
action:
|
|
- action: automation.turn_off
|
|
metadata: {}
|
|
target:
|
|
entity_id: automation.tg_ntf_tram10_rad_gor_20m
|
|
data:
|
|
stop_actions: true
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
chat_id:
|
|
- "-1002006010424"
|
|
message: "❌Оповещения трамвая 10 Радуга-Город отключены"
|
|
inline_keyboard:
|
|
- "▶ Запустить:/tram10_r_g_run"
|
|
|
|
|
|
|
|
- alias: tg|ntf|tram10_rad-gor_<20m
|
|
description: ""
|
|
mode: single
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- sensor.tram10_raduga_3m
|
|
from:
|
|
- "False"
|
|
to:
|
|
- "True"
|
|
for:
|
|
hours: 0
|
|
minutes: 0
|
|
seconds: 0
|
|
conditions:
|
|
- condition: template
|
|
value_template: >
|
|
{{ now().strftime('%H:%M') >=
|
|
states('input_datetime.tram10_r_g_enable_time')[0:5] }}
|
|
actions:
|
|
- action: telegram_bot.send_message
|
|
metadata: {}
|
|
data:
|
|
chat_id:
|
|
- "-1002006010424"
|
|
message: >-
|
|
🚌 10 будет ~ {{ states('sensor.bustime_10_sereb_a') }}, следующий ~ {%
|
|
set t = states('sensor.bustime_10_sereb_sb') %}{% if t in
|
|
['unknown','unavailable',''] %}нет данных{% else %}{% set base =
|
|
today_at(t) %}{% set plus = base + timedelta(minutes=10) %}{{
|
|
plus.strftime('%H:%M') }}{% endif %}
|
|
- action: automation.turn_off
|
|
metadata: {}
|
|
target:
|
|
entity_id: automation.tg_ntf_tram10_rad_gor_20m
|
|
data:
|
|
stop_actions: false
|
|
- delay:
|
|
hours: 0
|
|
minutes: 3
|
|
seconds: 0
|
|
milliseconds: 0
|
|
- action: automation.turn_on
|
|
metadata: {}
|
|
target:
|
|
entity_id: automation.tg_ntf_tram10_rad_gor_20m
|
|
data: {}
|
|
|
|
|
|
- alias: tg|ntf|tram10_rad-gor_<20m_off
|
|
description: ""
|
|
mode: single
|
|
triggers:
|
|
- trigger: zone
|
|
entity_id: device_tracker.google_maps_108918666344169166438
|
|
zone: zone.transport_raduga
|
|
event: leave
|
|
conditions:
|
|
- condition: state
|
|
entity_id: automation.tg_ntf_tram10_rad_gor_20m
|
|
state:
|
|
- "on"
|
|
actions:
|
|
- action: automation.turn_off
|
|
metadata: {}
|
|
target:
|
|
entity_id: automation.tg_ntf_tram10_rad_gor_20m
|
|
data:
|
|
stop_actions: true
|
|
- action: telegram_bot.send_message
|
|
metadata: {}
|
|
data:
|
|
chat_id:
|
|
- "-1002006010424"
|
|
message: >-
|
|
Вы покинули зону уведомлений транспорта на радуге - автоматизация
|
|
отключена
|
|
|
|
##############################10Город-Радуга####################################
|
|
|
|
- alias: tg|ntf|tram10_kemdor_check
|
|
description: ""
|
|
mode: single
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- sensor.bus34_stop_ub_gps_true
|
|
from: null
|
|
to:
|
|
- "True"
|
|
conditions: []
|
|
actions:
|
|
- action: telegram_bot.send_message
|
|
metadata: {}
|
|
data:
|
|
chat_id:
|
|
- "-1002006010424"
|
|
message: 🚌 34 проехал юбилейный
|
|
|
|
#####################################34#########################################
|
|
#################################город-радуга###################################
|
|
|
|
- alias: tg|ntf|bus34_ub_check
|
|
description: ""
|
|
mode: single
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- sensor.tram10_stop_kemdor_gps_true
|
|
from: null
|
|
to:
|
|
- "True"
|
|
conditions: []
|
|
actions:
|
|
- action: telegram_bot.send_message
|
|
metadata: {}
|
|
data:
|
|
chat_id:
|
|
- "-1002006010424"
|
|
message: 🚌 10 проехал кемдор
|
|
|
|
|
|
|
|
|