Deconz-rest-plugin: [Запрос нового устройства] Мини-переключатель Osram Smart +

Созданный на 12 мая 2020  ·  155Комментарии  ·  Источник: dresden-elektronik/deconz-rest-plugin

Здравствуйте,
Я купил 2 мини-переключателя zigbee osram, я сделал запрос на перенос, чтобы он работал на zigbee2mqtt, но теперь я использую conbee :)
у меня 1 синий и 1 белый
мне нравятся эти пульты для моей рольставни
https://www.amazon.fr/dp/B074PYT9R4/ref=twister_B07MVNX6V6 ? _encoding = UTF8 & psc = 1
устройство обнаружено в деконзальном режиме, но может только включать и выключать все огни
вот скриншот 2 пульта (может другой)
если вам нужна дополнительная информация, скажите мне :)
благодаря !

Синий:
mini_switch_blue

Белый:
mini_switch_white

Device Request stale

Самый полезный комментарий

Я пробовал это, и это работает. Я установил патч Smanars и начал поиск новых коммутаторов в Phoscon. Я вижу переключатель в Deconz и в логах:

13: 11: 05: 886 0x00124B0014B71F47 вкл Выкл 0 -> 1
13: 11: 05: 887 нет карты кнопок для: PSMP5_00.00.03.16TC ep: 0x01 cl: 0x0006 cmd: 0x0A pl [0]: 000
13: 11: 05: 887 Отчет об атрибуте ZCL 0x00124B0014B71F47 для кластера: 0x0006, ep: 0x01, управление кадром: 0x18, mfcode: 0x0000

Все 155 Комментарий

Здравствуйте.
В чем загадка этого устройства ^^?

Это так много проблем
https://github.com/dresden-elektronik/deconz-rest-plugin/issues/2082
https://github.com/dresden-elektronik/deconz-rest-plugin/issues/374
https://github.com/dresden-elektronik/deconz-rest-plugin/issues/294
ect ...

Некоторые говорят, что это работает, другие нет.

И я не вижу проблемы, я что-то упускаю?

Это устройство определяется в деконз? Я не вижу этого в поддерживаемом устройстве в коде, у вас это как свет или датчик? Можете показать мне устройство JSON, пожалуйста?

Вы хотите использовать его для своих рольставней? Но как работает банкомат, я вижу на устройстве только 3 кнопки и по кластеру он может включать / выключать + контроль уровня + контроль цвета, серьезно ???

Редактировать:

Кратковременное нажатие кнопки 1: все включено
Длительное нажатие кнопки 1: увеличение яркости
Кнопка 2 короткое нажатие: 2700 К / Яркость 100%
Кнопка 2 долгое нажатие: изменение цвета (вперед)
Короткое нажатие кнопки 3: все выключено
Кратковременное нажатие кнопки 3: уменьшение яркости

на самом деле он не работает, я не вижу пульт в категории переключателей в программном обеспечении deconz
он обнаруживает, но не может назначить свет или что-то еще
пульт может включить весь свет кнопкой вверх
включи жизнь кнопкой вниз
я не могу настроить кнопку в деконз

я использую его с:
короткое нажатие: откройте крышку моей гостиной
короткий круговой пресс: прекратить прикрытие гостиной
короткое нажатие: закрыть крышку гостиной

долгое нажатие: открыть крышку окна рабочего стола
долгое нажатие круга: остановить крышку окна рабочего стола
долгое нажатие: закрыть крышку окна рабочего стола

мой второй пульт, я использую его для освещения сада

какие журналы json вам нужны? какая команда?
это журналы?

15: 52: 24: 069 APS-DATA.indication srcAddr: 0x532a, srcEp: 0x02 dstAddrMode: 2, профиль: 0x0104, кластер: 0x0006, lqi: 215, rssi: -6715: 52: 24: 069 APS-DATA.indication srcAddr: 0x532a, srcEp: 0x02 dstAddrMode: 2, профиль: 0x0104, кластер: 0x0006, lqi: 215, rssi: -67

15: 54: 00: 255 APS-DATA.indication srcAddr: 0x50b9, srcEp: 0x02 dstAddrMode: 2, профиль: 0x0104, кластер: 0x0006, lqi: 215, rssi: -67

благодаря !

Итак, вы используете его с командой zigbee broadcast (или group)?

Вы используете приложение домашнего помощника с deconz? HASS openhab или другое? (и есть ключ API?)
Если да, вы видите в нем пульт?

Я использую одноадресную передачу: конфигурация по умолчанию в версии докера deconz
unicast
Я использую домашнего помощника только для отображения моих сущностей, но
моя автоматизация в node-red vm
моя конфигурация:
proxmox сервер:
deconz vm
узел красный vm
Хассио В.М.

все в мостовой сети, управляемой моим маршрутизатором unifi
Я использую deconz api в node-red с палитрой node-red-contrib-deconz
Я не вижу удаленного в Хассио

Хорошо, я думаю, что это устройство вообще не в деконзе.

Я скоро спрошу еще раз, поэтому, чтобы увидеть свое устройство в deconz API, вы можете использовать этот тип URL
http://IP:PORT/api/API_KEY/sensors
Для ip и порта вы используете то же самое, что и для фоскона.
Для API_KEY, я думаю, вы можете найти его где-нибудь в плагине deconz в HASS

Теперь я могу попробовать сделать ZHAswitch для этого устройства, чтобы у вас было значение для всех функций (сколько еще IDK).

Но если вы хотите установить «прямую связь» между затвором и пультом дистанционного управления, не уверен, что это сработает. Вы можете попробовать использовать фоскон.
IDK, если ваша ставня поддерживает «прямое соединение», какой именно кластер им нужен, и почему вы можете использовать его с лампой, а не с затвором (возможно, затвор использует кластер оконного покрытия?)

Но если вы хотите, чтобы значение buttonevent, например, для пульта дистанционного управления ikea, использовалось с nodered, я думаю, что это будет возможно.

Но странно, что никто этого еще не сделал ^^, я думаю, что есть ловушка, которую я еще не заметил.

хорошо, я проверю с API
моя шторка находится в Wi-Fi (модуль shelly2.5), поэтому, событие, да и конфигурация кнопок в веб-интерфейсе, это будет решение
благодаря !

я думаю, это действие для удаленного переключателя?
tempsnip

Хорошо, я думаю, что это устройство вообще не в деконзе.

Я скоро спрошу еще раз, поэтому, чтобы увидеть свое устройство в deconz API, вы можете использовать этот тип URL
http://IP:PORT/api/API_KEY/sensors
Для ip и порта вы используете то же самое, что и для фоскона.
Для API_KEY, я думаю, вы можете найти его где-нибудь в плагине deconz в HASS

Вы можете получить ключ API, заблокировав шлюз и запустив клиент Rest или Curl:
curl --header "Content-Type: application / json" --request POST --data "{\" devicetype \ ": \" \ "}" http://192.168.1.15/api
API возвращается как имя пользователя "{" username ":" D7nnnnnn "}}]".
Это объясняется на https://dresden-elektronik.github.io/deconz-rest-doc/getting_started/.

Хорошо, я думаю, что это устройство вообще не в деконзе.
Я скоро спрошу еще раз, поэтому, чтобы увидеть свое устройство в deconz API, вы можете использовать этот тип URL
http://IP:PORT/api/API_KEY/sensors
Для ip и порта вы используете то же самое, что и для фоскона.
Для API_KEY, я думаю, вы можете найти его где-нибудь в плагине deconz в HASS

Вы можете получить ключ API, заблокировав шлюз и запустив клиент Rest или Curl:
curl --header "Content-Type: application / json" --request POST --data "{" devicetype ":" "}" http://192.168.1.15/api
API возвращается как имя пользователя "{" username ":" D7nnnnnn "}}]".
Это объясняется на https://dresden-elektronik.github.io/deconz-rest-doc/getting_started/.

да, у меня есть ключ :)

Итак, я начал https://github.com/Smanar/deconz-rest-plugin/commit/55ecd9a1dc7b72e48f41e2f922d47aafcb5d6371

Но у меня проблемы с датчиком стола.

У вас есть 32-разрядная машина Unix для компиляции кода и попыток?

Процедура объясняется здесь> https://github.com/dresden-elektronik/deconz-rest-plugin в «Установить пакет разработки deCONZ (необязательно, только для Linux)»

Вам просто нужно изменить шаг 1 на
git clone https://github.com/Smanar/deconz-rest-plugin.git

Новый код будет включать устройство, возможно, у вас возникнут проблемы с командой braodcast (некоторые лампочки в вашей сети будут реагировать на пульт). У вас будет новый датчик, ZHAswitch с полем «bouttonevent».
Думаю, устройство будет невидимым в фосконе, но вы можете увидеть это в API или HA.

Если вы включите журнал deconz (как во втором посте), вы увидите что-то вроде

14: 54: 41: 654 нет обработчика кнопок для: XXXXXX сенсор ep: 0x01 cl: 0x0006 cmd: 0x42 pl [0]: 0x00

Каждый раз, когда вы нажимаете кнопку (для отсутствующей, но я думаю, что только 2 будут работать)
Мне просто нужна кнопка (короткая / длинная / отпустить), которую вы нажали, и сообщение

Я пробовал это, и это работает. Я установил патч Smanars и начал поиск новых коммутаторов в Phoscon. Я вижу переключатель в Deconz и в логах:

13: 11: 05: 886 0x00124B0014B71F47 вкл Выкл 0 -> 1
13: 11: 05: 887 нет карты кнопок для: PSMP5_00.00.03.16TC ep: 0x01 cl: 0x0006 cmd: 0x0A pl [0]: 000
13: 11: 05: 887 Отчет об атрибуте ZCL 0x00124B0014B71F47 для кластера: 0x0006, ep: 0x01, управление кадром: 0x18, mfcode: 0x0000

Но чтобы он работал, мне нужны все значения кнопок, у меня проблемы с их угадыванием (3 режима / 4 кластера / 3 конечные точки ...), и это проще с отладкой.
Просто нажмите кнопку и дайте мне журнал без "карты кнопок", если он пропал.
У вас есть короткое нажатие / долгое нажатие / отпускание для всех 3 кнопок (я думаю, не уверен)

@bphermansson может ты это сделал? у тебя тоже есть это устройство?
благодаря

Я могу объяснить, нужен ли вам @NicolasBoulanger ?
У вас проблемы с вашей ОС?

У меня есть пульт Osram черного цвета из резины. Он имеет три кнопки, большую и маленькую стрелку и кружок. Результат, который я получаю от Deconz, зашумлен, и я вижу только одну из кнопок, маленькую стрелку. Он дает это при коротком нажатии:
18: 08: 35: 642 нет карты кнопок для: PSMP5_00.00.03.16TC ep: 0x01 cl: 0x0702 cmd: 0x0A pl [0]: 000
Не вижу разницы при долгом нажатии. Могут ли помочь некоторые значения из Zigbee2Mqtt?

Я думаю, что у меня есть значения из zigbee2mqtt @NicolasBoulanger, дайте ссылку для этого https://github.com/dresden-elektronik/deconz-rest-plugin/issues/2763#issuecomment -627491001

Но с отладкой это действительно быстрее ^^. Я постараюсь лучше завтра

Но я не понимаю, почему у вас только маленькая стрелка, а не большая, я могу понять «О», но стрелку ...
Возможно, это уже работает, это сообщение отладки только для неработающей кнопки.
И тоже есть что-то странное

cl: 0x0702

Метринг кластера?

Я постараюсь улучшить это отображение

И я тупой.

Лучше проверить рабочие значения перед неработающими ^^.

Пожалуйста, можете ли вы проверить в json (или где-нибудь еще) значение "buttonevent", если значение равно "none", я полностью ошибаюсь, если у вас есть что-то вроде X00Y, у меня есть по крайней мере одно хорошее значение в моей таблице.
Это поле является последней нажатой кнопкой.

Итак, я использовал это сообщение
13:11:05:887 no button map for: PSMP5_00.00.03.16TC ep: 0x01 cl: 0x0006 cmd: 0x0A pl[0]: 000

Итак, теперь я использую 1 конечную точку по кнопке, но всегда кластер 0006 и команду 0x0A.
Я почти уверен, что скучаю по кластеру 0008, но IDK, с которым можно использовать одну команду

вам хорошо с этими журналами?

11: 55: 47: 312 нет карты кнопок для: SML001 ep: 0x02 cl: 0x0406 cmd: 0x0A pl [0]: 000
11: 55: 49: 309 нет карты кнопок для: SML001 ep: 0x02 cl: 0x0400 cmd: 0x0A pl [0]: 000
11: 55: 55: 431 нет карты кнопок для: SML001 ep: 0x02 cl: 0x0402 cmd: 0x0A pl [0]: 000
11: 02: 34: 469 нет карты кнопок для: RWL021 ep: 0x02 cl: 0x0001 cmd: 0x0A pl [0]: 021

К счастью, RWL021 - диммер Philips, а SML001 - датчик движения HUE ^^.

И теперь я выгляжу лучше, я построил свою таблицу на

13: 11: 05: 887 нет карты кнопок для: PSMP5_00.00.03.16TC ep: 0x01 cl: 0x0006 cmd: 0x0A pl [0]: 000
13: 11: 05: 887 Отчет об атрибуте ZCL 0x00124B0014B71F47 для кластера: 0x0006, ep: 0x01, управление кадром: 0x18, mfcode: 0x0000

Но это тоже не хорошее устройство. 0x00124B0014B71F47 не находится в хорошем MAC-адресе.

В журнале, который мне нужен, будет "нет обработчика кнопок для: Lightify Switch mini" (не уверен, что это опечатка).

Никто не может скомпилировать код и дать мне логи?
Я даже не знаю, работает ли только один ...

Может быть, сегодня вечером я смогу попробовать.

Некоторые новые открытия. Теперь я вижу свой переключатель как 0x75B7 в Deconz. Это Osram Lightify Switch Mini. Нажатие на круг дает:

07: 57: 23: 092 APS-DATA.indication srcAddr: 0x75b7, srcEp: 0x03 dstAddrMode: 2, профиль: 0x0104, кластер: 0x0008, lqi: 167, rssi: -70
07: 57: 24: 083 APS-DATA.indication srcAddr: 0x75b7, srcEp: 0x03 dstAddrMode: 2, профиль: 0x0104, кластер: 0x0300, lqi: 167, rssi: -70

(и моя лампа Hue включается)

Нажав большую стрелку:

08: 01: 20: 906 APS-DATA.indication srcAddr: 0x75b7, srcEp: 0x01 dstAddrMode: 2, профиль: 0x0104, кластер: 0x0006, lqi: 151, rssi: -72
08: 01: 21: 002 APS-DATA.indication srcAddr: 0x192c, srcEp: 0x01 dstAddrMode: 2, профиль: 0x0104, кластер: 0x0006, lqi: 255, rssi: -34
08: 01: 21: 003 нет карты кнопок для: PSMP5_00.00.03.16TC ep: 0x01 cl: 0x0006 cmd: 0x0A pl [0]: 000

Маленькая стрелка:
08: 03: 33: 218 APS-DATA.indication srcAddr: 0x75b7, srcEp: 0x02 dstAddrMode: 2, профиль: 0x0104, кластер: 0x0006, lqi: 159, rssi: -71
08: 03: 33: 300 APS-DATA.indication srcAddr: 0x192c, srcEp: 0x01 dstAddrMode: 2, профиль: 0x0104, кластер: 0x0006, lqi: 255, rssi: -35
08: 03: 33: 302 нет карты кнопок для: PSMP5_00.00.03.16TC ep: 0x01 cl: 0x0006 cmd: 0x0A pl [0]: 000
08: 03: 33: 302 Отчет об атрибутах ZCL 0x00124B0014B71F47 для кластера: 0x0006, ep: 0x01, управление кадром: 0x18, mfcode: 0x0000

Некоторые новые открытия. Теперь я вижу свой переключатель как 0x75B7 в Deconz. Это Osram Lightify Switch Mini. Нажатие на круг дает:

07: 57: 23: 092 APS-DATA.indication srcAddr: 0x75b7, srcEp: 0x03 dstAddrMode: 2, профиль: 0x0104, кластер: 0x0008, lqi: 167, rssi: -70
07: 57: 24: 083 APS-DATA.indication srcAddr: 0x75b7, srcEp: 0x03 dstAddrMode: 2, профиль: 0x0104, кластер: 0x0300, lqi: 167, rssi: -70

