[Модуль] Yandex.Traffic (app_yatraffic)
Модератор: immortal
- andrey040670
- Сообщения: 459
- Зарегистрирован: Пн июл 31, 2017 10:00 pm
- Благодарил (а): 161 раз
- Поблагодарили: 85 раз
Re: [Модуль] Yandex.Traffic (app_yatraffic)
Ага, было бы не плохо.
MJD alfa: Khadas VIM1 Ubuntu 18.04.2 LTS bionic Linux 4.9.40 #2 SMP PREEMPT Tue Oct 30 15:47:54 CST 2018 aarch64 GNU/Linux
MJD alfa: Rpi 3B Debian 11 (bullseye) Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux
MJD alfa: Rpi 3B Debian 11 (bullseye) Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux
- S_Nick
- Сообщения: 67
- Зарегистрирован: Сб сен 30, 2017 7:44 pm
- Откуда: Минск
- Благодарил (а): 9 раз
- Поблагодарили: 55 раз
- Контактная информация:
Re: [Модуль] Yandex.Traffic (app_yatraffic)
Да, видимо сломалось, потому как ссылка на выбор регионов яндекса уже ведет в никуда https://yandex.ru/yaca/geo.c2n редирект на https://yandex.ru/support/nick7zmail писал(а): ↑Ср янв 22, 2020 6:43 amТам есть автоматическое определение региона...раньше работало, как часы...но оно не сбрасывало, если регион вручную перебить....ща, возможно, что то сломалось...могу его выключить.
Поэтому нужно либо починить авто-выбор региона, либо отключить.
Может также будет полезен мой вариант реализации через сценарий:
yandexTraffic
Код: Выделить всё
if (isset($params["level"])) $level = $params["level"]; else $level = 1;
if (!isOnline('Internet')) { say("Нет доступа в Интернет!", $level); return; }
if (isset($params["change"])) $change = $params["change"];
$region = 157; //Минск
$traffic_url = "https://export.yandex.ru/bar/reginfo.xml?region=" . $region;
$xml = simplexml_load_file($traffic_url); // раскладываем xml на массив
//print_arr($xml);
$ret = "Дорожная ситуация: ";
if ($xml) {
$traffic_level = $xml->traffic->region->level;
if ($traffic_level) {
$traffic_hint = $xml->traffic->region->hint;
if ($traffic_hint) {
$ret .= $traffic_hint . ". ";
sg("ThisComputer.yandexTrafficHint", $traffic_hint);
}
$traffic_icon = $xml->traffic->region->icon;
if ($traffic_icon) {
sg("ThisComputer.yandexTrafficIcon", $traffic_icon);
}
$ball = "баллов";
if ($traffic_level == 0) $ball = "баллов";
if ($traffic_level == 1) $ball = "балл";
if ($traffic_level == 2) $ball = "балла";
if ($traffic_level == 3) $ball = "балла";
if ($traffic_level == 4) $ball = "балла";
if ($traffic_level == 5) $ball = "баллов";
if ($traffic_level == 6) $ball = "баллов";
if ($traffic_level == 7) $ball = "баллов. Лучше сидеть дома";
if ($traffic_level == 8) $ball = "баллов. Лучше сидеть дома";
if ($traffic_level == 9) $ball = "баллов. Лучше сидеть дома";
if ($traffic_level == 10) $ball = "баллов. Лучше сидеть дома";
$ret .= "Уровень пробок сейчас " . $traffic_level . " " . $ball . ". ";
if ($change) {
$ret = "";
if ($traffic_level == 0) $ball = "баллов";
if ($traffic_level == 1) $ball = "балла";
if ($traffic_level == 2) $ball = "баллов";
if ($traffic_level == 3) $ball = "баллов";
if ($traffic_level == 4) $ball = "баллов";
if ($traffic_level == 5) $ball = "баллов";
if ($traffic_level == 6) $ball = "баллов";
if ($traffic_level == 7) $ball = "баллов. Лучше сидеть дома";
if ($traffic_level == 8) $ball = "баллов. Лучше сидеть дома";
if ($traffic_level == 9) $ball = "баллов. Лучше сидеть дома";
if ($traffic_level == 10) $ball = "баллов. Лучше сидеть дома";
if ($traffic_level < gg("ThisComputer.yandexTrafficLevel")) {
$ret = "Уровень пробок на дорогах снизился до " . $traffic_level . " " . $ball . ". ";
$ret .= $traffic_hint . ". ";
}
if ($traffic_level > gg("ThisComputer.yandexTrafficLevel")) {
$ret = "Уровень пробок на дорогах возрос до " . $traffic_level . " " . $ball . ". ";
$ret .= $traffic_hint . ". ";
}
}
sg("ThisComputer.yandexTrafficLevel", $traffic_level);
} else {
$ret .= "Данные не получены. ";
}
} else {
$ret .= "Данные не получены. ";
}
$ret = trim($ret);
if ($ret) {
say($ret, $level);
echo "<br>" . $ret;
}
Код: Выделить всё
runScript("yandexTraffic", array("change"=>"1")); //Проверка изменились ли пробки
-
- Сообщения: 57
- Зарегистрирован: Вс окт 28, 2018 11:04 pm
- Благодарил (а): 7 раз
- Поблагодарили: 2 раза
-
- Сообщения: 13
- Зарегистрирован: Ср авг 30, 2017 11:28 am
- Откуда: Минск
- Благодарил (а): 20 раз
- Поблагодарили: 2 раза
- SmoKE_xDDD
- Сообщения: 816
- Зарегистрирован: Ср апр 17, 2019 5:00 pm
- Откуда: Нижний Новгород
- Благодарил (а): 110 раз
- Поблагодарили: 899 раз
- S_Nick
- Сообщения: 67
- Зарегистрирован: Сб сен 30, 2017 7:44 pm
- Откуда: Минск
- Благодарил (а): 9 раз
- Поблагодарили: 55 раз
- Контактная информация:
-
- Сообщения: 131
- Зарегистрирован: Сб янв 13, 2018 6:28 pm
- Благодарил (а): 34 раза
- Поблагодарили: 4 раза
Re: [Модуль] Yandex.Traffic (app_yatraffic)
Здравствуйте. подскажите, как победить автоматическую смену города на Сасово?
Моё: Orange Pi Zero H2 + DietPi / Paspberry Pi3b + MJD 3.41
- S_Nick
- Сообщения: 67
- Зарегистрирован: Сб сен 30, 2017 7:44 pm
- Откуда: Минск
- Благодарил (а): 9 раз
- Поблагодарили: 55 раз
- Контактная информация:
Re: [Модуль] Yandex.Traffic (app_yatraffic)
Автор обещал исправить, но пока дело не двинулось, на сколько мне известно.
-
- Сообщения: 364
- Зарегистрирован: Вс янв 15, 2017 5:34 pm
- Откуда: Москва
- Благодарил (а): 100 раз
- Поблагодарили: 53 раза
Re: [Модуль] Yandex.Traffic (app_yatraffic)
Мой вариант решения с подсказки "SmoKE_xDDD"
Меняем код в методе update
Код: Выделить всё
/*
include_once(DIR_MODULES."app_yatraffic/app_yatraffic.class.php");
$app_yatraffic=new app_yatraffic();
$app_yatraffic->get_traffic(gg("yt_settings.reg_id"));
*/
//Регион
$myRegion = '213'; // пишем свой регион
//Получаем данные от Яндекса
$getYandex = simplexml_load_string(file_get_contents('https://export.yandex.ru/bar/reginfo.xml?region='.$myRegion));
$getYandex = json_decode(json_encode($getYandex), TRUE);
//Уровень пробок от 1 до 9
$trafficBall = $getYandex["traffic"]["region"]["level"];
sg("yt_info.level",$trafficBall);
//Текстовый статус, зеленый, желтый, красный (На инглише)
$trafficColor = $getYandex["traffic"]["region"]["icon"];
sg("yt_info.icon",$trafficColor);
sg('yt_info.color_level','<font color='.$trafficColor.'>'.gg('yt_info.level').'</font>');
//Текстовое оповещение - Дороги почти свободны
$trafficText = $getYandex["traffic"]["region"]["hint"][0];
sg("yt_info.val",$trafficText);
//Время последнего обновления
$trafficTime = $getYandex["traffic"]["region"]["time"];
sg("yt_info.time",$trafficTime);
//
$trafficTend = $getYandex["traffic"]["region"]["tend"];
sg("yt_info.tend",$trafficTend);
//Название города
$trafficSity = $getYandex["region"]["title"];
sg("yt_info.city_title",$trafficSity);
в конце
Код: Выделить всё
callMethodSafe('yt_info'.'.'.'update');
Если модуль поправят, можно оперативно все вернуть.
- Рейтинг: 4.65%
Raspberry Pi3 - Broadlink - MegaD - Много датчиков - Камеры - Часы.
Connect
Connect
-
- Сообщения: 131
- Зарегистрирован: Сб янв 13, 2018 6:28 pm
- Благодарил (а): 34 раза
- Поблагодарили: 4 раза
Re: [Модуль] Yandex.Traffic (app_yatraffic)
спасибо, помоглоkas5858 писал(а): ↑Пн фев 03, 2020 7:29 pmМой вариант решения с подсказки "SmoKE_xDDD"
Меняем код в методе updateВ методе onNewHour обьекта ClockChimeКод: Выделить всё
/* include_once(DIR_MODULES."app_yatraffic/app_yatraffic.class.php"); $app_yatraffic=new app_yatraffic(); $app_yatraffic->get_traffic(gg("yt_settings.reg_id")); */ //Регион $myRegion = '213'; // пишем свой регион //Получаем данные от Яндекса $getYandex = simplexml_load_string(file_get_contents('https://export.yandex.ru/bar/reginfo.xml?region='.$myRegion)); $getYandex = json_decode(json_encode($getYandex), TRUE); //Уровень пробок от 1 до 9 $trafficBall = $getYandex["traffic"]["region"]["level"]; sg("yt_info.level",$trafficBall); //Текстовый статус, зеленый, желтый, красный (На инглише) $trafficColor = $getYandex["traffic"]["region"]["icon"]; sg("yt_info.icon",$trafficColor); sg('yt_info.color_level','<font color='.$trafficColor.'>'.gg('yt_info.level').'</font>'); //Текстовое оповещение - Дороги почти свободны $trafficText = $getYandex["traffic"]["region"]["hint"][0]; sg("yt_info.val",$trafficText); //Время последнего обновления $trafficTime = $getYandex["traffic"]["region"]["time"]; sg("yt_info.time",$trafficTime); // $trafficTend = $getYandex["traffic"]["region"]["tend"]; sg("yt_info.tend",$trafficTend); //Название города $trafficSity = $getYandex["region"]["title"]; sg("yt_info.city_title",$trafficSity);
в концеВ настройках модуля убрать частоту обновления.Код: Выделить всё
callMethodSafe('yt_info'.'.'.'update');
Если модуль поправят, можно оперативно все вернуть.
Моё: Orange Pi Zero H2 + DietPi / Paspberry Pi3b + MJD 3.41