[Модуль] Tuya

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

Модератор: immortal

mikekom
Сообщения: 1
Зарегистрирован: Чт апр 25, 2024 4:20 pm
Благодарил (а): 0
Поблагодарили: 0

Re: [Модуль] Tuya

Сообщение mikekom » Сб апр 27, 2024 3:32 pm

fandaymon писал(а):
Вт апр 16, 2024 3:38 pm

Почитать про настройки в первом сообщении темы. Для устройств, которые сразу не отдают статус, надо посылать перед чтением специальный пакет-запрос
Доброе время суток. Специальный пакет-запрос должен содержать предопределенный набор метрик для каждого устройства или, допустим, если нужен только статус устройства должен запрашиваться только статус {"dpId":[20]}? Просто у меня есть 5 лампочек hiper различных моделей, подключил их через модуль. 4 никак не хотят отдавать статус по локальной сети. Все прекрасно управляется и изменяется статус через облако. По локалке, при сканировании, находится и управляется только 1 лампа из пяти. Когда пробую добавить пакет запрос, в логах:
15:25:28 0.91058600 (2024-04-27.log) 12 answer:
15:25:27 0.90900400 (2024-04-27.log) Error sending 12. 24-04-27 03:25:27 sended 40 from 104, ip192.168.90.76
15:25:27 0.59966000 (2024-04-27.log) 15:25:27 Tuya: Get Local Status IoT A61 RGB 2
когда без пакета:
15:22:45 0.46267100 15:22:45 Tuya: Status=
15:22:43 0.14529900 15:22:43 Tuya: Get Local Status IoT A61 RGB 2
та лампа которая подключилась отдает
15:27:27 0.81728800 (2024-04-27.log) 15:27:27 Tuya: Status={"dps":{"20":false,"21":"scene","22":1000,"23":971,"24":"000003e803e8","25":"020e0d0000000000000003e803e8","26":0}}
15:27:27 0.45603400 (2024-04-27.log) 15:27:27 Tuya: Get Local Status IoT A60 RGB
На dhcp-сервере все адрес получают, все IP-адреса в настройки добавил. Версии менять пробовал, настройки делал по первой странице. Данные с iot.tuya.com подтягиваются сразу. В настройках включены опции "использовать оригинальное облако" и "debug". Для меня было бы удобнее настроить локальное управление. Буду благодарен, если подскажете куда смотреть.
fandaymon
Сообщения: 1565
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 40 раз
Поблагодарили: 578 раз

Re: [Модуль] Tuya

Сообщение fandaymon » Вс апр 28, 2024 12:04 pm

mikekom писал(а):
Сб апр 27, 2024 3:32 pm
fandaymon писал(а):
Вт апр 16, 2024 3:38 pm

Почитать про настройки в первом сообщении темы. Для устройств, которые сразу не отдают статус, надо посылать перед чтением специальный пакет-запрос
Доброе время суток. Специальный пакет-запрос должен содержать предопределенный набор метрик для каждого устройства или, допустим, если нужен только статус устройства должен запрашиваться только статус {"dpId":[20]}? Просто у меня есть 5 лампочек hiper различных моделей, подключил их через модуль. 4 никак не хотят отдавать статус по локальной сети. Все прекрасно управляется и изменяется статус через облако. По локалке, при сканировании, находится и управляется только 1 лампа из пяти. Когда пробую добавить пакет запрос, в логах:
15:25:28 0.91058600 (2024-04-27.log) 12 answer:
15:25:27 0.90900400 (2024-04-27.log) Error sending 12. 24-04-27 03:25:27 sended 40 from 104, ip192.168.90.76
15:25:27 0.59966000 (2024-04-27.log) 15:25:27 Tuya: Get Local Status IoT A61 RGB 2
когда без пакета:
15:22:45 0.46267100 15:22:45 Tuya: Status=
15:22:43 0.14529900 15:22:43 Tuya: Get Local Status IoT A61 RGB 2
та лампа которая подключилась отдает
15:27:27 0.81728800 (2024-04-27.log) 15:27:27 Tuya: Status={"dps":{"20":false,"21":"scene","22":1000,"23":971,"24":"000003e803e8","25":"020e0d0000000000000003e803e8","26":0}}
15:27:27 0.45603400 (2024-04-27.log) 15:27:27 Tuya: Get Local Status IoT A60 RGB
На dhcp-сервере все адрес получают, все IP-адреса в настройки добавил. Версии менять пробовал, настройки делал по первой странице. Данные с iot.tuya.com подтягиваются сразу. В настройках включены опции "использовать оригинальное облако" и "debug". Для меня было бы удобнее настроить локальное управление. Буду благодарен, если подскажете куда смотреть.
Если скан лампочку не находит, то скорее всего её нет в сети, доступной МДМ. Скан это чтение широковещательных пакетов, которое каждое устройство Туя периодически отправляет в сеть. Если такого пакета в сети нету, то и управлять локально не получится
defender52
Сообщения: 9
Зарегистрирован: Пн май 28, 2018 9:27 pm
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: [Модуль] Tuya

