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

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

Модераторы: Bagir, Ivan, Vit, immortal, PAV

directman66
Сообщения: 1864
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 284 раза
Поблагодарили: 347 раз
Контактная информация:

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

Сообщение directman66 » Чт май 03, 2018 6:30 pm

Начал разработку модуля получения текущей и прогноза погоды с сайта api.weather.yandex.ru с использованием ключей и id устройства android приложения. Сервис яндекса данные отдает без проблем, в модуле использованы параметры моей сессии. На будущее вынесены настройки uuid и deviceid, если таковая необходимость назреет.

Для добавления своего города - нужно узнать из строки браузера номер своего города.

Код: Выделить всё

https://yandex.ru/pogoda/2  
Например для Санкт-Петербурга это значение 2 нужно добавить в таблицу yaweather_cities на примере уже имеющихся данных и поставить 1 напротив поля check.

Заполнение основных параметров (температура, давление и тд) произойдет после перезапуска основного цикла.

Тестируйте:
https://connect.smartliving.ru/addons/c ... 3/106.html
СпойлерПоказать
new.png
new.png (59.47 КБ) 3435 просмотров


Обновление:
1) Добавлен прогноз погоды на день (утро/день/вечер/ночь)

2) Прогноз на 7 дней вынесен в отдельную вкладку.

3) Добавлен выбор избранного города, создается объект yw_mycity, куда будут копироваться свойства избранного города. Для выбора избранного города необходимо нажать "сердечко" на нужном.
yw_mycity избавит от необходимости править чужие сценарии, например для уведомления о погоде.

4) Добавлена возможность указать вместо id города его координаты. Необходимо в поле latlon таблицы yaweather_cities указать значение в формате lat=47.240585&lon=38.870989. В качестве id города можно указать любое значение, latlon будет в качестве более приоритетного параметра. Вместо имени города спутника указывается имя большого города. Прогноз указан на город, соответсвующий коорданатам. Перед установкой обновления нужно полностью удалить плагин.

5)Добавлена возможность вывода информации на домашних страницах и меню.
[#module name="yandexweather" #] - выводит погоду на сегодня и прогноз на 7 дней
[#module name="yandexweather" type="TODAY"#] - выводит погоду на сегодня
[#module name="yandexweather" type="FORECAST"#] - выводит прогноз на 7 дней

6) Новые города теперь добавляются из модуля. Какие-то глюки вылазят, но записи в базе появляются. После добавления обновите страницу, чтобы убедиться в наличии изменений.

7) Добавлены скины для темной темы:
[#module name="yandexweather" skin="2"#] - выводит погоду на сегодня и прогноз на 7 дней
[#module name="yandexweather" type="TODAY" skin="2"#] - выводит погоду на сегодня
[#module name="yandexweather" type="FORECAST" skin="2"#] - выводит прогноз на 7 дней
По умолчанию, если не указывать - используется skin="1" -для белой темы.
8) Добавлены виджеты для меню
[#module name="yandexweather" type="TODAYMINI" #]
[#module name="yandexweather" type="TODAYMINI" skin="2" #]
9)
Проговаривает текущую погоду голосом:

Код: Выделить всё

include_once(DIR_MODULES . 'yandexweather/yandexweather.class.php');
$yw = new yandexweather();
$yw->sayweather(); 
Проговаривает голосом прогноз погоды:

Код: Выделить всё

include_once(DIR_MODULES . 'yandexweather/yandexweather.class.php');
$yw = new yandexweather();
$yw->sayforecast(); 
10) уведомление об изменении погоды. Необходимо полностью переустановить плагин. После удаления нужно удалить все объекты класса YandexWeather и удалить сам класс. Затем можно установливать. После первичной установки, после нажатия кнопки GET требуется перезапуск основного цикла или перезагрузка Мажордомо. Виджеты для меню будут работать только после еще одной перезагрузки.
11) Добавлено голосовое информирование прогноза погоды (инструкция на вкладке help).
12) Добавил кнопку UPD для заполнения требуемых данных без перезапуска основного цикла.
13) Добавлен мега компактный информер с показателем тренда погоды. Сам пользуюсь таким. Теперь не нужно кодить и сценарии писать, достаточно вставить в меню или домашнюю страницу [#module name="yandexweather" type="TEXTMINI" " #]
Для корректной работы трэнда погоды, необходимо удалить и установить модуль повторно.
14) Добавлен функционал добавления уведомлений в будильник, при нажатии кнопок "Будильник погода" или "Будильник прогноз",
автоматически создаются необходимые записи, которые можно редактировать через модуль "Будильник".
Обновление:
15) Добавлена настройка уровня сообщения MSG_LEVEL
16) Добавлена возможность интеграции в меню телеграм. Из меню можно запросить текущую погоду, прогноз и виджет, который скачивает с сайта яндекс погоды картинку по вашему городу!
СпойлерПоказать
Изображение
Подробная информация о данном виджете viewtopic.php?f=5&t=2768&p=81400&hilit=xvfb+run#p81393