(и моя лампа Hue включается)

Нажав большую стрелку:

08: 01: 20: 906 APS-DATA.indication srcAddr: 0x75b7, srcEp: 0x01 dstAddrMode: 2, профиль: 0x0104, кластер: 0x0006, lqi: 151, rssi: -72
08: 01: 21: 002 APS-DATA.indication srcAddr: 0x192c, srcEp: 0x01 dstAddrMode: 2, профиль: 0x0104, кластер: 0x0006, lqi: 255, rssi: -34
08: 01: 21: 003 нет карты кнопок для: PSMP5_00.00.03.16TC ep: 0x01 cl: 0x0006 cmd: 0x0A pl [0]: 000

Маленькая стрелка:
08: 03: 33: 218 APS-DATA.indication srcAddr: 0x75b7, srcEp: 0x02 dstAddrMode: 2, профиль: 0x0104, кластер: 0x0006, lqi: 159, rssi: -71
08: 03: 33: 300 APS-DATA.indication srcAddr: 0x192c, srcEp: 0x01 dstAddrMode: 2, профиль: 0x0104, кластер: 0x0006, lqi: 255, rssi: -35
08: 03: 33: 302 нет карты кнопок для: PSMP5_00.00.03.16TC ep: 0x01 cl: 0x0006 cmd: 0x0A pl [0]: 000
08: 03: 33: 302 Отчет об атрибутах ZCL 0x00124B0014B71F47 для кластера: 0x0006, ep: 0x01, управление кадром: 0x18, mfcode: 0x0000

Вы пробовали долго нажимать на обе кнопки?
Благодаря !

Здравствуйте, какой MAC-адрес у вашего пульта osram?

Потому что, возможно, линия

кластер: 0x0006, lqi: 255, rssi: -35
08: 03: 33: 302 нет карты кнопок для: PSMP5_00.00.03.16TC ep: 0x01 cl: 0x0006 cmd: 0x0A pl [0]: 000

для устройства 0x00124B0014B71F47 PSMP5

И этот уже есть на столе https://github.com/Smanar/deconz-rest-plugin/blob/master/sensor.cpp#L146

Вы можете поделиться полным журналом?

smart-switch-mini-commutateur-blanc
я нашел это изображение для приложения фоскон?

Но фоскон - это закрытый источник.
Мы не можем сделать что-то на своей стороне.

Я сделал несколько файлов журналов. Сначала нажимаю кнопки одну за другой, долгое нажатие и короткое нажатие. Второй журнал - это всего лишь одно короткое нажатие на одну кнопку.

https://pastebin.com/Pb8j85z3

https://pastebin.com/VmFCnvEU

Screenshot from 2020-05-23 08-17-10

Приятно спасибо.
Итак, в моем коде есть проблема, событие кнопки вообще не работает. Нужно повнимательнее проверить журнал.

Хорошо, извините за манипуляции, но у меня проблема в коде.

Я сделал новую версию с некоторой строкой отладки. Но эти строки будут отображаться только в том случае, если вы используете --dbg-info = 2 в своей команде. https://github.com/Smanar/deconz-rest-plugin/commit/4142a4c0fdd509787830bb4f6c758efa6ff46ecc

Идк, есть ли у вас в приложении ползунок или что-то для повышения уровня лога?

Можете ли вы отправить мне тот же журнал, когда нажимаете какую-то кнопку?

Понятия не имею, поможет ли это, но я также начал попытки добавить поддержку переключателя Smart + mini (я сдался, так как у меня не было времени). В любом случае, вот мой коммит, который может оказаться полезным? https://github.com/olicooper/deconz-rest-plugin/commit/70e42e9da35a6774dd79970a4a55e987a3e7d238

Кроме того, существует больше поддерживаемых функций, чем перечислено здесь:

Кратковременное нажатие кнопки 1: все включено
Длительное нажатие кнопки 1: увеличение яркости
Кнопка 2 короткое нажатие: 2700 К / Яркость 100%
Кнопка 2 долгое нажатие: изменение цвета (вперед)
Короткое нажатие кнопки 3: все выключено
Кратковременное нажатие кнопки 3: уменьшение яркости

Я думаю, вы также можете дважды нажимать кнопки. Я считаю, что двойное (короткое) нажатие кнопки 2 переключит свет на ~ 3000K / яркость 100%.

Да, спасибо, я возьму несколько строк для использования в моем.

Банкомат У меня есть результат на 4-х кнопочных мини-переключателях, поэтому я не понимаю, почему 3-я кнопка не работает.

Редактировать:
Еще не проверял двойное нажатие ...

Я использую командную строку, как описано в документе Deconz, для добавления новых устройств. Я выполнил приведенную ниже команду и нажал все кнопки, долгое нажатие и короткое. Судя по документации к продукту, вы можете использовать пульт для шести функций, трех кнопок, длительного или короткого нажатия.
Команда:

deCONZ --dbg-info = 2 --dbg-aps = 1 --dbg-zcl = 1 --dbg-zdp = 1 --http-port = 80> osram.txt

Лог-файл:
osram.txt

Хорошо, теперь я понимаю, почему я никогда не вижу хорошего журнала отладки.
Что-то упущено, ваше устройство отсутствует в API, поэтому оно не обрабатывает событие кнопки.

Можете попробовать повторно включить пульт с помощью Phoscon pls? Я думаю, что банкомат работает из-за широковещательного сообщения.

Хорошо, я почти уверен, что теперь получаю правильные значения.

Circle long - 21:28:14:228 APS-DATA.indication srcAddr: 0x89ef, srcEp: 0x03 dstAddrMode: 2, profile: 0x0104, cluster: 0x0300, lqi: 103, rssi: -78
Circle short - 21:29:34:605 APS-DATA.indication srcAddr: 0x89ef, srcEp: 0x03 dstAddrMode: 2, profile: 0x0104, cluster: 0x0008, lqi: 119, rssi: -76
Little arrow short: 21:31:07:949 APS-DATA.indication srcAddr: 0x89ef, srcEp: 0x02 dstAddrMode: 2, profile: 0x0104, cluster: 0x0006, lqi: 87, rssi: -80

Значение кластера указывает, какая кнопка нажата?

@Smanar Я пытаюсь заставить переключатель mini работать, поэтому я создал свое собственное репо из вашего кода (см. Мое репозиторий deconz ) и запустил скомпилированный код, но теперь кластеры не отображаются в графическом интерфейсе deconz для устройства, и я нет никаких полезных журналов, показывающих команды устройства и т. д.
Это пример журнала при нажатии кнопки:

08:51:03:276 APS-DATA.indication srcAddr: 0xfda1, srcEp: 0x02 dstAddrMode: 2, profile: 0x0104, cluster: 0x0006, lqi: 151, rssi: -72
08:51:03:276 APS-DATA.indication from child 0xFDA1
08:51:03:277 verify 0x000d6f00XXXXXXXX is child node after 839916 s
08:51:03:299 MyDebug 1
08:51:03:453 Node 0x000d6f00XXXXXXXX is known by 1 neighbors, last seen 0 s

Я не знаком с тем, что происходит в коде, поэтому мои дополнения могли вызвать проблему. Вы знаете, что может быть не так?
Как я могу помочь настроить отображение кнопок?

@bphermansson да, но мне нужно больше, чем кластер, мне нужны и команда, и параметр. Для этого я использую отладку вывода «без карты кнопок», вся информация здесь.

08: 03: 33: 302 нет карты кнопок для: XXXX ep: 0x01 cl: 0x0006 cmd: 0x0A pl [0]: 000

@olicooper в строке 1315 файла sensor.cpp, вы отключили всю таблицу значений датчиков.
И более простой способ - это поиск «без карты кнопок», как я уже говорил ранее, у вас будет все значение в одной строке отладки.

Я продвинулся дальше для 4-х кнопок, я думаю, что у меня есть все значение для таблицы, и я начал смешивать созданное устройство, если вы хотите протестировать код, я думаю, что это будет то же самое для 3-х кнопочного устройства.

Спасибо, что заглянули! Я начал понимать это немного больше, и я надеялся, что, отключив строку 1315 sensor.cpp, я увижу в журналах «нет карты кнопок». Я снова включу его.

По какой-то причине внутри da_web_plugin.cpp эта строка не возвращает узел датчика sensorNode = getSensorNodeForAddress(ind.srcAddress()); ( см. Это ). Он не попадает в журнал «MyDebug 0.2». Я пробовал перезагрузить устройство.

Да, но это не триггер в вашей ситуации (на данный момент).
В момент, когда эта часть кода запускается, у вас есть sensorNode, поэтому вся часть, начинающаяся со строки 728, не используется.

Я начал вставлять в него код на будущее ^^
На втором этапе (это то, что у меня есть для кнопки 4) я смешаю все конечные точки, поэтому возможно, что API не найдет сенсорный узел, поэтому он будет искать его на другой конечной точке, чтобы найти его. Но эта часть не используется пока что для 3-х кнопок.

@bphermansson У вас тоже подключен «Climax Power Switch»? Я просмотрел ваши журналы и думаю, что журналы «без карты кнопок» относятся к этому устройству, а не к Lightify Switch Mini. Во время собственного тестирования я обнаружил, что не могу найти никаких журналов «без карты кнопок» для своего коммутатора - но я получаю их для других устройств.
MAC-адрес 0x00124B0014B71F47 предназначен для устройства Texas Instruments. Я думаю, вы должны найти журналы с MAC-адресом, который начинается с 0x000D6F что является мини-коммутатором (чип сделан Ember Corporation).

@Smanar Я не думаю, что он нашел sensorNode по строке 728, хотя из того, что я вижу в своих файлах журнала:

16:24:58:814 APS-DATA.indication srcAddr: 0xc6f2, srcEp: 0x02 dstAddrMode: 2, profile: 0x0104, cluster: 0x0006, lqi: 191, rssi: -67
16:24:58:814 APS-DATA.indication from child 0xC6F2
16:24:58:814 verify 0x000d6f00XXXXXXXX is child node after 839916 s
16:24:58:843 MyDebug 0.1
16:24:58:843 MyDebug 1

Можете ли вы показать мне устройство, созданное API для этого устройства (JSON), после включения у вас будет как минимум 3 устройства.

Работает! Это новейшее отображение: https://github.com/olicooper/deconz-rest-plugin/commit/5aeb0a89276d2771f2ca398d76df6e7279acb6c5

К сожалению, отображение down long release не работает. в журналах говорится, что он не привязан, хотя в схеме кнопок он правильный. Есть предположения?

19:36:52:722 APS-DATA.indication srcAddr: 0x92c2, srcEp: 0x02 dstAddrMode: 2, profile: 0x0104, cluster: 0x0008, lqi: 119, rssi: -76
19:36:52:723 APS-DATA.indication from child 0x92C2
19:36:52:724 MyDebug 1
19:36:52:724 MyDebug 2
19:36:52:724 MyDebug 3
19:36:52:724 MyDebug 4
19:36:52:724 MyDebug 6
19:36:52:724 Force binding of attribute reporting for sensor Lightify Switch Mini
19:36:52:724 no button handler for: Lightify Switch Mini ep: 0x02 cl: 0x0008 cmd: 0x03 pl[0]: 0x00

Кроме того, кнопка по-прежнему отправляет широковещательное сообщение на все индикаторы, но я не знаю, как это подавить?
Можем ли мы настроить кнопку для работы напрямую с одним источником света?

Да, у меня точно такая же проблема с четырьмя кнопками> https://github.com/dresden-elektronik/deconz-rest-plugin/issues/374#issuecomment -633254527

Я думаю, нам нужно использовать больше строк отладки в функции checkSensorButtonEvent (), и для меня проблема может быть в

            else if (ind.clusterId() == LEVEL_CLUSTER_ID &&
                       (zclFrame.commandId() == 0x03 ||  // stop
                        zclFrame.commandId() == 0x07) )  // stop (with on/off)
            {
                ok = false;
                if (buttonMap->zclParam0 == sensor->previousDirection) // direction of previous move/step
                {
                    sensor->previousDirection = 0xFF;
                    ok = true;
                }
            }

У нас есть кластер 0008, command = 3, поэтому эта часть может снова установить ok в false. И у меня такая же ошибка в той же команде кластера.

Да, чтобы отключить широковещательное сообщение, если я прав, мы можем сделать это, привязав пульт к координатору (или другой группе), мы можем проверить с помощью метода Xiaomi opple.

И что касается последнего вопроса, IDK, если это хорошая идея, банкомат, моя цель - создать устройство в API, которое может отправлять все используемые кнопки для использования пульта дистанционного управления с приложением. На данный момент я не включил групповую функцию

Что касается проблемы с трансляцией, разработчик из zigbee2mqtt сказал, что они ее исправили: https://github.com/Koenkk/zigbee-herdsman-converters/commit/7756df8ccb314c9c52c89b0640107573f1aa9bdc, и это тоже интересно: https://github.com/Koenkk/zigbee-herdsman-converters/commit/7756df8ccb314c9c52c89b0640107573f1aa9bdc. zigbee2mqtt / issues / 962 # issuecomment -478301484

Изменить : я вошел в деконзирование и привязал кластер 0x0006 (OnOff) и 0x0008 (LevelControl) к отдельному свету для каждой конечной точки (все три кнопки), затем привязал 0x0001 (Power) и 0x0001 (Poll) к координатору и переключателю больше не транслируется!
Edit2 : после настройки привязок, как указано выше, больше нет журналов для нажатия кнопок. Мне пришлось удалить устройство в deconz и снова добавить его, чтобы журналы снова начали появляться.

Я добавил отладку полезной нагрузки. Когда я впервые нажимаю кнопку «вниз» (действие удержания), я заметил, что есть данные полезной нагрузки 0126 . Нет никакой полезной нагрузки для действия выпуска. Можем ли мы использовать это? Я предполагаю, что первый байт - это значение pl[0] но каков второй байт 26 ?

22:15:24:114 APS-DATA.indication srcAddr: 0x92c2, srcEp: 0x02 dstAddrMode: 2, profile: 0x0104, cluster: 0x0008, lqi: 103, rssi: -78
22:15:24:115 APS-DATA.indication from child 0x92C2
22:15:24:115 verify 0x000d6f00XXXXXXXX is child node after 839916 s
22:15:24:116 MyDebug 1
22:15:24:116 MyDebug 2
22:15:24:116 MyDebug ZCL attribute report 0x000D6F00XXXXXXXX for cluster: 0x0008, ep: 0x02, frame control: 0x11, mfcode: 0x0000
22:15:24:116    MyDebug payload: 0126
22:15:24:116 MyDebug 3
22:15:24:116 MyDebug 4
22:15:24:117 MyDebug 6
22:15:24:117 button 3001 Down long
22:15:24:117 Force binding of attribute reporting for sensor Lightify Switch Mini

@Smanar У меня работает длинный релиз. Было два способа исправить это - см. Мой последний коммит - но я решил изменить параметр buttonMap на 0x01 который кажется более чистым?

@bphermansson У вас тоже подключен «Climax Power Switch»? Я просмотрел ваши журналы и думаю, что журналы «без карты кнопок» относятся к этому устройству, а не к Lightify Switch Mini. Во время собственного тестирования я обнаружил, что не могу найти никаких журналов «без карты кнопок» для своего коммутатора - но я получаю их для других устройств.
MAC-адрес 0x00124B0014B71F47 предназначен для устройства Texas Instruments. Я думаю, вы должны найти журналы с MAC-адресом, который начинается с 0x000D6F что является мини-коммутатором (чип сделан Ember Corporation).

Это правда, у меня есть переключатель Climax марки Housegard.

Я попробую еще раз и посмотрю, смогу ли я получить дополнительную информацию от переключателя Osram.

@bphermansson, если вы установите мой патч, сопоставления кнопок должны работать, и было бы хорошо посмотреть, https://github.com/olicooper/deconz-rest-plugin

@olicooper Я вижу ваши отладочные строки, мне еще что-нибудь увидеть?

