Страница 10 из 55

Re: Модуль - Погода от OpenWeatherMap

Добавлено: Чт июн 02, 2016 3:00 pm
f00fc7c8
Добрый день.
Заметил - при обновлении системы, обновляя модуль -
повторно добавляется код инициализации:
//START openweather module
в таймер onNewHour. у всех так?

Re: Модуль - Погода от OpenWeatherMap

Добавлено: Чт июн 02, 2016 3:03 pm
nick7zmail
f00fc7c8 писал(а):Добрый день.
Заметил - при обновлении системы, обновляя модуль -
повторно добавляется код инициализации:
//START openweather module
в таймер onNewHour. у всех так?
Да...давно просим убрать эту штуку у создателя модуля

Отправлено с моего Xperia Z через Tapatalk

Re: Модуль - Погода от OpenWeatherMap

Добавлено: Пт июн 03, 2016 12:46 pm
sergejey
Как вариант, вместо добавления кода в onNewHour можно подписаться на событие HOURLY и тогда код можно оставить в самом модуле. Для примера можно смотреть как это реализовано в модуле Optimizerю

Re: Модуль - Погода от OpenWeatherMap

Добавлено: Пт июн 03, 2016 12:52 pm
nick7zmail
sergejey писал(а):Как вариант, вместо добавления кода в onNewHour можно подписаться на событие HOURLY и тогда код можно оставить в самом модуле. Для примера можно смотреть как это реализовано в модуле Optimizerю
Ууу...вот это не знал...прикольно...а с минутами есть подобная подписка?

Отправлено с моего Xperia Z через Tapatalk

Re: Модуль - Погода от OpenWeatherMap

Добавлено: Пт июн 03, 2016 12:58 pm
sergejey
nick7zmail писал(а):
sergejey писал(а):Как вариант, вместо добавления кода в onNewHour можно подписаться на событие HOURLY и тогда код можно оставить в самом модуле. Для примера можно смотреть как это реализовано в модуле Optimizerю
Ууу...вот это не знал...прикольно...а с минутами есть подобная подписка?
Нет, с минутами такой нету. В принципе, можно и с минутами сделать. А на практике для чего хотите использовать?

Re: Модуль - Погода от OpenWeatherMap

Добавлено: Пт июн 03, 2016 1:18 pm
nick7zmail
Для того же будильника к примеру...набросок модуля и интерфейса есть...функционал допилить чет никак не собирусь))...или если модуль вызывать раз в пол часа нужно или раз в 15 минут...

Отправлено с моего Xperia Z через Tapatalk

Re: Модуль - Погода от OpenWeatherMap

Добавлено: Пт июн 03, 2016 2:00 pm
ErmolenkoM
Всем привет!
Со смертью погоды от яндекса перебрался на этот погодный модуль.
Мои доработки.
1. У класса openweather создал поле temperature с историчностью 7 дней. Теперь можно строить график текущей температуры за прошлую неделю.
2. У класса openweather создал метод ChangeTemp с кодом
сохранение вчерашней температурыПоказать

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

// Запишем температуру вчерашнего дня для этого часа
$SQLText = " SELECT ph.value as val";
$SQLText.= " FROM pvalues pv, objects o, properties p, phistory ph ";
$SQLText.= " WHERE pv.object_id = o.id ";
$SQLText.= " AND p.id = pv.property_id ";
$SQLText.= " AND o.title =  'ow_fact' ";
$SQLText.= " AND p.title =  'temperature' ";
$SQLText.= " AND ph.value_id = pv.id ";
$SQLText.= " AND UNIX_TIMESTAMP( pv.updated ) - UNIX_TIMESTAMP( ph.added ) <24 *60 *60 +30 *60 ";
$SQLText.= " ORDER BY ph.added ";
$SQLText.= " LIMIT 1 ";
$tempYesterday = SQLSelectOne($SQLText);
sg("ow_fact.tempYesterday",$tempYesterday['val'] );
 
