[Модуль] Погода Яндекс (yandexweather)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

workpage
Сообщения: 438
Зарегистрирован: Чт авг 24, 2017 9:38 am
Благодарил (а): 51 раз
Поблагодарили: 86 раз
Контактная информация:

Re: [Модуль] Яндекс погода 2018

Сообщение workpage » Пт июн 08, 2018 9:35 am

directman66 писал(а):
Пт июн 08, 2018 9:34 am
workpage писал(а):
Пт июн 08, 2018 9:27 am
В мини перед температурой утро-день-вечер-ночь поставь по пробелу. Выровняются.
Это кому?
Это пожелания. Вам.
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [Модуль] Яндекс погода 2018

Сообщение fandaymon » Пт июн 08, 2018 9:42 am

directman66 писал(а):
Пт июн 08, 2018 6:18 am
Все будет, не переживайте )

Сейчас схема работы выглядит следующим образом:
1) Выбираете или добавляете город, выбираете mycity (если город не добавляется, потыкайте вкладки и повторите, я не до конца разобрался со свойствами datasource, поэтому тут возможны глюки).
2) Нажимаете кнопку get - заполняются объекты yandexweather (включается автозапуск циклов yaпогоды)
3) Нажимаете кнопку общие настройки - обновление структуры БД
4) При последующем нажатии get или выполнении цикла включится штатный режим работаты модуля.
5) Обращение основных форм и виджетов производится через временную таблицу yaweather_main. Обновление таблицы производится после запуска цикла получения информации с сервиса yandex.
6) Настройки модуля переехали в свою таблицу yaweather_config базы данных, поэтому нужно полностью удалить старую версию и установить новую из маркета.
7) Уведомления пока срабатывают каждые несколько секунда, задача в работе.

Всем хорошей "пятницы"-четверга )
А можно задать пару вопросов по процедуре?
1. Чего бы не сделать работу с городами так же как в старом модуле Яндекс погода? Т.е. список городов считывался и загонялся в комбобокс только когда юзер заходил в настройки - > далее юзер выбирал город который ему нужен -> city ID и region из комбобокса заносились в объект и всё, больше набор городов не нужен. Профит - длинный список городов считывается только тогда когда он нужен, нигде не хранится и не грузит систему когда не нужен
2. Зачем саму погоду считывать в цикле и тем самым загружать систему? Не проще ли как в модуле OpenWeather подписаться на событие hourly и запускать какие-то процессы только тогда когда это нужно? Если же нужно обновлять чаще чем раз в час, то в hourly запускать таймер, скачивающий данные и снова запускающий таймер...

Я без наездов - работа проделана громадная, но как-то всё не оптимально совсем
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 694 раза
Контактная информация:

Re: [Модуль] Яндекс погода 2018

Сообщение directman66 » Пт июн 08, 2018 9:53 am

fandaymon писал(а):
Пт июн 08, 2018 9:42 am


А можно задать пару вопросов по процедуре?
1. Чего бы не сделать работу с городами так же как в старом модуле Яндекс погода? Т.е. список городов считывался и загонялся в комбобокс только когда юзер заходил в настройки - > далее юзер выбирал город который ему нужен -> city ID и region из комбобокса заносились в объект и всё, больше набор городов не нужен. Профит - длинный список городов считывается только тогда когда он нужен, нигде не хранится и не грузит систему когда не нужен
2. Зачем саму погоду считывать в цикле и тем самым загружать систему? Не проще ли как в модуле OpenWeather подписаться на событие hourly и запускать какие-то процессы только тогда когда это нужно? Если же нужно обновлять чаще чем раз в час, то в hourly запускать таймер, скачивающий данные и снова запускающий таймер...

Я без наездов - работа проделана громадная, но как-то всё не оптимально совсем

1) Список нигде не представлен. Я его найти не смог. Приложение для андройд ищет города по запросу. Список городов от предыдущего модуля не подходит.
2)
то в hourly запускать таймер, скачивающий данные и снова запускающий таймер...
это какой-то безсмысленный костыль. Намного проще и надежнее работает цикл. Теоретически можно сделать настройку отключения цикла и подписку на hourly. Но пока имхо есть задачи поважнее.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [Модуль] Яндекс погода 2018

Сообщение fandaymon » Пт июн 08, 2018 10:13 am

directman66 писал(а):
Пт июн 08, 2018 9:53 am
fandaymon писал(а):
Пт июн 08, 2018 9:42 am


А можно задать пару вопросов по процедуре?
1. Чего бы не сделать работу с городами так же как в старом модуле Яндекс погода? Т.е. список городов считывался и загонялся в комбобокс только когда юзер заходил в настройки - > далее юзер выбирал город который ему нужен -> city ID и region из комбобокса заносились в объект и всё, больше набор городов не нужен. Профит - длинный список городов считывается только тогда когда он нужен, нигде не хранится и не грузит систему когда не нужен
2. Зачем саму погоду считывать в цикле и тем самым загружать систему? Не проще ли как в модуле OpenWeather подписаться на событие hourly и запускать какие-то процессы только тогда когда это нужно? Если же нужно обновлять чаще чем раз в час, то в hourly запускать таймер, скачивающий данные и снова запускающий таймер...

