Как погоду настроить

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
Amarok
Сообщения: 1427
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Как погоду настроить

Сообщение Amarok » Пт май 20, 2016 9:14 am

Gismeteo?
Моя Алиска живёт на Proxmox в Debian 12
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Как погоду настроить

Сообщение Bagir » Пт май 20, 2016 3:41 pm

Добрался и я до погоды. Думал что то сломалось. И верно, сначала через раз, а последнее время вообще не даёт погоду. Жаль, очень удобно было. Зажмотили нам похоже сервис Яндекса.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
DiArt
Сообщения: 210
Зарегистрирован: Пт апр 12, 2013 2:27 pm
Откуда: Уфа
Благодарил (а): 28 раз
Поблагодарили: 16 раз

Re: Как погоду настроить

Сообщение DiArt » Пт май 20, 2016 3:44 pm

Bagir писал(а):Добрался и я до погоды. Думал что то сломалось. И верно, сначала через раз, а последнее время вообще не даёт погоду. Жаль, очень удобно было. Зажмотили нам похоже сервис Яндекса.
Посмотрите тут http://majordomo.smartliving.ru/forum/v ... &start=120 В конце есть на текущий момент рабочий скрипт забора погоды с яндекса.
Правда только на текущий момент.
За это сообщение автора DiArt поблагодарили (всего 2):
PAV (Пн май 23, 2016 10:37 am) • Bagir (Пн май 23, 2016 3:11 pm)
Рейтинг: 2.33%
Система на Неттоп 3Q Nettop Qoo!
(Intel Celeron J1800, 2x2410 МГц, 4096 Мб, HDD 1000 Гб, HDMI, VGA , Wi-Fi, Ethernet, Ubuntu 14.04.2)
Вторая система на Raspberry Pi 3.
D-Link DCS-930L/Broadlink RM2-Pro/BroadLink SP3 CC/Ginzzu HS-K07W
Я в CONNECT
Аватара пользователя
71Gavrik71
Сообщения: 54
Зарегистрирован: Сб май 21, 2016 2:04 pm
Благодарил (а): 9 раз
Поблагодарили: 1 раз

Re: Как погоду настроить

Сообщение 71Gavrik71 » Вс май 22, 2016 11:02 pm

Уважаемые гуру, не могли бы помочь достать время захода с гисметио)))
ссылка https://www.gismeteo.ru/city/daily/4392/
код:
<div class="astronomy_item">
<span class="astronomy_title">Заход</span>
<b class="astronomy_value">20:41</b>
</div>

Все что удалось достать мне это: <b class="astronomy_value">20:41, вот таким шаблоном: Заход<\/span>(.+?)<\/b>
ILGAS
Сообщения: 366
Зарегистрирован: Пт июл 26, 2013 4:11 pm
Благодарил (а): 71 раз
Поблагодарили: 18 раз

Re: Как погоду настроить

Сообщение ILGAS » Пн май 23, 2016 12:32 pm

71Gavrik71 писал(а):Уважаемые гуру, не могли бы помочь достать время захода с гисметио)))
ссылка https://www.gismeteo.ru/city/daily/4392/
код:
<div class="astronomy_item">
<span class="astronomy_title">Заход</span>
<b class="astronomy_value">20:41</b>
</div>

Все что удалось достать мне это: <b class="astronomy_value">20:41, вот таким шаблоном: Заход<\/span>(.+?)<\/b>
вот:
Заход.+?value">(.+?)<\/b>
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Как погоду настроить

Сообщение Bagir » Пн май 23, 2016 3:16 pm

DiArt, спасибо! Я было подумал, что export.yandex.ru вообще прекратил работу. А он ушел на https. А заодно и переделали всё в xml ответе. Вчера на основные данные настроился. Сегодня надо будет до ума довести.
За это сообщение автора Bagir поблагодарил:
71Gavrik71 (Пн май 23, 2016 4:52 pm)
Рейтинг: 1.16%
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
PAV
Сообщения: 968
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 71 раз
Поблагодарили: 95 раз

Re: Как погоду настроить

Сообщение PAV » Пн май 23, 2016 4:02 pm

Я перенастроился, спасибо. Единственное, не все данные, что были раньше передает.
Аватара пользователя
71Gavrik71
Сообщения: 54
Зарегистрирован: Сб май 21, 2016 2:04 pm
Благодарил (а): 9 раз
Поблагодарили: 1 раз

Re: Как погоду настроить

Сообщение 71Gavrik71 » Пн май 23, 2016 4:53 pm

ILGAS писал(а):
71Gavrik71 писал(а):Уважаемые гуру, не могли бы помочь достать время захода с гисметио)))
ссылка https://www.gismeteo.ru/city/daily/4392/
код:
<div class="astronomy_item">
<span class="astronomy_title">Заход</span>
<b class="astronomy_value">20:41</b>
</div>

Все что удалось достать мне это: <b class="astronomy_value">20:41, вот таким шаблоном: Заход<\/span>(.+?)<\/b>
вот:
Заход.+?value">(.+?)<\/b>
Огромное спасибо!!!
Только теперь веб цикл постоянно падает)
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Как погоду настроить

Сообщение Bagir » Вт май 24, 2016 2:07 am

я бы всё же порекомендовал читать xml. Там есть эти данные. Работает очень стабильно.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Amarok
Сообщения: 1427
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Как погоду настроить

Сообщение Amarok » Ср май 25, 2016 10:10 am

В общем у меня такой сценарий:
СпойлерПоказать

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

$url = "";
$xml = simplexml_load_file($url);
$city = "NTuraGismeteo";

