MDM и OpenWheatherMap

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

MDM и OpenWheatherMap

Сообщение LutsenkoDenis » Чт авг 08, 2013 12:11 am

Доброго времени суток.

Есть такая штука как http://openweathermap.org

Хочу следующее:
1. Задавать в админке настройки для получения данных о погоде, Например указывать страну, город.
2.Отображать инфу о погоде на необходимой мне странице. Например на главной.

Написал небольшой класс, который вытягивает массив данных с погодой по названию города с сайта http://openweathermap.org

Как интегрировать мой класс в MDM?
Что для того нужно?
Желательно по шагам, как для "особо одарённых" :)
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: MDM и OpenWheatherMap

Сообщение LutsenkoDenis » Вс сен 15, 2013 2:50 am

Добавление погоды от OpenWeatherMap.org
  • GetCurrentWeatherWidget($vCountry,$vCity, $vUnits) - Текущая погода(html таблица) по стране и городу.
    GetCurrentWeatherWidgetByCityID($vCityID, $vUnits) - Текущая погода(html таблица) по ID города.
    GetWeather($vCountry,$vCity, $vUnits) - Текущая погода(массив) по стране и городу.
    GetWeatherByCityID($vCityID, $vUnits) - Текущая погода(массив) по ID города.
Пример:
563705 = ID города Дзержинский

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

require_once("./lib/OpenWeather/OpenWeather.php");
$weather      = new OpenWeather();
$curWeather = $weather->GetWeatherByCityID("563705", "metric"); 
$widget        = $weather->GetCurrentWeatherWidgetByCityID("563705", "metric");
$temp          = $curWeather->main->temp;
setGlobal('ThisComputer.TempOutside', $temp);
setGlobal('TempOutside.Temp', $temp);
setGlobal('ThisComputer.weatherFull', $widget); 
Последний раз редактировалось LutsenkoDenis Чт сен 26, 2013 7:56 am, всего редактировалось 2 раза.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
DiArt
Сообщения: 210
Зарегистрирован: Пт апр 12, 2013 2:27 pm
Откуда: Уфа
Благодарил (а): 28 раз
Поблагодарили: 16 раз

Re: MDM и OpenWheatherMap

Сообщение DiArt » Вт сен 24, 2013 7:30 pm

Вотэтот код куда вводить?
Распиши плиз по шагам. Как вытягивать и как выводить
Система на Неттоп 3Q Nettop Qoo!
(Intel Celeron J1800, 2x2410 МГц, 4096 Мб, HDD 1000 Гб, HDMI, VGA , Wi-Fi, Ethernet, Ubuntu 14.04.2)
Вторая система на Raspberry Pi 3.
D-Link DCS-930L/Broadlink RM2-Pro/BroadLink SP3 CC/Ginzzu HS-K07W
Я в CONNECT
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: MDM и OpenWheatherMap

Сообщение LutsenkoDenis » Вт сен 24, 2013 9:13 pm

ок.

1. Так как в основной ветке проекта на github'е данного функционала нет, то берём отсюда : https://github.com/palacex/majordomo/bl ... eather.php. Кладём в папку lib.
2. Создаём класс OpenWeather
2.1 Создаём объект TempOutside класса OpenWeather
2.2. У объекта TempOutside создаём свойство Temp
2.2. У объекта TempOutside создаём свойство TempDetail
2.3. У объекта TempOutside создаём метод GetWeather со следующим кодом

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

require_once("./lib/OpenWeather/OpenWeather.php"); // Подключаем погодный класс
$weather = new OpenWeather(); // наследуем класс
$curWeather = $weather->GetWeather("ru","Moscow", "metric"); // получаем массив с данными о погоде
$widget = $weather->GetCurrentWeatherWidget("ru","Moscow", "metric"); // html код с детализацией о погоде
$temp = $curWeather->main->temp; // берём из массива температуру (7,19С)
setGlobal('ThisComputer.TempOutside', $temp);  // обновляем свойства 
setGlobal('ThisComputer.weatherFull', $widget);  // обновляем свойства
setGlobal('TempOutside.Temp', $temp);  // обновляем свойства
setGlobal('TempOutside.TempDetail', $widget);  // обновляем свойства
$this->setProperty('Temp',$temp); // обновляем свойства     
3. Создаём веб-переменную
3.1. Название: GetOpenWeatherInfo
3.2. Ссылка: http://192.168.1.7:80/objects/?object=T ... GetWeather
3.3. Интервал проверки: 600