Сообщение defender52 » Ср июн 12, 2024 1:18 am

Добрый день.
Приобрел wifi модули управления жалюзи/шторами Girier.
Честно говоря, по ошибке, до этого брал такие же, но Zigbee, через zigbee2mqtt.
Поневоле занялся проблемой их интеграции в МД, но столклулся с проблемой отсутствия органов управления.
Собственно, эти модули имеют возможность управления степенью открытия жалюзи (в процентах).
Вот скрин с примером зигбишного модуля (желтым выделен управляющий параметр):
СпойлерПоказать
зигби.png
зигби.png (58.44 КБ) 3082 просмотра
А вот пример с Туйя Смартхоум (как можно видеть, практически все передаваемые модулем метрики на месте, но безимянные):
СпойлерПоказать
туйя.png
туйя.png (92.24 КБ) 3082 просмотра
Через Tuya IOT Platform нужный мне параметр вижу и могу им управлять:
СпойлерПоказать
iot.jpg
iot.jpg (58.77 КБ) 3082 просмотра
Через моб. приложение Смартлайф также все работает.

Настройки модуля МД (МД на малине, php-bcmath стоит):
СпойлерПоказать
модуль.png
модуль.png (38.32 КБ) 3082 просмотра
Настройки модуля жалюзи:
СпойлерПоказать
жалюзи.png
жалюзи.png (31.45 КБ) 3082 просмотра
Помогите найти и пофиксить проблему, пожалуйста.
defender52
Сообщения: 9
Зарегистрирован: Пн май 28, 2018 9:27 pm
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: [Модуль] Tuya

Сообщение defender52 » Чт июн 13, 2024 9:41 am

Доброе утро.
Экспериментальным путем выяснил, что метрика 2 используется также и для управления, но любое переданное в нее значение приводит к закрытию жалюзи. Возможно, воспримимается и передается как "0".
Есть идеи, что нужно сделать, чтобы превратить это в цифру от 0 до 100?
Аватара пользователя
xor
Сообщения: 2045
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 289 раз
Поблагодарили: 632 раза

Re: [Модуль] Tuya

Сообщение xor » Чт июн 13, 2024 1:57 pm

defender52 писал(а):
Чт июн 13, 2024 9:41 am
Доброе утро.
Экспериментальным путем выяснил, что метрика 2 используется также и для управления, но любое переданное в нее значение приводит к закрытию жалюзи. Возможно, воспримимается и передается как "0".
Есть идеи, что нужно сделать, чтобы превратить это в цифру от 0 до 100?
привязано к ПУ какому-нибудь? если да, попробуйте просто к тестовому объекту/свойству без любой накрученной логики привязать и попробовать поуправлять
defender52
Сообщения: 9
Зарегистрирован: Пн май 28, 2018 9:27 pm
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: [Модуль] Tuya

Сообщение defender52 » Чт июн 13, 2024 4:21 pm

xor писал(а):
Чт июн 13, 2024 1:57 pm
defender52 писал(а):
Чт июн 13, 2024 9:41 am
Доброе утро.
Экспериментальным путем выяснил, что метрика 2 используется также и для управления, но любое переданное в нее значение приводит к закрытию жалюзи. Возможно, воспримимается и передается как "0".
Есть идеи, что нужно сделать, чтобы превратить это в цифру от 0 до 100?
привязано к ПУ какому-нибудь? если да, попробуйте просто к тестовому объекту/свойству без любой накрученной логики привязать и попробовать поуправлять
В том-то и дело, что нет.
Привязано к тестовому объекту, без какой-либо логики.
Похоже, это логика модуля Туйи что-то от себя добавляет.
Вопрос, как это проверить.
defender52
Сообщения: 9
Зарегистрирован: Пн май 28, 2018 9:27 pm
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: [Модуль] Tuya

Сообщение defender52 » Пт июн 14, 2024 1:30 am

Отвечу сам себе, вдруг кому-то еще пригодится.
Как и подозревал, проблема крылась в типе данных, передаваемых в качестве команды, а также в имени метрики.
Возможно, где-то есть документация к модулю, которую я не нашел из-за своей лени, однако помогло следующее:
Так как нужная мне метрика имеет имя "2", и, как выяснилось, контроллер жалюзи ожидает строку, пришлось подшаманить tuya.class.php след. образом (добавил условие, выделенное красным):
СпойлерПоказать
php.png
php.png (24.56 КБ) 2782 просмотра
Уверен, это не самый элегантный способ, и при обновлении МД модуля это перетрется, поэтому вопрошаю автора и сообщество, нет ли уже заявленной возможности делать инклюды такого рода, не подлежащие уничтожению, или еще каким-либо способом обойти проблему.
Спасибо заранее.
За это сообщение автора defender52 поблагодарил:
xor (Пт июн 14, 2024 5:32 pm)
Рейтинг: 1.16%
Аватара пользователя
xor
Сообщения: 2045
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 289 раз
Поблагодарили: 632 раза