Добавление меню в модуль телеграм производится со вкладки "Уведомления"
17) Исправлены ошибки. Прогноз погоды теперь снова проговаривается.

ВНИМАНИЕ! После первичной установки, после нажатия кнопки GET требуется нажать кноку UPD в настройках приложения.



Сделал общий файл на google drive, записывайте отсутствующие номера городов, добавлю в штатный список, как наберется достаточное количество.

https://docs.google.com/spreadsheets/d/ ... sp=sharing

Идеи для развития модуля просьба скидывать в эту задачу https://connect.smartliving.ru/tasks/181.html через кнопку "Добавить предложение".
_________________________________________
Поддержать разработку и развитие модуля:
Банковская карта: 5106211026111760
Yandex деньги: 41001189619405
Внутренний счет в Connect
и другие способы по договоренности (Сбербанк, ГПБ).
С уважением, directman66.
Последний раз редактировалось directman66 Пн июл 16, 2018 3:49 pm, всего редактировалось 28 раз.
За это сообщение автора directman66 поблагодарили (всего 12):
dr.pavlov.alex (Пт май 04, 2018 7:28 pm) • webms (Вт май 08, 2018 8:13 pm) • slgeo (Пн май 14, 2018 4:39 pm) • Anton_V (Чт май 17, 2018 11:44 pm) • workpage (Вс май 20, 2018 7:13 pm) • Amarok (Пн май 21, 2018 10:53 am) • ypiter2006 (Пн май 28, 2018 6:38 pm) • antpino (Чт май 31, 2018 7:57 pm) • Igor.P (Вс июн 03, 2018 3:44 pm) • banderos (Вт июн 19, 2018 9:30 pm) и ещё 2
Рейтинг: 16.44%
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram | +79122962262 Whatsap
Аватара пользователя
savenko_egor
Сообщения: 665
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 91 раз
Поблагодарили: 125 раз
Контактная информация:

Re: [Модуль] DLNA

Сообщение savenko_egor » Чт май 03, 2018 6:33 pm

Не понял... Это у меня Тапка глючит или так тему создали?
СпойлерПоказать
Изображение[\spoiler]
directman66
Сообщения: 1864
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 284 раза
Поблагодарили: 347 раз
Контактная информация:

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

Сообщение directman66 » Чт май 03, 2018 6:46 pm

добавлен в маркет )

корректное заполнение сведений основного окна произойдет после процедуры maintance, которая вызывается при старте системы.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram | +79122962262 Whatsap
DimSun75
Сообщения: 318
Зарегистрирован: Вс янв 01, 2017 8:32 pm
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 43 раза

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

Сообщение DimSun75 » Чт май 03, 2018 7:06 pm

directman66 писал(а):
Чт май 03, 2018 6:46 pm
добавлен в маркет )
не работает.

Код: Выделить всё