11:30:09:359 APS-DATA.indication srcAddr: 0x53ce, srcEp: 0x03 dstAddrMode: 2, profile: 0x0104, cluster: 0x0008, lqi: 183, rssi: -68
11:30:09:359 APS-DATA.indication from child 0x53CE
11:30:09:360 verify 0x000d6f000e1b8d80 is child node after 785732 s
11:30:09:368 MyDebug 0.1
11:30:09:368 MyDebug 1
11:30:09:382 verify neighbor status: APP_SUCCESS (0x00) 
11:30:09:409 Node 0x00124B00167E5F97 is known by 1 neighbors, last seen 0 s
11:30:09:648 Mgmt_Lqi_req zdpSeq: 201 to 0x086BD7FFFE064F13 start index 3
11:30:09:648 APS-DATA.request id: 8, addrmode: 0x03, addr: 0x086bd7fffe064f13, profile: 0x0000, cluster: 0x0031, ep: 0x00 -> 0x00 queue: 0 len: 2 tx.options 0x00
11:30:09:696 APS-DATA.confirm id: 8, status: 0x00 SUCCESS
11:30:09:696 APS-DATA.confirm request id: 8 -> confirmed, timeout 29914440
11:30:09:776 APS-DATA.indication srcAddr: 0xf0d8, srcEp: 0x00 dstAddrMode: 2, profile: 0x0000, cluster: 0x8031, lqi: 151, rssi: -72
11:30:09:776 APS-DATA.indication request id: 8 -> finished
11:30:09:776 APS-DATA.request id: 8 erase from queue
11:30:09:776 ZDP status = 0x00 -> SUCCESS
11:30:09:776 void deCONZ::zmNode::setFetched(deCONZ::RequestId, bool) fetched item: 8, node: 0xF0D8
11:30:09:776 ZDP Mgmt_Lqi_rsp zdpSeq: 201 from 0x086BD7FFFE064F13 total: 5, startIndex: 3, listCount: 2
11:30:09:776     * neighbor: 0x000D6FFFFEDABE85 (0xBFAE), LQI: 35, relation: 0x02 rxOnWHenIdle: 1
11:30:09:776     * neighbor: 0x000D6FFFFEAAC57B (0x5DE6), LQI: 95, relation: 0x01 rxOnWHenIdle: 0
11:30:09:889 Node 0x000D6FFFFEDABE85 is known by 5 neighbors, last seen 34 s
11:30:09:980 poll node 00:21:2e:ff:ff:04:0c:91-01
11:30:09:980 Poll light node Unknown 5
11:30:10:327 MAC Poll 0x02 0x53CE
11:30:10:346 APS-DATA.indication srcAddr: 0x53ce, srcEp: 0x03 dstAddrMode: 2, profile: 0x0104, cluster: 0x0300, lqi: 159, rssi: -71
11:30:10:347 APS-DATA.indication from child 0x53CE
11:30:10:356 MyDebug 0.1
11:30:10:356 MyDebug 1
11:30:10:369 Node 0x000D6F000E1B8D80 is known by 1 neighbors, last seen 0 s
11:30:10:477 Daylight now: goldenHour1, status: 160, daylight: 1, dark: 0
11:30:10:848 Node 0x00178801026FF283 is known by 4 neighbors, last seen 6 s
11:30:10:885 poll node 00:12:4b:00:14:b7:1f:47-01-0702
11:30:10:885 Poll ZHAConsumption sensor node Consumption 2
11:30:11:146 Poll APS request to 0x00124B0014B71F47 cluster: 0x0702 dropped, values are fresh enough

Я приложил пример того, как я нажимаю кнопку «вниз».
Строка после MyDebug 6 будет выглядеть так: button <button-number> <button-command> .
Если вы нажмете каждую кнопку, вы увидите описание нужной кнопки.

02:56:30:052 APS-DATA.indication srcAddr: 0x7565, srcEp: 0x02 dstAddrMode: 2, profile: 0x0104, cluster: 0x0008, lqi: 175, rssi: -69
02:56:30:053 MyDebug 1
02:56:30:053 MyDebug 2
02:56:30:053 MyDebug ZCL attribute report 0x000D6F00XXXXXXXX for cluster: 0x0008, ep: 0x02, frame control: 0x11, mfcode: 0x0000
02:56:30:053    MyDebug payload: 0126
02:56:30:054 MyDebug 3
02:56:30:054 MyDebug 4
02:56:30:054 MyDebug 5.3 mode: 1 ep: 0x02 cluster: 0x0008 cmd: 0x01
02:56:30:054 MyDebug 6
02:56:30:058 button 3001 Down long
02:56:30:059 Force binding of attribute reporting for sensor Lightify Switch Mini (2)

Хм, я этого не вижу ...

$ git checkout bc2fc1071ed4265712bcc19032c3a1792f7c5bc6
Note: checking out 'bc2fc1071ed4265712bcc19032c3a1792f7c5bc6'.
...
HEAD is now at bc2fc10 Osram switch mini - Alternative long press down release handling
$  qmake && make -j2
make -f Makefile.Release
make[1]: Entering directory '/home/pi/Downloads/olicooper/deconz-rest-plugin'
make[1]: Nothing to be done for 'first'.
make[1]: Leaving directory '/home/pi/Downloads/olicooper/deconz-rest-plugin'
$  sudo cp ../libde_rest_plugin.so /usr/share/deCONZ/plugins
$ deCONZ --dbg-info=2 --dbg-aps=1 --dbg-zcl=1 --dbg-zdp=1 --http-port=80 
12:47:40:625 Node 0x00124B0014B71F47 is known by 1 neighbors, last seen 0 s
12:47:41:104 Node 0x000D6FFFFEAAC57B is known by 1 neighbors, last seen 17 s
12:47:41:189 APS-DATA.indication srcAddr: 0x53ce, srcEp: 0x03 dstAddrMode: 2, profile: 0x0104, cluster: 0x0008, lqi: 255, rssi: -55
12:47:41:189 APS-DATA.indication from child 0x53CE
12:47:41:189 verify 0x000d6f000e1b8d80 is child node after 785732 s
12:47:41:190 MyDebug 0.1
12:47:41:190 MyDebug 1
12:47:41:206 verify neighbor status: APP_SUCCESS (0x00) 
12:47:41:325 APS-DATA.indication srcAddr: 0x2e61, srcEp: 0x02 dstAddrMode: 2, profile: 0x0104, cluster: 0x0500, lqi: 255, rssi: -46
12:47:41:326 IAS Zone Status Change, status: 0x0031, zoneId: 100, delay: 0
12:47:41:326 MyDebug 0.1
12:47:41:326 MyDebug 1
12:47:41:472 poll node 00:21:2e:ff:ff:04:0c:91-01
12:47:41:472 Poll light node Unknown 5
12:47:41:584 Node 0x000D6FFFFEF1370B is known by 5 neighbors, last seen 10 s
12:47:42:065 Node 0x000B57FFFE99F616 is known by 1 neighbors, last seen 32 s
12:47:42:158 MAC Poll 0x02 0x53CE
12:47:42:174 APS-DATA.indication srcAddr: 0x53ce, srcEp: 0x03 dstAddrMode: 2, profile: 0x0104, cluster: 0x0300, lqi: 255, rssi: -55
12:47:42:174 APS-DATA.indication from child 0x53CE
12:47:42:175 MyDebug 0.1
12:47:42:175 MyDebug 1
12:47:42:336 poll node 00:12:4b:00:14:b7:1f:47-01-0702
12:47:42:336 Poll ZHAConsumption sensor node Consumption 2
12:47:42:545 Node 0x000B57FFFE27551E is known by 0 neighbors, last seen 0 s
12:47:42:577 Poll APS request to 0x00124B0014B71F47 cluster: 0x0702 dropped, values are fresh enough

Это может быть потому, что есть привязки, которые уже были настроены в deCONZ. После того, как я вручную привязал некоторые кластеры коммутатора к разным устройствам, я больше не мог видеть никаких отладочных сообщений.
Может попробовать заново добавить свой девайс? Я смог использовать веб-интерфейс Phoscon.

Вот шаги, которые я использовал для повторного добавления устройства:

  1. Нажмите и удерживайте среднюю и нижнюю кнопки примерно 10 секунд, пока индикатор не перестанет мигать.
  2. Нажмите добавить новый датчик в Phoscon
  3. Нажмите и удерживайте среднюю кнопку и кнопку вверх примерно 3 секунды, пока индикатор не перестанет мигать.
  4. Подождите, пока Phoscon скажет, что датчик добавлен.

Так много чего нужно прочитать, извините, если я что-то забуду.

Так что изначально пульт делает привязку

  • Конфигурация питания шлюза
  • Управление опросом на шлюз
  • Включение / выключение лампочки
  • Контроль уровня до лампочки

И чтобы отключить braodcast они делают

  • Конфигурация питания для группы для конечной точки 1
  • Вкл. / Выкл. Для шлюза для конечных точек 1 и 2
  • Контроль уровня на шлюз для конечных точек 1 и 2
  • Управление цветом для шлюза для конечной точки 3

ATM Я делаю только 3 модуля, но для всех конечных точек, так что для меня достаточно остановить команду brodcast ... У вас все еще есть проблема с braodcast?

Но я проверяю код на наличие проблемы с релаксацией, вы сделали откат кода, чтобы изменить только параметр, этого достаточно, чтобы устройство заработало?

Изменить: я вошел в деконзирование и привязал кластер 0x0006 (OnOff) и 0x0008 (LevelControl) к отдельному свету для каждой конечной точки (все три кнопки), затем привязал 0x0001 (Power) и 0x0001 (Poll) к координатору и переключателю больше не транслируется!
Edit2: после настройки привязок, как указано выше, больше нет журналов для нажатия кнопок. Мне пришлось удалить устройство в deconz и снова добавить его, чтобы журналы снова начали появляться.

А если сделать привязку к шлюзу все?

Ой, у меня проблемы со словарем ... Я пробовал добавить его как переключатель в Phoscon.
Но теперь большой успех! Это отображается в журналах, и я даже могу увидеть это в Home Assisstant :)

Event 1 fired 6:44 PM:
{
    "event_type": "deconz_event",
    "data": {
        "id": "lightify_switch_mini_8",
        "unique_id": "00:0d:6f:00:0e:1b:8d:80",
        "event": 3002
    },
    "origin": "LOCAL",
    "time_fired": "2020-05-26T16:44:41.667421+00:00",
    "context": {
        "id": "9cfc44280cd945b3a30176aad6062c0a",
        "parent_id": null,
        "user_id": null
    }
}
Event 0 fired 6:44 PM:
{
    "event_type": "deconz_event",
    "data": {
        "id": "lightify_switch_mini_7",
        "unique_id": "00:0d:6f:00:0e:1b:8d:80",
        "event": 2002
    },
    "origin": "LOCAL",
    "time_fired": "2020-05-26T16:44:10.616804+00:00",
    "context": {
        "id": "4c54cd080d92402ca54a200fd433193e",
        "parent_id": null,
        "user_id": null
    }
}

Теперь мне просто интересно, почему Osram включает и выключает мое устройство Climax.

08: 03: 33: 218 APS-DATA.indication srcAddr: 0x75b7, srcEp: 0x02 dstAddrMode: 2, профиль: 0x0104, кластер: 0x0006, lqi: 159, rssi: -71
08: 03: 33: 300 APS-DATA.indication srcAddr: 0x192c, srcEp: 0x01 dstAddrMode: 2, профиль: 0x0104, кластер: 0x0006, lqi: 255, rssi: -35
08: 03: 33: 302 нет карты кнопок для: PSMP5_00.00.03.16TC ep: 0x01 cl: 0x0006 cmd: 0x0A pl [0]: 000
08: 03: 33: 302 Отчет об атрибутах ZCL 0x00124B0014B71F47 для кластера: 0x0006, ep: 0x01, управление кадром: 0x18, mfcode: 0x0000

Он хорошо разбирается в кластере 0006, так что это из-за широковещательной команды, а я не думаю, что это групповая.
Вы знаете, как привязать / отвязать устройство с помощью deconz?

И почему только этот?

Так что изначально пульт делает привязку

  • Конфигурация питания шлюза
  • Управление опросом на шлюз
  • Включение / выключение лампочки
  • Контроль уровня до лампочки

Это то, что делает официальное мобильное приложение Osram, когда кнопки переключения настраиваются пользователем. Я узнал эту информацию отсюда .

Но я проверяю код на наличие проблемы с релаксацией, вы сделали откат кода, чтобы изменить только параметр, этого достаточно, чтобы устройство заработало?

Да, просто изменив привязку кнопки вниз param к 0x01 вместо 0x00 , проблема устранилась. Это может быть то же самое для 4-кнопочного переключателя. Добавьте этот вывод отладки в свой код и посмотрите на часть, в которой написано sPrevD: чтобы увидеть, выводит ли он 0x01 . Я действительно думаю, что это должно быть 0x00 но это не так, и поэтому привязка не работает.

Когда я связал кластеры (OnOff, LevelControl и т. Д.) В deCONZ, он остановил передачу переключателя на все источники света (я мог напрямую управлять одним светом), но также остановил появление журналов отладки, поэтому что-то было не так. Мне пришлось удалить и снова добавить переключатель, чтобы сообщения отладки снова появлялись.

А если сделать привязку к шлюзу все?

Я попробую это. Какие кластеры вы хотите связать с координатором - OnOff, Level Control и Color Control?

Так что да, Gz, использование 0x01 действительно лучше, чем "хакерство", которое я имел в виду ^^.

В коде используются все тезисы 3.
И коду они нужны, если вы посмотрите на устройство, у которого нет полезного входного кластера (синий), все полезные вкл / выкл кластера, уровень, цвет - это выходной кластер (серым цветом), поэтому нам нужно связать конби и удаленный , поэтому он отправляет команду конби, и он может управлять ими.

Если вы отключите все привязки и превратите их в лампочку, конби не сможет их обнаружить.

Но то, что нам нужно более или менее для отключения всех остальных команд широковещательной передачи, это совсем другая история.
Я могу ошибаться в своем коде и привязывать только некоторую конечную точку.

извините, я не хороший разработчик, у меня есть 3 таких переключателя, как добавить его в deconz на Hassio? как я могу помочь вам отладить значения переключателя? мне нужно заменить некоторые файлы плагинов, измененные вами? Я очень ценю вашу работу, спасибо

Здравствуйте, спасибо за предложение, но с hass.io что-то сделать невозможно, по крайней мере, если вы не инженер. Эта ОС не предназначена для модификаций.

Я заметил в журналах, что для средней кнопки была 1 несвязанная команда, поэтому я тестировал, какие еще есть комбинации кнопок ...
Чтобы понять, что за кнопки, я сбрасываю один из моих _Osram RGBW_ и пульт дистанционного управления _Osram Switch Mini_ до заводских настроек по умолчанию и соединил их вручную с функцией Zigbee Light Link.

Это действительно интересно:

  1. [КНОПКА ВВЕРХ] Двойное нажатие == какая-то функция «идентификации», которая заставляет свет переключаться на белый / светло-зеленый цвет на ~ 1 секунду.
  2. [ЦЕНТРАЛЬНАЯ КНОПКА] Двойное нажатие == выключает свет
  3. [ЦЕНТРАЛЬНАЯ КНОПКА] Короткое нажатие + ожидание 200 мс + долгое нажатие == измените цветовую температуру с ~ 2400k> ~ 4000k, пока вы не отпустите кнопку.
  4. [КНОПКА ВНИЗ] Двойное нажатие == ничего не делает (кстати, одно нажатие выключит свет в обычном режиме)

Кроме того, что касается проблемы с трансляцией, мне удалось заставить ее работать. Я думаю, что раньше мои привязки были немного неправильными.

Но то, что нам нужно более или менее для отключения всех остальных команд широковещательной передачи, это совсем другая история.
Я могу ошибаться в своем коде и привязывать только некоторую конечную точку.

Это работает для меня:

  • Вкл. / Выкл. Для шлюза для конечных точек 1 и 2
  • Контроль уровня на шлюз для конечных точек 1 и 2
  • Управление цветом для шлюза для конечной точки 3

Изменить : я повторно записал команды из журналов после моих экспериментов. Я немного смущен тем, что происходит, потому что иногда для нажатия одной кнопки есть несколько команд. Я также заметил, что отображение для средней кнопки изменилось. Интересно, приводит ли обновление привязок к другому поведению кнопки?

Вот вам пастебин: https://pastebin.com/e03KBuCw

Я не знаю, если это ошибка, но аккумулятор в моем переключателе разрядился за ночь. Вчера утром его разрядили и я заменил. Аппарат вчера работал нормально, но сейчас снова пусто.
Я использую https://github.com/olicooper/deconz-rest-plugin/commit/bc2fc1071ed4265712bcc19032c3a1792f7c5bc6

