SmartLiving.ru

Обсуждение проекта
 
Текущее время: Пт дек 15, 2017 3:17 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 150 ]  На страницу Пред.  1 ... 11, 12, 13, 14, 15  След.
Автор Сообщение
 Заголовок сообщения: Re: Погода (Яндекс)
СообщениеДобавлено: Сб мар 18, 2017 12:33 pm 
Не в сети

Зарегистрирован: Вт ноя 25, 2014 2:06 pm
Сообщения: 134
Благодарил (а): 27 раз.
Поблагодарили: 0 раз.
Rifmik писал(а):
Я погоду от Яндекса "прикрутил" в таком виде:


Красиво
а как сделать на неделю в таком плане ?

_________________
Windows 10 + Raspberry Pi3 + ESP8266


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Погода (Яндекс)
СообщениеДобавлено: Сб июн 03, 2017 8:52 pm 
Не в сети

Зарегистрирован: Пн дек 26, 2016 9:51 am
Сообщения: 653
Откуда: Екатеринбург
Благодарил (а): 94 раз.
Поблагодарили: 29 раз.
для яндекса вполне работает скрипт
[Показать] Скрытый текст:
$timestamp = time();
$token = md5('eternalsun'.$timestamp);

$uuid = "8211..";
$deviceid = "3...";

$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"User-Agent: yandex-weather-android/4.2.1\n" .
"X-Yandex-Weather-Client: YandexWeatherAndroid/4.2.1\n" .
"X-Yandex-Weather-Device: os=null;os_version=21;manufacturer=chromium;model=App Runtime for Chrome Dev;device_id=$deviceid;uuid=$uuid;\n" .
"X-Yandex-Weather-Token: $token\n" .
"X-Yandex-Weather-Timestamp: $timestamp\n" .
"X-Yandex-Weather-UUID: $uuid\n" .
"X-Yandex-Weather-Device-ID: $deviceid\n" .
"Accept-Encoding: gzip, deflate\n" .
"Host: api.weather.yandex.ru\n" .
"Connection: Keep-Alive"
)
);

$context = stream_context_create($opts);
//ID города узнаем тут: https://pogoda.yandex.ru/static/cities.xml
//region="11162" id="28440
$file = file_get_contents('https://api.weather.yandex.ru/v1/forecast?geoid=54&lang=ru', false, $context);
//$file = file_get_contents('https://api.weather.yandex.ru/v1/locations?lang=ru', false, $context);


header('Content-type: text/json');
//echo gzdecode($file);
$otvet=gzdecode($file);

$data=json_decode($otvet,true);
//$objn=$data[0]['id'];

$objn=$data[info][slug];
$src=$data[info];
echo $objn;
addClassObject('YandexWeather',$objn);

$src=$data[info];
foreach ($src as $key=> $value ) { sg( $objn.'.'.$key,$value); }

$src=$data[fact];
foreach ($src as $key=> $value ) { sg( $objn.'.'.$key,$value); }

$fobjn=$objn."_forecast0";
//addClassObject('YandexWeather',$fobjn);
$src=$data[forecasts][0][parts];
foreach ($data[forecasts] as $day=> $value ) {
$fobjn=$objn."_forecast".$day;
addClassObject('YandexWeather',$fobjn);
foreach ($data[forecasts][$day][parts] as $key=> $value ) {

sg( $fobjn.'.'.$key.'_temp_avg',$data[forecasts][$day][parts][$key][temp_avg]);
sg( $fobjn.'.'.$key.'_wind_speed',$data[forecasts][$day][parts][$key][wind_speed]);
sg( $fobjn.'.'.$key.'_wind_gust',$data[forecasts][$day][parts][$key][wind_gust]);
sg( $fobjn.'.'.$key.'_wind_dir',$data[forecasts][$day][parts][$key][wind_dir]);
sg( $fobjn.'.'.$key.'_pressure_mm',$data[forecasts][$day][parts][$key][pressure_mm]);
sg( $fobjn.'.'.$key.'_pressure_pa',$data[forecasts][$day][parts][$key][pressure_pa]);
sg( $fobjn.'.'.$key.'_humidity',$data[forecasts][$day][parts][$key][humidity]);
}
}


где $uuid b $deviceid можно поискать в интернете или спросить у знакомых. Я по определенным причинам не могу его выложить.

*** Сообщение запрещено. Сообщение похоже на спам. ***

_________________
connect: http://connect.smartliving.ru/profile/1502


Последний раз редактировалось directman66 Сб ноя 11, 2017 10:24 pm, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Погода (Яндекс)
СообщениеДобавлено: Вт авг 08, 2017 10:43 am 
Не в сети

