Добавление собственного устройства в /etc/wb-mqtt-serial.conf

Хочу подключить собственное Modbus устройство к WB6.
В папке /usr/share/wb-mqtt-serial/templates создал свой файл config-fw-cpm712-e10-01.json в соответствии с описанием.
В нем прописал “device_type” : “FW-CPM712-E10-01”.
Сделал service wb-mqtt-serial restart.

На странице конфига в веб-интерфейсе добавленный тип не выводится.

Добавил устройство на веб-странице с типом lc103, потом вручную в файле /etc/wb-mqtt-serial.conf заменяю тип на FW-CPM712-E10-01. Опять перезагружаю сервис wb-mqtt-serial.

На веб-странице выводится сообщение: “invalid config file”.

Вернул в файле /etc/wb-mqtt-serial.conf тип на lc103. Опять перезагружаю сервис wb-mqtt-serial.
Та же ошибка на веб-странице.

Удалил устройство из /etc/wb-mqtt-serial.conf - веб-страница стала корректно отображаться.

Как мне добавить свой тип устройства, чтобы он отображался в списке на веб-странице?

Получилось. Опять кривая документация!
Оказалось, что не нужно писать строку со slave_id в файле шаблона.
А в примерах она везде есть!
https://wirenboard.com/wiki/index.php/Драйвер_wb-mqtt-serial:Примеры_написания_шаблонов

Какой-то глюк.

На странице Devices должно отображаться только 1 устройство, добавленное в /etc/wb-mqtt-serial.conf, а отображаются все, которые я добавлял ранее. И у вас в облаке тоже лишние устройства отображаются.

https://wirenboard.com/wiki/index.php/MQTT#.D0.9E.D1.87.D0.B8.D1.81.D1.82.D0.BA.D0.B0_.D0.BE.D1.87.D0.B5.D1.80.D0.B5.D0.B4.D0.B8_.D1.81.D0.BE.D0.BE.D0.B1.D1.89.D0.B5.D0.BD.D0.B8.D0.B9

Получилось удалить.

Я поменял названия каналов в шаблоне устройства, а на вкладке Devices отображаются старые названия. Удалил, а потом снова добавил устройство в /etc/wb-mqtt-serial.conf.
Перезагрузил сервис wb-mqtt-serial.
Но теперь на вкладке Devices моего устройства нет.
Как его вернуть?

Здесь у вас актуальное описание формата файла?

У вас в разных местах документации примеры файлов различаются.
Где последний полный актуальный вариант этого описания?

Что означает “type” : “temperature”, чем он отличается от “text”?
Что означает “scale”?

Перезагрузил ПЛК. После этого появилось на странице devices устройство со старыми названиями каналов. В облаке устройство совсем не отображается.

У вас в документации описано, как происходит формирование веб-страниц в ПЛК?
Дайте, пожалуйста, ссылку. Может, я смогу разобраться, почему некорректные данные с устройства на странице Devices.

Нашел описание типов.

А те типы, которые есть сейчас, можно посмотреть здесь:

Если мне нужно сделать поле ввода произвольного числа типа float (ввод уставки), то мне нужно указывать мета-тип: value?

1 лайк

Проверил через mosquitto_sub - отображаются старые названия каналов, т. е. новый файл шаблонов не подгрузился для устройства.

Похоже, что проблема в сервисе wb-mqtt-serial. Я с ним сам точно не разберусь.

Добавил новый файл шаблона config-fw-cpm712-e10-02.json.
Прописал его в /etc/wb-mqtt-serial.conf.
service wb-mqtt-serial restart

Все равно отображается старое устройство.

Может надо еще что-то перезагрузить?

да

лог /var/log/messages надо посмотреть

Пусто там

Добавляю устройство, меняю в редакторе тип на правильный.
На веб-странице редактирования конфига опять выводится сообщение: “Error loading the file:invalid config file”.

Копировал файлы через плагин для Total Commander, потом редактирую их и копирую обратно на устройство.
Заметил, что вместо некоторых файлов в /etc размещены ссылки на их копии на /mnt/data/etc/.
Причем при попытке просмотреть копии тоже пустота.
Выкачал его - файл нулевой длины.
Похоже WB6 затирает сам содержимое файлов.

Попытался в командной строке скопировать файл вышло сообщение: “no space left on device”.

Вся консоль забита сообщениями от RTL871X.

Подозреваю, что проблема возникла после того, как в wb-mqtt-serial вместо “debug” : “false” появилось “debug” : “true”, хотя я этого не писал.

И что с этим теперь делать?

Предполагаю, что мне нужно понять, куда делась вся память.
Отключить как-то ненужное логирование.
А потом восстанавливать контроллер в заводское состояние.

Можете описать алгоритм, как это сделать?

Команда df -h показывает, что на разделе /mnt/data занято 100% - 1.4G.
При этом команда ls -alhS показывает, что на /mnt/data занято только 40K.
Кто врет?

Никто не врёт. Это разные команды, которые выводят разные вещи. В вашем случае верьте du.

Примерно такой командой:
cd /mnt/data; df -h | egrep "mnt|Size"; echo -ne "\nSpace used: ";du -skh

В моем случае df и du примерно совпадают:

Ну хорошо. Вот выяснил я, что место во внутренней памяти закончилось. А дальше-то что мне делать?