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

MDM и OpenWheatherMap

Добавлено: Чт авг 08, 2013 12:11 am
LutsenkoDenis
Доброго времени суток.

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

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

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

Как интегрировать мой класс в MDM?
Что для того нужно?
Желательно по шагам, как для "особо одарённых" :)

Re: MDM и OpenWheatherMap

Добавлено: Вс сен 15, 2013 2:50 am
LutsenkoDenis
Добавление погоды от 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); 

Re: MDM и OpenWheatherMap

Добавлено: Вт сен 24, 2013 7:30 pm
DiArt
Вотэтот код куда вводить?
Распиши плиз по шагам. Как вытягивать и как выводить

Re: MDM и OpenWheatherMap

Добавлено: Вт сен 24, 2013 9:13 pm
LutsenkoDenis
ок.

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 и локализацией постараюсь заняться в ближайшие выходные.

Re: MDM и OpenWheatherMap

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

Re: MDM и OpenWheatherMap

Добавлено: Ср сен 25, 2013 12:10 pm
LutsenkoDenis
да, не вижу проблем. Можно перенести.

Re: MDM и OpenWheatherMap

Добавлено: Ср сен 25, 2013 5:54 pm
DiArt
Закинул в папку lib openweather.php и теперьпорушиласьстраница.
Показывает то что внутри файла openweather.php. Как исправить кто знает?

Re: MDM и OpenWheatherMap

Добавлено: Ср сен 25, 2013 9:44 pm
LutsenkoDenis
Такого быть не должно.
Можно по подробней что пишет.

Re: MDM и OpenWheatherMap

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

Как-то так.
А что писать в шаблоне поиска?
А то он мне всю страницу закидывает.

Re: MDM и OpenWheatherMap

Добавлено: Сб окт 12, 2013 3:32 pm
LutsenkoDenis
В каком шаблоне поиска???