Не так давно, в прошлом году, я уже делал запись в блоге на эту тему, правда тогда речь шла о Яндекс Погоде. В сегодняшнем видео я покажу как проделать тоже самое но с интеграцией Open Weather Map, заодно покажу как можно настраивать шаблоны перед этим немного поковырявшись в исходном коде интеграции.
В видео я постарался рассказать обо всём процессе максимально подробно
Листинг шаблона
Доброе утро! За окном: {%- set current = states('sensor.openweathermap_weather_code')|int %} {%- set conditions = { 'Туман \U0001F32B': [701, 741], 'Гроза \U0001F329': [210, 211, 212, 221], 'Дождь/Гроза \U000026C8': [200, 201, 202, 230, 231, 232], 'Облачно \U000026C5': [801, 802, 803, 804], 'Дождь \U00002614': [504, 314, 502, 503, 522, 300, 301, 302, 310, 311, 312, 313, 500, 501, 520, 521, 906], 'Снег \U00002744': [600, 601, 602, 611, 612, 620, 621, 622], 'Снег с дождём \U00002614\U00002744': [511, 615, 616], 'Ясно \U00002600': [800], 'Ветер \U0001F4A8': [905, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961], 'Внимание \U000026A0': [711, 721, 731, 751, 761, 762, 771, 900, 901, 962, 903, 904] } %} {%- for condition, value in conditions.items() %} {%- if current in value %} {{- " " condition}} {%- endif %} {%- endfor %} Температура: {{- " " state_attr('weather.openweathermap', 'temperature')|string }} Скорость ветра: {{- " " state_attr('weather.openweathermap', 'wind_speed')|string }}
UPD
ВНИМАНИЕ!
По какой-то причине, пропадают символы конкатенации (плюсы), правильно строки должны быть записаны так(без пробелов):
{{- " " плюс condition}}
Температура:{{- " " плюс state_attr('weather.openweathermap', 'temperature')|string }}
Скорость ветра:{{- " " плюс state_attr('weather.openweathermap', 'wind_speed')|string }}
Чтото не получается в панели разработчика шаблоны вставляю такой код
{%- set current = states('sensor.openweathermap_weather_code')|int %}
{%- set conditions = {
'Туман \U0001F32B': [701, 741],
'Гроза \U0001F329': [210, 211, 212, 221],
'Дождь/Гроза \U000026C8': [200, 201, 202, 230, 231, 232],
'Облачно \U000026C5': [801, 802, 803, 804],
'Дождь \U00002614': [504, 314, 502, 503, 522, 300, 301, 302, 310, 311, 312, 313, 500, 501, 520, 521, 906],
'Снег \U00002744': [600, 601, 602, 611, 612, 620, 621, 622],
'Снег с дождём \U00002614\U00002744': [511, 615, 616],
'Ясно \U00002600': [800],
'Ветер \U0001F4A8': [905, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961],
'Внимание \U000026A0': [711, 721, 731, 751, 761, 762, 771, 900, 901, 962, 903, 904]
} %}
{%- for condition, value in conditions.items() %}
{%- if current in value %}
{{- " " condition}}
{%- endif %}
{%- endfor %}
И ругается
У вас «+» пропущен и здесь и во втором случае. Посмотрите видео, там подробно всё.
Хм, в коде тут он тоже пропал, странно.
И еще ругается на шаблон {{- " " state_attr('weather.openweathermap', 'temperature')|string }}
Видео не доступно
Странно. У меня показывает.
А так?
и вот https://youtu.be/3fvCF724JAI">ссылкой
Так работает. Спасибо
мне видео доступно
супер, спасибо
единственное, мне непонятно такое большое значение wind_speed
для последующих периодов в прогнозе оно кратно меньше, даже в примере на видео - текущее 14, считать, что это в м/с (как привычно всем воспринимать этот показатель) - это чересчур сильный ветер
мне показалось, что в ответе на запрос интеграции openweathermap используются единицы измерения Imperial - там как раз miles/h, но это может касаться только текущей погоды - дальше, вроде привычные нам м/с
проверил у себя в автоматизации - то же самое - показывает действующую скорость 18 сейчас - но за окном (и в других прогнозах и сервисах погоды - скорость 3-4 м/с), дальнейшие прогнозы в openweathermap тоже 3-4 м/с
можете уточнить, нужно ли использовать доп.коэффициент в автоматизации к этому показателю?
Я, честно говоря, не обратил на это внимания )
Но в целом, можно прямо в шаблоне перевести в нужные единицы измерения, операции не сложные, особых проблем не вызовет.
а не подскажете, как?
я пробовал
Скорость ветра:
{{- " " state_attr('weather.openweathermap', 'wind_speed'/2,237)|string }
но, видимо, в лоб не получилось - ошибка
а как правильно закрывать, как то не догадался
Во-первых, вместо запятой всегда точка.
Во-вторых, шаблон выполняется слева направо, просто запомните, будет легче. Ну и действия в скобках всегда первыми.
Вот так должно выглядеть:
{{- " "плюс*(state_attr('weather.openweathermap', 'wind_speed')/2.237)|round(2)|string}}
Давайте разберём.
Получаем значение сенсора и меняем его единицы измерения, для этого математическую операцию заключаем в скобки, после чего получившейся результат округляем до двух символов после запятой (можно больше, можно меньше, от вашего желания) и затем его переводим в строку, чтобы сработала конкатенация (объединение строк).
Надеюсь понятно объяснил :)
* замените на символ плюса, шаблонизатор спрута что-то не любит этот знак.
АГА!
супер, понятно, то есть значение переменной не
'wind_speed', а ('weather.openweathermap', 'wind_speed')
спасибо, вроде как то посчиталось....теперь скорость 6,44 - надеюсь это м/с (так как коэфф-т 2,237 - это при условии, что openweathermap выдает в милях/час)
ну сам сайт сейчас показывает скорость ветра 4 м/сек...наверное выдает в фт/сек.
попробовал изменить к-т на 3.280839912
теперь скорость выдает 4,39 м/с, так как это ближе, оставлю этот коэффициент
еще раз спасибо
Всем привет! в Openweathermap при парсинге строки в Ардуино можно вытащить еще значение icon - а вот как его в home assistant вытащить? очень полезное значение для меня. был бы очень благодарен если бы посдказали как сделать...