3. у свойства temperature указал запускать при изменении метод ChangeTemp .
Поясню - теперь у ow_fact.tempYesterday всегда актуальная вчерашняя температура. Это нужно для сравнения со вчерашним днем.
4. Создал скрипт проговаривания погоды (у меня вызывается голосовой командой прогноз погоды) со следующим кодом:
прогноз погодыПоказать

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

    $status="";
    $status.="Сегодня ".gg("ow_fact.weather_type").".";
    say($status,1);
    
    $status="";
    $w=round(gg("ow_fact.temperature"));
    $tempw=$w;
    if($tempw >= 11 and $tempw <= 14){
    $tempcels=" градусов ";
    }
    else{
      while ($tempw > 9){
        $tempw=$tempw-10;
      }
    
      if($tempw == 0 or $tempw >= 5 and $tempw <= 9){
        $tempcels= градусов ; }
      if($tempw == 1){
        $tempcels= градус ; }
      if($tempw >= 2 and $tempw <= 4){
        $tempcels= градуса ; }
    }
    $status.=' Температура '.$w." ".$tempcels." цельсия";
    say($status,1);

    // Сравнение со вчерашним днем
    $tNew = round((float)getGlobal('ow_fact.temperature'));
    $tOld = round((float)getGlobal('ow_fact.tempYesterday'));
    $tDelta = abs($tNew - $tOld);
    if ($tDelta==1){
      $tGradus = 'градус';
    }elseif($tDelta==2 || $tDelta==3 || $tDelta==4){
      $tGradus = 'градуса';
    }else{
      $tGradus = 'градусов';
    }
    if     ($tNew>$tOld){
      say("Сегодня теплее, чем вчера на ".$tDelta." ".$tGradus.".",1);
    }elseif($tNew<$tOld){
      say("Сегодня холоднее, чем вчера на ".$tDelta." ".$tGradus.".",1);
    }elseif($tNew==$tOld){
      say("Температура сегодня такая же как вчера.",1);
    }


    $tempw="";
    $tempcels="";
    
    $status="";  
    $h=round(gg("ow_fact.humidity"));
    $tempw=$h;
    if($tempw >= 11 and $tempw <= 14){
    $tempcels=" процентов ";
    }
    else{

    while ($tempw > 9){
    $tempw=$tempw-10;
    }
    
    if($tempw == 0 or $tempw >= 5 and $tempw <= 9){
    $tempcels= процентов ; }
    if($tempw == 1){
    $tempcels= процент ; }
    if($tempw >= 2 and $tempw <= 4){
    $tempcels= процента ; }
    }
    $status.="Относительная влажность ".$h." ".$tempcels. ".";
    say($status,1);
    $tempw="";
    $tempcels="";
    
    $status="";
    $pressure=(float)gg("ow_fact.pressure_mmhg");
    if ($pressure<738) {
     $status.=' Атмосферное давление пониженное';
    } elseif ($pressure>768) {
     $status.=' Атмосферное давление повышенное.';
    } else {
     $status.=' Атмосферное давление нормальное.';
    }
    say($status,1);
    
    $status="";
    // ветер
    $WindSpeed=(float)gg("ow_fact.wind_speed");
    if ($WindSpeed<1) {
     $status.=' Ветра нет.';
    } elseif ($WindSpeed<3) {
     $status.=' Ветер слабый.';
    } elseif ($WindSpeed<6) {
     $status.=' Ветер сильный.';
    } elseif ($WindSpeed<9) {
     $status.=' Ветер очень сильный.';
    } else {
     $status.=' Ветер очень! Очень сильный.';
    }
    if (gg('ow_fact.wind_direction')> 45 and gg('ow_fact.wind_direction')< 135){
      $WindDir='восточное';
    } elseif(gg('ow_fact.wind_direction')>= 135 and gg('ow_fact.wind_direction')<= 225){
      $WindDir='южное';
    } elseif(gg('ow_fact.wind_direction')> 225 and gg('ow_fact.wind_direction')< 315){
      $WindDir='западное';
    } else{
      $WindDir='северное';
    } 
    $status.=' Направление '.$WindDir.'.';
    say($status,1);
 
    // Прогноз погоды на сегодня
    if (timeBetween("00:00", "12:00")){
      say("Днём ".gg("ow_day0.weather_type").".",1);
      $w=round(gg("ow_day0.temp_day"));
    }else{
      say("Вечером ".gg("ow_day0.weather_type").".",1);
      $w=round(gg("ow_day0.eve"));
    }  
    $tempw=$w;
    if($tempw >= 11 and $tempw <= 14){
    $tempcels=" градусов ";
    }
    else{
      while ($tempw > 9){
        $tempw=$tempw-10;
      }
    
      if($tempw == 0 or $tempw >= 5 and $tempw <= 9){
        $tempcels= градусов ; }
      if($tempw == 1){
        $tempcels= градус ; }
      if($tempw >= 2 and $tempw <= 4){
        $tempcels= градуса ; }
    }
    $status="";
    $status.=' температура будет '.$w." ".$tempcels." цельсия";
    say($status,1);
 
    
    // Погода на завтра
    say("Завтра ".gg("ow_day1.weather_type").".",1);
    $status="";
    $w=round(gg("ow_day1.temperature"));
    $tempw=$w;
    if($tempw >= 11 and $tempw <= 14){
    $tempcels=" градусов ";
    }
    else{
      while ($tempw > 9){
        $tempw=$tempw-10;
      }
    
      if($tempw == 0 or $tempw >= 5 and $tempw <= 9){
        $tempcels= градусов ; }
      if($tempw == 1){
        $tempcels= градус ; }
      if($tempw >= 2 and $tempw <= 4){
        $tempcels= градуса ; }
    }
    $status.=' Температура будет '.$w." ".$tempcels." цельсия";
    say($status,1);
     
    
    // Пробки.
    $status=getGlobal('ThisComputer.ProbkiText').'.';
    say($status,1);
 

Re: Модуль - Погода от OpenWeatherMap

Добавлено: Вс июн 05, 2016 12:51 pm
nick7zmail
Мне уже больно смотреть как люди впихивают стандартные иконки оупэнвэзер на сцены)))
Они же маленькие и некрасивые))
Вот наборчик неплохих иконок, пользуйтесь.
скрин.jpg
скрин.jpg (15.77 КБ) 12802 просмотра
Инструкция:
1) зайти в настройки опенвэзер
2) поставить галочку "кэшировать картинки",
3) распаковать архив в htdocs\cached\openweather\image\
4) заменить, или перед распаковкой удалить всё оттуда.
5) лицезреть картиночки на сценах))

Re: Модуль - Погода от OpenWeatherMap

Добавлено: Вт июн 07, 2016 10:07 pm
xor
А точно нужно галочку убирать(п.2)?
Вроде, если кэширование стоит, то иконки с локального диска должны браться?

Re: Модуль - Погода от OpenWeatherMap

Добавлено: Вт июн 07, 2016 10:28 pm
nick7zmail
xor писал(а):А точно нужно галочку убирать(п.2)?
Вроде, если кэширование стоит, то иконки с локального диска должны браться?
Как раз наоборот. Если стоит кэширование - иконки загружаются, если не стоит - они берутся с диска, но если нужной иконки нет - будет незагруженная картинка. Я в архиве на все варианты картинки выложил, так что не должно такого быть.