Подключение панели Kinco GL070e

Добрый день. Не могу сконнектить панель Kinco gl070e c wb8. 5 по mqtt. В логах - Client… disconnected, not authorised. Авторизация отключена. Mqttx подключается к wb без проблем. Kinco панель и mqttх через broker. Emqx. Io работают - и получаю сообщения и отправляю и с панели и через mqttx. Почему то wb видит соединение от панели но разрывает связь.

Добрый день. Как я понимаю на “панели” - клиент MQTT? Проверьте пожалуйста, соединяется ли с компьютера, с помощью mosquitto_sub, например вот так.

Вот это - пока непонятно. Что такое “видит”?


Вот из журнала

Проверьте пожалуйста, соединяется ли с компьютера, с помощью mosquitto_sub, например вот [так]
Это как я понимаю из SSH подключения попробовать подписаться на топик в панели?

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

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

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

Теперь в настройках Dtools (ПО панели Kinco):

без проверки.

Здесь топик на чтение из контроллера
вроде как все в порядке.

вот формат подписки — может дело в нем — По умолчанию стоит. А если поставить настройку то вот что внутри:

И так ошибка в логах идет:

Меняю настройки в панели MQTT на север


Вот топики

и на подписку

Теперь запускаю MQTTX


нет паролей
на панели ввожу 54 и вижу ответ

далее публикую

и на панели вижу 11


получается панель на брокер EMQX шлет и получает
а вот на WB нет.

Попробовал из консоли контроллера подписаться на сообщение от панели которое она шлет на брокер EMQX


Так ответ видно.

Эти настройки никак не меняют режим работы брокера. Служат только и исключительно для настройки веб-интерфеса и должны совпадать с текущими настройками брокера. Поскольку сейчас, в актуальных релитзах интерфейс соединяется с брокером через порт http - менять их не надо.

Настраивается брокер при необходимости авторизации так: MQTT в контроллерах Wiren Board — Wiren Board

Для примера, я пробую подписаться анонимно:

1 mosquitto_sub -v -t /devices/system/#  -h 10.0.0.85
/devices/system/meta {"driver":"wb-rules","title":{"en":"System","ru":"Система"}}
/devices/system/meta/name System
/devices/system/meta/driver wb-rules
/devices/system/controls/Batch No 8.5.1B/2G 1.2C-2G
/devices/system/controls/Batch No/meta {"order":1,"readonly":true,"title":{"en":"Batch No","ru":"Номер партии"},"type":"text"}
/devices/system/controls/Batch No/meta/order 1
/devices/system/controls/Batch No/meta/readonly 1
/devices/system/controls/Batch No/meta/type text
/devices/system/controls/Current uptime 7d 17h 19m
/devices/system/controls/Current uptime/meta {"order":2,"readonly":true,"title":{"en":"Current uptime","ru":"Время работы"},"type":"text"}
/devices/system/controls/Current uptime/meta/type text
/devices/system/controls/Current uptime/meta/order 2
/devices/system/controls/Current uptime/meta/readonly 1
/devices/system/controls/DTS Version 851

Если явно пробую использовать авторизацию, хотя у меня разрешен анонимный доступ:

mosquitto_sub -v -t /devices/system/#  -h 10.0.0.85 -u testtest -P 333
Connection error: Connection Refused: not authorised.

Ну и вижу аналогичный вывод в лог.
Соответственно: Или отключите в настройках панели явно авторизациюю или установите креды для нее в брокере.

или установите креды для нее в брокере
Как установить креды и что это такое?

Включите доступ “по паролю” (отключите анонимный). И создайте логин, задав ему пароль (создать креды).

Спасибо. Я поступил немного иначе. Я в файле конфига москито закоментировал строчку с подключением файла пароля. Теперь коннект есть.
С панели публикую сообщения, на контроллере через ssh подписываюсь, вижу. А как в контроллере сделать чтобы в мои топики с панели появились в разделе контроллера? Чтобы их на виджеты повесить.
И ещё как узнать формат данных с топиков контроллера, какое число передаётся, целое 16 бит или вещественное? Надо в панели переменную определять. Например температура cpu. Где это можно посмотреть?

Обычно решается вот так: Использование Tasmota-устройств с контроллером Wiren Board — Wiren Board
Но, в общем, совсем не обязательно использовать именно внешний конветор. Достаточно в простом случае написать его на wb-rules.
Для примера:

log.info("OpenHasp started");
function makeNewVirtualControl(vdName, nameControl, typeControl){
  //log.info("GetDevice", getDevice("vdName"))
  if (getDevice(vdName) === undefined) {
    log.info("Define new")
    defineVirtualDevice(vdName, {
      title: vdName,
      cells: {},
    })
  }
     //Тут проверим есть ли уже контрол и если нет - создадим.
    if (!getDevice(vdName).isControlExists(nameControl)) {
      log.debug("Контрола "+nameControl+" нет, создаем.")
      getDevice(vdName).addControl(nameControl, typeControl);
    }
}


function makeRule(sourceTopick, destTopick){
  defineRule(destTopick, {
    whenChanged: sourceTopick,
    then: function (newValue, devName, cellName) {
      publish(destTopick, dev[sourceTopick]);
    }
  });
}


//Создаем контролs для устройства
var namePanel = "MainPanel";
var rootTopick = "hasp/plate199";
//makeNewVirtualControl(nameGate, "position", {type: "range", value: 0, min: 0, max: 100, readonly: true});
//makeNewVirtualControl(namePanel, "ruleEnable", {type: "switch", value: "false", readonly: false});
makeNewVirtualControl(namePanel, "Temperature", {type: "value", value: 0, readonly: false}); //Создаем топик в виртуальном устройстве
makeRule(namePanel+"/"+"Temperature", rootTopick+"/command/p1b5.text");//Правило, которое по изменению топика в виртуальном устройстве - публикует его значение в топик устройства

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

Спасибо. я так и думал что надо виртуальное устройство создавать с нужными топиками.
Есть еще вопрос.
Про формат загрузки и выгрузки топиков в формате JSON/
У меня сейчас все работает по вот такому шаблону в панели:

{

“d”:{

“ItemValue2”:[3.5]

},“ts”:“”

}

Я, к сожалению никогда не настраивал такую панель.
Судя по виду - обычный json.
Значения с помощью mosquitto_pub вы (в панель) публикуете как?

Вот что получается

1- меняю здесь —
2- отправляю
3 — результат и на панели меняется индикатор
4 — а вот так никак.

Что именно (строка) публикуется при этом в топик?

Что в топик публикуется? Есть ли отличия?

Вот подписался на WB на топик в панели битовый

Отлично. А что если опубликовать такую же строку с помощью mosquitto_pub?
Ну, банально -m '{"d":{"enable": 0}, "ts":""}'

А зачем? Ну то есть публикуется ведь - зачем менять. Нет, по сути разницы что именно разбирать - json или просто значение.

Педполагаю что и публиковать надо с указанием целевого значения.

это то да, попробую — это будет из SSH сессии. А то что как мне WB заставить чтобы он всё публиковал тогда через явное задание, а не просто числом.
А то не могу считать панелью ни один топик из WB?

Публикация из второй сессии не проходит.

Реально получается только на панели ловить то что публикуется из MQTTX и по шаблону

{

“d”:{

“enable”:0

},“ts”:“”

}

А из WB из топиков и из под SSH pub командой нет ничего

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