[Модуль] OpenWeatherMap (openweather) Не актуально!

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

f00fc7c8
Сообщения: 55
Зарегистрирован: Пт ноя 01, 2013 3:15 am
Благодарил (а): 3 раза
Поблагодарили: 11 раз

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

Сообщение f00fc7c8 » Чт июн 02, 2016 3:00 pm

Добрый день.
Заметил - при обновлении системы, обновляя модуль -
повторно добавляется код инициализации:
//START openweather module
в таймер onNewHour. у всех так?
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Чт июн 02, 2016 3:03 pm

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

Отправлено с моего Xperia Z через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Пт июн 03, 2016 12:46 pm

Как вариант, вместо добавления кода в onNewHour можно подписаться на событие HOURLY и тогда код можно оставить в самом модуле. Для примера можно смотреть как это реализовано в модуле Optimizerю

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Пт июн 03, 2016 12:52 pm

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

Отправлено с моего Xperia Z через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Пт июн 03, 2016 12:58 pm

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

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Пт июн 03, 2016 1:18 pm

Для того же будильника к примеру...набросок модуля и интерфейса есть...функционал допилить чет никак не собирусь))...или если модуль вызывать раз в пол часа нужно или раз в 15 минут...

Отправлено с моего Xperia Z через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 140 раз
Контактная информация:

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

Сообщение ErmolenkoM » Пт июн 03, 2016 2:00 pm

Всем привет!
Со смертью погоды от яндекса перебрался на этот погодный модуль.
Мои доработки.
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);
 
За это сообщение автора ErmolenkoM поблагодарили (всего 4):
devoff (Вс июн 05, 2016 10:33 am) • TheForum (Сб сен 03, 2016 10:27 pm) • sirius23 (Сб сен 17, 2016 8:46 pm) • tarasfrompir (Вт окт 18, 2016 9:17 pm)
Рейтинг: 4.65%
aka msh555
Cubian на Cubietruck, Connect
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Вс июн 05, 2016 12:51 pm

Мне уже больно смотреть как люди впихивают стандартные иконки оупэнвэзер на сцены)))
Они же маленькие и некрасивые))
Вот наборчик неплохих иконок, пользуйтесь.
скрин.jpg
скрин.jpg (15.77 КБ) 12755 просмотров
Инструкция:
1) зайти в настройки опенвэзер
2) поставить галочку "кэшировать картинки",
3) распаковать архив в htdocs\cached\openweather\image\
4) заменить, или перед распаковкой удалить всё оттуда.
5) лицезреть картиночки на сценах))
Вложения
image.rar
(59.78 КБ) 1023 скачивания
Последний раз редактировалось nick7zmail Чт июн 16, 2016 4:54 pm, всего редактировалось 1 раз.
За это сообщение автора nick7zmail поблагодарили (всего 9):
DiArt (Вс июн 05, 2016 1:04 pm) • xor (Ср июн 08, 2016 10:11 pm) • samum (Пн июн 13, 2016 2:13 pm) • zoz (Пт сен 02, 2016 2:39 am) • TheForum (Сб сен 03, 2016 10:32 pm) • kas5858 (Сб фев 11, 2017 8:42 pm) • Sapizdullin (Пн сен 04, 2017 8:46 pm) • ipz (Вт окт 10, 2017 1:04 am) • djleon (Пн янв 22, 2018 9:00 am)
Рейтинг: 10.47%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

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

Сообщение xor » Вт июн 07, 2016 10:07 pm

А точно нужно галочку убирать(п.2)?
Вроде, если кэширование стоит, то иконки с локального диска должны браться?
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Вт июн 07, 2016 10:28 pm

xor писал(а):А точно нужно галочку убирать(п.2)?
Вроде, если кэширование стоит, то иконки с локального диска должны браться?
Как раз наоборот. Если стоит кэширование - иконки загружаются, если не стоит - они берутся с диска, но если нужной иконки нет - будет незагруженная картинка. Я в архиве на все варианты картинки выложил, так что не должно такого быть.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Закрыто