Зарегистрирован: Вт авг 08, 2017 9:53 am
Сообщения: 1
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Структура отдаваемых Яндексом данных изменилась- теперь "прогноз"- это картинка, в текстовом виде передаётся только прогнозируемая температура и описание текущей погоды .

внёс небольшие изменения в скрипт

результат может выглядеть так:
[Показать] Скрытый текст:
Изображение

Код в Меню управления:
Код:


  
<div style="background: antiquewhite;padding: 7px;">
  <div style="font-size:10px; width:50px; display: inline-block;">Сейчас</div>
  <img src="%Moscow.Image0%" width= 15% align="absmiddle"> 
   
<div style="position: absolute;display: inline-block;font-size: 30px;padding-top: 3px;padding-left: 5px;">%Moscow.Temp%</div>
   <div style="position: absolute;display: inline-block;font-size: 11px;padding-top: 3px;padding-left: 65px;">%Moscow.Humidity%</div> 
   
<div style="position: absolute;display: inline-block;font-size: 11px;padding-top: 17px;padding-left: 65px;">%Moscow.Pressure%</div> 
   
<div style="position: absolute;display: inline-block;font-size: 11px;padding-top: 30px;padding-left: 65px;">%Moscow.windCast%</div>
   <div style="font-size: 11px;color: darksalmon;float: right;">%Moscow.updated%</div> </div>
 <div style="background: #faebd7b3;padding: 7px;"><div style="font-size:10px; width:50px; display: inline-block;">%Moscow.dayPart1%</div><img src="%Moscow.Image1%" width= 15% align="absmiddle"> %Moscow.Temp1% </div>
 <div style="background: #faebd780;padding: 7px;"><div style="font-size:10px; width:50px; display: inline-block;">%Moscow.dayPart2%</div><img src="%Moscow.Image2%" width= 15% align="absmiddle"> %Moscow.Temp2% </div>
 <div style="background: #faebd7b3;padding: 7px;"><div style="font-size:10px; width:50px; display: inline-block;">%Moscow.dayPart3%</div><img src="%Moscow.Image3%" width= 15% align="absmiddle"> %Moscow.Temp3% </div>
 <div style="background: #faebd780;padding: 7px;"><div style="font-size:10px; width:50px; display: inline-block;">%Moscow.dayPart4%</div><img src="%Moscow.Image4%" width= 15% align="absmiddle"> %Moscow.Temp4% </div>




 



[Показать] Скрытый текст:
Код:


