Re: [Модуль] Tuya
Добавлено: Сб фев 15, 2025 7:54 pm
Всем привет. Благодарю за модуль. Как-то покупал года 2 назад китайскую ноунеим wi-fi розетку, типа такой:
Проблема, что нужно частое обновление параметров с нее, а обновлялась она примерно раз в час, или если заити в приложение. Посылка доп пакета здесь в модуле ничего не меняла. В итоге забил на нее.
Сейчас руки дошли разобраться с ней. Наткнулся на проект tuyapi на js, там тоже есть возможность отправлять dp-refresh пакет для обновления статуса, и вот через него моя розетка отлично обновляется. Поэтому все таки захотелось ее нормально прикрутить к мажордому. Хоть и не программист, полез в код здесь в модуле попробовать разобраться что ей не нравится.
Что поменял в cycle_local_tuya.php:
Здесь в 128 строке сравнивается не с тем значением поэтому ложная ошибка отправки, но не влияет на работоспособность, только на лог. В 129 строке тоже исправить на strlen($payload_12).
Здесь я не знаю, может это особенность только моей розетки, но если срезать 20 символов в начале, ответ на доп пакет не декодируется и 12 answer пустое, при 35 все отлично. Но этот ответ дальше нигде не используется, поэтому опять-таки влияет только на лог.
Дальше сымитировав работу в отдельном скрипте, что заметил по этой розетке: если сначала посылать доп пакет 12, затем закрывать сокет, заново открыть и послать пакет запроса статуса, то тогда все работает нормально и данные обновлены. Если подряд послать доп пакет 12 и запрос статуса, на доп пакет розетка отвечает нормально, а на запрос статуса всегда ответ "000055aa00000000000000120000000c000000009ec477af0000aa55".
Как я понял, нужно посылать альтернативный запрос статуса. Но в цикле у меня в эту часть кода не переходит, тк $result в итоге пустое значение, а не 'json obj data unvalid'.
Не знаю на сколько корректно, но я изменил по-простому 175 строку.
И ответ на альтернативный статус у меня тоже не декодировался и был пустым пока я не поменял срез с 35 на 20.
В итоге, сейчас все работает как надо. Не знаю на сколько актуально другим или это только особенность моей розетки.
СпойлерПоказать
Сейчас руки дошли разобраться с ней. Наткнулся на проект tuyapi на js, там тоже есть возможность отправлять dp-refresh пакет для обновления статуса, и вот через него моя розетка отлично обновляется. Поэтому все таки захотелось ее нормально прикрутить к мажордому. Хоть и не программист, полез в код здесь в модуле попробовать разобраться что ей не нравится.
Что поменял в cycle_local_tuya.php:
Строка 128Показать
Строка 133Показать
Дальше сымитировав работу в отдельном скрипте, что заметил по этой розетке: если сначала посылать доп пакет 12, затем закрывать сокет, заново открыть и послать пакет запроса статуса, то тогда все работает нормально и данные обновлены. Если подряд послать доп пакет 12 и запрос статуса, на доп пакет розетка отвечает нормально, а на запрос статуса всегда ответ "000055aa00000000000000120000000c000000009ec477af0000aa55".
Как я понял, нужно посылать альтернативный запрос статуса. Но в цикле у меня в эту часть кода не переходит, тк $result в итоге пустое значение, а не 'json obj data unvalid'.
Строка 175Показать
Строка 220Показать
В итоге, сейчас все работает как надо. Не знаю на сколько актуально другим или это только особенность моей розетки.