Проблема с KNX (нужно получать телеграммы из шины)

Телеграммы-то есть. Только смотрите за групповыми адресами… они у вас тоже чудесным образом с 28/3/1 превратились в 12/3/1 - т.е. вы уже воспроизвели то, что происходит у меня.

Да, поэтому и пишу что проверю остальные адреса.
Ну и монитор самого knxd

knxd верно принимает:

knxtool vbusmonitor1 local:/var/run/knx
L_Busmon: BC 51 02 E3 01 E1 00 81 92 :L_Data low from 5.1.2 to 28/3/1 hops: 06 T_Data_Group A_GroupValue_Write (small) 01 
L_Busmon: BC 51 02 E3 01 E1 00 80 93 :L_Data low from 5.1.2 to 28/3/1 hops: 06 T_Data_Group A_GroupValue_Write (small) 00 

Смущает меня, когда адрес устройства выводится как групповой адрес. Это я про i:5/1/2. Можно ли будет доработать вывод до правильного i:5.1.2?

1 лайк

Как можно скорее исправим баг со старшим значением адреса (сегодня, завтра).

Но имейте в виду, что устройства первого поколения не поддерживают полный 16-битный диапазон групповых адресов, диапазон старшей группы ‘main’ для них: 0…15.
Впоследствии его расширили, задействовав резервный бит группового адреса до 0…31.

1 лайк

А где то эти устройства еще используются?

Расширили старшую группу группового адреса. Теперь групповой адрес обрабатывается корректно.

Доступно в Тестинг-релизе

1 лайк

Вы правы. Правильный вывод это i:5.1.2.
Но в целях совместимости с уже существующими инсталляциями, оставим как есть.

А как на счет стабильного релиза? Переводить “продакшен” железку на тестовый релиз - не самая правильная практика, имхо.

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

Тут не согласен. Каким образом представляются данные внутри ПО - стандартами не определяется.

Поставьте один пакет из тестового. Хоть и не приветствуем такое - но для теста можно.

Мне не для теста - мне для работы.

Внутри ПО - да (во внутреннюю кухню лезть очень не хочется, хотя и приходится). Но это все “снаружи” - это все видно в интерфейсе пользователя. И путает ваших же пользователей (и меня в том числе).

Промышленный стандарт не распространяется на строку вида:
i:1/1/1 g:1/2/3 GroupValueWrite 0x0c 0xc9
Эта строка детерминирована, и однозначно определяет все подгруппы индивидуального адреса.

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

Варианты по проблеме с диапазоном главной группы группового адреса:

  1. Обновляете wb-mqtt-knx пакет до тестинга, и через пару месяцев обновляете пакет до стабильного релиза, в котором будут уже все изменения.
  2. Не используете диапазон главной группы 16…31.

Вариант по проблеме с отображением индивидуального адреса:

  1. Добавляете правило, которое создаёт виртуальное устройство, которое выдаёт приемлемое для Вас значение, например в таком виде: i:1.1.1 g:1/2/3 GroupValueWrite 0x0c 0xc9

Правило:

// Создаём новое виртуальное устройство.
defineVirtualDevice("display_knx", {
  title: "Display KNX",
  cells: {
    data: {
      type: "text",
      value: ""
    },
  }
});

defineRule("rule_display_knx", { //название правила
  whenChanged: "knx/data", //при изменении состояния knx/data

  then: function(newValue, devName, cellName) { //выполнять следующие действия
  var re = /\//;
  
  // Заменить слеш на точку в индивидуальном адресе и опубликовать в устройстве
  dev["display_knx"]["data"] = newValue.replace(re, ".").replace(re, "."); 
  }
});
1 лайк