$objects
=getObjectsByClass("Погода с Yandex"); //имя класса
foreach($objects as $obj) {
$city_id=gg($obj['TITLE'].".city_id"); //ID города узнаем тут: https://pogoda.yandex.ru/static/cities.xml
$data_file="https://export.yandex.ru/bar/reginfo.xml?region=$city_id.xml?"; // адрес xml файла

 
 $xml 
= simplexml_load_file($data_file); // раскладываем xml на массив

 echo "<pre>"; print_r($xml); echo "</pre>";
/* $temp_yesterday=$xml->yesterday->temperature; //узнаем вчерашнюю температуру в это же время
if ($temp_yesterday>0) {$temp_yesterday='+'.$temp_yesterday;} // Если значение температуры положительно, для наглядности добавляем "+"
sg($obj['TITLE'].".TempYesterday",$temp_yesterday); */

$temp0=$xml->weather->day->day_part[0]->temperature;
if (date('G')==13) {sg($obj['TITLE'].".Temp13h",$temp0);}
if (date('G')==21) {sg($obj['TITLE'].".Temp21h",$temp0);}
if ($temp0>0) {$temp0=$temp0;} // Если значение температуры положительно, для наглядности добавляем "+"
sg($obj['TITLE'].".Temp",$temp0);

 $tempFrom1=$xml->weather->day->day_part[1]->temperature_from;
$tempTo1=$xml->weather->day->day_part[1]->temperature_to;
sg($obj['TITLE'].".Temp1",$tempFrom1."...".$tempTo1);
 
 $tempFrom2
=$xml->weather->day->day_part[2]->temperature_from;
$tempTo2=$xml->weather->day->day_part[2]->temperature_to;
sg($obj['TITLE'].".Temp2",$tempFrom2."...".$tempTo2);

 $tempFrom3=$xml->weather->day->day_part[3]->temperature_from;
$tempTo3=$xml->weather->day->day_part[3]->temperature_to;
sg($obj['TITLE'].".Temp3",$tempFrom3."...".$tempTo3); 
 
 $tempFrom4
=$xml->weather->day->day_part[4]->temperature_from;
$tempTo4=$xml->weather->day->day_part[4]->temperature_to;
sg($obj['TITLE'].".Temp4",$tempFrom4."...".$tempTo4);
 
 
 
 sg
($obj['TITLE'].".Type",$xml->weather->day->day_part[0]->weather_type);
sg($obj['TITLE'].".Pressure",$xml->weather->day->day_part[0]->pressure." мм рт. ст.");
sg($obj['TITLE'].".Humidity",$xml->weather->day->day_part[0]->dampness."%");
sg($obj['TITLE'].".WindSpeed",$xml->weather->day->day_part[0]->wind_speed);

sg($obj['TITLE'].".Image",str_replace(array('https://yastatic.net/weather/i/icons/blueye/48/','png'), array('https://yastatic.net/weather/i/icons/blueye/color/svg/','svg'), $xml->weather->day->day_part[0]->{"image-v3"}));
sg($obj['TITLE'].".Image1",str_replace(array('https://yastatic.net/weather/i/icons/blueye/30/','png'), array('https://yastatic.net/weather/i/icons/blueye/color/svg/','svg'), $xml->weather->day->day_part[1]->{"image-v3"}));
sg($obj['TITLE'].".Image2",str_replace(array('https://yastatic.net/weather/i/icons/blueye/30/','png'), array('https://yastatic.net/weather/i/icons/blueye/color/svg/','svg'), $xml->weather->day->day_part[2]->{"image-v3"}));
sg($obj['TITLE'].".Image3",str_replace(array('https://yastatic.net/weather/i/icons/blueye/30/','png'), array('https://yastatic.net/weather/i/icons/blueye/color/svg/','svg'), $xml->weather->day->day_part[3]->{"image-v3"}));
sg($obj['TITLE'].".Image4",str_replace(array('https://yastatic.net/weather/i/icons/blueye/30/','png'), array('https://yastatic.net/weather/i/icons/blueye/color/svg/','svg'), $xml->weather->day->day_part[4]->{"image-v3"}));



function dPartDecl($n,$v)
{
 
    if 
(strcasecmp($v, 'утро') == 0) {$day_part = "Утром";} 
    if 
(strcasecmp($v, 'день') == 0) {$day_part = "Днём";} 
    if 
(strcasecmp($v, 'вечер') == 0) {$day_part = "Вечером";} 
    if 
(strcasecmp($v, 'ночь')== 0) {$day_part = "Ночью";} 
    return $day_part
;
}

 echo $xml->weather->day->day_part[0][type];

sg($obj['TITLE'].".dayPart0",dPartDecl(0,$xml->weather->day->day_part[0][type]));
sg($obj['TITLE'].".dayPart1",dPartDecl(1,$xml->weather->day->day_part[1][type]));
sg($obj['TITLE'].".dayPart2",dPartDecl(2,$xml->weather->day->day_part[2][type]));
sg($obj['TITLE'].".dayPart3",dPartDecl(3,$xml->weather->day->day_part[3][type]));
sg($obj['TITLE'].".dayPart4",dPartDecl(4,$xml->weather->day->day_part[4][type]));

/* $rain1=gg($obj['TITLE'].".Type");
$rain2=$xml->day[0]->day_part[0]->weather_type;
$rain3=$xml->day[0]->day_part[1]->weather_type;
$rain4=$xml->day[0]->day_part[2]->weather_type;
$rain5=$xml->weather->day->day_part[4]->weather_type;
$rain=($rain1. $rain2. $rain3. $rain4. $rain5);

$pos = strpos($rain, "дождь");
if ($pos === false) {
    sg($obj['TITLE'].".Rain",0);
    } else {
    sg($obj['TITLE'].".Rain",1);
//    say("Возможен дождь",2);
    }
 */
$dir = $xml->weather->day->day_part[0]->wind_direction;
/* switch ($dir){
   case 's':
     $dir="южный";
     break;
   case 'n':
     $dir="северный";
     break;
   case 'w':
     $dir="западный";
     break;
   case 'e':
     $dir="восточный";
     break;
   case 'sw':
     $dir="юго-западный";
     break;
   case 'nw':
     $dir="северо-западный";
     break;
   case 'se':
     $dir="юго-восточный";
     break;
   case 'ne':
     $dir="северо-восточный";
     break;
   case 'calm':
     $dir="штиль";
     break;
} */

sg($obj['TITLE'].".WindDir",$dir);
sg($obj['TITLE'].".SunRise",$xml->weather->day->sun_rise);
sg($obj['TITLE'].".SunSet",$xml->weather->day->sunset);

    $metcast="На улице ".gg($obj['TITLE'].".Type").".";
    // состояние ветра, согласно Шкалы Бофорта
    $WindSpeed=(float)gg($obj['TITLE'].".WindSpeed");
    if ($WindSpeed==0) { $windcast.=' Безветренно.';
    } elseif ($WindSpeed<2) { $windcast=' Возможен тихий ветер.';
    } elseif ($WindSpeed<3) { $windcast=' Возможен легкий ветер.';
    } elseif ($WindSpeed<5) { $windcast=' Возможен слабый ветер.';
    } elseif ($WindSpeed<8) { $windcast=' Умеренный ветер.';
    } elseif ($WindSpeed<11) { $windcast=' Свежий ветер.';
    } elseif ($WindSpeed<14) { $windcast=' Сильный ветер.';
    } elseif ($WindSpeed<17) { $windcast=' Крепкий ветер.';
    } elseif ($WindSpeed<20) { $windcast=' Очень крепкий ветер. Без нужды из дома лучше не выходить.';
    } elseif ($WindSpeed<25) { $windcast=' На улице шторм. Выходить из дома не рекомендуется.';
    } else { $windcast=' На улице ураган. Выходить из дома не рекомендуется.';
    } 
 sg
($obj['TITLE'].".windCast",$windcast);

$metcast.=$windcast;  
$w
=round(strip_tags(gg($obj['TITLE'].".Temp")));
$tempw=$w;

if(
$w < "0"){ $tempw=abs($w); }
if(
$w > "0"){ $templus=" +"; }

$tempcels="°";

    $metcast.=' Температура '.gg($obj['TITLE'].".Temp").''.$tempcels.'.';
    $tm=(float)gg($obj['TITLE'].".Temp");
    if ($tm<-40)       { $metcast.=' Мы морозов не боимся!';
    } elseif ($tm<-30) { $metcast.=' Очень холодно, оденьтесь теплее.';
    } elseif ($tm<-20) { $metcast.=' Самое время есть мороженое.';
    } elseif ($tm<-10) { $metcast.=' Холодновато.';
    } elseif ($tm<-3)  { $metcast.=' Не особо холодно.';
    } elseif ($tm<3)   { $metcast.=' Значит, возможно, гололёд.';
    } elseif ($tm<10)  { $metcast.=' Тепловато.';
    } elseif ($tm<25)  { $metcast.=' Тепло.';
    } elseif ($tm<30)  { $metcast.=' Жарко.';
    } elseif ($tm>30)  { $metcast.=' Ташкент.';
    } 
    
//    $metcast.=' Восход солнца сегодня в '.gg($obj['TITLE'].".SunRise").',';
//    $metcast.=' закат в '.gg($obj['TITLE'].".SunSet").'.';
sg($obj['TITLE'].".metcast",$metcast);
//
 $w3days= gg($obj['TITLE'].".dayPart1")." будет ";
 $w3days.=gg($obj['TITLE'].".Temp1");
   $w3days.="°."; 
 $w3days
.=" \r\n".gg($obj['TITLE'].".dayPart2")." будет ";
 $w3days.=gg($obj['TITLE'].".Temp2");
  $w3days.="°."; 
  $w3days
.=" \r\n".gg($obj['TITLE'].".dayPart3")." будет ";
 $w3days.=gg($obj['TITLE'].".Temp3");
  $w3days.="°."; 

sg
($obj['TITLE'].".season",$dir1); //время года  */
sg($obj['TITLE'].".forecast",$w3days);
sg($obj['TITLE'].".updated" , date("H:i",time()));}
//say("Читаю прогноз погоды с Yandex", 0);  

 


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Погода (Яндекс)
СообщениеДобавлено: Ср сен 20, 2017 4:23 pm 
Не в сети

