код локации для погоды
Узнаем текущую погоду и прогноз простеньким скриптом на Python’е
На Хабре есть интересная статья о том, как энтузиасты делают погоду. Энтузиасты делают, а мы воспользуемся плодами их трудов — получим эту самую погоду от OpenWeatherMap.org скриптом на Python’е.
Для получения доступа к сервису погоды придется пройти несложную процедуру регистрации на сайте OpenWeatherMap.org. Сформируем и отправим запрос, разберем ответный пакет в формате JSON, и получим текущую температуру с описанием состояния погоды.
Зарегистрироваться на openweathermap.org совсем несложно, а остальное сделать будет ещё проще.
Регистрация нужна для получения идентифицирующей пользователя строки App Id, состоящей из набора букв и цифр (похоже — только из шестнадцатеричных цифр). Такого вида:
«6d8e495ca73d5bbc1d6bf8ebd52c4». После регистрации нужно зайти в личный кабинет и взять App Id, который там называется «API key».
Формирование строки запроса
Сначала попытаемся найти интересующий нас город в их базе. Строка запроса должна быть примерно такая:
В запросе нужно указать нужный город (вместо «Petersburg») и свой App Id (вместо «6d8e495ca73d5bbc1d6bf8ebd52c4». Можно уточнить запрос, указав идентификатор страны после названия города через запятую. Например, так:
Собственно запросная строка будет сформирована самой библиотекой requests в функции get, которую используем для отправки запроса:
Проверка наличия в базе информации о нужном населенном пункте
План такой. В ответ на сформированный запрос получаем пакет в формате JSON. Разбираем пакет и получаем нужные значения по названиям полей.
Запомним числовой идентификатор города city_id для последующего запроса, потому что поставщики сервиса рекомендовали делать запрос не по имени, а по идентификатору.
В ответе может оказаться несколько городов, соответствующих нашему запросу. Кстати, если в запросе указать “Moscow” и убрать страну из строки приведенного в примере запроса, то гарантированно получим несколько строк в списке cities:
Получение информации о текущей погоде
Осталось только получить искомую информацию о погоде. Если нас не интересуют имперские единицы измерения, то в запросе указываем, что желаем получить метрические единицы: «units=metric». Если описание погоды нужно получить на русском, то указываем «lang=ru».
Если верить сервису, сейчас (14.11.2016 в 23:20) в Москве:
Прогноз на 5 дней
На сайте OpenWeatherMap есть ещё масса интересного — получение информации по географическим координатам, архив погоды, информация с конкретных метеостанций. Описание всех доступных сервисов можно посмотреть здесь http://openweathermap.org/api
Для работы на Python’е с OpenWeatherMap существует специализированная библиотека pyowm.
Помимо OpenWeatherMap есть другие сайты, предоставляющие аналогичную информацию. Например, WorldWeatherOnline. Доступные API можно посмотреть здесь. Регистрация нужна. Есть библиотека на Python’е: pywwo.
unixforum.org
Форум для пользователей UNIX-подобных систем
Поделитесь weather location code для Москвы (adesklets weather applet)
Модератор: /dev/random
Поделитесь weather location code для Москвы
Сообщение Unicorn » 17.06.2006 16:38
Настраиваю прогноз погоды для adesklets
программа предлагает в текстовом конфиге указать location code для Москвы с сайта weather.com
Re: Поделитесь weather location code для Москвы
Сообщение Pieron » 17.06.2006 17:06
Re: Поделитесь weather location code для Москвы
Сообщение wRAR » 17.06.2006 17:13
Re: Поделитесь weather location code для Москвы
Сообщение Topper » 17.06.2006 17:21
Re: Поделитесь weather location code для Москвы
Сообщение sergius » 17.06.2006 18:03
Я уже отвечал на подобные темы не раз.
Идем на www.weather.com
Набираем свой город (Ener city. ).
Нажимаем «Go».
Появляется несколько ссылок. (Названия городов в мире могут совпадать. Например, Москва в России и Москва в США)
Выбираем нужный.
Появляется погода.
Смотрим ссылку «http://www.weather.com/outlook/travel/businesstraveler/local/RSXX0063?from=search_city»
И о чудо. Тут указан код «RSXX0063».
Re: Поделитесь weather location code для Москвы
Сообщение Unicorn » 17.06.2006 18:50
Re: Поделитесь weather location code для Москвы
Сообщение Topper » 17.06.2006 18:55
Блог Валерия Леонтьева
Место публикации личных заметок. Технологии, управление, бизнес, жизнь
Коды городов Яндекс.Погоды
На сайте Яндекс.Погода существует сервис информеров. При установке к себе на сайт информера, необходимо выбрать город, который будет на информере отображаться. А как показать на информере не выбранный город, а город, в котором находится посетитель?
Прогноз на сервисе от Яндекса довольно точный. Я пользуюсь им постоянно. Потому и выбрал информер на свои сайты именно от этого сервиса. Он красивый, информативный, стабильный (Яндекс падает крайне-…-крайне редко).
Однако, при установке к себе на сайт информера, необходимо выбрать город, погода в котором будет на информере отображаться. Хорошо, если вся тусовка на сайте — посетители из одного города. А что если нет (наверное 98% случаев)? Например, аудитория блогов обычно абсолютно разбита по разным странам, не говоря уже о городах. Тогда такой информер не очень практичен, ведь мало кому интересна погода в вашем регионе.
Выхода из ситуации три. Первый проще, но решает только половину проблемы. При регистрации пользователя в системе, заставляйте его вводить город. И если город совпадет со списком Яндекса, который я подготовил в текстовом виде, то выводите ему соответствующий информер. Можно тот же список использовать и в качестве автоподстановки в поле ввода города при регистрации. Половину проблемы решает, потому что работает только после регистрации.
Второй выход — использование базы городов по IP-адресам. Но следуюет учитывать, что базы такие платные, их надо постоянно обновлять и данные в них точны лишь с какой-то степенью (например, 90%). Ну и не стоит забывать, что некоторые используют анонимные прокси. Базы: MaxMind GeoIP® City Database, CNGeoip, IP2City.
Третий выход самый простой, но у него есть большой недостаток. Собственно, по порядку. Вы вешаете информер с каким-то городом по умолчанию. Под ним (или над ним) делает ссылку «Настроить регион». Или даже вместо самого информера по умолчанию можно разместить эту ссылку. Человек на нее кликает, ему выдается список городов от Яндекса. Посетитель выбирает свой город, информация сохраняется в cookie пользователю. А при следующей загрузке страницы сайта информация из куков подставляется в информер, и посетитель видит погоду с родном городе. Большой минус этого способа в том, что он применим только на сайте с постоянной аудиторией. Т.к. посетители тех же блогов обычно быстро уходят с сайта и редко к нему возвращаются, поэтому давать им настройку информера просто нет смысла. (Поэтому я в своем блоге не стал это делать.)
01.04.08: Рализация для 2+3 варианта уже написана. Предсталена страница с работающим кодом на JS, который сохраняет настройки в cookies. Вы можете использовать страницу на своих сайтах (открывайте HTML-код и внедряйте его себе).
Пример кода информера (красным выделен код города — подставляется в 2 места):
Список городов брал с сайта Яндекс.Погоды. Выловилось почему-то только 1676 из 1681 заявленого на сайте. Перевод сделан через Переводчик Google. Файл состонит из 3 столбцов: 1) код города по Яндексу, 2) название города по Яндексу (на русском), 3) перепод по Гуглу на английский. В переводе есть спец-символы в UTF, вместо которых в csv-версии символы вопроса. Сохранен в 4-х вариантах: 1) файл Excel, 2) текст с разделителем табуляция (UTF-16), 3) текст с разделителем табуляция (UTF-8), 4) CSV в cp1251. Только не спрашивайте, почему сделал так, просто выберите себе подходящий формат и конвертируйте его как угодно.
По наличию времени я реализую несколько способов, описанных выше и выложу в блог код. Но пока решил выложить список городов и рассказать идеи, на случай, если кто-то еще подхватит написание кода и добьется успеха в реализации, а потом поделится кодом со всеми 😉 Да и сам-то код можно написать на разных языках программирования.
Вывод прогноза погоды из интернета на модуль со светодиодной матрицей
В данной статье я расскажу о том, как сделать собственный погодный монитор, который будет самостоятельно запрашивать текущую погоду в выбранном городе по интернету и выводить соответствующую информацию на цветную светодиодную матрицу.
Что понадобится
Погода
Собственно, первая проблема, которая встает перед нами — откуда брать погоду? С какого сайта? Я думаю, всем известны такие сайты, как Гисметео или Яндекс.Погода. Но в нашем проекте мы не будем брать у них метеосводку. Мы воспользуемся сайтом, про который, я думаю, вы и не слышали: http://openweathermap.org/.
Итак, допустим, нам необходимо узнать погоду в городе Москве. Мы можем найти соответствующую страницу через поиск. Открыв её, мы увидим примерно следующую картину.
В этот раз не будет никаких картинок, только немного текста примерно такого содержания:
День | Ночь | Состояние |
---|---|---|
01d | 01n | Чистое небо |
02d | 02n | Малооблачно |
03d | 03n | Рваная облачность |
04d | 04n | Облачно с прояснениями |
09d | 09n | Ливневый дождь |
10d | 10n | Дождь |
11d | 11n | Гроза |
13d | 13n | Снег |
50d | 50n | Туман |
Мы будем ориентироваться только на первые 2 цифры. Для простоты примера не будем различать день и ночь, а также поддержим только самые распространённые варианты текущей погоды.
Иконки
Как вы помните, наша светодиодная матрица имеет разрешение 8×8 пикселей. И поэтому наши картинки должны быть такого же размера.
Вот четыре наших картинки: дождь, снег, солнце и гроза.
Такие картинки делаются очень просто. Достаточно поискать в интернете «Online icon editor». Там можно попиксельно нарисовать их и сохранить себе, к примеру, в формате PNG).
Проблема в том, что для нас такой формат не подходит, поскольку изображение в нем сжато и для работы с ним его необходимо распаковать. А это делается по достаточно сложному алгоритму. Нам бы хотелось иметь данные в каком-нибудь простом несжатом формате.
Есть специальный формат, называемый PBM (PortaBle anyMap). Изображение в нем представляется в обыкновенном текстовом формате. Вот пример нашей иконки со снегом в этом формате:
Файл содержит всего 4 строки:
Можно немного изменить последовательность, чтобы было чуть лучше видно, что это снег. Просто добавим в нужных местах переносы строк. Обратите внимание нарасположение единиц и нулей: они формируют картинку.
Как уже было видно чуть раньше, эти файлы были созданы в бесплатном графическом пакете GIMP, скачать который можно с официального сайта.
Полученный PBM-файлы необходимо скопировать на карту памяти, а затем вставить ее в слот на Arduino Ethernet.
Подключение
Поскольку мы используем светодиодный индикатор не напрямую, а как готовый модуль, то это в значительной степени облегчает подключение его к Arduino. Модуль индикатора работает через шину SPI, поэтому нам потребуется всего 3 провода для данных и 2 — для питания.
Нижняя часть модуля индикатора представлена на рисунке ниже.
Нам необходим разъем, который обведен на картинке прямоугольником. Распиновка у него следующая:
Номер | Назначение |
---|---|
1 | CLK — синхроимпульсы |
2 | LATCH — выбор устройства |
3 | DATA — данные |
В нижнем ряду этого разъёма находятся пины для подключения питания.
Все остальные разъемы нужны для того, чтобы иметь собирать из этих модулей большие матрицы.
Ethernet
Используемый нами Arduino Ethernet не имеет собственного USB-разъема и чипа, служащего посредником между USB и основным микроконтроллером. Поэтому для подключения его к компьютеру необходим преобразователь USB-Serial. С него же будет браться питание для Arduino.
На самом деле, мы использовали Arduino Ethernet с установленным PoE (Power Over Ethernet) модулем, поэтому при желании вы можете получать питание прямо из витой пары, и ко всему устройству в этом случае будет тянуться всего один провод. Однако для использования PoE, ваша сеть должна это поддерживать: существуют как роутеры, «заряжающие сеть», так и специальные, отдельные устройства, называющиеся PoE-инжекторами.
Возможные конфликты
Необходимо учитывать тот факт, что Ethernet, SD-карта и индикатор работают по одному интерфейсу SPI. Его прелесть в том, что каждое новое устройство занимает всего один дополнительный пин (chip select), а 3 пина для обмена данными (11-й, 12-й и 13-й для Arduino Uno, Arduino Ethernet и подобных плат) остаются одними и теми же. Обратной стороной медали является тот факт, что одновременно общение может происходить лишь с одним устройством на шине.
Мы будем работать поочерёдно с Ethernet и SD, но нашу матрицу мы вообще полностью подключим к другим пинам, чтобы её работа никак не зависела и не пересекалась с работой Ethernet и SD. Это обусловлено тем, что динамическая индикация, которая реализована матрицей-модулем требует частого и постоянного обмена данными между собой и микроконтроллером.
список городов для погоды вида RSXX####
Re: список городов для погоды вида RSXX####
Спроси на гисметео.ру, там админ, вроде, не вредный.
Re: список городов для погоды вида RSXX####
> Спроси на гисметео.ру, там админ, вроде, не вредный.
Re: список городов для погоды вида RSXX####
Как-то задавался себе этим вопросом, но ответа не нашёл. А так как надо было всего пару кодов, то решил проблему простым поиском на weather.com. гугление только нашло пару форумов с топиками о продаже такой базы.
Re: список городов для погоды вида RSXX####
Пользуясь темой, в КДЕ4 вообще реально стандартным виджетом погоду смотреть в российских городах?
там метеослужбы UK, Canada, ещё какой-то не нашей
у меня не получилось(
Re: список городов для погоды вида RSXX####
yaWP юзайте, там просто поиск по названию, да и удобен он
Re: список городов для погоды вида RSXX####
Re: список городов для погоды вида RSXX####
>Пользуясь темой, в КДЕ4 вообще реально стандартным виджетом погоду смотреть в российских городах?
Я пользуюсь UK MET Office, вроде правдоподобно всё показывает.