[BETA] [Модуль] YaDevices (yadevices)

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

Модератор: immortal

V.A.S.t
Сообщения: 344
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск

Re: [BETA] [Модуль] YaDevices (yadevices)

Сообщение V.A.S.t »

Громкость подтягивается только локально. Если не говорит через облако, там написано, что надо попробовать сделать.
Станция доступна локально? В одной подсети с МДМ?
Аватара пользователя
olis
Сообщения: 23
Зарегистрирован: Вс июл 14, 2019 6:29 pm

Re: [BETA] [Модуль] YaDevices (yadevices)

Сообщение olis »

V.A.S.t писал(а): Пн авг 25, 2025 4:03 am Всё, PR в Гите. Ждём одобрения от Сергея и появления обновления в Маркете.
Всем спасибо за тесты. Теперь тестеров станет в разы больше )))
Спасибо Вам огромное за проделанную работу! Попробую внести посильный вклад в качестве тестера. Не обновляются значения с датчиков. Покопался в вашем коде, чтобы заработало, в receiveQuasar надо чуть подправить на:

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

					//Значения датчиков
					if (isset($device["properties"]) && is_array($device["properties"])) {
						foreach ($device["properties"] as $propertie) {
							$p_type = $propertie['type'] . '.' . $propertie['parameters']['instance'];
							//Получаем по каждом свойству по отдельности
							$req_prop = SQLSelectOne("SELECT * FROM yadevices_capabilities WHERE TITLE = '" . dbSafe($p_type) . "' AND YADEVICE_ID = '" . $rec_device['ID'] . "'");
Ну и чтобы два раза не вставать)

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

	 //Запись в привязанное свойство/метод
	function setProperty($device, $value, $params = [], $type = ''){
		if ($device['LINKED_OBJECT'] && $device['LINKED_PROPERTY']) {
			setGlobal($device['LINKED_OBJECT'] . '.' . $device['LINKED_PROPERTY'], $value, array($this->name=>1), $this->name . '.' . $type);
		}
		if ($device['LINKED_OBJECT'] && $device['LINKED_METHOD']){
			$params['VALUE'] = $value;
			callMethodSafe($device['LINKED_OBJECT'] . '.' . $device['LINKED_METHOD'], $params);
		}
	}
isset все нужно убрать, т.к. они всегда будут true, в итоге у Вас сыпятся попытки записи по непривязанным свойствам
V.A.S.t
Сообщения: 344
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск

Re: [BETA] [Модуль] YaDevices (yadevices)

Сообщение V.A.S.t »

olis писал(а): Вс сен 21, 2025 9:37 pm Покопался в вашем коде, чтобы заработало, в receiveQuasar надо чуть подправить на:
Да, это всё копипаста. Спасибо!
olis писал(а): Вс сен 21, 2025 9:37 pm Ну и чтобы два раза не вставать)
isset все нужно убрать, т.к. они всегда будут true, в итоге у Вас сыпятся попытки записи по непривязанным свойствам
Здесь убрать может и можно, но как оно поведёт себя в PHP8? Мне лень проверять. Думаю, если добавил, значит сыпало ошибки. Заменю на !empty.
AAU
Сообщения: 58
Зарегистрирован: Пн ноя 19, 2018 10:14 pm

Re: [BETA] [Модуль] YaDevices (yadevices)

Сообщение AAU »

olis писал(а): Вс сен 21, 2025 9:37 pm Покопался в вашем коде
Заработало обновление температуры в чайнике и заряд батареи пылесоса!
scorp49
Сообщения: 77
Зарегистрирован: Ср дек 21, 2016 5:45 pm

Re: [BETA] [Модуль] YaDevices (yadevices)

Сообщение scorp49 »

Здраствуйте. У меня после обновления модуля он сломался. Вылазит такая ошибка Parse error: syntax error, unexpected '?' in /var/www/modules/yadevices/yadevices.class.php on line 176
V.A.S.t
Сообщения: 344
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск

Re: [BETA] [Модуль] YaDevices (yadevices)

Сообщение V.A.S.t »

Вангую! PHP 5 стоит в системе...
scorp49
Сообщения: 77
Зарегистрирован: Ср дек 21, 2016 5:45 pm

Re: [BETA] [Модуль] YaDevices (yadevices)

Сообщение scorp49 »

Подскажите что сделать надо?
V.A.S.t
Сообщения: 344
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск

Re: [BETA] [Модуль] YaDevices (yadevices)

Сообщение V.A.S.t »

Обновить PHP как минимум до 7 версии. Или пользоваться старой версией модуля. Но PHP обновлять рано или поздно всё-равно придётся...
NewComerDS
Сообщения: 10
Зарегистрирован: Пт апр 25, 2014 8:27 pm

Re: [BETA] [Модуль] YaDevices (yadevices)

Сообщение NewComerDS »

По теме регулярно слетающей авторизации (у меня слетала стабильно раза 3-4 в месяц) , может кому пригодится. В cron каждые 10 минут проверяю статус авторизации (как советовали в одном из ответов темы)

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

include_once(DIR_MODULES . 'yadevices/yadevices.class.php');
$yadevices = new yadevices();
    $data = $yadevices->apiRequest('https://iot.quasar.yandex.ru/m/user/devices');
    if (is_array($data)) {
        sg('ThisComputer.yaAuth',1);
    	//debmes('YaDevices AUTHORIZED OK');
    }else{
        say("Слетела авторизация Яндекса!",2);   
        debmes('YaDevices AUTHORIZED FAIL!!!');
    	sg('ThisComputer.yaAuth',0);
    	say('Пробую восстановить...',2);
    	runScript('autoAuthYaDevices');
    }
а в сценарии (например "autoAuthYaDevices") пишем

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

// Путь к файлу куков
$cookieFilePath = 'backup/yaCookie.txt';
$id = 'длинный_идентификатор';

$formUrl = 'http://localhost/admin.php?pd='.$id.'&md=yadevices&inst=adm';

$postData = [
    'view_mode' => 'auth',
    'type'      => 'cookie',
    'pd'        => $id,
    'md'        => 'yadevices',
    'inst'      => 'adm',
];

// Инициализация cURL
$ch = curl_init();

// Отправка формы YaDevices
curl_setopt($ch, CURLOPT_URL, $formUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData + ['file' => new CURLFile($cookieFilePath)]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFilePath); // Используем сохранённые куки
$response = curl_exec($ch);

// Проверка ошибок
if (curl_errno($ch)) {
    //echo 'Ошибка cURL: ' . curl_error($ch);
	Say("Ничего не получается :(", 2);
} else {
    echo 'Ответ сервера: ' . $response;
}

// Закрытие cURL
curl_close($ch);
Предварительно конечно положив куда следует файл с куками. "длинный_идентификатор" получаем в отладке страницы при клике "Исследовать элемент" на кнопке "Выберите файл" в форме загрузки файла куков.
V.A.S.t
Сообщения: 344
Зарегистрирован: Сб май 11, 2019 6:35 pm
Откуда: Иркутск

Re: [BETA] [Модуль] YaDevices (yadevices)

Сообщение V.A.S.t »

NewComerDS писал(а): Сб ноя 01, 2025 3:27 pm По теме регулярно слетающей авторизации
В последних версиях тоже слетает авторизация? Я вроде убрал все возможные точки, где погли переписываться куки...
Ответить