Зарегистрирован: Ср сен 20, 2017 4:17 pm
Сообщения: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
uuu писал(а):
внёс небольшие изменения в скрипт

Всё отлично, но только что-то у меня восход и заход показывает на час больше. И в свойствах - "город.season" пустая строка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Погода (Яндекс)
СообщениеДобавлено: Пн окт 23, 2017 1:00 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн сен 22, 2014 3:18 pm
Сообщения: 224
Откуда: Сочи
Благодарил (а): 63 раз.
Поблагодарили: 34 раз.
Подскажите что лавочку прикрыли, теперь в xml данные не получить?

_________________
Youtube канал - https://www.youtube.com/c/OkBitru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Погода (Яндекс)
СообщениеДобавлено: Пн окт 23, 2017 1:12 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 28, 2013 8:14 am
Сообщения: 3838
Откуда: Екатеринбург
Благодарил (а): 94 раз.
Поблагодарили: 786 раз.
Года полтора назад по-моему...по крайней мере старый адрес...
В некоторых регионах погоду выдаёт вместе с пробками. Там тоже xml. В модуле яндекс пробок адрес гляньте. Так не помню.

_________________
Raspberry Pi3 + Broadlink + esp8266 (blynk) + Arduino Mega (AMS)
Уважаемые пользователи! Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Помощь пользователям | Создание сцен


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Погода (Яндекс)
СообщениеДобавлено: Пн окт 23, 2017 2:14 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн сен 22, 2014 3:18 pm
Сообщения: 224
Откуда: Сочи
Благодарил (а): 63 раз.
Поблагодарили: 34 раз.
nick7zmail писал(а):
Года полтора назад по-моему...по крайней мере старый адрес...
В некоторых регионах погоду выдаёт вместе с пробками. Там тоже xml. В модуле яндекс пробок адрес гляньте. Так не помню.

