Страница 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 (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)?
Вроде, если кэширование стоит, то иконки с локального диска должны браться?
Как раз наоборот. Если стоит кэширование - иконки загружаются, если не стоит - они берутся с диска, но если нужной иконки нет - будет незагруженная картинка. Я в архиве на все варианты картинки выложил, так что не должно такого быть.