Страница 39 из 41
Re: [BETA] [Модуль] YaDevices (yadevices)
Добавлено: Пн сен 01, 2025 11:50 am
V.A.S.t
Громкость подтягивается только локально. Если не говорит через облако, там написано, что надо попробовать сделать.
Станция доступна локально? В одной подсети с МДМ?
Re: [BETA] [Модуль] YaDevices (yadevices)
Добавлено: Вс сен 21, 2025 9:37 pm
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, в итоге у Вас сыпятся попытки записи по непривязанным свойствам
Re: [BETA] [Модуль] YaDevices (yadevices)
Добавлено: Пн сен 22, 2025 2:47 pm
V.A.S.t
olis писал(а): Вс сен 21, 2025 9:37 pm
Покопался в вашем коде, чтобы заработало, в receiveQuasar надо чуть подправить на:
Да, это всё копипаста. Спасибо!
olis писал(а): Вс сен 21, 2025 9:37 pm
Ну и чтобы два раза не вставать)
isset все нужно убрать, т.к. они всегда будут true, в итоге у Вас сыпятся попытки записи по непривязанным свойствам
Здесь убрать может и можно, но как оно поведёт себя в PHP8? Мне лень проверять. Думаю, если добавил, значит сыпало ошибки. Заменю на !empty.
Re: [BETA] [Модуль] YaDevices (yadevices)
Добавлено: Пн сен 22, 2025 10:05 pm
AAU
olis писал(а): Вс сен 21, 2025 9:37 pm
Покопался в вашем коде
Заработало обновление температуры в чайнике и заряд батареи пылесоса!
Re: [BETA] [Модуль] YaDevices (yadevices)
Добавлено: Вт окт 07, 2025 11:56 am
scorp49
Здраствуйте. У меня после обновления модуля он сломался. Вылазит такая ошибка Parse error: syntax error, unexpected '?' in /var/www/modules/yadevices/yadevices.class.php on line 176
Re: [BETA] [Модуль] YaDevices (yadevices)
Добавлено: Вт окт 07, 2025 1:37 pm
V.A.S.t
Вангую! PHP 5 стоит в системе...
Re: [BETA] [Модуль] YaDevices (yadevices)
Добавлено: Вт окт 07, 2025 3:45 pm
scorp49
Подскажите что сделать надо?
Re: [BETA] [Модуль] YaDevices (yadevices)
Добавлено: Ср окт 08, 2025 3:11 am
V.A.S.t
Обновить PHP как минимум до 7 версии. Или пользоваться старой версией модуля. Но PHP обновлять рано или поздно всё-равно придётся...
Re: [BETA] [Модуль] YaDevices (yadevices)
Добавлено: Сб ноя 01, 2025 3:27 pm
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);
Предварительно конечно положив куда следует файл с куками. "длинный_идентификатор" получаем в отладке страницы при клике "Исследовать элемент" на кнопке "Выберите файл" в форме загрузки файла куков.
Re: [BETA] [Модуль] YaDevices (yadevices)
Добавлено: Вс ноя 02, 2025 9:19 am
V.A.S.t
NewComerDS писал(а): Сб ноя 01, 2025 3:27 pm
По теме регулярно слетающей авторизации
В последних версиях тоже слетает авторизация? Я вроде убрал все возможные точки, где погли переписываться куки...