[BETA] [Модуль] YaDevices (yadevices)
Модератор: immortal
Re: [BETA] [Модуль] YaDevices (yadevices)
Громкость подтягивается только локально. Если не говорит через облако, там написано, что надо попробовать сделать.
Станция доступна локально? В одной подсети с МДМ?
Станция доступна локально? В одной подсети с МДМ?
Re: [BETA] [Модуль] YaDevices (yadevices)
Спасибо Вам огромное за проделанную работу! Попробую внести посильный вклад в качестве тестера. Не обновляются значения с датчиков. Покопался в вашем коде, чтобы заработало, в receiveQuasar надо чуть подправить на:V.A.S.t писал(а): Пн авг 25, 2025 4:03 am Всё, PR в Гите. Ждём одобрения от Сергея и появления обновления в Маркете.
Всем спасибо за тесты. Теперь тестеров станет в разы больше )))
Код: Выделить всё
//Значения датчиков
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);
}
}
Re: [BETA] [Модуль] YaDevices (yadevices)
Да, это всё копипаста. Спасибо!olis писал(а): Вс сен 21, 2025 9:37 pm Покопался в вашем коде, чтобы заработало, в receiveQuasar надо чуть подправить на:
Здесь убрать может и можно, но как оно поведёт себя в PHP8? Мне лень проверять. Думаю, если добавил, значит сыпало ошибки. Заменю на !empty.olis писал(а): Вс сен 21, 2025 9:37 pm Ну и чтобы два раза не вставать)
isset все нужно убрать, т.к. они всегда будут true, в итоге у Вас сыпятся попытки записи по непривязанным свойствам
Re: [BETA] [Модуль] YaDevices (yadevices)
Заработало обновление температуры в чайнике и заряд батареи пылесоса!
Re: [BETA] [Модуль] YaDevices (yadevices)
Здраствуйте. У меня после обновления модуля он сломался. Вылазит такая ошибка Parse error: syntax error, unexpected '?' in /var/www/modules/yadevices/yadevices.class.php on line 176
Re: [BETA] [Модуль] YaDevices (yadevices)
Вангую! PHP 5 стоит в системе...
Re: [BETA] [Модуль] YaDevices (yadevices)
Подскажите что сделать надо?
Re: [BETA] [Модуль] YaDevices (yadevices)
Обновить PHP как минимум до 7 версии. Или пользоваться старой версией модуля. Но PHP обновлять рано или поздно всё-равно придётся...
-
NewComerDS
- Сообщения: 10
- Зарегистрирован: Пт апр 25, 2014 8:27 pm
Re: [BETA] [Модуль] YaDevices (yadevices)
По теме регулярно слетающей авторизации (у меня слетала стабильно раза 3-4 в месяц) , может кому пригодится. В cron каждые 10 минут проверяю статус авторизации (как советовали в одном из ответов темы)
а в сценарии (например "autoAuthYaDevices") пишем
Предварительно конечно положив куда следует файл с куками. "длинный_идентификатор" получаем в отладке страницы при клике "Исследовать элемент" на кнопке "Выберите файл" в форме загрузки файла куков.
Код: Выделить всё
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');
}
Код: Выделить всё
// Путь к файлу куков
$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)
В последних версиях тоже слетает авторизация? Я вроде убрал все возможные точки, где погли переписываться куки...