Как-то так.
В итоге, в мажордомо на вкладке КЛИМАТ отображается текущая погода.
При раскрытии вкладки отображается детализованная информация.

Обновляется раз в 10 минут.

Если я что-то сделал не так, сообщите, поправлю.

Да, в настоящий момент данные о погоде можно получать двумя способами.
1. По Стране и городу. Как в коде 2.3

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

$curWeather = $weather->GetWeather("ru","Moscow", "metric"); // получаем массив с данными о погоде
$widget = $weather->GetCurrentWeatherWidget("ru","Moscow", "metric"); // html код с детализацией о погоде    
2. По ID города (563705 = ID города Дзержинский)

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

$curWeather = $weather->GetWeatherByCityID("563705", "metric"); // получаем массив с данными о погоде
$widget = $weather->GetCurrentWeatherWidgetByCityID("563705", "metric"); // html код с детализацией о погоде   
з.ы. Допиливанием разных графиков из OpenWeatherMap и локализацией постараюсь заняться в ближайшие выходные.
Последний раз редактировалось LutsenkoDenis Чт сен 26, 2013 7:53 am, всего редактировалось 2 раза.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: MDM и OpenWheatherMap

Сообщение sergejey » Ср сен 25, 2013 11:25 am

Денис, а можно перенести этот файл из ./lib/ в ./lib/openweather/ ? Дело в том, что все php-файлы из lib автоматически загружаются, а openweather оно не всегда нужно.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: MDM и OpenWheatherMap

Сообщение LutsenkoDenis » Ср сен 25, 2013 12:10 pm

да, не вижу проблем. Можно перенести.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
DiArt
Сообщения: 210
Зарегистрирован: Пт апр 12, 2013 2:27 pm
Откуда: Уфа
Благодарил (а): 28 раз
Поблагодарили: 16 раз

Re: MDM и OpenWheatherMap

Сообщение DiArt » Ср сен 25, 2013 5:54 pm

Закинул в папку lib openweather.php и теперьпорушиласьстраница.
Показывает то что внутри файла openweather.php. Как исправить кто знает?
Система на Неттоп 3Q Nettop Qoo!
(Intel Celeron J1800, 2x2410 МГц, 4096 Мб, HDD 1000 Гб, HDMI, VGA , Wi-Fi, Ethernet, Ubuntu 14.04.2)
Вторая система на Raspberry Pi 3.
D-Link DCS-930L/Broadlink RM2-Pro/BroadLink SP3 CC/Ginzzu HS-K07W
Я в CONNECT
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: MDM и OpenWheatherMap

Сообщение LutsenkoDenis » Ср сен 25, 2013 9:44 pm

Такого быть не должно.
Можно по подробней что пишет.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
DiArt
Сообщения: 210
Зарегистрирован: Пт апр 12, 2013 2:27 pm
Откуда: Уфа
Благодарил (а): 28 раз
Поблагодарили: 16 раз

Re: MDM и OpenWheatherMap

Сообщение DiArt » Сб окт 12, 2013 11:28 am

LutsenkoDenis писал(а): 3. Создаём веб-переменную
3.1. Название: GetOpenWeatherInfo
3.2. Ссылка: http://192.168.1.7:80/objects/?object=T ... GetWeather
3.3. Интервал проверки: 600

Как-то так.
А что писать в шаблоне поиска?
А то он мне всю страницу закидывает.
Система на Неттоп 3Q Nettop Qoo!
(Intel Celeron J1800, 2x2410 МГц, 4096 Мб, HDD 1000 Гб, HDMI, VGA , Wi-Fi, Ethernet, Ubuntu 14.04.2)
Вторая система на Raspberry Pi 3.
D-Link DCS-930L/Broadlink RM2-Pro/BroadLink SP3 CC/Ginzzu HS-K07W
Я в CONNECT
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: MDM и OpenWheatherMap

Сообщение LutsenkoDenis » Сб окт 12, 2013 3:32 pm

В каком шаблоне поиска???
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Ответить