$name = $xml->location['name']; if(gg($city.".name")!=$name){sg($city.".name",$name);}
$name_r = $xml->location['name_r']; if(gg($city.".name_r")!=$name_r){sg($city.".name_r",$name_r);}
$durm = $xml->location->day[0]['durm']; if(gg($city.".durm")!=$durm){sg($city.".durm",$durm);}
$tmin = $xml->location->day[0]['tmin']; if(gg($city.".tmin")!=$tmin){sg($city.".tmin",$tmin);}
$tmax = $xml->location->day[0]['tmax']; if(gg($city.".tmax")!=$tmax){sg($city.".tmax",$tmax);}
if($tmin>0){$tmin="+".$tmin;} if($tmax>0){$tmax="+".$tmax;}
$pmin = $xml->location->day[0]['pmin']; if(gg($city.".pmin")!=$pmin){sg($city.".pmin",$pmin);}
$pmax = $xml->location->day[0]['pmax']; if(gg($city.".pmax")!=$pmax){sg($city.".pmax",$pmax);}
$wsmin = $xml->location->day[0]['wsmin']; if(gg($city.".wsmin")!=$wsmin){sg($city.".wsmin",$wsmin);}
$wsmax = $xml->location->day[0]['wsmax']; if(gg($city.".wsmax")!=$wsmax){sg($city.".wsmax",$wsmax);}
$hummin = $xml->location->day[0]['hummin']; if(gg($city.".hummin")!=$hummin){sg($city.".hummin",$hummin);}
$hummax = $xml->location->day[0]['hummax']; if(gg($city.".hummax")!=$hummax){sg($city.".hummax",$hummax);}
$cl = $xml->location->day[0]['cl']; if(gg($city.".cl")!=$cl){sg($city.".cl",$cl);}
$pt = $xml->location->day[0]['pt']; if(gg($city.".pt")!=$pt){sg($city.".pt",$pt);}
$pr = $xml->location->day[0]['pr']; if(gg($city.".pr")!=$pr){sg($city.".pr",$pr);}
$ts = $xml->location->day[0]['ts']; if(gg($city.".ts")!=$ts){sg($city.".ts",$ts);}
$descr = $xml->location->day[0]['descr']; if(gg($city.".descr")!=$descr){sg($city.".descr",$descr);}
$grademax = $xml->location->day[0]['grademax']; if(gg($city.".grademax")!=$grademax){sg($city.".grademax",$grademax);}

$today = "Сегодня ".$name_r." ".$tmin."° — ".$tmax."°. ".$descr.". ";
//Сегодня утром
if ($xml->location->day[0]->forecast['tod'] == 1){
 $t = $xml->location->day[0]->forecast->values['t'];
 if($t>0){$t="+".$t;}
 $descr = $xml->location->day[0]->forecast->values['descr'];
 $today_morning = "Утром до ".$t."°. ".$descr.". ";
}

//Сегодня днем
if ($xml->location->day[0]->forecast['tod'] == 2){
 $t = $xml->location->day[0]->forecast->values['t'];
 if($t>0){$t="+".$t;}
 $descr = $xml->location->day[0]->forecast->values['descr'];
 $today_day = "Днём до ".$t."°. ".$descr.". ";
}

//Сегодня вечером
if ($xml->location->day[0]->forecast['tod'] == 3){
 $t = $xml->location->day[0]->forecast->values['t'];
 if($t>0){$t="+".$t;}
 $descr = $xml->location->day[0]->forecast->values['descr'];
 $today_evening = "Вечером до ".$t."°. ".$descr.". ";
}

//Сегодня ночью
if ($xml->location->day[1]->forecast['tod'] == 0){
 $t = $xml->location->day[1]->forecast->values['t'];
 if($t>0){$t="+".$t;}
 $descr = $xml->location->day[1]->forecast->values['descr'];
 $today_night = "Ночью до ".$t."°. ".$descr.".";
}

$forecast = $today.$today_morning.$today_day.$today_evening.$today_night;
if(gg($city.".forecast")!=$forecast){sg($city.".forecast",$forecast);}

//Завтра
$tmin = $xml->location->day[1]['tmin'];
$tmax = $xml->location->day[1]['tmax'];
$descr = $xml->location->day[1]['descr'];
if($tmin>0){$tmin="+".$tmin;}
if($tmax>0){$tmax="+".$tmax;}
$tomorrow = "Завтра "." ".$tmin."° — ".$tmax."°. ".$descr.". ";

//Завтра ночью
if ($xml->location->day[2]->forecast['tod'] == 0){
 $t = $xml->location->day[2]->forecast->values['t'];
 if($t>0){$t="+".$t;}
 $descr = $xml->location->day[2]->forecast->values['descr'];
 $tomorrow_night = "Завтра ночью до ".$t."°. ".$descr.".";
}

$forecastTomorrow = $tomorrow.$tomorrow_night;
if(gg($city.".forecastTomorrow")!=$forecastTomorrow){sg($city.".forecastTomorrow",$forecastTomorrow);} 
Значение $url я получил после регистрации на сайте Gismeteo. Для этого надо написать письмо на data@gismeteo.ru и попросить предоставить доступ к прогнозу погоды в xml-формате. Мне ответила любезная девушка, задала пару вопросов, выслала анкету (её надо заполнить) и - через некоторое время - у меня появился свой прогноз.

Приношу благодарности:
[*] сайту Gismeteo за предоставленный доступ к погодным данным на мой город
[*] менеджеру Gismeteo Валерии Сердюк за её терпение
[*] пользователю нашего форума m-malva за его код из которого я надёргал некоторые кусочки/идеи
Моя Алиска живёт на Proxmox в Debian 12
Ответить