Там не нет xml там API Со скриптами

Нашел такое https://export.yandex.ru/bar/reginfo.xml?region=1, но там только температура, больше нет не каких данных.

_________________
Youtube канал - https://www.youtube.com/c/OkBitru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Погода (Яндекс)
СообщениеДобавлено: Пн окт 23, 2017 6:09 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 28, 2013 8:14 am
Сообщения: 3838
Откуда: Екатеринбург
Благодарил (а): 94 раз.
Поблагодарили: 786 раз.
Пробки там по XML забираются...и да, адрес вы верный нашли. $data_file='https://export.yandex.ru/bar/reginfo.xml?region='.$reg_id;
И там далеко не только температура...вот что у меня показывает
Код:
<date date="2017-10-23T00:00:00Z">
<
day weekday="пн">23</day>
<
month name="октября">10</month>
<
year>2017</year>
<
daytime>n</daytime>
</
date>
<
day_part typeid="2" type="день">
<
weather_type>облачно</weather_type>
<
weather_code>overcast</weather_code>
<
image>
https://yastatic.net/weather/i/icons/blueye/24/ovc.png
</image>
<
image-v2 size="22x22">http://yandex.st/weather/v-1/i/icons/22x22/ovc.png</image-v2>
<image-v3 size="48">
https://yastatic.net/weather/i/icons/blueye/48/ovc.png
</image-v3>
<
image_number>5</image_number>
<
wind_speed>2</wind_speed>
<
wind_direction id="nw">северо-запад</wind_direction>
<
dampness>69</dampness>
<
hectopascal>1007</hectopascal>
<
torr>755</torr>
<
pressure>755</pressure>
<
temperature class_name="t0" color="F0EFF0">0</temperature>
<
time_zone>Europe/Moscow</time_zone>
<
observation_time>14:00</observation_time>
<
observation>2017-10-23T14:00:00</observation>
</
day_part

Давление, текстовое описание погоды, направление ветра, картинки погоды...а собственно что вы там ждали ещё то увидеть?))

_________________
Raspberry Pi3 + Broadlink + esp8266 (blynk) + Arduino Mega (AMS)
Уважаемые пользователи! Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Помощь пользователям | Создание сцен


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Погода (Яндекс)
СообщениеДобавлено: Пн окт 23, 2017 6:11 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн сен 22, 2014 3:18 pm
Сообщения: 224
Откуда: Сочи
Благодарил (а): 63 раз.
Поблагодарили: 34 раз.
nick7zmail, Так а как такую ссылку найти на г.Сочи?

_________________
Youtube канал - https://www.youtube.com/c/OkBitru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Погода (Яндекс)
СообщениеДобавлено: Пн окт 23, 2017 6:15 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 28, 2013 8:14 am
Сообщения: 3838
Откуда: Екатеринбург
Благодарил (а): 94 раз.
Поблагодарили: 786 раз.
Там же выше в чьем то скрипте приведена ссылка на список городов
Сочи вот
https://export.yandex.ru/bar/reginfo.xml?region=239

*** Сообщение запрещено. Сообщение похоже на спам. ***

_________________
Raspberry Pi3 + Broadlink + esp8266 (blynk) + Arduino Mega (AMS)
Уважаемые пользователи! Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Помощь пользователям | Создание сцен


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 150 ]  На страницу Пред.  1 ... 11, 12, 13, 14, 15  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB