5.2 KiB
5.2 KiB
name, description
| name | description |
|---|---|
| yandex-weather-client | Работа с локальным Python-клиентом Яндекс.Погоды для семейных локаций. |
Навык: Яндекс.Погода через локальный Python-клиент
Назначение
Использовать локальный клиент в projects/yandex-weather для получения прогноза напрямую из API Яндекс.Погоды. В рамках этого навыка не подменять источник встроенным погодным сервисом.
Безопасность ключа
- Ключ хранится только в локальном
projects/yandex-weather/.envв переменнойYANDEX_WEATHER_KEY. - Никогда не выводить ключ, не добавлять его в сообщения Matrix и не вставлять в команды чата.
- Если ключ попал в переписку, считать его скомпрометированным: отозвать в кабинете Яндекс.Погоды и создать новый.
- Не читать и не цитировать содержимое
.envбез необходимости; клиент сам загружает его при запуске.
Доступные локации
Перед запуском можно посмотреть реестр:
cd projects/yandex-weather
python3 weather_client.py --list-locations
Поиск выполняется по ключу или сохранённому названию/алиасу:
python3 weather_client.py --location <location>
Для разовой точки допускается запуск по координатам:
python3 weather_client.py --lat <широта> --lon <долгота>
Ограничения бесплатного тарифа «Погода для умного дома»
- Запрашивать максимум два дня: сегодня и завтра.
- Один запуск клиента должен делать один API-запрос.
- Не добавлять лишние повторы или автоматические retry.
- Не использовать
extra=true: бесплатный тариф не гарантирует числовые поля осадков и тайлы карты. - В сообщении можно показывать ссылку на веб-карту осадков Яндекса; это не означает, что тайлы карты получены через API.
- Для личного семейного использования учитывать некоммерческие условия тарифа.
Рабочий порядок
- Уточнить нужную локацию; если она есть в реестре, использовать
--location. - Запустить клиент из
projects/yandex-weather. - Проверить код завершения и не повторять запрос автоматически при сетевой ошибке.
- Передать пользователю текущую температуру, ощущаемую температуру, ветер, прогноз на сегодня и завтра и ссылку на карту.
- Не обещать API-данные об осадках сверх того, что вернул бесплатный тариф.
- Для планового запуска использовать один запуск на одно сообщение.
Пример:
cd projects/yandex-weather
python3 weather_client.py --location <location>
Для машинного результата допустим --json, но перед отправкой в Matrix нужно отфильтровать технические поля и убедиться, что ключ отсутствует в выводе.
Добавление новой локации
- Найти координаты адреса по надёжному картографическому источнику.
- Добавить ключ, понятное имя, алиасы,
latиlonвprojects/yandex-weather/locations.json. - Не добавлять секреты в этот файл.
- Выполнить
--list-locationsи один тестовый запуск для новой точки. - Сообщить пользователю, какой источник использован для координат.
Проверка и диагностика
- Отсутствующий ключ: проверить наличие локального
.env, не просить пользователя присылать ключ в Matrix. - HTTP 403: проверить, что ключ активирован, тариф действует и используется endpoint
/v2/forecast. - Ошибка координат: проверить широту и долготу, затем реестр локаций.
- Превышение лимита: остановить повторные запросы и дождаться нового периода лимита.