Страница 1 из 93

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

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


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

Обновление:
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) Добавлена возможность интеграции в меню телеграм. Из меню можно запросить текущую погоду, прогноз и виджет, который скачивает с сайта яндекс погоды картинку по вашему городу!
СпойлерПоказать
Изображение
Подробная информация о данном виджете http://majordomo.smartliving.ru/forum/v ... run#p81393

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

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


Идеи для развития модуля просьба скидывать в эту задачу https://connect.smartliving.ru/tasks/181.html через кнопку "Добавить предложение".
_________________________________________
Поддержать разработку и развитие модуля:
Банковская карта: 5106211026111760
Yandex деньги: 41001189619405
Внутренний счет в Connect
и другие способы по договоренности (Сбербанк, ГПБ).
С уважением, directman66.

Re: [Модуль] DLNA

Добавлено: Чт май 03, 2018 6:33 pm
savenko_egor
Не понял... Это у меня Тапка глючит или так тему создали?
СпойлерПоказать
Изображение[\spoiler]

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

Добавлено: Чт май 03, 2018 6:46 pm
directman66
добавлен в маркет )

корректное заполнение сведений основного окна произойдет после процедуры maintance, которая вызывается при старте системы.

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

Добавлено: Чт май 03, 2018 7:06 pm
DimSun75
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}

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

Добавлено: Чт май 03, 2018 7:11 pm
directman66
DimSun75 писал(а):
Чт май 03, 2018 7:06 pm



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

Исправил указанную тут ошибку.

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

Добавлено: Чт май 03, 2018 7:26 pm
DimSun75
Ошибка ушла. Но табличка пустая. Точнее есть два города moscow и yekaterinburg. Заполнено время обновления и все. В объектах куча свойств заполнено, правильно или нет, трудно проверить

Обновление модуля крайнее

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

Добавлено: Чт май 03, 2018 7:42 pm
directman66
Да все верно, после перезапуска мажордомо заполнятся все остальные поля. Как принудительно инициировать заполнение PROPERTY_NAME таблицы pvalues я еще не нашел. Оно происходит автоматически после перезагрузки.

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

Добавлено: Чт май 03, 2018 8:03 pm
DimSun75
Да, заработало. Предложение: может сразу разбить на несколько объектов, как в openweather например, а-то слишко много свойств на один объект

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

Добавлено: Чт май 03, 2018 8:05 pm
directman66
Изначально так и было, по 10 объектов на каждый прогноз. Но работать с такой кучей данных намного сложнее, если несколько городов. Поэтому все сложил в один "контейнер". Тут дело привычки.

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

Добавлено: Чт май 03, 2018 10:53 pm
djprizrak
Узнать код города можно по ссылке вашего города, и открыв Просмотреть код, в <body class= найти "rid":КОД