Очень интересно, у меня есть одна из этих кнопок, и я этого не испытывал. Я отключил отчет о батарее, чтобы вы могли проверить его. У вас больше 1 таких кнопок и возникает ли та же проблема? Я повторно добавлю свою кнопку со старым кодом, чтобы посмотреть, случится ли это и с моей.
Я также обновил нумерацию кнопок, потому что она была неправильной :)

Итак, если использовать код, который я делаю

Вкл. / Выкл. Для шлюза для конечных точек 1 и 2
Контроль уровня на шлюз для конечных точек 1 и 2
Управление цветом для шлюза для конечной точки 3

Это отключит широковещательную команду?

И да, привязка может фильтровать команду, например, если я привяжу только кластер управления цветом к конечной точке 3, вы никогда не получите команду управления уровнем от этой конечной точки.

Это просто выбор, нам не нужны все команды, чтобы использовать этот пульт. Три крепления наверху - это те, которые используются в таблице датчиков.

Что касается батареи, посмотрите в «кластере управления опросом», я думаю, внутри вы можете установить период объединения для батареи, например.
Если вы собираетесь слишком быстро, срок службы батареи сокращается.

И есть возможность отключить его.

По умолчанию код оставьте настройку как есть.

У меня только одно из этих устройств. Могу я как-нибудь увидеть расход батареи? Я пока подключил устройство к источнику питания, чтобы не менять батарейки каждый день.

В deCONZ в кластере «Конфигурация питания» вы можете увидеть атрибут оставшегося заряда батареи. В кластере «Управление опросом» можно настроить некоторые атрибуты ( rw ), поэтому вы можете решить проблемы с расходом заряда батареи, изменив интервал опроса на большее число или вернув устройство к заводским настройкам по умолчанию ( Не знаю, как это сделать). Также возможно, у вас залипают кнопки или устройство повреждено водой?

@Smanar есть ли способ удалить «удаленные» датчики в API? Я хочу начать все сначала, сбросив переключатель и удалив всю информацию из deCONZ и т. Д., Чтобы я знал, что работаю с чистого листа.

@bphermansson , и если после советов @olicooper у вас все еще есть проблема, вы можете запустить deconz в режиме отладки, чтобы увидеть, не возникла ли проблема из deconz.
Если вы ничего не касаетесь и каждую минуту получаете запрос к устройству или от устройства, это ненормально.

Чтобы удалить датчик в API, вы можете использовать
curl -X DELETE http://IP:PORT/api/KEY/sensors/ID

Кстати, я ищу код, чтобы сделать только необходимую привязку, и для этого пока нет ничего, нам действительно нужно проверить, действительно ли это что-то важное.

Я видел, что вы уже внесли изменения в датчик смеси, вы уже тестировали его?

И ты проверишь

  • привязку, которую нам не нужно делать (но я не думаю, что это проблема)
  • привязку, которую мы упускаем, чтобы избежать braodcast.

Спасибо за советы! Устройство выглядит нормально, и я не думаю, что он был рядом с водой. Странный. Интервал регистрации установлен на 14400, длинный опрос - 20, а короткий опрос - 2. Это нормальные значения?

Эти значения неверны, вы нажимали "читать" в deCONZ, а затем нажимали кнопку на пульте дистанционного управления перед чтением значений? Мои следующие:

  • Интервал регистрации = 0
  • Короткий опрос = 4
  • Длинный опрос = 48000
  • Таймаут быстрого опроса = 720

@olicooper вы пробовали, работает ли код для объединения трех устройств в одно?

Извините, я был занят, поэтому не смог, но я постараюсь сделать это завтра. Я не понимаю, что вы имеете в виду под словом «микс»?

В первой версии у вас есть 1 запись в API по конечной точке (то есть 3).
С кодом, которым вы пользуетесь банкоматом, у вас всего 1 запись.

Я сбросил deconz до заводских настроек по умолчанию и снова добавил пульт для тестирования с моим последним кодом: https://github.com/olicooper/deconz-rest-plugin/commit/f6ed67b4500fef7157c03fa9721e9d77c1882b59

Привязка 1 выходного кластера к шлюзу (конечная точка 1) для каждой конечной точки на удаленном устройстве (все 3 кнопки) останавливает _все_ широковещательные сообщения при нажатии кнопок. Затем я просмотрел журналы и не смог увидеть все события кнопок, потому что у меня не было всех необходимых привязок, поэтому я добавил их, пока не смог снова увидеть все события кнопок.

Свяжите все это с конечной точкой 1 шлюза:

  • эп: 1, кластер: 0x0006
  • эп: 1, кластер: 0x0008
  • эп: 2, кластер: 0x0006
  • эп: 2, кластер: 0x0008
  • эп: 3, кластер: 0x0008
  • эп: 3, кластер: 0x0300

@Smanar Это то, что вам нужно?
Я бы хотел добавить одну функцию для этой кнопки, но я не знаю, как это сделать, вы можете мне посоветовать? ...
Центральная кнопка: короткое нажатие, затем длительное нажатие

  • Изменяет режим цвета лампочки (кластер: 0x0008, атрибут: 0x0008) на «Цветовая температура».
  • Циклически изменяет температуру (кластер: 0x0008, атрибут: 0x0007) от ct: 485 (оранжевый)> ct: 370 (белый) до отпускания кнопки.

Вы можете увидеть мой pastebin из другого моего комментария, в котором есть журналы команд (строка 166): https://pastebin.com/e03KBuCw

Еще хотелось бы, чтобы заработал отчет о батарее.

Спасибо, @Smanar 👍!

Вы можете использовать свой собственный код, я основываю свой на вашем ^^.

Для отсутствующей команды, которую я сделал, как для 4 кнопок, я включил параметр, до этой модификации код использовал только ep, cluster и cmd для кластера 0300. https://github.com/Smanar/deconz-rest-plugin / commit / b02ae14f6d6fe2fe2a5d244619a9a3906c202e20
Итак, я думаю, у вас теперь будет какая-то неработающая команда для средней кнопки, но вы сможете использовать больше команд.

Я не могу использовать ваш журнал, потому что

21: 50: 29: 636 Режим MyDebug 5.3: 1 эп: 0x03 кластер: 0x0300 cmd: 0x0A sPrevD: 0xFF

В строке отладки не отображается параметр.
Но теперь у вас будет больше «без обработчика кнопок для», так что будет легче закончить таблицу.

Итак, вы подтверждаете, что код не связывает сам себя, вам нужно сделать привязку вручную, чтобы избежать широковещательной команды?
В логике кода (я думаю) привязка выполняется в функции checkSensorBindingsForClientClusters ()
Итак, если все в порядке, вы увидите в журнале «создание привязки для клиентского кластера» с кластером 0008 0006 0300 и конечной точкой 1/2/3.
Возможно, вам придется «пропустить привязки проверки для клиентских кластеров». Если да, то я знаю, в чем проблема, моя вина.
Это также может объяснить, почему не работает отчет о батарее, не работают все привязки.

Кстати, вы смотрели в API, сколько устройств код создает банкомат?

Теперь у меня есть отчет о батарее: https://github.com/olicooper/deconz-rest-plugin/commit/c24519a3dac4f2a76d3fbe905a58c7848f264901

Кстати, вы смотрели в API, сколько устройств код создает банкомат?

В конечной точке /sensor API создано 3 датчика (по одному для каждой кнопки). Батарея в процентах
также отображается для каждого устройства 🎉 Я прочитал ваш комментарий https://github.com/dresden-elektronik/deconz-rest-plugin/issues/374#issuecomment -636339677, и я предполагаю, что это означает, что «смешивание» устройств не работает если мы увидим 3 вместо 1?

