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