mega_hacs icon indicating copy to clipboard operation
mega_hacs copied to clipboard

добавить выборочную обработку кликов на расширителе

Open c1tru55 opened this issue 3 years ago • 6 comments

Описание есть моноблок MegaD-2561-31I15O-RTC-PoE и расширитель на 16 портов MegaD-16I-XT, которые подключены к HA через интеграцию эту интеграцию. есть светильник, который подключен к порту P7, и есть 2 кнопки: на порте P0 моноблока и на порте P31/EXT:0 расширителя, которые настроены на переключения порта P7 (7:2). когда я нажимаю кнопку моноблока Р0 первый раз - светильник включается, когда нажимаю второй раз - светильник выключается, все как и ожидается. когда я нажимаю кнопку расширителя P31/EXT:0 первый раз - светильник включается и тут же выключается, когда нажимаю второй раз - светильник опять выключается и тут же выключается. т.е. светильник меняется свое состояние и на нажатие кнопки расширителя, и на отжатие, хотя настройки портов одинаковые.

самое интересное, если отключить ethernet кабель от меги - кнопка расширителя начинает работать ожидаемо, как и кнопка моноблока.

Версии систем Enviroment: HAOS Home Assistant Core 2022.6.6 Home Assistant Supervisor 2022.05.3 Home Assistant OS 8.2 mega_hacs version: 1.1.1 megad firmware version: - используется mqtt: false nginx proxy addon стоит

Ожидаемое поведение Однократное срабатывание действия на нажатия кнопки MegaD-16I-XT

Screenshots порт P0 на моноблоке: порт P31/EXT:0 на MegaD-16I-XT (P44 как INT): настройки интеграции:

LOG логи порта P0 на моноблоке:

{
    "event_type": "mega.sensor",
    "data": {
        "pt": 7,
        "mdid": "megad",
        "v": "0",
        "m": 0,
        "click": 0,
        "cnt": 0
    },
    "origin": "LOCAL",
    "time_fired": "2022-06-14T18:17:57.776653+00:00",
    "context": {
        "id": "01G5HPZGRG7KVRJS1CG3CBRVEM",
        "parent_id": null,
        "user_id": null
    }
}
Событие 2 произошло в 0:17:
{
    "event_type": "mega.sensor",
    "data": {
        "pt": 0,
        "cnt": 25,
        "mdid": "megad",
        "m": 0,
        "click": 0
    },
    "origin": "LOCAL",
    "time_fired": "2022-06-14T18:17:57.757288+00:00",
    "context": {
        "id": "01G5HPZGQXJDB8PA93VCHTY0RZ",
        "parent_id": null,
        "user_id": null
    }
}
Событие 1 произошло в 0:17:
{
    "event_type": "mega.sensor",
    "data": {
        "pt": 7,
        "mdid": "megad",
        "v": "1",
        "m": 0,
        "click": 0,
        "cnt": 0
    },
    "origin": "LOCAL",
    "time_fired": "2022-06-14T18:17:56.323675+00:00",
    "context": {
        "id": "01G5HPZFB3Y5VA0Q59XT1KC48A",
        "parent_id": null,
        "user_id": null
    }
}
Событие 0 произошло в 0:17:
{
    "event_type": "mega.sensor",
    "data": {
        "pt": 0,
        "cnt": 24,
        "mdid": "megad",
        "m": 0,
        "click": 0
    },
    "origin": "LOCAL",
    "time_fired": "2022-06-14T18:17:56.303828+00:00",
    "context": {
        "id": "01G5HPZFAFXCX9YQRXZ5YR0S6F",
        "parent_id": null,
        "user_id": null
    }
}

логи порта P31/EXT:0 на MegaD-16I-XT (P44 как INT)::

{
    "event_type": "mega.sensor",
    "data": {
        "pt": 44,
        "ext0": "0",
        "cnt": 86,
        "mdid": "megad",
        "m": 0,
        "click": 0
    },
    "origin": "LOCAL",
    "time_fired": "2022-06-14T18:16:42.023029+00:00",
    "context": {
        "id": "01G5HPX6S7ETVP7FK3W2H5F55Q",
        "parent_id": null,
        "user_id": null
    }
}
Событие 2 произошло в 0:16:
{
    "event_type": "mega.sensor",
    "data": {
        "pt": 44,
        "ext0": "1",
        "cnt": 85,
        "mdid": "megad",
        "m": 0,
        "click": 0
    },
    "origin": "LOCAL",
    "time_fired": "2022-06-14T18:16:41.781131+00:00",
    "context": {
        "id": "01G5HPX6HNNHQB6F79VAP99JPG",
        "parent_id": null,
        "user_id": null
    }
}
Событие 1 произошло в 0:16:
{
    "event_type": "mega.sensor",
    "data": {
        "pt": 44,
        "ext0": "0",
        "cnt": 84,
        "mdid": "megad",
        "m": 0,
        "click": 0
    },
    "origin": "LOCAL",
    "time_fired": "2022-06-14T18:16:40.666894+00:00",
    "context": {
        "id": "01G5HPX5ETFFN03J93MGWSZW96",
        "parent_id": null,
        "user_id": null
    }
}
Событие 0 произошло в 0:16:
{
    "event_type": "mega.sensor",
    "data": {
        "pt": 44,
        "ext0": "1",
        "cnt": 83,
        "mdid": "megad",
        "m": 0,
        "click": 0
    },
    "origin": "LOCAL",
    "time_fired": "2022-06-14T18:16:40.445255+00:00",
    "context": {
        "id": "01G5HPX57X110R03TVYCKMJDC7",
        "parent_id": null,
        "user_id": null
    }
}

пара дополнительных вопросов:

  1. почему при нажатии кнопки на моноблоке есть события об изменении порта P7, а при нажатии кнопки на расширителе - нет?
  2. какое количество портов нужно указывать в настройках интеграции? 37, как по умолчанию? или большее с учетом портов расширителя? (тем не менее объекты для портов расширителя были созданы)

c1tru55 avatar Jun 29 '22 11:06 c1tru55

Скопирую с форума. Мне помогло. "надо убрать ответ "d" по умолчанию" "в строке ACT -> нужно поставить галочку"

GonzaMashrum avatar Jul 26 '22 12:07 GonzaMashrum

спасибо за совет, но хотелось бы все-таки услышать ответ автора, баг это или фича..

c1tru55 avatar Jul 26 '22 16:07 c1tru55

спасибо за совет, но хотелось бы все-таки услышать ответ автора, баг это или фича..

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

andvikt avatar Jul 26 '22 18:07 andvikt

@andvikt ну кнопка с моноблоком же работает нормально, проблема именно с MegaD-16I-XT в паре с интеграцией. может все-таки не надо закрывать тикет как completed? потому совет лишь позволяет обойти проблему, но решать ее нужно на уровне интеграции.

и можете ответить на вопросы из топика?

c1tru55 avatar Jul 26 '22 19:07 c1tru55

@andvikt ну кнопка с моноблоком же работает нормально, проблема именно с MegaD-16I-XT в паре с интеграцией. может все-таки не надо закрывать тикет как completed? потому совет лишь позволяет обойти проблему, но решать ее нужно на уровне интеграции.

и можете ответить на вопросы из топика?

Открыл заново ) но решение будет не скоро.

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

andvikt avatar Jul 26 '22 20:07 andvikt

пара дополнительных вопросов:

  1. почему при нажатии кнопки на моноблоке есть события об изменении порта P7, а при нажатии кнопки на расширителе - нет?

  2. какое количество портов нужно указывать в настройках интеграции? 37, как по умолчанию? или большее с учетом портов расширителя? (тем не менее объекты для портов расширителя были созданы)

  1. Вы уверены, что нет? Я думаю, там так же все-нажмите и не отпускайте и вы увидите изменение состояния. Вся проблема в кнопках и том как об этих событиях уведомляется сервер (по-другому)
  2. Порты расширителя-это виртуальные порты, нужно указывать столько портов сколько у вас на моноблоке.

andvikt avatar Jul 26 '22 20:07 andvikt