Обновление :
Я обновил свой код вашими изменениями и повторно протестировал (https://github.com/olicooper/deconz-rest-plugin/commit/275d615dd040f38a36bb2470b0e34cc784f328b0). Я не вижу никаких журналов с «создать привязку для клиентского кластера» или «пропустить проверку привязки для клиентских кластеров». При удалении и повторном добавлении кнопки мне нужно вручную добавить привязки, чтобы остановить ее трансляцию.

Итак, я думаю, у вас теперь будет какая-то неработающая команда для средней кнопки, но вы сможете использовать больше команд.

Кажется, что все кнопки работают так же, как и раньше, поэтому я не думаю, что что-то изменилось.

Хотя уровень заряда батареи сообщался до обновления, теперь, когда я удалил кнопку, отчет о батарее снова прекратился даже после привязки кластера питания (0x001) к шлюзу.
У меня также появляются эти журналы, которые могут быть связаны с отчетом о батарее: https://pastebin.com/4asYnrNW

да, значит, микширование не работает.
Привязка тоже не работает

До этой модификации код не мог различать

{Sensor :: ModeScenes, 0x03, 0x0300, 0x0A, 0x72, S_BUTTON_3 + S_BUTTON_ACTION_SHORT_RELEASED, "0"},

и

{Sensor :: ModeScenes, 0x03, 0x0300, 0x0A, 0x00, S_BUTTON_3 + S_BUTTON_ACTION_SHORT_RELEASED, "0"},

Например, для того, чтобы вы когда-нибудь возвращали одно и то же значение для разных действий, теперь код может также проверять значение параметра.

Со своей стороны я внес некоторые изменения https://github.com/Smanar/deconz-rest-plugin/commit/d85aabe36960f616abcf65f8bba33fdb0a140404

  • Включена привязка для POWER_CONFIGURATION_CLUSTER_ID, мы читаем значение, но не включаем его ^^
  • добавьте дополнительную строку отладки, чтобы проверить, почему другие привязки не работают, я думаю, это из-за создания группы.

Для набора устройств вы можете дать мне запись JSON с устройства, я предполагаю, что запись создается в кластере COMMISSIONING_CLUSTER_ID, потому что на другом устройстве запись имеет * -1000 в UniqueID, но вы можете иметь другую в настоящее время.
Код, который я использую для этого, находится в строке 4073 de_web_plugin.cpp.

Можете ли вы дать мне запись JSON с устройства для микса устройств?

{
    "7": {
        "config": {
            "group": null,
            "on": true,
            "reachable": true
        },
        "ep": 3,
        "etag": "bf6c0e7f54438e380cb97310c68cb379",
        "lastseen": "2020-05-31T08:29:50.955",
        "manufacturername": "OSRAM",
        "mode": 1,
        "modelid": "Lightify Switch Mini",
        "name": "Lightify Switch Mini",
        "state": {
            "buttonevent": 3002,
            "lastupdated": "2020-05-31T08:18:27.739"
        },
        "swversion": "e.1.11.0M",
        "type": "ZHASwitch",
        "uniqueid": "00:0d:6f:00:xx:xx:xx:xx-03-0006"
    }
}

Например, это для того, что вы когда-нибудь получаете одно и то же значение для разных действий.

Журналы показывают правильное событие, когда я нажимаю каждую из кнопок, поэтому я думаю, что сопоставления в порядке, и он знает, какие кнопки я нажал.

Я объединю ваш код с моим, перепроверю и скоро дам вам логи. 👍

Хорошо, я объединил и перестроил ваш код, затем удалил и отсоединил кнопку от deconz, затем повторно добавил кнопку через «добавить новый датчик» в Phoscon. Это логи: https://pastebin.com/hh2cahnE

Я не вижу «MyDebug 15» и т. Д.
Надеюсь, это поможет!

Итак, устройство было создано в кластере 0006.
Поэтому я отключил создание всех записей в POWER_CONFIGURATION_CLUSTER_ID и переместил свой код. Я думаю, ты поймешь, что я пытаюсь сделать
Если я прав, запись будет создана только во время анализа кластера, но только для конечной точки 0x01.

Чтобы добавить «двойное нажатие средней кнопки», мне нужен новый «обработчик кнопки без кнопки», потому что поле параметров не является диаплеером в ваших предыдущих журналах.

Итак, в вашем журнале код создания

10: 43: 53: 056 0x000D6F00XXXXXXXX (Lightify Switch Mini) создать привязку для отчета об атрибутах кластера 0x0001 на конечной точке 0x01

Так что с батареей вроде нормально.

И для других

пропустить привязки проверки для клиентских кластеров (без группы)

Это потому, что я не включил группу. Моей первой целью было не использовать группу, но в коде нет ничего, что могло бы сделать прямое простое связывание без группы.
Итак, в новом коде у вас будет группа во время создания устройства, и все привязки будут использовать эту группу.
На данный момент я имитирую код busch-jaeger https://github.com/Smanar/deconz-rest-plugin/commit/5d22b7e663896c6c58e963d81b24d22532fedbd0

Я пробовал ваши изменения. При добавлении датчика с нуля deconz, кажется, идентифицирует все конечные точки кнопки, не нажимая кнопки. Кластеры OnOff (0x0006) и Level Control (0x0008) конечной точки 1 (кнопка UP) больше не транслируются при нажатии кнопки, и я все еще могу видеть нажатие кнопки в журналах, но две другие конечные точки / кнопки все еще транслируются .

Теперь я вижу дополнительные журналы, например:

13:52:50:960 MAC poll fastEnddeviceProbe() 0x000D6F00XXXXXXXX
13:52:50:960 0x000D6F00XXXXXXXX (Lightify Switch Mini) create binding for attribute reporting of cluster 0x0001 on endpoint 0x01
13:52:50:961 discard double entry in binding queue (size: 3) for for 0x000D6F00XXXXXXXX, cluster 0x0001
13:52:50:961 MyDebug 11
13:52:50:961 MyDebug 12
13:52:50:961 MyDebug Bind 0 mid:x�u
13:52:50:961 MyDebug 13
13:52:50:962 MyDebug 14
13:52:50:962 MyDebug 15
13:52:50:962 0x000D6F00XXXXXXXX [Lightify Switch Mini] create binding for client cluster 0x0006 on endpoint 0x01
13:52:50:962 discard double entry in binding queue (size: 3) for for 0x000D6F00XXXXXXXX, cluster 0x0006
13:52:50:964 0x000D6F00XXXXXXXX [Lightify Switch Mini] create binding for client cluster 0x0008 on endpoint 0x01
13:52:50:964 queue binding task for 0x000D6F00XXXXXXXX, cluster 0x0008
13:52:50:964 0x000D6F00XXXXXXXX [Lightify Switch Mini] create binding for client cluster 0x0300 on endpoint 0x01
13:52:50:965 discard double entry in binding queue (size: 4) for for 0x000D6F00XXXXXXXX, cluster 0x0300

Отчеты о батарее по-прежнему не работают, поскольку значение в API все еще равно нулю.

У вас нет больше строк после этого журнала?
Код сначала анализирует конечную точку, затем кластеры, поэтому, если я прав, у вас будет такая же строка для двух других конечных точек сразу после. Или сообщение об ошибке?

Что касается батареи, возможно, вам понадобится время, чтобы получить первый отчет.

так что, если я прав, у вас будет такая же строка для двух других

Есть 6 записей со следующими точными строками:

13: 52: 50: 962 0x000D6F00XXXXXXXX [Lightify Switch Mini] создать привязку для клиентского кластера 0x0006 на конечной точке 0x01
13: 52: 50: 964 0x000D6F00XXXXXXXX [Lightify Switch Mini] создать привязку для клиентского кластера 0x0008 на конечной точке 0x01
13: 52: 50: 964 0x000D6F00XXXXXXXX [Lightify Switch Mini] создать привязку для клиентского кластера 0x0300 на конечной точке 0x01

Насколько я могу судить, привязки происходят только на конечной точке 1. Кажется, что конечной точке 1 назначена только одна группа, поэтому цикл for имеет только одну итерацию https://github.com/olicooper/deconz-rest-plugin/blob/20478458678eb6fc619cd2000ef81cf6ef3d567a/bindings.cpp#L2663
Я чувствую, что нужно добавить привязки кластера для всех конечных точек.

Я добавил в код MyDebug 20 и получаю такие журналы:

15:22:33:371 MyDebug 20 addSensorNode cluster: 0x0005 ep: 0x01
15:22:33:371 MyDebug 20 addSensorNode cluster: 0x0006 ep: 0x01
15:22:33:371 MyDebug 20 addSensorNode cluster: 0x0008 ep: 0x01
15:22:33:376 SensorNode 4: Switch 4 added
15:22:33:378 MyDebug 20 addSensorNode cluster: 0x0005 ep: 0x02
15:22:33:378 MyDebug 20 addSensorNode cluster: 0x0006 ep: 0x02
15:22:33:378 MyDebug 20 addSensorNode cluster: 0x0008 ep: 0x02
15:22:33:383 SensorNode 8: Switch 8 added
15:22:33:384 MyDebug 20 addSensorNode cluster: 0x0005 ep: 0x03
15:22:33:385 MyDebug 20 addSensorNode cluster: 0x0006 ep: 0x03
15:22:33:385 MyDebug 20 addSensorNode cluster: 0x0008 ep: 0x03
15:22:33:389 SensorNode 9: Switch 9 added

Извините, это занимает так много времени 😢 Я буду очень рад, когда это будет закончено!

То же самое, лол действительно не повезло с этим устройством.

Но волшебство здесь https://github.com/olicooper/deconz-rest-plugin/blob/master/bindings.cpp#L2521

В этой части добавляем 3 кластера и 3 конечные точки, поэтому я не понимаю, почему он зацикливается только на первом ...
Может попробовать поставить отладку по переменной srcEndpoints?
Если код хороший, у вас будет

13:52:50:961 MyDebug 13
13:52:50:962 MyDebug 14
13:52:50:962 MyDebug 15
3 bindings
13:52:50:962 MyDebug 14
13:52:50:962 MyDebug 15
3 bindings
13:52:50:962 MyDebug 14
13:52:50:962 MyDebug 15
3 bindings

Деталь, которую вы изменили, предназначена не для привязки (не напрямую), а для создания датчика.

Редактировать:
Ха, возможно, gids.size ().

Хорошо, у меня есть хак, чтобы попробовать https://github.com/Smanar/deconz-rest-plugin/commit/10bc4388dc03e6e5a3e7fe7c45da5ab7e7e1eae3

Но это действительно что-то уродливое.

Если у нас все еще есть проблемы с этим, я думаю, что сделаю функцию tu make bind без группы.

Ваш хак работает! Все кнопки автоматически привязываются ... Но при добавлении сенсора в deconz происходит МНОГО повторяющихся логов, поэтому я думаю, что что-то не так. На добавление датчика ушло ~ 1 мин, а строка MyDebug 14 gid: 1 повторялась в журналах 396 раз. Он основан на этом коде https://github.com/olicooper/deconz-rest-plugin/commit/4f4281f76643fc0143c02aac2da8da0c432ef13b

Вот пример: https://pastebin.com/B8x0xB7A Я добавил несколько дополнительных журналов, чтобы помочь вам.

И это всегда одна и та же строка журнала?

Потому что я не понимаю, почему на это уходит 1 мин.
Код создает команду привязки 9 в списке очереди (мы можем уменьшить это число) в первой части, а затем просто сказать, что они все еще в очереди, и поэтому он ждет готовности датчика, прежде чем отправлять их (и не отправлять его снова)

У вас еще есть полный журнал?

У нас может быть проблема, если устройству требуется 1 мин, чтобы быть готовым, возможно, код пытается отправить команду более 1 раза

21: 52: 46: 390 задача привязки очереди для 0x000D6F00XXXXXXXX, кластер 0x0006

Это один из самых важных, вам нужно иметь только 2/3 максимального времени для этой строки (по кластеру и конечной точке)

21: 52: 46: 392 отменить двойную запись в очереди привязки (размер: 9) для 0x000D6F00XXXXXXXX, кластер 0x0006

Это просто для информации

Аккумуляторное устройство работает медленно, и мы пытаемся отправить команду привязки 9, это не проблема, потому что код использует список очереди, но

  • Нужно проверить, не замедляют ли включение команды.
  • Необходимо проверить, не пытается ли код сделать слишком много запросов.

Думаю, можно тоже отключить какую-то "обратную проверку", посмотрю позже.

Кстати, эта строка странная

21: 52: 46: 392 анонс устройства 0x000D6F00XXXXXXXX (0x947A) Возможности Mac 0x80

Сколько у тебя времени? С тем же идентификатором сети (0x947A)?

Да, у меня есть журналы, но их дезинфекция займет слишком много времени, а они содержат более 8000 строк.

Это один из самых важных, вам нужно иметь только 2/3 максимального времени для этой строки (по кластеру и конечной точке)

Это все они (всего 10). В 21:52:46:390 отображаются журналы queue binding task , затем 100+ MyDebug 14 gid , затем еще один queue binding task в 21:52:56:426 для конечной точки 1:

21:52:46:390 MyDebug 14 gid: 1
21:52:46:390 queue binding task for 0x000D6F00XXXXXXXX, cluster 0x0006
21:52:46:390 queue binding task for 0x000D6F00XXXXXXXX, cluster 0x0008
21:52:46:390 queue binding task for 0x000D6F00XXXXXXXX, cluster 0x0300
21:52:46:390 MyDebug 14 gid: 1
21:52:46:390 queue binding task for 0x000D6F00XXXXXXXX, cluster 0x0006
21:52:46:390 queue binding task for 0x000D6F00XXXXXXXX, cluster 0x0008
21:52:46:390 queue binding task for 0x000D6F00XXXXXXXX, cluster 0x0300
21:52:46:390 MyDebug 14 gid: 1
21:52:46:390 queue binding task for 0x000D6F00XXXXXXXX, cluster 0x0006
21:52:46:391 queue binding task for 0x000D6F00XXXXXXXX, cluster 0x0008
21:52:46:391 queue binding task for 0x000D6F00XXXXXXXX, cluster 0x0300

/// Lots of logs that read e.g.:
///
/// 21:52:46:402 MyDebug 14 gid: 1
/// 21:52:46:402 discard double entry in binding queue (size: 9) for for 0x000D6F00XXXXXXXX, cluster 0x0006
///

21:52:56:416 APS-DATA.indication from child 0x947A
21:52:56:420 void deCONZ::zmNode::setFetched(deCONZ::RequestId, bool) fetched item: 5, node: 0x947A
21:52:56:420 DB pushZdpDescriptorDb()
21:52:56:421 FP indication 0x0000 / 0x8004 (0x000D6F00XXXXXXXX / 0x947A)
21:52:56:421                       ...     (0x000D6F00XXXXXXXX / 0x947A)
21:52:56:421 ZDP indication search sensors 0x000D6F00XXXXXXXX (0x947A) cluster 0x8004
21:52:56:421 ZDP indication search sensors 0x000D6F00XXXXXXXX (0x947A) clear timeout on cluster 0x8004
21:52:56:426 0x000D6F00XXXXXXXX (Lightify Switch Mini) create binding for attribute reporting of cluster 0x0001 on endpoint 0x01
21:52:56:426 queue binding task for 0x000D6F00XXXXXXXX, cluster 0x0001

Сколько у тебя времени? С тем же идентификатором сети (0x947A)?

Всего 2 записи:

21:52:46:392    nwk address changed 0x0000 -> 0x947A [2]
21:52:46:392 device announce 0x000D6F00XXXXXXXX (0x947A) mac capabilities 0x80
21:52:46:392 set fast probe address to 0x000D6F00XXXXXXXX (0x947A)
21:52:46:392 FP indication 0x0000 / 0x0013 (0x000D6F00XXXXXXXX / 0x947A)
21:52:46:392                       ...     (0x000D6F00XXXXXXXX / 0x947A)
21:52:46:392 device announce 0x000D6F00XXXXXXXX (0x947A) mac capabilities 0x80
21:52:46:398 discard sensor config push for config/reachable (already pushed)

У меня есть 3 записи nwk address changed 0x0000 -> 0x947A которые происходят сразу после начала привязки устройства ( queue binding task ).

Почему тогда столько журналов discard double entry ? Кажется неправильным иметь так много, потому что датчик не в сети? Я держу пульт рядом со шлюзом, поэтому это не проблема с сигналом, а батарея все еще в хорошем состоянии, несмотря на все эти испытания, ха-ха 🤣.

лол, да, батарейка была одной из моих проблем.

Я только что закончил завтракать в банкомате, посмотрю код, но

отменить двойную запись в очереди привязки (размер: 9) для 0x000D6F00XXXXXXXX, кластер 0x0006

Не проблема

21: 52: 46: 390 задача привязки очереди для 0x000D6F00XXXXXXXX, кластер 0x0006

это проблема. Но если я правильно понял, у вас есть 9-я серия запросов в 21:52:46 и еще одна в 21:52:56?

Так что это не проблема для устройства, 9 запросов составляют 2 раза с интервалом в 10 секунд, не может заморозить устройство на 1 минуту.

Я постараюсь уменьшить количество спама.

Датчик занял ~ 1 мин.

Это означает, что когда вы использовали фоскон для его включения, для получения сообщения "прочитано" потребовалось 1 миллион?

Но если я правильно понял, у вас есть запрос серии 9 в 21:52:46 и еще один в 21:52:56

Да, это правильно.

Это означает, что когда вы использовали фоскон для его включения, для получения сообщения "прочитано" потребуется 1 мин.

Думаю попробую еще раз добавить сенсор на тест. Я помню, что индикатор сообщения для кнопки некоторое время мигал зеленым на deCONZ, прежде чем все было настроено. Может, это был разовый случай, и такого больше не повторится?

Ха?
Я не думаю, что свет на кнопке может зависеть от деконз.
Это аппаратно, не думаю, что устройство ждет полного включения, думаю, это что-то по времени.

И я проверил код, функция checkSensorBindingsForClientClusters () действительно используется в очень значительной части кода. Использование, возможно, нормальное, вы можете попробовать другой коммутатор другой марки.
Но, как я уже сказал, я не думаю, что эта функция является чем-то тяжелым для conbee / code. Попрошу разлада для уверенности.

Я не очень хорошо это объяснил .. Запись узла на deCONZ имеет индикатор состояния узла слева. Он мигал зеленым дольше, чем я обычно вижу.

вы можете попробовать другой коммутатор от другого бренда

Да хорошая идея. У меня одна кнопка Xiaomi.

Я работаю сегодня, поэтому не буду так быстро тестировать, как обычно :)

Xiaomi не использует привязку ^^.

Я прошу другого разработчика банкомата.

Редактировать:
Да ладно на узле, я думал, что это на устройстве, зеленый означает объединение.

Ну ладно, может, тогда и не получится. У меня есть 3 лампы Osram, 2 кнопки Osram, 1 кнопка Xiaomi и 1 датчик Xiaomi PIR.

Могу, если не отвечу, сделаю тест на своей стороне.

Но если все в порядке, нам все равно нужно проверить возврат батареи и дважды щелкнуть по центральной кнопке.

Теперь это устройство создает группу, поэтому вы также можете использовать функции прямого подключения.

Итак, у меня есть тест с пультом дистанционного управления ikea, и у меня может быть 3 цикла для полной привязки. Но действительно далеко до ваших 100 циклов.

Я проверяю ваши журналы и многое пропускаю, я не «создал привязку для клиентского кластера» в отладке 14 и не все «привязал успех».

На пульте ikea между 2 проверками есть 10 с, а на вашем нет (всего 1 мс)

21: 52: 46: 390 задача привязки очереди для 0x000D6F00XXXXXXXX, кластер 0x0006
21: 52: 46: 391 отменить двойную запись в очереди привязки (размер: 9) для 0x000D6F00XXXXXXXX, кластер 0x0006

Я думаю, что где-то в коде эта функция залита спамом, но я не могу найти где.
Если у вас есть полные журналы, проверьте, можете ли вы найти предыдущую функцию, которая вызывает эту. Или в последней попытке поместите «My debug X» непосредственно перед вызовом функции checkSensorBindingsForClientClusters ()

Редактировать:
Найди это

21: 52: 46: 390 DeviceAnnce of SensorNode: 0x000D6F00XXXXXXXX

Но это как запрос на присоединение к спамеру вашего устройства ....

Попробуйте поместить строку отладки в void DeRestPluginPrivate :: handleDeviceAnnceIndication (const deCONZ :: ApsDataIndication & ind)

Возможно, у вас что-то не так в петле
for (; si != send; ++si)

Эта часть кода может объяснить ошибку.

  • У вас есть одно повторное присоединение к вашему устройству
  • он вызывает функцию handleDeviceAnnceIndication
  • ошибка в этом цикле
  • спам отладки "DeviceAnnce of SensorNode:" и функция checkSensorBindingsForClientClusters

У меня нет «создать привязку для клиентского кластера»

Это все журналы «создать привязку для ...» (для «клиентского кластера» их нет):

21:48:32:349 create binding for attribute reporting of cluster 0x0006
21:48:32:349 create binding for attribute reporting of cluster 0x0008
21:48:32:349 create binding for attribute reporting of cluster 0x0300
21:52:56:426 0x000D6F00XXXXXXXX (Lightify Switch Mini) create binding for attribute reporting of cluster 0x0001 on endpoint 0x01
21:53:02:436 0x000D6F00XXXXXXXX (Lightify Switch Mini) create binding for attribute reporting of cluster 0x0001 on endpoint 0x01
21:53:08:477 0x000D6F00XXXXXXXX (Lightify Switch Mini) create binding for attribute reporting of cluster 0x0001 on endpoint 0x01
21:53:14:523 0x000D6F00XXXXXXXX (Lightify Switch Mini) create binding for attribute reporting of cluster 0x0001 on endpoint 0x01
21:53:20:543 0x000D6F00XXXXXXXX (Lightify Switch Mini) create binding for attribute reporting of cluster 0x0001 on endpoint 0x01
21:53:26:557 0x000D6F00XXXXXXXX (Lightify Switch Mini) create binding for attribute reporting of cluster 0x0001 on endpoint 0x01

Имеется 1 журнал "успешной привязки" (он находился в середине журналов привязки "спама"):

21:52:58:425 Bind response success for 0x000d6f00XXXXXXXX ep: 0x01 cluster: 0x0001

Теперь я смогу провести еще один тест. Могу ли я удалить zll.db и deCONZ создаст новый? Это был бы самый простой способ вернуться к заводским настройкам по умолчанию, если я смогу.

Нет, я думаю, что ваша установка в порядке, но журнал, который я ищу, это «создать привязку для клиентского кластера» в строке 2669

  • создать привязку для атрибутивного отчета кластера: необходимо проверить на полезность этого
  • создание привязки для отчетов об атрибутах кластера 0x0001 на конечной точке 0x01 для батареи каждые 6 секунд

Но зачем нам 6 попыток привязки?
Эта функция тоже находится в подозрительном цикле (в предыдущем выпуске)

Я действительно думаю, что есть проблема в функции handleDeviceAnnceIndication (), она может объяснить все наши ошибки.

@olicooper

Я могу объяснить почему, но почти уверен, что

std :: vector:: итератор si = sensor.begin ();
std :: vector:: итератор send = sensor.end ();
для (; si! = отправить; ++ si)

Сделайте более 1 петли, для этого может быть всего 1 мс свеклы.
21:52:46:390 DeviceAnnce of SensorNode: 0x000D6F00XXXXXXXX [1]

и
21:52:46:391 DeviceAnnce of SensorNode: 0x000D6F00XXXXXXXX [1]

И это тоже объясняет спам.

Конечно, вы можете для примера использовать

       DBG_Printf(DBG_INFO, "DeviceAnnce of SensorNode: 0x%016llX [1]\n", si->address().ext());
       DBG_Printf(DBG_INFO, "Mydebug 22: 0x%02X\n", si->fingerPrint().endpoint);

В районе строки 13315, я думаю, у вас будет более одного сенсорного узла и, возможно, с другой конечной точкой.

И

DBG_Printf(DBG_INFO, "Mydebug 23: %d\n", sensors.size());

Я запустил его снова. В первый раз датчик по какой-то причине не добавлялся, поэтому я перезапустил деконз, и он заработал во второй раз.

Я остановил все, что обменивается данными, кроме 1 лампочки и кнопки, чтобы журналы были чище.
Вот более полный журнал, который, я надеюсь, поможет вам больше: https://pastebin.com/dSavRvte
Я добавил больше строк отладки в разных местах, но я не вижу их много в журналах. Он основан на этой фиксации: https://github.com/olicooper/deconz-rest-plugin/commit/ac331a86d3f2c6a741c3fddf5d802cc18f4e06e3

Я наблюдал за deconz, когда он добавлял датчик, и увидел "индикатор состояния узла" [[несколько раз мигал синим, затем несколько раз зеленым]] ~ 3-5 раз.

