[Модуль] Yandex.Traffic (app_yatraffic)

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

Модератор: immortal

Аватара пользователя
andrey040670
Сообщения: 459
Зарегистрирован: Пн июл 31, 2017 10:00 pm
Благодарил (а): 161 раз
Поблагодарили: 85 раз

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Сообщение andrey040670 » Ср янв 22, 2020 10:46 am

Ага, было бы не плохо.
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
Аватара пользователя
S_Nick
Сообщения: 67
Зарегистрирован: Сб сен 30, 2017 7:44 pm
Откуда: Минск
Благодарил (а): 9 раз
Поблагодарили: 55 раз
Контактная информация:

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Сообщение S_Nick » Ср янв 22, 2020 11:30 am

nick7zmail писал(а):
Ср янв 22, 2020 6:43 am
S_Nick писал(а):
Вт янв 21, 2020 11:39 pm
Модуль периодически сбрасывает прописаный в настройках регион, меняет, в моем случае, на какое-то "Сасово"). Как лечить?
Там есть автоматическое определение региона...раньше работало, как часы...но оно не сбрасывало, если регион вручную перебить....ща, возможно, что то сломалось...могу его выключить.
Да, видимо сломалось, потому как ссылка на выбор регионов яндекса уже ведет в никуда https://yandex.ru/yaca/geo.c2n редирект на https://yandex.ru/support/
Поэтому нужно либо починить авто-выбор региона, либо отключить.


Может также будет полезен мой вариант реализации через сценарий:
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;
}
Если в Cron выполнять каждые 15 минут:

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

runScript("yandexTraffic", array("change"=>"1")); //Проверка изменились ли пробки
Будет информировать об изменении дорожной обстановки
krepton85
Сообщения: 57
Зарегистрирован: Вс окт 28, 2018 11:04 pm
Благодарил (а): 7 раз
Поблагодарили: 2 раза

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Сообщение krepton85 » Вс янв 26, 2020 11:16 am

S_Nick писал(а):
Вт янв 21, 2020 11:39 pm
Модуль периодически сбрасывает прописаный в настройках регион, меняет, в моем случае, на какое-то "Сасово"). Как лечить?
Аналогично и у меня.
SLT
Сообщения: 13
Зарегистрирован: Ср авг 30, 2017 11:28 am
Откуда: Минск
Благодарил (а): 20 раз
Поблагодарили: 2 раза

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Сообщение SLT » Чт янв 30, 2020 12:35 am

S_Nick писал(а):
Вт янв 21, 2020 11:39 pm
Модуль периодически сбрасывает прописаный в настройках регион, меняет, в моем случае, на какое-то "Сасово"). Как лечить?
У меня тоже, замучился каждый день руками вбивать.
Аватара пользователя
SmoKE_xDDD
Сообщения: 816
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 110 раз
Поблагодарили: 899 раз

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Сообщение SmoKE_xDDD » Чт янв 30, 2020 9:34 am

krepton85 писал(а):
Вс янв 26, 2020 11:16 am
S_Nick писал(а):
Вт янв 21, 2020 11:39 pm
Модуль периодически сбрасывает прописаный в настройках регион, меняет, в моем случае, на какое-то "Сасово"). Как лечить?
Аналогично и у меня.
SLT писал(а):
Чт янв 30, 2020 12:35 am
S_Nick писал(а):
Вт янв 21, 2020 11:39 pm
Модуль периодически сбрасывает прописаный в настройках регион, меняет, в моем случае, на какое-то "Сасово"). Как лечить?
У меня тоже, замучился каждый день руками вбивать.
Ровно страницу назад.
Аватара пользователя
S_Nick
Сообщения: 67
Зарегистрирован: Сб сен 30, 2017 7:44 pm
Откуда: Минск
Благодарил (а): 9 раз
Поблагодарили: 55 раз
Контактная информация:

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Сообщение S_Nick » Чт янв 30, 2020 11:55 am

SmoKE_xDDD писал(а):
Чт янв 30, 2020 9:34 am
Ровно страницу назад.
:?: Выражайтесь конкретнее
pasha413
Сообщения: 131
Зарегистрирован: Сб янв 13, 2018 6:28 pm
Благодарил (а): 34 раза
Поблагодарили: 4 раза

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Сообщение pasha413 » Вс фев 02, 2020 10:08 am

Здравствуйте. подскажите, как победить автоматическую смену города на Сасово?
Моё: 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)

Сообщение S_Nick » Пн фев 03, 2020 6:07 pm

pasha413 писал(а):
Вс фев 02, 2020 10:08 am
Здравствуйте. подскажите, как победить автоматическую смену города на Сасово?
Автор обещал исправить, но пока дело не двинулось, на сколько мне известно.
kas5858
Сообщения: 364
Зарегистрирован: Вс янв 15, 2017 5:34 pm
Откуда: Москва
Благодарил (а): 100 раз
Поблагодарили: 53 раза

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Сообщение kas5858 » Пн фев 03, 2020 7:29 pm

pasha413 писал(а):
Вс фев 02, 2020 10:08 am
Здравствуйте. подскажите, как победить автоматическую смену города на Сасово?
Мой вариант решения с подсказки "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);
В методе onNewHour обьекта ClockChime
в конце

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

callMethodSafe('yt_info'.'.'.'update');
В настройках модуля убрать частоту обновления.
Если модуль поправят, можно оперативно все вернуть.
За это сообщение автора kas5858 поблагодарили (всего 4):
SLT (Ср фев 05, 2020 12:32 pm) • pasha413 (Пн фев 10, 2020 2:56 pm) • Jilber (Пн фев 10, 2020 7:00 pm) • S_Nick (Вс фев 16, 2020 3:17 pm)
Рейтинг: 4.65%
Raspberry Pi3 - Broadlink - MegaD - Много датчиков - Камеры - Часы.
Изображение Connect
pasha413
Сообщения: 131
Зарегистрирован: Сб янв 13, 2018 6:28 pm
Благодарил (а): 34 раза
Поблагодарили: 4 раза

Re: [Модуль] Yandex.Traffic (app_yatraffic)

Сообщение pasha413 » Пн фев 10, 2020 2:58 pm

kas5858 писал(а):
Пн фев 03, 2020 7:29 pm
pasha413 писал(а):
Вс фев 02, 2020 10:08 am
Здравствуйте. подскажите, как победить автоматическую смену города на Сасово?
Мой вариант решения с подсказки "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);
В методе onNewHour обьекта ClockChime
в конце

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

callMethodSafe('yt_info'.'.'.'update');
В настройках модуля убрать частоту обновления.
Если модуль поправят, можно оперативно все вернуть.
спасибо, помогло
Моё: Orange Pi Zero H2 + DietPi / Paspberry Pi3b + MJD 3.41
Ответить