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

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

Модератор: immortal

jeks0n
Сообщения: 43
Зарегистрирован: Пт дек 26, 2014 6:37 pm
Благодарил (а): 10 раз
Поблагодарили: 1 раз

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

Сообщение jeks0n » Пн окт 24, 2016 7:02 am

craber писал(а): Спасибо. Только округлилось как-то выборочно.
в систему переменные будут попадать такими же дробными, а с помощью написанного примера можно выводить переменную уже непосредственно в скрипте или меню. Это пример только для фактической температуры (ow_fact.temperature).
Alexiy2
Сообщения: 104
Зарегистрирован: Вт май 12, 2015 9:59 pm
Благодарил (а): 16 раз
Поблагодарили: 13 раз

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

Сообщение Alexiy2 » Пн окт 24, 2016 9:34 pm

Господа! Уже голову поломал с розой ветров! В модуле направление ветра указано в градусах угла по азимуту, а мне надо нормальное направление для проговаривание через функцию say. Может кто поделится куском кода для преобразования? Углы высчитал для каждого направления, а вот с кодом БЕДА: соображалки не хватает!
Может я что то не туда прописываю?

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

// Направление ветра
$dir =round(gg('ow_fact.wind_direction'));
if (112.5>=$dir && $dir<=157.5){
 $direct= "Юго-Восточный";
}else if (0>=$dir && $dir<=22.5){
 $direct="Северный";
}else if (22.6>=$dir && $dir<=67.5){
 $direct= "Северо-Восточный";
}
 $status.=' Ветер'. $direct; 
На экран выводит только слово Ветер
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

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

Сообщение xor » Пн окт 24, 2016 10:45 pm

Пользуюсь функциями (добавил в файл C\_majordomo\htdocs\lib\my_funcs.php)

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

 
  /**
    * Get wind direction name by direction in degree 
    * @param mixed $degree Wind degree
    * @return string
    */
   function myWindDirection($degree)
   {
      $windDirection = ['С', 'ССВ', 'СВ', 'ВСВ', 'В', 'ВЮВ', 'ЮВ', 'ЮЮВ', 'Ю', 'ЮЮЗ', 'ЮЗ', 'ЗЮЗ', 'З', 'ЗСЗ', 'СЗ', 'ССЗ', 'С'];
      $direction = $windDirection[round($degree / 22.5)];
      
      return $direction;
   }

  /**
    * Get wind direction name by direction in degree 
    * @param mixed $degree Wind degree
    * @return string
    */
    function myWindDirFull($degree)
   {
      $windDirection = ['Северный', 'Северо-северо-восточный', 'Северо-восточный', 'Восточно-северо-восточный', 'Восточный', 'Восточно-юго-восточный', 'Юго-восточный', 'Юго-юго-восточный', 'Южный', 'Юго-юго-западный', 'Юго-западный', 'Западно-юго-западный', 'Западный', 'Западно-северо-западный', 'Северо-западный', 'Северо-северо-западный', 'Северный'];
      $direction = $windDirection[round($degree / 22.5)];
      
      return $direction;
   }
 
За это сообщение автора xor поблагодарил:
Alexiy2 (Пн ноя 14, 2016 3:54 pm)
Рейтинг: 1.16%
bkostyas
Сообщения: 2
Зарегистрирован: Пн окт 24, 2016 11:20 pm
Благодарил (а): 1 раз
Поблагодарили: 0

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

Сообщение bkostyas » Вт окт 25, 2016 8:05 am

jeks0n писал(а):
craber писал(а):У меня модуль выдает значения 2.46°C, -1.83°C
Подскажите как и где округлить значения температуры до целых?
например, так:

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

$t_fact=round(getGlobal('ow_fact.temperature'),0); 
Подскажите, а куда вставить код ? Не могу разобраться.
jeks0n
Сообщения: 43
Зарегистрирован: Пт дек 26, 2014 6:37 pm
Благодарил (а): 10 раз
Поблагодарили: 1 раз

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

Сообщение jeks0n » Ср окт 26, 2016 6:45 pm

ну например в сценарии ReadWeatherToday

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

$t_fact=round(getGlobal('ow_fact.temperature'),0); //округляем фактическую температуру и назначаем ее значение в переменную $t_fact;
setGlobal('t_fact',$t_fact); //назначаем глобальную переменную $t_fact с текущим значением температуры;
 
теперь везде в скриптах или меню где выводили переменную "ow_fact.temperature", выводим "t_fact".

Тоже самое делаем с другими нужными переменными (прогноз на ночь или на завтра и т.п.)
За это сообщение автора jeks0n поблагодарил:
bkostyas (Ср окт 26, 2016 10:41 pm)
Рейтинг: 1.16%
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

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

Сообщение Jager » Ср окт 26, 2016 6:51 pm

Под виндой так и не работает выбор города. Переустановка с удалением хвостов не помогает.
bkostyas
Сообщения: 2
Зарегистрирован: Пн окт 24, 2016 11:20 pm
Благодарил (а): 1 раз
Поблагодарили: 0

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

Сообщение bkostyas » Ср окт 26, 2016 10:47 pm

jeks0n спасибо за пояснения, очень доходчиво.
Все заработало на Raspberry, только после рестарта, последнего.
Кнопочку нажал
Аватара пользователя
blackangel
Сообщения: 148
Зарегистрирован: Пт окт 21, 2016 2:00 pm
Благодарил (а): 31 раз
Поблагодарили: 13 раз

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

Сообщение blackangel » Чт окт 27, 2016 2:19 pm

помогите разобраться почему не обновляет автоматом данные...
Аватара пользователя
blackangel
Сообщения: 148
Зарегистрирован: Пт окт 21, 2016 2:00 pm
Благодарил (а): 31 раз
Поблагодарили: 13 раз

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

Сообщение blackangel » Чт окт 27, 2016 2:27 pm

jeks0n писал(а):ну например в сценарии ReadWeatherToday

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

$t_fact=round(getGlobal('ow_fact.temperature'),0); //округляем фактическую температуру и назначаем ее значение в переменную $t_fact;
setGlobal('t_fact',$t_fact); //назначаем глобальную переменную $t_fact с текущим значением температуры;
теперь везде в скриптах или меню где выводили переменную "ow_fact.temperature", выводим "t_fact".

Тоже самое делаем с другими нужными переменными (прогноз на ночь или на завтра и т.п.)

создал данный сценарий, после применения алиса проговорила погоду.... странно
в сцене прописал в место ow_fact.temperature, t_fact, данные не выводит
Аватара пользователя
blackangel
Сообщения: 148
Зарегистрирован: Пт окт 21, 2016 2:00 pm
Благодарил (а): 31 раз
Поблагодарили: 13 раз

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

Сообщение blackangel » Пт окт 28, 2016 12:30 am

помогите все таки сделать получаемую температуру не в виде 2,68 а 2,6. плизззз=)
Закрыто