Error
Details
http://192.168.1.222/admin.php?md=panel&action=market&ok_msg=Plugin+%27yandexweather%27+%282018-05-03+18%3A21%3A08%29+installed.
1060: Duplicate column name 'part'
ALTER TABLE yaweather_cities ADD `part` varchar(30);
Backtrace
#0 /var/www/lib/mysqli.class.php(395): custom_error->__construct('1060: Duplicate...', 0)
#1 /var/www/lib/mysqli.class.php(177): mysql->Error('ALTER TABLE yaw...')
#2 /var/www/lib/mysqli.class.php(479): mysql->Exec('ALTER TABLE yaw...')
#3 /var/www/lib/module.class.php(581): SQLExec('ALTER TABLE yaw...')
#4 /var/www/modules/yandexweather/yandexweather.class.php(414): module->dbInstall(' yaweather_citi...')
#5 /var/www/lib/module.class.php(427): yandexweather->dbInstall(' yaweather_citi...')
#6 /var/www/modules/yandexweather/yandexweather.class.php(321): module->install()
#7 /var/www/lib/module.class.php(359): yandexweather->install()
#8 /var/www/modules/yandexweather/yandexweather.class.php(24): module->checkInstalled()
#9 /var/www/modules/control_modules/control_modules.class.php(219) : eval()'d code(1): yandexweather->yandexweather()
#10 /var/www/modules/control_modules/control_modules.class.php(219): eval()
#11 /var/www/lib/module.class.php(359): control_modules->install()
#12 /var/www/modules/control_modules/control_modules.class.php(19): module->checkInstalled()
#13 /var/www/admin.php(28): control_modules->control_modules()
#14 {main}
directman66
Сообщения: 1864
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 284 раза
Поблагодарили: 347 раз
Контактная информация:

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

Сообщение directman66 » Чт май 03, 2018 7:11 pm

DimSun75 писал(а):
Чт май 03, 2018 7:06 pm



не работает.
видимо зависит от настроек php.

Исправил указанную тут ошибку.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram | +79122962262 Whatsap
DimSun75
Сообщения: 318
Зарегистрирован: Вс янв 01, 2017 8:32 pm
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 43 раза

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

Сообщение DimSun75 » Чт май 03, 2018 7:26 pm

Ошибка ушла. Но табличка пустая. Точнее есть два города moscow и yekaterinburg. Заполнено время обновления и все. В объектах куча свойств заполнено, правильно или нет, трудно проверить

Обновление модуля крайнее
directman66
Сообщения: 1864
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 284 раза
Поблагодарили: 347 раз
Контактная информация:

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

Сообщение directman66 » Чт май 03, 2018 7:42 pm

Да все верно, после перезапуска мажордомо заполнятся все остальные поля. Как принудительно инициировать заполнение PROPERTY_NAME таблицы pvalues я еще не нашел. Оно происходит автоматически после перезагрузки.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram | +79122962262 Whatsap
DimSun75
Сообщения: 318
Зарегистрирован: Вс янв 01, 2017 8:32 pm
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 43 раза

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

Сообщение DimSun75 » Чт май 03, 2018 8:03 pm

Да, заработало. Предложение: может сразу разбить на несколько объектов, как в openweather например, а-то слишко много свойств на один объект
directman66
Сообщения: 1864
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 284 раза
Поблагодарили: 347 раз
Контактная информация:

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

Сообщение directman66 » Чт май 03, 2018 8:05 pm

Изначально так и было, по 10 объектов на каждый прогноз. Но работать с такой кучей данных намного сложнее, если несколько городов. Поэтому все сложил в один "контейнер". Тут дело привычки.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram | +79122962262 Whatsap
Аватара пользователя
djprizrak
Сообщения: 60
Зарегистрирован: Пн фев 12, 2018 10:58 am
Благодарил (а): 3 раза
Поблагодарили: 15 раз

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

Сообщение djprizrak » Чт май 03, 2018 10:53 pm

Узнать код города можно по ссылке вашего города, и открыв Просмотреть код, в <body class= найти "rid":КОД
За это сообщение автора djprizrak поблагодарил:
olegvolk75 (Чт окт 04, 2018 3:16 pm)
Рейтинг: 1.37%
Ответить