Я тут недавно карту настраивал и заинтересовался что это за «Источники геолокации» такие в параметрах карточки:
Оказывается эта штука нужна, чтобы отслеживать разного рода предупреждения о погоде, землетрясениях и лесных пожарах. Из коробки в Home Assistant есть источники геолокации для Новой Зеландии, Испании, Австралии и других стран. Вот только я не в Австралии живу 🙂
Но в Home Assistant можно добавлять любые произвольные ленты оповещений в формате GeoRSS. Осталось найти эти самые ленты для России — это оказалось непросто.
Единая государственная система информации об обстановке в Мировом океане (ЕСИМО)
Спустя продолжительные поиски, я набрел на портал ЕСИМО, где мне таки удалось отыскать GeoRSS ленту для России и соседних стран.
Данные по погодным предупреждениям свободнораспространяемые, но такое ощущение, что ЕСИМО не хотели, чтобы я их нашел 😅 Вот, например, есть агрегированные данные опасных гидрометеорологических явлений по всему миру:
Но при экспорте в GeoRSS почему-то теряется бо́льшая часть предупреждений. Помимо агрегированных данных, нашлось еще 2 вот таких отдельных ресурса:
- Опасные явления и анализы. Штормовые предупреждения об опасных явлениях (O) за последние сутки (RU_RIHMI-WDC_487);
- Опасные явления и анализы. Штормовые оповещения (W) об опасных явлениях за последние сутки (RU_RIHMI-WDC_227).
В первом случае тип ГСТ «O», а во втором «W». Понятия не имею, что это значит, но зато оба ресурса нормально экспортируются в GeoRSS.
GeoRSS в Home Assistant
Я не буду приводить подробное описание формата GeoRSS, нам главное, что в GeoRSS у каждого сообщения в ленте указываются географические координаты. А это значит, что из общей ленты можно отфильтровать штормовые предупреждения только в определенном радиусе.
Для этого в Home Assistant уже есть интеграция. Чтобы ее настроить, в configuration.yaml
достаточно указать вот эти строчки:
sensor:
- platform: geo_rss_events
name: 'Weather alerts (O)'
url: 'http://portal.esimo.ru/dataview/viewrss?resourceId=RU_RIHMI-WDC_487'
unit_of_measurement: 'alerts'
radius: 120
- platform: geo_rss_events
name: 'Weather alerts (W)'
url: 'http://portal.esimo.ru/dataview/viewrss?resourceId=RU_RIHMI-WDC_227'
unit_of_measurement: 'alerts'
radius: 120
И после перезапуска Home Assistant у вас появятся новые сенсоры, показывающие количество погодных предупреждений в радиусе 120 километров от вашего дома:
И расстояние до них:
Отправка штормовых предупреждений в Telegram
Если не расскажу про настройку уведомлений, то я зря писал эту статью 🙂 Поэтому вот пример автоматизации:
automation:
- alias: "Weather alerts to Telegram"
trigger:
platform: state
entity_id:
- sensor.weather_alerts_o_any
- sensor.weather_alerts_w_any
condition:
condition: template
value_template: "{{ trigger.from_state.state | int < trigger.to_state.state | int }}"
action:
service: notify.telegram_roland
data:
message: >
{% set alert_sensors = [
states.sensor.weather_alerts_w_any,
states.sensor.weather_alerts_o_any,
] %}
{% set alerts = alert_sensors | map(attribute='attributes') | map('items') | map('selectattr', 1, 'contains', 'km') %}
{% set latest = alerts | map('list') | select() | map('max', attribute=0) | max(attribute=0) %}
Действует предупреждение об опасных погодных явлениях от {{ as_local(as_datetime(latest[0] + 'Z')).strftime('%H:%M') }} в {{ latest[1] | replace('km', ' км') }} от вашего дома. Подробности [на портале ЕСИМО](http://portal.esimo.ru/dataview/viewresource?resourceId=ru_rihmi-wdc_2772).
Мой опыт
В начале статьи я упоминал карту и источники геолокации. Так вот, к GeoRSS это не относится — интеграция на карте ничего не показывает. Полное описание штормового предупреждения тоже не отображается, хотя в самой RSS ленте всё есть 😕
Справедливости ради, описания не очень полезные, потому что выглядят они вот так:
КРАСНОДАР 27/05 1318= 15 ШТОРМ НЯ РОСТОВ ГМЦ ГГМО= 16 ШТОРМ НЯ РОСТОВ ГМЦ ОМ/П= ОПОВЕ/ЕНИЕ К ПРЕДУПРЕЖДЕНИ/ НЯ О ВПО НР Ч ОТ 22.05.202Ч НА 1500 28.05.202Ч МЕСТАМИ В СЕВЕРО-ВОСТО/НЫХ, СЕВЕРО-ЗАПАДНЫХ, /ГО-ВОСТО/НЫХ, /ГО-ЗАПАДНЫХ И ЦЕНТРАЛЬНЫХ РАЙОНАХ КРАЯ /ИСКЛ//АЯ МО Г.КРАСНОДАР/ ОТМЕ/АЛАСЬ ВЫСОКАЯ ПОЖАРООПАСНОСТЬ /ВПО/ Ч КЛАССА /НЯ/.
В целом все понятно, но рассчитано скорее на специалистов, а не на обычных людей.
Перед написанием статьи, я несколько дней мониторил портал ЕСИМО и вот что успел заметить:
- Помимо предупреждений о шторме, так же можно встретить информацию о заморозках, высоком уровне пожарной опасности, тумане, снеге, грозе и прочих опасных погодных явлениях.
- Предупреждения публикуются не только для России, но и для некоторых других стран Европы и Азии. Хотя я не уверен для каких именно.
- Информация совпадает с тем, что пишут в местных СМИ и на сайте МЧС. То есть данные на портале не врут 🙂
- В некоторых случаях описания нечитаемые из-за неверной кодировки. Но HASS их все равно не показывает, поэтому не страшно.
- В ленте нет категорий, поэтому фильтрацию по типу предупреждений не настроить.
Я не особо слежу за новостями, постоянно забываю посмотреть прогноз погоды и поэтому такие оповещения для меня очень даже полезны. Если не придираться, то данные из ЕСИМО в целом норм. Самое главное их можно экспортировать в формате GeoRSS, который легко «прикручивается» к Home Assistant.
В целом текущее решение меня устраивает, но если вдруг найду альтернативу получше, то дам знать в Telegram: