
Сервер работает на МиниПК: https://alii.pub/75csno?erid=2SDnjdoJ2kU
Прогнозы погоды обычно нас не оповещают о том, что скоро может начаться дождь. Понятно, что всегда можно “взглянуть на небо и посмотреть как плывут облака”, но в городе, где здания высокие – не всегда видно это самое небо. Тучка может подкрасться незаметно.
Да и вообще, если дождь начнётся только через 2 часа, вы еще на небе ничего ужасного не увидите, но за 2 часа возможно не успеете управиться со своими делами на открытом воздухе.
Так вот, в этой статье, хочется показать, как можно брать прогноз погоды с сайта Яндекс погоды и в случае того, как прогноз погоды в яндексе поменяется на статус “через 2 часа пойдёт дождь”, нам придёт оповещение об этом в Telegram.
Автоматизация:
Автоматизация выглядит следующим образом:
weather_telegram:
  command_line:
    - sensor:
        name: Прогноз дождя
        command: |
          wget -q --user-agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36' "https://yandex.ru/pogoda?lat={{states.zone.home.attributes.latitude}}&lon={{states.zone.home.attributes.longitude}}" -O /dev/stdout | sed 's/>/>\n/g' | grep ".maps-widget-fact__title" -A1 | tail -1 | sed 's/<\/div>//g' | sed 's|.*\. ||' | sed 's|||'
        scan_interval: 1200
 
  automation:
    - id: "weather_telegramm"
      alias: "Телеграмм: прогноз дождя по расписанию и кнопке"
      description: ""
      trigger:
        - platform: event
          event_type: telegram_command
          event_data:
            command: /weather
        - platform: template
          value_template:
            '{{ states("sensor.time")  == "08:30" }}'
        - platform: state
          entity_id: sensor.prognoz_dozhdia
          to:
      condition: 
          - condition: template
            value_template: "{{ states('sensor.prognoz_dozhdia')!= ''}}"
          - condition: template
            value_template: "{{ states('sensor.prognoz_dozhdia')!= 'Открыть карту осадков' }}"
          - condition: template
            value_template: "{{ states('sensor.prognoz_dozhdia') in ['В течение 2 часов ожидается дождь', 'В течение часа ожидается дождь'] }}"
      action: 
        - action: telegram_bot.send_message
          data:
            message: |
              {{ states('sensor.prognoz_dozhdia') }}Эта автоматизация для packege. Следовательно там файлик и нужно создавать.
В этой автоматизации длинное выражение начинающееся с wget. Тянет с сайта яндекс погоду и парсит её, выбирая оттуда нужные параметры и записывает в сенсор sensor.prognoz_dozhdia.
В этот сенсор записываются значения: “В ближайшие 2 часа осадков не ожидается” “В течение часа ожидается дождь” “В течение 30 минут ожидается дождь” и так далее.
Погода проверяется каждые 20 минут. И как только в сенсоре изменяется значение (показание), он её отправляет в telegram. И получалось довольно много всего. Это видно по сообщениям в чате:

И вот чтоб такого не было, я решил оставить только 2 прогноза погоды, это
'В течение 2 часов ожидается дождь', 'В течение часа ожидается дождь'
Так как мне важно, чтоб оповещало до того, как дождь начнётся и не особо важно, что дождь не начнётся или закончится через какое-то время.
Если хотите получать все уведомления, то закомментируйте эту строчки:
          - condition: template
            value_template: "{{ states('sensor.prognoz_dozhdia') in ['В течение 2 часов ожидается дождь', 'В течение часа ожидается дождь'] }}"
И еще один момент, в виде кода у меня не добавлялось корректно выражение начинающееся с wget. пришлось его немного изменить, по этому прикладываю полную версию строчки сюда. По этому её надо копировать отсюда и в автоматизацию вставить:
wget -q –user-agent=’Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36′ “https://yandex.ru/pogoda?lat={{states.zone.home.attributes.latitude}}&lon={{states.zone.home.attributes.longitude}}” -O /dev/stdout | sed ‘s/>/>\n/g’ | grep “.maps-widget-fact__title” -A1 | tail -1 | sed ‘s/<\/div>//g’ | sed ‘s|.*\. ||’ | sed ‘s|</p>||’
Ну или файл автоматизации на всякий случай еще прикладываю сюда, чтоб наверняка копировалось правильно: https://disk.yandex.ru/d/Z6kcUStu4NA33Q
Так-же еще автоматизация сама пришлёт прогноз в 8:30 утра, но если у Вас стоит фильтр на дождь, то не пришлёт ничего, если не будет дождя.
И самому можно запросить прогноз по кнопке /weather.
Вывод:
Тема с прогнозом дождя весьма любопытна в реализации. Я эту автоматизацию стырил у знакомого. И то как прогноз дождя делается, путём запроса сайта яндекс и распарсивая его – это прям весьма находчиво и не требует каких-то дополнительных интеграций. Все делается с штатными средствами linux, программой wget.