Я без наездов - работа проделана громадная, но как-то всё не оптимально совсем

1) Список нигде не представлен. Я его найти не смог. Приложение для андройд ищет города по запросу. Список городов от предыдущего модуля не подходит.
2)
то в hourly запускать таймер, скачивающий данные и снова запускающий таймер...
это какой-то безсмысленный костыль. Намного проще и надежнее работает цикл. Теоретически можно сделать настройку отключения цикла и подписку на hourly. Но пока имхо есть задачи поважнее.
1. Просто поменять линк, структура вроде таже самая...

function get_cityId(&$out)
{
global $country;
if(!isset($country)) $country = '';
$data_file = 'http://weather.yandex.ru/static/cities.xml'; // Старый линк
$data_file = 'https://pogoda.yandex.ru/static/cities.xml'; // Новый линк
$xml = simplexml_load_file($data_file);
$out["country"] = '<option value="0">--Выберите страну--</option>';
$out["city"] = '<option value="0">--Выберите город--</option>';
foreach ( $xml->country as $key => $value) {
$out["country"] .= '<option value="'.$value["name"].'"';
if ($value["name"] == $country) {
$out["country"] .= ' selected';
foreach ($value->city as $key1 => $value1) {
$out["city"] .= '<option value="'.$value1["id"].'">' .$value1. '</option>';
}
}
$out["country"] .= '>'.$value["name"].'</option>';
}
}

2. Надежнее да, но он работает всё время и по большей части вхолостую, бессмысленно грузит процессор. Плюс если что-то где-то меняется, то надо перезапускать цикл, что тоже костыль ещё тот...
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 694 раза
Контактная информация:

Re: [Модуль] Яндекс погода 2018

Сообщение directman66 » Пт июн 08, 2018 10:23 am

Из нового линка
<city id="28440" region="11162" head="1" type="2" country="Россия" part="Свердловская область" resort="0" climate="">Екатеринбург</city>
а информация для ЕКБ отдается по ссылке
https://api.weather.yandex.ru/v1/foreca ... 54&lang=ru

Где логика? Если найдете соответствующий справочник - добавлю по аналогии без проблем. Как вариант конечно его можно сгенерить самому, представившись андройд приложением и запросить по старому списку городов. Но пока это в мои планы не входило.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 694 раза
Контактная информация:

Re: [Модуль] Яндекс погода 2018

Сообщение directman66 » Пт июн 08, 2018 10:43 am

Кстати, андройд приложение работает по тому-же самому принципу, что и api погода. Только адрес другой )При желании легко переделывается на штатный механизм яндекса, со всеми соотвествующими ограничениями и оплатами )

Также что лучше не ддосить их сервис и выставлять период не менее 15 минут, пока не запретили.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [Модуль] Яндекс погода 2018

Сообщение fandaymon » Пт июн 08, 2018 10:50 am

directman66 писал(а):
Пт июн 08, 2018 10:23 am
Из нового линка
<city id="28440" region="11162" head="1" type="2" country="Россия" part="Свердловская область" resort="0" climate="">Екатеринбург</city>
а информация для ЕКБ отдается по ссылке
https://api.weather.yandex.ru/v1/foreca ... 54&lang=ru

Где логика? Если найдете соответствующий справочник - добавлю по аналогии без проблем. Как вариант конечно его можно сгенерить самому, представившись андройд приложением и запросить по старому списку городов. Но пока это в мои планы не входило.
Ммм... я просто скопировал линк из вашего модуля 8-)
//ID города узнаем тут: https://pogoda.yandex.ru/static/cities.xml
//region="11162" id="28440
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 694 раза
Контактная информация:

Re: [Модуль] Яндекс погода 2018

Сообщение directman66 » Пт июн 08, 2018 11:25 am

Это огрызки старых сценариев. Оставлено для памяти.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
ZyaK
Сообщения: 407
Зарегистрирован: Вт окт 24, 2017 2:01 pm
Откуда: Ижевск
Благодарил (а): 45 раз
Поблагодарили: 69 раз

Re: [Модуль] Яндекс погода 2018

Сообщение ZyaK » Сб июн 09, 2018 5:53 am

Parse error: syntax error, unexpected '=', expecting :: (T_PAAMAYIM_NEKUDOTAYIM) in /var/www/html/lib/jTemplate.class.php(587) : eval()'d code on line 1

такое вот чудо вылезло, когда пытаюсь зайти в общие настройки

перезагрузил, получилось зайти в настройки, но при изменении времени обновления вот такая вещь
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /var/www/html/lib/mysqli.class.php on line 227

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /var/www/html/lib/mysqli.class.php on line 227

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /var/www/html/lib/mysqli.class.php on line 227

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /var/www/html/lib/mysqli.class.php on line 227
Последний раз редактировалось ZyaK Сб июн 09, 2018 6:04 am, всего редактировалось 1 раз.
PI2 + MQTT + 5 ESP8266 + Atmega16
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 694 раза
Контактная информация:

Re: [Модуль] Яндекс погода 2018

Сообщение directman66 » Сб июн 09, 2018 5:55 am

Это что-то не расшифровываемое) какая система?

Подозреваю, что вы скачали какой-то промежуточный вариант форм. Обновите приложение через маркет.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Ответить