Добрый день. Не могу сконнектить панель Kinco gl070e c wb8. 5 по mqtt. В логах - Client… disconnected, not authorised. Авторизация отключена. Mqttx подключается к wb без проблем. Kinco панель и mqttх через broker. Emqx. Io работают - и получаю сообщения и отправляю и с панели и через mqttx. Почему то wb видит соединение от панели но разрывает связь.
Добрый день. Как я понимаю на “панели” - клиент MQTT? Проверьте пожалуйста, соединяется ли с компьютера, с помощью mosquitto_sub, например вот так.
Вот это - пока непонятно. Что такое “видит”?
Ну, тут в зависимости от того что (как) именно настроено на брокере контроллера.
Если настроен анонимный доступ а клиент пытается авторизоваться - то как раз и будет подобное. Хотя в случае использования неверных кредитов - тоже.
Именно с компьютера, с контроллера понятно что как раз анонимный будет работать.
Немного непонятно.
Давайте я приложу скриншоты а Вы посмотрите что мне надо сделать.
итак настройки брокера на контроллере — анонимный доступ
Теперь в настройках Dtools (ПО панели Kinco):
без проверки.
Здесь топик на чтение из контроллера
вроде как все в порядке.
вот формат подписки — может дело в нем — По умолчанию стоит. А если поставить настройку то вот что внутри:
И так ошибка в логах идет:
Меняю настройки в панели MQTT на север
Вот топики
и на подписку
Теперь запускаю MQTTX
нет паролей
на панели ввожу 54 и вижу ответ
далее публикую
и на панели вижу 11
получается панель на брокер EMQX шлет и получает
а вот на WB нет.
Эти настройки никак не меняют режим работы брокера. Служат только и исключительно для настройки веб-интерфеса и должны совпадать с текущими настройками брокера. Поскольку сейчас, в актуальных релитзах интерфейс соединяется с брокером через порт 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 вы (в панель) публикуете как?
Что именно (строка) публикуется при этом в топик?
Что в топик публикуется? Есть ли отличия?
Вот подписался на WB на топик в панели битовый
Отлично. А что если опубликовать такую же строку с помощью mosquitto_pub?
Ну, банально -m '{"d":{"enable": 0}, "ts":""}'
А зачем? Ну то есть публикуется ведь - зачем менять. Нет, по сути разницы что именно разбирать - json или просто значение.
Педполагаю что и публиковать надо с указанием целевого значения.
это то да, попробую — это будет из SSH сессии. А то что как мне WB заставить чтобы он всё публиковал тогда через явное задание, а не просто числом.
А то не могу считать панелью ни один топик из WB?
Подозреваю что символы все же разные.
Пожалуйста сравните результаты публикаций в топик. То есть - именно по байтам, результат публикации из используемого приложения и с использованием mosquitto_sub.
К сожалению по картинке у меня не получается это сделать. Вывод из консоли лучше публиковать текстом, с сохранением оригинальной кодировки.