Re: [Модуль] Tuya

Сообщение xor » Сб июн 15, 2024 3:15 pm

а у вас модуль не спамит в ворнинги?

14:43:18 0.11722200 commandline: ./scripts/cycle_tuya.php --params a:0:{}
PHP error level 2 in C:\_majordomo\htdocs\modules\objects\objects.class.php (line 839): mb_strlen() expects parameter 1 to be string, array given
14:43:18 0.19059500 commandline: ./scripts/cycle_tuya.php --params a:0:{}
PHP error level 2 in C:\_majordomo\htdocs\modules\objects\objects.class.php (line 839): mb_strlen() expects parameter 1 to be string, array given
14:43:18 0.27317600 commandline: ./scripts/cycle_tuya.php --params a:0:{}
PHP error level 2 in C:\_majordomo\htdocs\modules\objects\objects.class.php (line 839): mb_strlen() expects parameter 1 to be string, array given

из-за стр 2069 в классе

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

         setGlobal($cmd_rec['LINKED_OBJECT'] . '.' . $cmd_rec['LINKED_PROPERTY'], $value, 0, array($this->name => '0'));
array($this->name => '0') не стоит заменить на просто $this->name ?
определение функции

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

function setGlobal($varname, $value, $no_linked = 0, $source = '')
, соурс - ожидается строка.
А тут соурс попадает далее массивом в функцию setProperty, где над ним пытаются сделать

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

if (mb_strlen($source) > 250) { ...
и ворнинг возникает
fandaymon
Сообщения: 1565
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 40 раз
Поблагодарили: 578 раз

Re: [Модуль] Tuya

Сообщение fandaymon » Пн июн 17, 2024 10:33 am

defender52 писал(а):
Ср июн 12, 2024 1:18 am
Добрый день.
Приобрел wifi модули управления жалюзи/шторами Girier.
Честно говоря, по ошибке, до этого брал такие же, но Zigbee, через zigbee2mqtt.
Поневоле занялся проблемой их интеграции в МД, но столклулся с проблемой отсутствия органов управления.
Собственно, эти модули имеют возможность управления степенью открытия жалюзи (в процентах).
Вот скрин с примером зигбишного модуля (желтым выделен управляющий параметр):
СпойлерПоказать
зигби.png
А вот пример с Туйя Смартхоум (как можно видеть, практически все передаваемые модулем метрики на месте, но безимянные):
СпойлерПоказать
туйя.png
Через Tuya IOT Platform нужный мне параметр вижу и могу им управлять:
СпойлерПоказать
iot.jpg
Через моб. приложение Смартлайф также все работает.

Настройки модуля МД (МД на малине, php-bcmath стоит):
СпойлерПоказать
модуль.png
Настройки модуля жалюзи:
СпойлерПоказать
жалюзи.png
Помогите найти и пофиксить проблему, пожалуйста.
У вас свойства метрик не подтянулись. Модуль в облаке смотрит тип значений. Нету типа - нету правильной обработки значений. Свойства подтягиваются раз в 5 минут, так как это довольно долгий процесс. При некоторых условиях они могли и не подтянуться. Вроде бы в последнем обновлении я это исправил
fandaymon
Сообщения: 1565
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 40 раз
Поблагодарили: 578 раз

Re: [Модуль] Tuya

Сообщение fandaymon » Пн июн 17, 2024 10:34 am

xor писал(а):
Сб июн 15, 2024 3:15 pm
а у вас модуль не спамит в ворнинги?

14:43:18 0.11722200 commandline: ./scripts/cycle_tuya.php --params a:0:{}
PHP error level 2 in C:\_majordomo\htdocs\modules\objects\objects.class.php (line 839): mb_strlen() expects parameter 1 to be string, array given
14:43:18 0.19059500 commandline: ./scripts/cycle_tuya.php --params a:0:{}
PHP error level 2 in C:\_majordomo\htdocs\modules\objects\objects.class.php (line 839): mb_strlen() expects parameter 1 to be string, array given
14:43:18 0.27317600 commandline: ./scripts/cycle_tuya.php --params a:0:{}
PHP error level 2 in C:\_majordomo\htdocs\modules\objects\objects.class.php (line 839): mb_strlen() expects parameter 1 to be string, array given

из-за стр 2069 в классе

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

         setGlobal($cmd_rec['LINKED_OBJECT'] . '.' . $cmd_rec['LINKED_PROPERTY'], $value, 0, array($this->name => '0'));
array($this->name => '0') не стоит заменить на просто $this->name ?
определение функции

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

function setGlobal($varname, $value, $no_linked = 0, $source = '')
, соурс - ожидается строка.
А тут соурс попадает далее массивом в функцию setProperty, где над ним пытаются сделать

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

if (mb_strlen($source) > 250) { ...
и ворнинг возникает
Страницу назад обсуждали этот вопрос. :) Сдаюсь - поправил на просто строку
За это сообщение автора fandaymon поблагодарил:
xor (Вт июн 18, 2024 10:15 am)
Рейтинг: 1.16%
Ответить