Изменить: я не видел вашего предыдущего сообщения до сих пор. Я могу добавить эту строку отладки и посмотреть, что произойдет.

Я добавил MyDebug 22 в свой код ниже DeviceAnnce of SensorNode (см. Https://github.com/olicooper/deconz-rest-plugin/commit/edd7ca24925c5e30ad3483faceb6ac3ba751fb10). Это журналы, которые были выведены:

20:50:00:394 APS-DATA.indication from child 0x4328
20:50:00:395 MyDebug apsdeDataIndication profileId:0x0000, cid:0x0013
20:50:00:395 MyDebug DeviceAnnce nodesSize: 2, nwk: 0x4328
20:50:00:395 MyDebug DeviceAnnce 1
20:50:00:395 DeviceAnnce of SensorNode: 0x000D6F00XXXXXXXX [1]
20:50:00:395 Mydebug 22: 0x01
20:50:00:395 MyDebug 11
20:50:00:395 DeviceAnnce of SensorNode: 0x000D6F00XXXXXXXX [1]
20:50:00:395 Mydebug 22: 0x02
20:50:00:395 MyDebug 11
20:50:00:395 DeviceAnnce of SensorNode: 0x000D6F00XXXXXXXX [1]
20:50:00:395 Mydebug 22: 0x03
20:50:00:395 MyDebug 11
20:50:00:395 MyDebug DeviceAnnce 2 foundCount:3
20:50:00:395 MyDebug DeviceAnnce 3 sSenSt:0, apsCtrl:1
20:50:00:399 discard sensor config push for config/reachable (already pushed)
20:50:00:402 discard sensor config push for config/reachable (already pushed)
20:50:00:405 discard sensor config push for config/reachable (already pushed)

Приятно ^^ Это хорошие новости. Спасибо, я не знал этого рабочего режима, очень полезно знать.

Итак, теперь мы знаем, почему у вас спам, и можем осветить код, дайте мне 1 час.

Итак, на последнем коде https://github.com/Smanar/deconz-rest-plugin/commit/2cf236599cd14e5ba764b07e430e24d916989bf9

  • Привязка к кластеру POWER_CONFIGURATION_CLUSTER_ID Только для кластера 0x01.
  • Уменьшить привязку спама.
  • упростить управление группой.

Таким образом, у вас будет на 2 привязки меньше для батареи и на 24 меньше для кластера 006 008 300.

Идентифицируйте, если сочетание устройств сработало, но теперь у вас будет отчет о заряде батареи только на одном из них, если у вас все еще есть 3 записи.

Спасибо за обновления! Я их проверил, и мы почти у цели ...

По какой-то причине не все кнопки закрепляются правильно. Кажется, привязки случайно пропущены.
Я соединил свою первую кнопку, но «короткое нажатие» (конечная точка 2, кластер: 006) не привязалось, поэтому я вручную связал ее в deCONZ, и после этого она заработала.
Затем я снова проверил его с другой моей кнопкой, и на этот раз кнопки «по центру» / «по центру» (конечная точка 3, кластер: 300) не работали. Интересно, что для центральных кнопок нет широковещательного сообщения, хотя ни одна из привязок не работала для центральной кнопки.

Обновление : я снова соединил вторую кнопку с deconz, и все конечные точки работали. Я не уверен, что это нормально или нет. Может быть, полная настройка занимает действительно много времени?

С отчетом о батарее все в порядке, я думаю, я получил обновление батареи на одной из кнопок, поэтому я буду ждать, пока обновится и другая.

Идентификатор, если комбинация устройств сработала

Я все еще вижу 3 записи в REST API.

но теперь у вас будет отчет о заряде батареи только для одного из них, если у вас все еще есть 3 записи.

Да, для каждой кнопки существует только одна запись "battery": ... на конечной точке 1.

Я также исправил неправильную привязку в sensor.cpp . Раньше это работало, но в последние несколько дней все изменилось. Новая привязка работает для обеих кнопок.

Вот записи:

{    
    "5": {
        "config": {
            "battery": null,
            "group": "7",
            "on": true,
            "reachable": true
        },
        "ep": 1,
        "etag": "37f8a1ab352fe06f52d0563231bcdc77",
        "lastseen": "2020-06-03T09:50:35.809",
        "manufacturername": "OSRAM",
        "mode": 1,
        "modelid": "Lightify Switch Mini",
        "name": "Lightify Switch Mini (2)",
        "state": {
            "buttonevent": 1002,
            "lastupdated": "2020-06-03T09:50:29.296"
        },
        "swversion": "e.1.11.0M",
        "type": "ZHASwitch",
        "uniqueid": "00:0d:6f:00:XX:XX:XX:XX-01-0006"
    },
    "6": {
        "config": {
            "group": "6",
            "on": true,
            "reachable": true
        },
        "ep": 2,
        "etag": "7e64fba0a516783aea79d7b9c8fe0eb8",
        "lastseen": "2020-06-03T09:50:35.809",
        "manufacturername": "OSRAM",
        "mode": 1,
        "modelid": "Lightify Switch Mini",
        "name": "Lightify Switch Mini (2)",
        "state": {
            "buttonevent": 2002,
            "lastupdated": "2020-06-03T09:50:26.463"
        },
        "swversion": "e.1.11.0M",
        "type": "ZHASwitch",
        "uniqueid": "00:0d:6f:00:XX:XX:XX:XX-02-0006"
    },
    "7": {
        "config": {
            "group": "7",
            "on": true,
            "reachable": true
        },
        "ep": 3,
        "etag": "eac97d698d6ecd01744bfcb1a2673072",
        "lastseen": "2020-06-03T09:50:35.810",
        "manufacturername": "OSRAM",
        "mode": 1,
        "modelid": "Lightify Switch Mini",
        "name": "Lightify Switch Mini (2)",
        "state": {
            "buttonevent": 3002,
            "lastupdated": "2020-06-03T09:50:32.256"
        },
        "swversion": "e.1.11.0M",
        "type": "ZHASwitch",
        "uniqueid": "00:0d:6f:00:XX:XX:XX:XX-03-0006"
    }
}

Пфф, это скучно. Итак, новая версия тоже https://github.com/Smanar/deconz-rest-plugin/commit/1afdf7ed0607b2b03fa151a9b3d5cd04f2bb5f9d

Так работает

  • привязка.
  • отключение трансляции.

Не работает:

  • микширование устройства (надеюсь, теперь все будет хорошо)
  • двойное нажатие средней кнопки. (запись без регистрации)

И да, это может занять некоторое время, и даже больше, если устройство перейдет в спящий режим.

Протестировано еще раз .. https://pastebin.com/XVwDMvRG

По-прежнему 3 записи датчиков в API, назначенные на 2 группы

Я не думаю, что отчет о батарее работает, хотя я оставил его на долгое время, а также пытался иногда нажимать кнопки, но статус никогда не обновлялся. Когда я делаю запрос на чтение кластера power 0x0001, статус батареи обновляется в API. Вы можете увидеть это в нижней части журналов (после того, как я нажму кнопку вверх).

  • двойное нажатие средней кнопки. (запись без регистрации)

Журналы двойного нажатия находятся в одном из моих предыдущих журналов ( log1 - строка 389 , log2 - строка 166 ). Это все, что я получил, когда нажал кнопку. Итак, я думаю, что это команды:

| конечная точка | кластер | команда | полезная нагрузка | ПРИМЕЧАНИЯ |
|: --- | --- | --- | --- | ---: |
| 0x03 | 0x0008 | 0x04 | 0xFE | центральное нажатие короткое начало |
| 0x03 | 0x0300 | 0x03 | 0xFE | центральный пресс короткий конец |
| 0x03 | 0x0300 | 0x0A | 0x72 | центральное нажатие долгое начало |
| 0x03 | 0x0300 | 0x01 | 0x00 | центральное нажатие длинным концом |

Я узнал больше о том, что происходит со светом при нажатии кнопки ..

  • Изменяет "режим" цвета света на Color temperature
  • Циклы от ct: 485 (мин.) До ct:370 (макс.)

Да, но вы должны сделать этот журнал до модификации в кластере 300

10: 44: 54: 315 Режим MyDebug 5.3: 1 эп: 0x03 кластер: 0x0008 cmd: 0x04 sPrevD: 0xFF

Таким образом, в журнале нет значения параметра и нет «обработчика кнопки» (поскольку все команды проверяют конечную точку + кластер, разница заключалась в параметре) За исключением этого параметра для выпуска после короткого нажатия + длительного нажатия, но он такой же, как " 0 долгий выпуск »

10: 44: 56: 095 нет обработчика кнопок для: Lightify Switch Mini ep: 0x03 cl: 0x0300 cmd: 0x01 pl [0]: 0x00

для микширования устройств более агрессивная функция> https://github.com/Smanar/deconz-rest-plugin/commit/7734ef859db3e0baaee201c635018f63dc0a24b8

Кстати, этот журнал настолько полезен, что из-за FastProbe все еще есть спам по атрибутам, действительно нужно проверить код завтра.

Этот код все еще сбивает меня с толку, потому что я недостаточно знаю о ZigBee, иначе я бы попытался помочь вам с кодом больше! Итак, спасибо за всю вашу работу, она очень ценится! : +1:: +1:

для микширования устройств более агрессивная функция

В deconz видна только первая конечная точка, и датчик не будет полностью инициализирован, поэтому я не думаю, что этот код будет работать. Мне потребовалось ~ 5 попыток сопряжения, чтобы устройство появилось и в деконзоре.

Таким образом, в журнале нет значения параметра

Нужно ли мне добавлять дополнительные журналы отладки или ручные привязки кластеров, чтобы получить нужные нам значения? Вот журнал нажатия кнопки с использованием последнего рабочего кода (https://github.com/olicooper/deconz-rest-plugin/commit/c9ced96d9ec32ed3dae8a4ef3430f7c1c45fc20a): https://pastebin.com/ixEWHbMX

Для двойного нажатия я действительно не уверен, у вас есть

22: 11: 55: 679 кнопка 3001 0 долгое нажатие
22: 11: 55: 989 кнопка 3002 0 короткое нажатие
22: 11: 56: 664 нет обработчика кнопок для: Lightify Switch Mini ep: 0x03 cl: 0x0300 cmd: 0x01 pl [0]: 0x01
22: 11: 56: 716 кнопка 3003 0 долгое нажатие

У вас есть действие во время двойного нажатия или после отпускания длительного нажатия (после двойного нажатия)? На шлюзе Osram / Hue

Ле отпечаток пальца тоже не тот

{"d": 2064, "ep": 1, "in": [0,1], "out": [5,5,6,6,8,8], "p": 260}
{"d": 2064, "ep": 2, "in": [0], "out": [5,6,8], "p": 260}
{"d": 2064, "ep": 3, "in": [0], "out": [5,6,8], "p": 260}

и есть 2 конечные точки в группе и 1 во второй группе .....

Так что ежедневно попробуйте> https://github.com/Smanar/deconz-rest-plugin/commit/626c96300a4a2e861a86fb9493ca3d8d624cf12c

  • Попробуйте новую группу, у вас будет 3 группы, если у вас 3 устройства.
  • Новая смесь переключателей для тестирования, с некоторой строкой отладки, менее агрессивной.

Редактировать :
Я обнаружил, почему figerprint не то же самое, у вас нет кластера 0001 на других кластерах.

Последнее тестирование: https://pastebin.com/vsxMNDxD

  • Групповое микширование работает, создан только 1 /sensor (см. Ниже) 👍

    • Группа нулевая, может это и хорошо? Раньше я заставлял световые группы появляться в Phoscon, так что надеюсь, что больше нет?

  • Сопряжение в первый раз
  • Все текущие сопоставления кнопок работают (см. Журналы) и обновляются в API
  • Однако отчет о заряде батареи требует доработки, можем ли мы опросить ep: 0x01, cl: 0x001, attr: 0x0020 когда устройство впервые появляется в сети?
{
    "config": {
        "battery": null,
        "group": null,
        "on": true,
        "reachable": true
    },
    "ep": 1,
    "etag": "5a3002d8ac2f24e9cf6a09583ec10d89",
    "lastseen": "2020-06-05T09:50:44.800",
    "manufacturername": "OSRAM",
    "mode": 1,
    "modelid": "Lightify Switch Mini",
    "name": "Lightify Switch Mini (2)",
    "state": {
        "buttonevent": 2002,
        "lastupdated": "2020-06-05T09:50:44.186"
    },
    "swversion": "e.1.11.0M",
    "type": "ZHASwitch",
    "uniqueid": "00:0d:6f:00:XX:XX:XX:XX-01-0006"
}

У вас есть действие во время двойного нажатия или после отпускания длительного нажатия

Трудно сказать, потому что журналы записываются партиями (я использую tail -f ). Думаю, это работает так:

  1. I short press затем long press -> отправлено 3 команды
  2. Затем я long press release через некоторое время -> 4-я + 5-я команда отправлена

Я думаю, что первая отправленная команда - это то, что нам нужно для обнаружения ep: 0x03, cl: 0x0008, cmd: 0x04, pl: 0xFE . Если мы можем обнаружить эту первую команду, то мы знаем, что следующие 3 команды связаны с двойным нажатием, поэтому мы можем игнорировать обычные привязки и ждать 5-й команды ep: 0x03, cl: 0x0300, cmd: 0x01, pl: 0x00

Отличная работа! 💯

Ха?
Я не понимаю, почему этот код работает лучше предыдущего ...

Для батарейки через какое-то время не пойдет?

Для двойной команды я проверяю этот файл https://pastebin.com/e03KBuCw
Я думаю, что мы не можем использовать всю первую фазу клика, потому что пульт не может угадать, нажмете ли вы его второй раз, поэтому я уверен, что это будет то же самое событие.

И у вас уже есть это для простого клика

22: 11: 35: 259 Режим MyDebug 5.3: 1 эп: 0x03 кластер: 0x0008 cmd: 0x04 sPrevD: 0xFF

Поэтому я не вижу конкретной команды на двойное нажатие.

Для группы. Вы правы, группа вообще не создавалась, поэтому большая часть была проигнорирована, поэтому код вообще не связывал? Вам не нужно делать их самостоятельно? нет проблем с трансляцией?

Я действительно не понимаю, как этот код может работать ...

Для батарейки через какое-то время не пойдет?

Если я не нажму read в deconz для кластера 0x001 , информация о батарее никогда не обновится. Я попытался оставить его бездействующим, и некоторое время пытался нажимать кнопки, но ничего не обновляет автоматически.

потому что пульт не может угадать, нажмете ли вы его второй раз

Пульт не отправляет никаких команд, пока я не нажму кнопку во второй раз.
В этом журнале (https://pastebin.com/e03KBuCw) есть все разные команды, которые я изначально нашел, поэтому это довольно запутанно. К вашему сведению, кнопка имеет 2 типа двойного щелчка:

  1. короткое нажатие + долгое нажатие <- это тот, который я пытаюсь заставить работать
  2. короткое нажатие + короткое нажатие

Более свежий журнал более понятен: https://pastebin.com/ixEWHbMX, и в новом журнале выводятся 5 команд вместо 4. Я дважды проверю, что они все еще верны.

Вы правы, center short press и center double press начинаются с одной и той же команды, но наши сопоставления кнопок не слушают первую команду для center short press .

center short press идентифицируется с помощью второй команды ep: 0x03 cluster: 0x0300 cmd: 0x0A pl[0]: 0x72 поэтому, если я правильно понимаю, мы сможем поймать ep: 0x03 cl: 0x0008 cmd: 0x04 pl[0]: 0xFE , а затем игнорировать команды и ждать ep: 0x03 cl: 0x0300 cmd: 0x01 pl[0]: 0x01 (см. строку 53 на https://pastebin.com/ixEWHbMX).

Вам не нужно делать их самостоятельно? нет проблем с трансляцией?

Насколько я могу судить, проблем с трансляцией нет. Мы связали конечные точки с координатором, который останавливает трансляцию, поэтому я думаю, что поэтому он все еще работает нормально.

Проверю батарею, возможно привязка в порядке, но не отчётность.
Или он может просто не поддерживать отчеты и использовать пул (есть кластер пула), но из моей памяти в каком-то журнале мы можем увидеть отчет о батарее с журналом «не обработчик кнопки».

Пульт не отправляет никаких команд, пока я не нажму кнопку во второй раз

Ха? так что у вас есть только 1 команда с двойным нажатием, у вас нет такой же, как простое нажатие + еще одна?

Двойное короткое нажатие тоже не работает?

22: 11: 56: 664 нет обработчика кнопок для: Lightify Switch Mini ep: 0x03 cl: 0x0300 cmd: 0x01 pl [0]: 0x01

Да, я тоже думаю, что это нужно попробовать, но какая бы одна команда это была, будет сюрпризом.

Для "ep: 0x03 cl: 0x0008" я не уверен, что он у вас есть только один раз, и сразу после 600 мс у вас есть
долгое нажатие, и у вас тоже для короткого нажатия, я думаю, у вас есть эта команда каждый раз, когда вы касаетесь кнопки.

Проблема с трансляцией, которую мы увидим позже, легко исправить, мы сделали это один раз, мы можем сделать это повторно ^^, У нас нет трансляции, просто потому, что группа заблокирована.

Для батареи вы уверены, что это атрибут 0x0021?

Сообщение не в порядке

09: 23: 33: 364 настроить отчет rq seq 8 для 0x000D6F00XXXXXXXX, атрибут 0x0001 / 0x0021
09: 23: 38: 375 ZCL настроить отчет rsp seq: 8 0x000D6F00XXXXXXXX для ep: 0x01 кластер: 0x0001 attr: 0x0021 status: 0x86

0x86 означает ошибку

Проверю батарею, возможно привязка в порядке, но не отчётность.

Да, я тоже так думаю. Я также попытался вручную привязать кластер 0x001 чтобы быть уверенным, но до сих пор нет отчета о заряде батареи.

у вас нет того же простого пресса + другого?

Вы должны нажимать кнопку быстро, иначе она отправит две простые команды.
Я всегда вижу другой результат при коротком нажатии + долгом нажатии
Например:

  • короткое нажатие + ожидание <200 мс + долгое нажатие == 5 команд, отображаемых в журнале https://pastebin.com/ixEWHbMX
  • короткое нажатие + ожидание> 1 секунда + долгое нажатие == две отдельные команды

Двойное короткое нажатие тоже не работает?

Да, это еще одна команда, которая не работает, но все, что она сделала, - это выключила свет так же, как down short press . Я не хотел давать нам слишком много работы, поэтому проигнорировал это 😄

Для батареи вы уверены, что это атрибут 0x0021

Нет, в отчете о батарее указано 0x0020 "напряжение батареи", код неправильный? Я думал, что уже настроил его для работы на 0x0020 ? см. эту картинку в деконце

По батарее думаю у меня плохо. Думаю, я сам удалил. https://github.com/Smanar/deconz-rest-plugin/commit/30311e22814862144f868b929c5d254f49de2539

Я использую стандартное значение

            rq.minInterval = 3600;
            rq.maxInterval = 3600;

Если я прав, у вас в журнале будет "status: 0x00"

Или лучше
https://github.com/Smanar/deconz-rest-plugin/commit/884facc3ba298e821b0e797b5ea56b9c5af6b0fe
С тайной командой

Если я прав, похоже, что эта команда 'mystery' будет запущена непосредственно перед командой 0 long release (https://pastebin.com/e03KBuCw, строка 112), а также при двойном нажатии (https: / /pastebin.com/ixEWHbMX, строка 66). Будет интересно посмотреть.

Что делал код, который вы удалили в de_web_plugin https://github.com/Smanar/deconz-rest-plugin/commit/30311e22814862144f868b929c5d254f49de2539 ?

Обновить:
Извините, мое тестирование было плохим этим утром, и я не осознавал, что проблема с трансляцией вернулась. Ой! Но я думаю, что исправил это снова: https://github.com/olicooper/deconz-rest-plugin/commit/3c608bb1c0aa4af01e8f1823695d927fbe656269 .. Однако в API снова есть 3 записи, и они назначены одной группе.

Похоже, что команда mystery не отображается в журналах. Я предполагаю, что это из-за периода охлаждения / тайм-аута между командами, возможно - я все еще тестирую его, хотя

Обновление 2:
«Сюрприз» появился, когда я дважды нажал (вместе с long press и long release и т. Д.) 👍

20:07:41:374 no button handler for: Lightify Switch Mini ep: 0x03 cl: 0x0008 cmd: 0x04 pl[0]: 0xFE
...
20:07:42:145 button 3001 0 long press
...
20:07:42:363 button 3002 0 short press
...
20:07:43:125 APS-DATA.indication from child 0xC496
20:07:43:125 MyDebug apsdeDataIndication profileId:0x0104, cid:0x0300
20:07:43:125 MyDebug 1
20:07:43:125 MyDebug 2
20:07:43:126 MyDebug ZCL attribute report 0x000D6F00XXXXXXXX for cluster: 0x0300, ep: 0x03, frame control: 0x11, mfcode: 0x0000
20:07:43:126    MyDebug payload: 0119
20:07:43:126 MyDebug 3
20:07:43:126 MyDebug 5.1
20:07:43:126 MyDebug 5.2
20:07:43:126 MyDebug 5.3 mode: 1 ep: 0x03 cluster: 0x0300 cmd: 0x01 sPrevD: 0xFF
20:07:43:126 button 3004 0 Suprise
20:07:43:126 Force binding of attribute reporting for sensor Lightify Switch Mini (2)
20:07:43:126 MyDebug 11
20:07:43:129 Websocket 192.168.1.99:33256 send message: {"e":"changed","id":"8","r":"sensors","state":{"buttonevent":3004,"lastupdated":"2020-06-05T20:07:43.125"},"t":"event","uniqueid":"00:0d:6f:00:XX:XX:XX:XX-03-0006"} (ret = -1092744)
20:07:43:130 discard sensor state push for 8: state/lastupdated (already pushed)
...
20:07:46:338 button 3003 0 long release

Обновление 3:
Я понял, что отключение кнопки (удерживание кнопки в центре + вниз в течение 10 секунд), а затем отправка запроса на удаление в API не работает должным образом, поэтому наше тестирование непредсказуемо, и мы получаем странные результаты. У меня есть один пульт, который делает одно, а другой - другое с тем же кодом. Я создал базу данных по умолчанию, которая, надеюсь, будет означать, что мы каждый раз начинаем с известной точки, но я думаю, что мне также нужно перезапустить RaspberryPi, потому что RaspBee, похоже, удерживает соединения, даже когда deconz закрыт. Это все немного беспорядочно, а деконзирование вообще не очень легко кодировать или тестировать!

Раньше я не понимал, но кнопка снова транслируется, и я думаю, что раньше она была замаскирована, поэтому я ее не заметил. Я повторно вводил часть старого кода, чтобы увидеть, что может остановить его трансляцию снова, но мне пока не повезло.

Код, который я удалил, предназначался для группы, я удалил его, потому что он вообще не работает, и он создает более одной группы, было попыткой.

Что касается батареи, важная часть - это линии, которые я добавил, но я почти уверен, что уже видел их на данный момент.

Для команды mystery мы не можем быть уверены в строке 122 в первом журнале, потому что у вас нет параметра в журнале

22: 14: 24: 528 Режим MyDebug 5.3: 1 эп: 0x03 кластер: 0x0300 cmd: 0x01 sPrevD: 0xFF

В качестве взлома тоже можно использовать sPrevD.

И да, я знаю, удаление устройства не может работать на 100%, вам, вероятно, нужно удалить какую-то группу вручную, например

В первом комментарии "обновления" вы имеете в виду, что с этой модификацией у вас будет создано 3 устройства, но рабочая группа (и только одна)?

Код для привязки (и отключения трансляции) использует группу, поэтому нам нужно, чтобы группа работала.
Итак, я внес некоторые изменения, чтобы снова включить группу.
В вашем журнале до модификации

09: 23: 30: 345 пропустить привязки проверки для клиентских кластеров (без группы)

Значит, вы вообще не связали.

Я повторно включил предыдущий код, этот уже работал. Я добавил в код комментарий, чтобы объяснить это, потому что вы можете отладить его, если он не работает.

Я не изменял код, поэтому у вас все еще создано только 1 устройство, но на этот раз с группой https://github.com/Smanar/deconz-rest-plugin/commit/83f182adce0c848f1f4685df1950bcbab62a6a26

И хорошая новость заключается в том, что поскольку у нас создано только 1 устройство, будет сложно создать 3 группы кода ^^

Получение более стабильных результатов, поэтому, надеюсь, более надежное тестирование.
Я вижу 1 датчик в API, у которого есть все события кнопок, поэтому я думаю, что проблема группировки / смешивания исправлена.

Широковещательная передача не происходит для конечной точки 1 👍, но обе оконечные точки 2 и 3 осуществляют широковещательную передачу. Ручная привязка к кластеру 0x0006 (onoff) для эпизодов 2 и 3 останавливает их трансляцию. Я чувствую, что некоторое время назад у нас было исправление, но я не могу его найти 😢

Это просто.
Просто посмотрите в своем журнале «создать привязку для клиентского кластера 0x% 04X на конечной точке 0x% 02X».
Если вы видите только конечную точку 0x01, и только эту.

строка 2527
Заменить
srcEndpoints.push_back(sensor->fingerPrint().endpoint);

по

srcEndpoints.push_back(0x01);
srcEndpoints.push_back(0x02);
srcEndpoints.push_back(0x03);

В предыдущем коде использовалось 3 устройства, по одному на конечную точку, а в новом только 1.

Я думаю, что у меня это работает, но мне пришлось добавить этот взлом снова (https://github.com/Smanar/deconz-rest-plugin/commit/2cf236599cd14e5ba764b07e430e24d916989bf9#diff-70a87389db32b8f306683cL83620, вероятно, там что-то не так с группами. ..
https://github.com/olicooper/deconz-rest-plugin/commit/dbf424b2305be8ddbafc1937fdcfbd8c379a2673

Сначала казалось, что это не работает, но после перезагрузки rpi и повторной попытки все заработало. Не могу поверить, что мне нужно перезагрузить все, чтобы оно заработало 😞

Я думаю, что эта часть бесполезна.

   QString gid0 = gids[0];
   gids.append(gid0);
   gids.append(gid0);

Если вы посмотрите на группы в API, я почти уверен, что вы найдете только 1.

Что не сработало с первой попытки?

Вы смотрели журналы? для меня мы почти закончили, я не вижу, что может быть упущено, возможно, ошибка ramdom, которая требует перезагрузки.

Так что да, вы правы, нам нужна эта деталь. Поскольку код анализируется в одно и то же время конечной точки и группы, нам нужно иметь один и тот же номер.

для (int j = 0; j <(int) srcEndpoints.size () && j <gids.size (); j ++)
{
QString gid = gids [j];

А без перезагрузки не работает, в логах ничего? все еще связана с ошибкой команды привязки?

Я снова удалил взлом (https://github.com/olicooper/deconz-rest-plugin/commit/3d3958371f72e306113b173cba2ba0c830196ced) и повторно протестировал (после перезагрузки). Вот журнал: https://pastebin.com/3zq7F0pL

Удаление взлома заставило проблему вернуться. Проблема в том, что конечные точки 2 и 3 снова начинают вещание. Вы можете видеть, что gids.size() только 1, когда нам нужно 3 ...

18: 10: 38: 522 MyDebug 13 srcEndpointSize: 3, gidSize: 1

Обновить:
Я повторно протестировал предыдущий код (https://github.com/olicooper/deconz-rest-plugin/commit/dbf424b2305be8ddbafc1937fdcfbd8c379a2673), и он работает правильно.

  • Нет трансляции
  • 1 датчик в API, отнесенный к 1 группе
  • Все события кнопок появляются в API

Я не понимаю, почему код должен одновременно зацикливать конечные точки и группы !? Я думаю, что хак, возможно, должен остаться в коде, чтобы он работал правильно, или цикл for требует рефакторинга.
https://github.com/dresden-elektronik/deconz-rest-plugin/blob/02a02d1369895cda4bbe3cfdf0c95af959be8cea/bindings.cpp#L2623

Да ^^, много кода требует рефакторинга, но я думаю, что это будет для следующей версии API.

  • Функция работает только с группой
  • Функция работает с 1 группой по конечной точке, потому что на классическом устройстве есть 1 конечная точка по кнопке (1 групповой переключатель или 2 групповой переключатель)

Для нас группы бесполезны (на данный момент), и мы хотим использовать все команды на одном устройстве.

А для кнопки 4 будет хуже, потому что у этой больше 4 конечных точек.

На данный момент вы можете просто оставить комментарий о том, почему вы используете этот хак, это не проблема, потому что он будет использоваться только этим устройством.

Но если все работает, вы можете сделать PR в официальном github, но не забудьте сначала очистить код ^^.

Итак, что нам делать со взломом? Есть ли лучшая реализация?

Кроме того, отчет о батарее по-прежнему не работает, хотя мы добавили код для его поддержки. Я посмотрю, что может быть не так, но есть ли у вас предложения?

Я думаю, что лучше использовать хак с объяснением, чем делать полную функцию только для этого (код полон хаков)

Для отчета о батарее просмотрите журнал, чтобы найти пример поиска «0x0001».
Вы можете проверить
1 - привязка
2 - отчетность
3 - ошибка при составлении отчета
4 - «обработчик кнопки» для кластера 0x0001
5 - посмотрите на опросный кластер, если все предыдущие проверки верны.

09: 23: 33: 364 настроить отчет rq seq 8 для 0x000D6F00XXXXXXXX, атрибут 0x0001 / 0x0021
09: 23: 38: 375 ZCL настроить отчет rsp seq: 8 0x000D6F00XXXXXXXX для ep: 0x01 кластер: 0x0001 attr: 0x0021 status: 0x86

0x86 означает ошибку.

~ Да, кнопка также имеет атрибут маски тревоги, который имеет смысл, почему нет обработчика кнопки для 0x0021 ~

Итак, есть еще одна проблема ^^, это атрибут 0x0020, а не 0x0021.

Редактировать:
Вы видите что-нибудь в коде о привязке или сообщении об атрибуте 0x0021? Потому что я смотрю код и все с 0x0020.

Извините, я не хотел сказать 0x0021 (я не думаю, что у него есть атрибут процента заряда батареи?) ...
Я сделал снимок выхода блока питания 0x0001 чтобы вы могли видеть то, что я вижу на deCONZ.

Кнопка сообщает об уровне заряда батареи в кластере 0x0001 ep 0x0020 но также имеет маску тревоги для ep 0x0035 и кластера 0x0000 ep 0x0013 тоже.

Как вы сказали ранее, я думаю, что отчеты по 0x0020 работают, потому что:

17: 10: 16: 365 MyDebug apsdeDataIndication profileId : 0x0104 , cid: 0x0001
17: 10: 16: 365 ZCL настроить отчет rsp seq: 46 0x000D6F00XXXXXXXX для ep: 0x01 кластер: 0x0001 attr: 0x0020 status: 0x00

Я также видел это:

17: 11: 45: 234 MyDebug DeviceAnnce 3 sSenSt: 1 , apsCtrl: 1
17: 11: 45: 234 Индикация FP 0x0000 / 0x0013 (0x000D6F00XXXXXXXX / 0x9028)
17: 11: 45: 234 ... (0x000D6F00XXXXXXXX / 0x9028)

Обновить:
В моих предыдущих тестах я мог получить статистику батареи, если я вручную прочитал данные на кластере питания. Я решил включить принудительное чтение статистики батареи в качестве теста, и, похоже, он работает! Как вы думаете, это исправление правильное - я не уверен в частоте чтения? https://github.com/olicooper/deconz-rest-plugin/commit/0bec4e049c0bdd2d00aeddf29a11d313298a316c

Интересно, возникают ли проблемы с чтением из-за того, что мы не помещаем отпечаток датчика в bindings.cpp ? srcEndpoints.push_back(sensor->fingerPrint().endpoint) ... см. Эту часть в de_web_plugin.cpp

Это журналы:

11:19:26:228 MyDebug 40 SensorNode 2 / Switch 2 <-- new debug added
11:19:26:228 SensorNode 2: Switch 2 added
11:19:26:228 0x000D6F00XXXXXXXX (Lightify Switch Mini) create binding for attribute reporting of cluster 0x0001 on endpoint 0x01
11:19:26:228 queue binding task for 0x000D6F00XXXXXXXX, cluster 0x0001
11:19:26:229 Update Sensor 0x000D6F00XXXXXXXX Basic Cluster
11:19:26:229 MyDebug apsdeDataIndication profileId:0x0104, cid:0x0000

И последнее. Событие средней кнопки, кажется, занимает больше времени для отображения / обновления в API, чем для двух других кнопок. Вы знаете, почему это могло быть? Я отключил отображение кнопок «сюрприз» для тестирования, но это не ускорило его работу.

Мы можем быть близки к тому, чтобы эти устройства поддерживались в API (пока не в Phoscon) 🤞 ..
По теме: https://github.com/dresden-elektronik/deconz-rest-plugin/issues/294 | https://github.com/dresden-elektronik/deconz-rest-plugin/issues/1893 | https://github.com/dresden-elektronik/deconz-rest-plugin/issues/2082

Нет, вы правы, и я точно проверил на другом проекте, что это 0x20.

Мы не делаем

srcEndpoints.push_back (сенсор-> fingerPrint (). конечная точка

Но мы делаем

 srcEndpoints.push_back(0x01);
  srcEndpoints.push_back(0x02);
  srcEndpoints.push_back(0x03);

так что в конце концов это то же самое.

Для меня проблема может исходить из
1 - Неправильная настройка при настройке отчетов

            rq.attributeId = 0x0020;   // battery voltage
            rq.minInterval = 3600;
            rq.maxInterval = 3600;
            rq.reportableChange8bit = 0;

вы можете попробовать другие значения, на z2m они используют 300, 3600, 0. (reportableChange8bit = 0xFF для отключенных)

2 - Или просто устройство не использует отчеты, а объединяет кластер, у меня точно такая же проблема для переключателя legrand, это код, который вы используете ^^

Но этот код работает для Legrand, потому что это устройство объявляет устройство каждый раз, когда вы нажимаете кнопку, не уверен, что osram делает то же самое. С помощью этого кода возможно, что значение будет обновлено только 1 раз.
Отчетность работает на z2M, поэтому я действительно не понимаю, почему это не работает.

Что касается средней кнопки, просматривали ли вы журнал одновременно, чтобы увидеть, какое из действий задерживается? Возможно, это нормально и исходит от оборудования?

Правильно, я испортил атрибуты отчетов и не могу объяснить, почему изменение интервалов отсортировало их, но я настроил rq.minInterval = 900 и через 15 минут получил обновление статуса, как и ожидалось.

12:22:15:637 Node data 0x000D6F00XXXXXXXX profileId: 0x0104, clusterId: 0x0001
12:22:15:637 0x000D6F00XXXXXXXX: update ZCL value 0x01/0x0001/0x0020 after 0 s
12:22:15:637 MyDebug apsdeDataIndication profileId:0x0104, cid:0x0001
12:22:15:637 MyDebug 1
12:22:15:637 MyDebug 2
12:22:15:637 MyDebug ZCL attribute report 0x000D6F00XXXXXXXX for cluster: 0x0001, ep: 0x01, frame control: 0x18, mfcode: 0x0000
12:22:15:637    MyDebug payload: 2000201c
12:22:15:637 MyDebug 3
12:22:15:637 MyDebug 5.3 mode: 1 ep: 0x01 cluster: 0x0001 cmd: 0x0A sPrevD: 0xFF
12:22:15:637 Force binding of attribute reporting for sensor Lightify Switch Mini
12:22:15:637 MyDebug 11
12:22:15:637 MyDebug 12
12:22:15:637 MyDebug 13 srcEndpointSize: 3, gidSize: 3
12:22:15:637 MyDebug 14 gid: 1

Может быть, уменьшение минимального интервала означает, что мы получим отчет до того, как устройство перейдет в глубокий сон? Я не уверен, что это исправлено, поэтому я собираюсь протестировать еще раз, чтобы убедиться, что это не случайно и т. Д.

Как вы думаете, что находится в этой полезной нагрузке? MyDebug payload: 2000201c Это должна быть какая-то статистика по батарее, верно?

Обновить:
Из связанных ссылок ниже у людей быстро разряжались батареи с минимального интервала, установленного на 300, поэтому я собираюсь увеличить его снова и посмотреть, все ли работает нормально, а затем назовите его днем, вероятно, потому что это затянулось надолго в настоящее время! 🤣

Ссылки по теме:

Ха, вы почистили код?
Я не могу найти ваш "MyDebug payload: 2000201c"? Но я проверил код и нет, я думаю, что часть, которую вы нашли в этом коде, действительно предназначена только для команды отчета об атрибутах, внутри нет значений.

Я начал запрос на перенос ...
https://github.com/dresden-elektronik/deconz-rest-plugin/pull/2917

Мне пришлось создать новую вилку, потому что в главной ветке был беспорядок, а GitHub по-прежнему не разрешает использование нескольких вилок ... мое старое разветвленное репо все еще существует как зеркало.

В настоящее время я тестирую этот запрос на перенос, поэтому его нужно будет сделать в ближайшее время. Я могу создать еще один PR, если будут обнаружены ошибки, но я не думаю, что они есть. Сообщите мне, если что-то не так, и я все исправлю 👍

В идеале у меня тоже будет работать двойное нажатие, но это, вероятно, будет непросто, поэтому я думаю, что лучше, если это будет добавлено позже.

Ага, так лучше ^^, потому что столько попыток.

Думаю, для 3-х кнопочного пульта подойдет.
Но не уверен для 4 кнопок, это устройство имеет 6 конечных точек.

И я думаю, что может быть полезно привязать только полезный кластер, например, только 0008 и 0006 или только 0300. Потому что без этого можно сделать 3 * 6 = 18 привязок.

Но вы правы, даже не идеально, пиар будет полезен хоть для какой-то отдачи.

Я взглянул на привязки для 4 кнопок, и одна из них находится в вводящем в эксплуатацию кластере 0x1000 который мы отключили, поэтому я думаю, что всего 5 привязок, но я не вижу, как существует более 4 конечных точек когда всего 4 кнопки? Я смотрел на это: https://pastebin.com/xdG3Mw0Z

И я думаю, что может быть полезно привязать только полезный кластер

Да, думаю, будет лучше. zigbee2mqtt имеет это: https://github.com/Koenkk/zigbee-herdsman-converters/commit/7756df8ccb314c9c52c89b0640107573f1aa9bdc#diff -6c9a6acf22f90d1c6e sure524d03, хотя вы делаете это.

Так же работают обновления батареи 👍

IDK, возможно, они бесполезны, и я не нахожу устройства в другом проекте.
Лучше дождаться бета-тестера с отдачей, чем тратить время зря. Для этого достаточно вашего кода, просто нужно дождаться нескольких логов.

И вы правы, это сложно с реальным кодом. Если у меня будет время завтра, я постараюсь сделать что-нибудь без излишних уродливых хаков.

Рад за батарею, потому что еще не знаю :)

Я рассматриваю возможность обновлять аккумулятор каждые 43200 секунд (12 часов), потому что аккумулятор - всего лишь CR2450, поэтому одно обновление каждый час будет разряжать аккумулятор. Как мы можем сделать ручной запрос на получение напряжения батареи, когда устройство впервые подключается к шлюзу? Могу ли я добавить это обратно? https://github.com/olicooper/deconz-rest-plugin-old/commit/1e05921289432c63b589c83203fdad085082a235#diff -c941fc017347f7109bf6036ba9505576L5666-L5677

Я согласен с вами, делать это каждый час бесполезно.
Но уведомление можно использовать как «проверку срока службы устройства», чтобы оно могло иметь некоторую реакцию на деконзирование, просто сделайте тест и выберите предпочтительный вариант.

Если вы измените код в ветке, в которой вы сделали PR, модификация также будет использоваться в этом github.

Но я действительно не думаю, что это что-то полезное, нет устройств, которые используют это, потому что вам просто нужно некоторое время, чтобы получить значение, устройство делает много запросов во время включения, лучше удалить бесполезный.

Кстати, я кое-что начал.

Не уверен, что это будет полезно, так что это просто прототип https://github.com/Smanar/deconz-rest-plugin/commit/8986adfec2cd03a863bc39bfacefa4dd5691548c

Не скомпилировано / не протестировано, поэтому не тратьте на это слишком много времени.

Но с помощью этого кода вы можете выбрать конечную точку, группу и кластер, как в Z2M, и он совместим со старым кодом.

Возврат будет "false", поэтому я думаю, у вас будет сообщение об ошибке, но привязка будет работать.
Чтобы обмануть, вы можете использовать "ret = true;" juste после списка функций.

Я проверил ваш код прототипа и его работу. Было несколько проблем с компиляцией, и я тоже немного обновил его, поэтому проверьте мой последний коммит на предмет изменений. https://github.com/olicooper/deconz-rest-plugin-old/commit/c5253434e774119ccf46800eb4be1a569bdbcea3

Первая задача привязки кластера начинается с 19:08:51:349 а последняя - с 19:09:29:396 что составляет около 30 секунд до завершения.

Это первая задача привязки:

19:08:51:346 0x000D6F00XXXXXXXX (Lightify Switch Mini) create binding for attribute reporting of cluster 0x0001 on endpoint 0x01
19:08:51:346 queue binding task for 0x000D6F00XXXXXXXX, cluster 0x0001
...
19:08:51:349 0x000D6F00XXXXXXXX [Lightify Switch Mini] create binding (S) for client cluster 0x0006 on endpoint 0x01
19:08:51:349 queue binding task for 0x000D6F00XXXXXXXX, cluster 0x0006
19:08:51:349 0x000D6F00XXXXXXXX [Lightify Switch Mini] create binding (S) for client cluster 0x0008 on endpoint 0x01
19:08:51:349 queue binding task for 0x000D6F00XXXXXXXX, cluster 0x0008
19:08:51:349 0x000D6F00XXXXXXXX [Lightify Switch Mini] create binding (S) for client cluster 0x0006 on endpoint 0x02
19:08:51:349 queue binding task for 0x000D6F00XXXXXXXX, cluster 0x0006
19:08:51:349 0x000D6F00XXXXXXXX [Lightify Switch Mini] create binding (S) for client cluster 0x0008 on endpoint 0x02
19:08:51:349 queue binding task for 0x000D6F00XXXXXXXX, cluster 0x0008
19:08:51:349 0x000D6F00XXXXXXXX [Lightify Switch Mini] create binding (S) for client cluster 0x0300 on endpoint 0x03
19:08:51:349 queue binding task for 0x000D6F00XXXXXXXX , cluster 0x0300

По-прежнему нет трансляции с этим новым кодом, и все привязки все еще присутствуют, поэтому это решение будет работать 👍

checkSensorBindingsForClientClusters вызывается из множества мест, что затрудняет изменение. Я не думаю, что эти изменения должны быть частью PR, но их стоит добавить!

С тех пор я уже делал обновление, но последнее не тестировалось ^^.
Со следующим, если не задать группу, привязка будет выполняться на координаторе.
https://github.com/Smanar/deconz-rest-plugin/blob/osram/bindings.cpp

Но на плохой ветке поправят завтра

На мой взгляд, я предпочитаю удалить «return ret» в строке 2576 (и весь предыдущий код. Таким образом, код может быть совместим со старым и новым режимом привязки.

Если вы используете новый, srcEndpoints.size () будет = 0, поэтому весь «цикл if» будет пропущен, и код продолжится нормально на строке 2768.
Так что фьючерсные модификации кода тоже будут использоваться.

Но, как вы не понимаете, если эти изменения могут быть использованы в вашем PR, для меня это полезно для какого-то другого устройства, мы действительно упускаем простую функцию привязки.
Это бесполезно для 3 кнопок, но, возможно, для 4 кнопок, с его помощью вы можете уменьшить количество запросов на привязку.

И я установил только последнюю привязку, способную изменить значение ret, она будет работать, как и до модификации, и я не уверен, что будет полезно проверять все команды, это просто список привязок, если 1 успешно, все остальные сделаю то же самое.

Так что фьючерсные модификации кода тоже будут использоваться.

Да, это хороший момент, я буду использовать ваш код для следующей версии. Причина, по которой я скопировал код, заключалась в том, чтобы быть на 100% уверенным, что он не будет выполнять что-либо еще для теста. Я знал, что, вероятно, не будет

Но, как вы не понимаете, если эти изменения могут быть использованы в вашем PR, для меня это полезно для какого-то другого устройства, мы действительно упускаем простую функцию привязки.

Думаю, стоит спросить об этом основных разработчиков? Я, вероятно, отправлю еще один PR с этой добавленной функцией, а затем обновлю код позже, чтобы использовать это, чтобы все было чистым и отдельным. Может быть, это не сработает для разработки того другого устройства, над которым вы работаете? Хотя было бы неплохо поговорить напрямую с основными разработчиками, может, они добавят это прямо без пиара?

Рад скоро протестировать. Хорошая работа!

Не беспокойтесь об этом, моя модификация не влияет на остальную часть кода деконзирования.
Для меня это будет зависеть от 4-кнопочного устройства osram, этот код не очень полезен для 3-х кнопок, но если он вам нужен для 4-х кнопок, вы можете его взять.

В худшем случае это ваше устройство не будет работать, никакое влияние на другие устройства.

А код занимает всего 10/20 строк.

И PR занимает несколько дней, чтобы быть подтвержденным, так что трудно ждать между двумя из них, поэтому вы можете увидеть некоторый PR, используемый для 5/6 устройств или более.

Привет, Smanar, я заметил одну небольшую проблему, когда я привязал свет к кнопке в старом пользовательском интерфейсе, центральная кнопка (0) устанавливает цвет обратно на значение по умолчанию, но это не делает свет на 100%, как должен. Я добавил новый код для привязки одного из недостающих обработчиков кнопок, и он снова работает, но не могли бы вы дважды проверить, что с этой реализацией все в порядке? https://github.com/olicooper/deconz-rest-plugin-old/commit/7d2c24b736b65eea0995ba502b6324bad7e24c4e
Спасибо 👍

Лол, не волнуйся, я тебе доверяю, ты знаешь код этого устройства не хуже меня, и у тебя есть устройство, которое нужно провести, а не я.

Эта проблема была автоматически помечена как устаревшая, поскольку в последнее время не было активности. Он будет закрыт, если больше не будет активности. Спасибо за ваш вклад.

Спасибо за ваш тяжелый труд ! 🎉

Здравствуйте,

Я переключился со шлюза Osram Lightify, который больше не поддерживается, на Phoscon на Raspberry Pi 2 с RaspBee II от Dresden-Elektronik. Так как мне удалось соединить серый и синий Osram SMART + Switch Mini (AC0251 600NJ | x 1718 и AC0251 700NJ | x 1718), я подумал, что смогу их использовать. Они появляются (помимо Osram SMART + Switch обычного размера) в Phoscon под коммутаторами. Однако, когда я пытаюсь объединить их в группу, они не предлагаются, т. Е. Вообще не отображаются на этом экране выбора; есть только переключатель нормального размера. Таким образом, кажется, что Phoscon добавляет их как переключатели, но не может использовать их в группах, чтобы применять их к определенным источникам света / вилкам и т. Д. По любой причине.

Теперь эти мини-переключатели работают на вас в Phoscon? Как вы можете применить их к существующим группам?

У меня еще нет опыта работы с deconz, журналами и т. Д., Поэтому я еще не знаю, как я могу предоставить некоторые журналы, но я готов учиться. :)

Спасибо за вашу помощь и подсказки!

Привет, я не думаю, что фоскон поддерживает эти переключатели, для меня лучше использовать третье приложение.

Чем же так отличается мини-переключатель от переключателя нормального размера?

Если журналы или анализ трафика мини-коммутатора помогают, я мог бы попытаться предоставить это, но мне потребуется небольшая помощь, как это сделать. Я думаю, что у меня есть все необходимое, кроме знаний, как начать. ;)

Проблема в том, что API нечего видеть с фосконом.
Phoscon использует api как третье приложение, попробуйте спросить здесь https://github.com/dresden-elektronik/phoscon-app-beta

Если ваше устройство является трехкнопочным, оно использует встроенную команду zigbee, поэтому вы можете использовать групповую функцию в «старом веб-приложении», это будет прямое соединение, без использования deconz / phoscon / API.

Но я не помню, какие 3 команды будут использоваться с этим пультом (и вы не сможете их изменить)

Большое спасибо, я посмотрю там. Это действительно трехкнопочный переключатель (доступен в разных цветах резины). И я только сейчас понимаю, что мои комментарии могут быть здесь не по теме, извините.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги