Шаблон WB-MWAC v.2 для SprutHub не настроен на работу по умолчанию

Шаблон для WB-MWAC v.2 работает некорректно, вернее не так как работает по умолчанию в самом WB. Например кнопка S6 - включает режим “Влажная уборка” и сигнал от датчиков протечки игнорируется. В Спруте он как датчик протечки идет, а не кнопка! А я прикрепил к этому выходу кнопку! Если включить режим “Влажная уборка” физически или в самом WB, то тревога/сигнализация о протечке игнорируется в WB (как и должно быть), а в Спруте она срабатывает, так как Cпрут не понимает, что включена функция “Влажная уборка”. Вообщем, хотелось бы, чтобы шаблон соответствовал настройкам WB по умолчанию.

Так написал GPT

  {
    "manufacturer": "Wiren Board",
    "model": "WB-MWAC v.2",
    "name": "Защита от протечки",
    "catalogId": 4983,
    "services": [
      {
        "name": "Кран 1",
        "type": "Valve",
        "characteristics": [
          {
            "type": "Active",
            "link": {
              "type": "Integer",
              "topicSearch": "/devices/(wb-mwac-v2_[0-9]{1,3})/controls/Output K1/meta",
              "topicGet": "/devices/(1)/controls/Output K1",
              "topicSet": "/devices/(1)/controls/Output K1/on"
            }
          }
        ]
      },
      {
        "name": "Кран 2",
        "type": "Valve",
        "characteristics": [
          {
            "type": "Active",
            "link": {
              "type": "Integer",
              "topicGet": "/devices/(1)/controls/Output K2",
              "topicSet": "/devices/(1)/controls/Output K2/on"
            }
          }
        ]
      },
      {
        "name": "Режим: протечка",
        "type": "Switch",
        "characteristics": [
          {
            "type": "On",
            "link": {
              "type": "Integer",
              "topicGet": "/devices/(1)/controls/Leakage Mode",
              "topicSet": "/devices/(1)/controls/Leakage Mode/on"
            }
          }
        ]
      },
      {
        "name": "Режим: влажная уборка",
        "type": "Switch",
        "characteristics": [
          {
            "type": "On",
            "link": {
              "type": "Integer",
              "topicGet": "/devices/(1)/controls/Cleaning Mode",
              "topicSet": "/devices/(1)/controls/Cleaning Mode/on"
            }
          }
        ]
      },
      {
        "name": "Счётчик 1",
        "visible": false,
        "type": "C_WaterMeter",
        "characteristics": [
          {
            "type": "C_CubicMeter",
            "link": {
              "type": "Double",
              "topicGet": "/devices/(1)/controls/P1 Volume"
            }
          }
        ]
      },
      {
        "name": "Счётчик 2",
        "visible": false,
        "type": "C_WaterMeter",
        "characteristics": [
          {
            "type": "C_CubicMeter",
            "link": {
              "type": "Double",
              "topicGet": "/devices/(1)/controls/P2 Volume"
            }
          }
        ]
      }
    ]
  },
  {
    "manufacturer": "Wiren Board",
    "model": "WB-MWAC v.2",
    "name": "Дискретный вход",
    "services": [
      {
        "name": "Состояние входа",
        "type": "ContactSensor",
        "characteristics": [
          {
            "type": "ContactSensorState",
            "link": {
              "type": "Integer",
              "topicSearch": "/devices/(wb-mwac-v2_[0-9]{1,3})/controls/(Input [a-zA-Z][0-9]) Single Press Counter/meta",
              "topicGet": "/devices/(1)/controls/(2)"
            }
          }
        ]
      },
      {
        "name": "Счётчик срабатываний входа",
        "visible": false,
        "type": "C_PulseMeter",
        "characteristics": [
          {
            "type": "C_PulseCount",
            "link": {
              "type": "Double",
              "topicGet": "/devices/(1)/controls/(2) Counter"
            }
          }
        ]
      },
      {
        "name": "Счетчик коротких нажатий",
        "visible": false,
        "type": "C_PulseMeter",
        "characteristics": [
          {
            "type": "C_PulseCount",
            "link": {
              "type": "Double",
              "topicGet": "/devices/(1)/controls/(2) Single Press Counter"
            }
          }
        ]
      },
      {
        "name": "Счетчик длинных нажатий",
        "visible": false,
        "type": "C_PulseMeter",
        "characteristics": [
          {
            "type": "C_PulseCount",
            "link": {
              "type": "Double",
              "topicGet": "/devices/(1)/controls/(2) Long Press Counter"
            }
          }
        ]
      },
      {
        "name": "Счетчик двойных нажатий",
        "visible": false,
        "type": "C_PulseMeter",
        "characteristics": [
          {
            "type": "C_PulseCount",
            "link": {
              "type": "Double",
              "topicGet": "/devices/(1)/controls/(2) Double Press Counter"
            }
          }
        ]
      },
      {
        "name": "Счетчик коротких, а затем длинных нажатий",
        "visible": false,
        "type": "C_PulseMeter",
        "characteristics": [
          {
            "type": "C_PulseCount",
            "link": {
              "type": "Double",
              "topicGet": "/devices/(1)/controls/(2) Shortlong Press Counter"
            }
          }
        ]
      }
    ]
  },
  {
    "manufacturer": "Wiren Board",
    "model": "WB-MWAC v.2",
    "name": "Кнопка S6",
    "services": [
      {
        "name": "Кнопка S6",
        "type": "StatelessProgrammableSwitch",
        "characteristics": [
          {
            "type": "ProgrammableSwitchEvent",
            "link": {
              "type": "Integer",
              "topicGet": "/devices/(1)/controls/Input S6"
            }
```

Добрый день.
К сожалению не умею писать “шаблоны” под SprutHub - поэтому не могу проверить правильность предложенного.
У вас в таком виде работает успешно?

Я не проверял, жду ваших специалистов. Насколько я понял, такие шаблоны пишет сотрудник WirenBoard, а не SputHub. Потому и жду от него ответ. Аууу

Добрый день. Простите за долгий ответ.
Я подробнее посмотрю ваш запрос и отвечу вам.
Спасибо за обратную связь.

Нужны уточнения:

Что срабатывает в Спруте в данном случае? Покажите, например, скрином. Правильно ли я понимаю, что появление в топике /devices/wb-mwac-v2_XX/controls/Input S6 единицы вызывает какое-то действие в Спрутхабе минуя наш контроллер?

К сожалению, шаблон самого контроллера для данного модуля создает одинаковые топики что для датчика протечки, что для кнопки и подразумевается как вход.
Если настраивать по дефолту в шаблоне Спрута Вход S6 не датчиком протечки, то лучше будет использовать ContactSensor, а не StatelessProgrammableSwitch.

Пришлите диагностический архив.

“Если настраивать по дефолту в шаблоне Спрута Вход S6 не датчиком протечки, то лучше будет использовать ContactSensor, а не StatelessProgrammableSwitch.” Правильнее будет просто Switch.
" Правильно ли я понимаю, что появление в топике /devices/wb-mwac-v2_XX/controls/Input S6 единицы вызывает какое-то действие в Спрутхабе минуя наш контроллер?" а кто ввел input S6?
Можно поговорить с разработчиком шаблона?

Где в шаблоне Вы увидели для S6 ContactSensor или Switch?

там этот вход идет как LeakSensor!

  "manufacturer": "Wiren Board",
    "model": "WB-MWAC v.2",
    "name": "Датчик протечки",
    "services": [
      {
        "name": "Датчик протечки",
        "type": "LeakSensor",
        "characteristics": [
          {
            "type": "LeakDetected",
            "link": {
              "type": "Integer",
              "topicSearch": "/devices/(wb-mwac-v2_[0-9]{1,3})/controls/(Input [a-zA-Z][0-9])/meta",
              "topicGet": "/devices/(1)/controls/(2)"
            }
          }
        ]

Опишите подробнее вашу проблему. Сейчас мне до конца не ясно: есть проблема по поведению нашего модуля или вопрос только в шаблоне и отображаемых абстракциях?

Это топик создаваемый нашим шаблоном. В шаблоне все входа это Input’ы. В нашем веб-интерфейсе это все представлено входами.

В данном шаблоне для Спрута есть ContactSensor. И есть LeakSensor.
Повторюсь, по топикам нет возможности однозначно определить - настроен модуль на датчик протечки или как кнопка.
Это можно разграничить только если включить опрос “Счетчика коротких нажатий”, тогда в Спруте будет ContactSensor, а не LeakSensor.
Вы можете для Input S6 включить этот канал и данный вход уже будет не “датчиком протечки”.