Перестали поступать данные из KNX в MQTT

Добрый день!
Внезапно перестали поступать данные из KNX (всё резко сделалось по нулям).

WB7 release wb-2304 (as testing)

в терминале:

root@wirenboard-AJI6L32R:~# systemctl status wb-mqtt-knx
● wb-mqtt-knx.service - Wiren Board MQTT KNX bridge
     Loaded: loaded (/lib/systemd/system/wb-mqtt-knx.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-03-30 20:40:01 MSK; 26min ago
   Main PID: 2879 (wb-mqtt-knx)
      Tasks: 5 (limit: 4790)
     Memory: 720.0K
        CPU: 157ms
     CGroup: /system.slice/wb-mqtt-knx.service
             └─2879 /usr/bin/wb-mqtt-knx

Mar 30 20:40:01 wirenboard-AJI6L32R systemd[1]: Started Wiren Board MQTT KNX bridge.
Mar 30 20:40:01 wirenboard-AJI6L32R wb-mqtt-knx[2879]: INFO: [mqtt] Default host and port detected, checking if UNIX socket exists on /var/run/mosquitto/mosquitto.sock
Mar 30 20:40:01 wirenboard-AJI6L32R wb-mqtt-knx[2879]: INFO: [mqtt] UNIX socket exists, using it for connection
Mar 30 20:40:01 wirenboard-AJI6L32R wb-mqtt-knx[2879]: INFO: [mqtt] connection estabilished with code "0" <success>
Mar 30 20:40:01 wirenboard-AJI6L32R wb-mqtt-knx[2879]: INFO: [mqtt] subscription succeeded (message id 1)
Mar 30 20:40:01 wirenboard-AJI6L32R wb-mqtt-knx[2879]: INFO: [mqtt] subscription succeeded (message id 2)
root@wirenboard-AJI6L32R:~#

и ещё:

root@wirenboard-AJI6L32R:~# systemctl status knxd
● knxd.service - KNX Daemon
     Loaded: loaded (/lib/systemd/system/knxd.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-03-30 20:43:29 MSK; 24min ago
TriggeredBy: ● knxd.socket
   Main PID: 5256 (knxd)
      Tasks: 1 (limit: 4790)
     Memory: 372.0K
        CPU: 9.940s
     CGroup: /system.slice/knxd.service
             └─5256 /usr/bin/knxd -e 0.0.1 -E 0.0.2:50 -D -T -n WirenboardKNX -S 224.0.23.12:3671 -b ncn5120:/dev/ttyKNX

Mar 30 20:43:29 wirenboard-AJI6L32R systemd[1]: Starting KNX Daemon...
Mar 30 20:43:29 wirenboard-AJI6L32R systemd[1]: Started KNX Daemon.
root@wirenboard-AJI6L32R:~#

Подумал, что неправильно добавил какое-то устройство, поэтому в “Настройка Групповых объектов KNX” поудалял все устройства, кроме нескольких давно созданных. Сохранил, но в разделе " Каналы MQTT" каналы удалённых устройств не исчезли, а также в разделе “Устройства” не исчезли удалённые устройства.

К шине knx через WB подключение происходит без проблем, в ETS в групповом мониторинге телеграмы ходят.

При попытке перезапустить wb-mqtt-knx в логах такое:

31-03-2023 09:16:55.019 [wb-mqtt-knx]	INFO: [mqtt] subscription succeeded (message id 3)
31-03-2023 09:16:55.019 [wb-mqtt-knx]	INFO: [mqtt] subscription succeeded (message id 2)
31-03-2023 09:16:55.019 [wb-mqtt-knx]	INFO: [mqtt] subscription succeeded (message id 1)
31-03-2023 09:16:55.019 [wb-mqtt-knx]	INFO: [mqtt] connection estabilished with code "0" <success>
31-03-2023 09:16:55.019 [wb-mqtt-knx]	INFO: [mqtt] connection estabilished with code "0" <success>
31-03-2023 09:16:55.018 [wb-mqtt-knx]	INFO: [mqtt] UNIX socket exists, using it for connection
31-03-2023 09:16:55.015 [wb-mqtt-knx]	INFO: [mqtt] Default host and port detected, checking if UNIX socket exists on /var/run/mosquitto/mosquitto.sock
31-03-2023 09:16:54.941 [init.scope]	Started Wiren Board MQTT KNX bridge.
31-03-2023 09:16:54.930 [init.scope]	Stopped Wiren Board MQTT KNX bridge.
31-03-2023 09:16:54.927 [init.scope]	wb-mqtt-knx.service: Failed with result 'timeout'.
31-03-2023 09:16:54.927 [init.scope]	wb-mqtt-knx.service: Main process exited, code=killed, status=9/KILL
31-03-2023 09:16:54.926 [init.scope]	wb-mqtt-knx.service: Killing process 27976 (mosquitto loop) with signal SIGKILL.
31-03-2023 09:16:54.925 [init.scope]	wb-mqtt-knx.service: Killing process 27974 (wb-mqtt-knx) with signal SIGKILL.
31-03-2023 09:16:54.921 [init.scope]	wb-mqtt-knx.service: State 'stop-sigterm' timed out. Killing.
31-03-2023 09:16:54.921 [init.scope]	wb-mqtt-knx.service: State 'stop-sigterm' timed out. Killing.
31-03-2023 09:15:24.919 [init.scope]	Stopping Wiren Board MQTT KNX bridge...

Добрый день. А что выводит systemctl status mosquitto?

● mosquitto.service - Mosquitto MQTT Broker
     Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2023-03-31 08:44:37 MSK; 2h 24min ago
       Docs: man:mosquitto.conf(5)
             man:mosquitto(8)
    Process: 1478 ExecStartPre=/bin/mkdir -m 740 -p /var/log/mosquitto (code=exited, status=0/SUCCESS)
    Process: 1535 ExecStartPre=/bin/chown mosquitto /var/log/mosquitto (code=exited, status=0/SUCCESS)
    Process: 1553 ExecStartPre=/bin/mkdir -m 740 -p /run/mosquitto (code=exited, status=0/SUCCESS)
    Process: 1569 ExecStartPre=/bin/chown mosquitto /run/mosquitto (code=exited, status=0/SUCCESS)
   Main PID: 1575 (mosquitto)
      Tasks: 1 (limit: 4790)
     Memory: 5.9M
        CPU: 3min 50.402s
     CGroup: /system.slice/mosquitto.service
             └─1575 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

Mar 31 08:44:34 wirenboard-AJI6L32R systemd[1]: Starting Mosquitto MQTT Broker...
Mar 31 08:44:35 wirenboard-AJI6L32R mosquitto[1575]: 1680241475: Loading config file /etc/mosquitto/conf.d/00default_listener.conf
Mar 31 08:44:35 wirenboard-AJI6L32R mosquitto[1575]: 1680241475: Loading config file /etc/mosquitto/conf.d/10listeners.conf
Mar 31 08:44:35 wirenboard-AJI6L32R mosquitto[1575]: 1680241475: Loading config file /etc/mosquitto/conf.d/20bridges.conf
Mar 31 08:44:35 wirenboard-AJI6L32R mosquitto[1575]: 1680241475: Loading config file /etc/mosquitto/conf.d/30limits.conf
Mar 31 08:44:37 wirenboard-AJI6L32R systemd[1]: Started Mosquitto MQTT Broker.

Собственно причина - тут:

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

это как правильно сделать?

nodered, но остановка его не решает проблему

Ну если нет идей, то проще наверное сбросить. Что надо сохранить, чтобы восстановить добавленные устройства Modbus?

отредактировать /lib/systemd/system/wb-mqtt-knx.service увеличив время на запуск.

Зачем что-то сбрасывать, не совсем понятно.
Посмотрите на вывод в лог wb-mqtt-knx, обычно указание на проблему в нем.

root@wirenboard-AJI6L32R:~# journalctl -u wb-mqtt-knx -n 50
-- Journal begins at Sat 2023-03-04 19:48:58 MSK, ends at Fri 2023-03-31 16:11:22 MSK. --
-- Journal begins at Sat 2023-03-04 19:48:58 MSK, ends at Fri 2023-03-31 16:11:22 MSK. --
-- Journal begins at Sat 2023-03-04 19:48:58 MSK, ends at Fri 2023-03-31 16:11:22 MSK. --
Mar 31 14:24:31 wirenboard-AJI6L32R wb-mqtt-knx[2496]: INFO: [mqtt] connection estabilished with code "0" <success>
Mar 31 14:24:31 wirenboard-AJI6L32R wb-mqtt-knx[2496]: INFO: [mqtt] subscription succeeded (message id 1)
Mar 31 14:24:31 wirenboard-AJI6L32R wb-mqtt-knx[2496]: INFO: [mqtt] subscription succeeded (message id 2)
Mar 31 15:00:57 wirenboard-AJI6L32R wb-mqtt-knx[2496]: WARNING: [mqtt] connection lost
Mar 31 15:00:58 wirenboard-AJI6L32R wb-mqtt-knx[2496]: INFO: [mqtt] connection estabilished with code "0" <success>
Mar 31 15:00:58 wirenboard-AJI6L32R wb-mqtt-knx[2496]: INFO: [mqtt] subscription succeeded (message id 4)
Mar 31 15:00:58 wirenboard-AJI6L32R wb-mqtt-knx[2496]: INFO: [mqtt] subscription succeeded (message id 5)
Mar 31 15:09:18 wirenboard-AJI6L32R wb-mqtt-knx[2496]: WARNING: [mqtt] connection lost
Mar 31 15:09:19 wirenboard-AJI6L32R wb-mqtt-knx[2496]: INFO: [mqtt] connection estabilished with code "0" <success>
Mar 31 15:09:19 wirenboard-AJI6L32R wb-mqtt-knx[2496]: INFO: [mqtt] subscription succeeded (message id 6)
Mar 31 15:09:19 wirenboard-AJI6L32R wb-mqtt-knx[2496]: INFO: [mqtt] subscription succeeded (message id 7)
Mar 31 15:45:30 wirenboard-AJI6L32R systemd[1]: Stopping Wiren Board MQTT KNX bridge...
Mar 31 15:47:00 wirenboard-AJI6L32R systemd[1]: wb-mqtt-knx.service: State 'stop-sigterm' timed out. Killing.
Mar 31 15:47:00 wirenboard-AJI6L32R systemd[1]: wb-mqtt-knx.service: Killing process 2496 (wb-mqtt-knx) with signal SIGKILL.
Mar 31 15:47:00 wirenboard-AJI6L32R systemd[1]: wb-mqtt-knx.service: Killing process 2499 (backend: reques) with signal SIGKILL.
Mar 31 15:47:00 wirenboard-AJI6L32R systemd[1]: wb-mqtt-knx.service: Killing process 2500 (n/a) with signal SIGKILL.
Mar 31 15:47:00 wirenboard-AJI6L32R systemd[1]: wb-mqtt-knx.service: Main process exited, code=killed, status=9/KILL
Mar 31 15:47:00 wirenboard-AJI6L32R systemd[1]: wb-mqtt-knx.service: Failed with result 'timeout'.
Mar 31 15:47:00 wirenboard-AJI6L32R systemd[1]: Stopped Wiren Board MQTT KNX bridge.
Mar 31 15:47:00 wirenboard-AJI6L32R systemd[1]: Started Wiren Board MQTT KNX bridge.
Mar 31 15:47:00 wirenboard-AJI6L32R wb-mqtt-knx[24116]: INFO: [mqtt] Default host and port detected, checking if UNIX socket exists on /var/run/mosquitto/mosquitto.sock
Mar 31 15:47:00 wirenboard-AJI6L32R wb-mqtt-knx[24116]: INFO: [mqtt] UNIX socket exists, using it for connection
Mar 31 15:47:00 wirenboard-AJI6L32R wb-mqtt-knx[24116]: INFO: [mqtt] connection estabilished with code "0" <success>
Mar 31 15:47:00 wirenboard-AJI6L32R wb-mqtt-knx[24116]: INFO: [mqtt] subscription succeeded (message id 1)
Mar 31 15:47:00 wirenboard-AJI6L32R wb-mqtt-knx[24116]: INFO: [mqtt] subscription succeeded (message id 2)
Mar 31 15:48:31 wirenboard-AJI6L32R systemd[1]: Stopping Wiren Board MQTT KNX bridge...
Mar 31 15:50:01 wirenboard-AJI6L32R systemd[1]: wb-mqtt-knx.service: State 'stop-sigterm' timed out. Killing.
Mar 31 15:50:01 wirenboard-AJI6L32R systemd[1]: wb-mqtt-knx.service: Killing process 24116 (wb-mqtt-knx) with signal SIGKILL.
Mar 31 15:50:01 wirenboard-AJI6L32R systemd[1]: wb-mqtt-knx.service: Main process exited, code=killed, status=9/KILL
Mar 31 15:50:01 wirenboard-AJI6L32R systemd[1]: wb-mqtt-knx.service: Failed with result 'timeout'.
Mar 31 15:50:01 wirenboard-AJI6L32R systemd[1]: Stopped Wiren Board MQTT KNX bridge.
Mar 31 15:50:01 wirenboard-AJI6L32R systemd[1]: Started Wiren Board MQTT KNX bridge.
Mar 31 15:50:01 wirenboard-AJI6L32R wb-mqtt-knx[26078]: INFO: [mqtt] Default host and port detected, checking if UNIX socket exists on /var/run/mosquitto/mosquitto.sock
Mar 31 15:50:01 wirenboard-AJI6L32R wb-mqtt-knx[26078]: INFO: [mqtt] UNIX socket exists, using it for connection
Mar 31 15:50:01 wirenboard-AJI6L32R wb-mqtt-knx[26078]: INFO: [mqtt] connection estabilished with code "0" <success>
Mar 31 15:50:01 wirenboard-AJI6L32R wb-mqtt-knx[26078]: INFO: [mqtt] subscription succeeded (message id 1)
Mar 31 15:50:01 wirenboard-AJI6L32R wb-mqtt-knx[26078]: INFO: [mqtt] subscription succeeded (message id 2)
Mar 31 16:09:19 wirenboard-AJI6L32R systemd[1]: Stopping Wiren Board MQTT KNX bridge...
Mar 31 16:10:49 wirenboard-AJI6L32R systemd[1]: wb-mqtt-knx.service: State 'stop-sigterm' timed out. Killing.
Mar 31 16:10:49 wirenboard-AJI6L32R systemd[1]: wb-mqtt-knx.service: Killing process 26078 (wb-mqtt-knx) with signal SIGKILL.
Mar 31 16:10:49 wirenboard-AJI6L32R systemd[1]: wb-mqtt-knx.service: Killing process 26080 (mosquitto loop) with signal SIGKILL.
Mar 31 16:10:49 wirenboard-AJI6L32R systemd[1]: wb-mqtt-knx.service: Main process exited, code=killed, status=9/KILL
Mar 31 16:10:49 wirenboard-AJI6L32R systemd[1]: wb-mqtt-knx.service: Failed with result 'timeout'.
Mar 31 16:10:49 wirenboard-AJI6L32R systemd[1]: Stopped Wiren Board MQTT KNX bridge.
Mar 31 16:10:49 wirenboard-AJI6L32R systemd[1]: Started Wiren Board MQTT KNX bridge.
Mar 31 16:10:49 wirenboard-AJI6L32R wb-mqtt-knx[7374]: INFO: [mqtt] Default host and port detected, checking if UNIX socket exists on /var/run/mosquitto/mosquitto.sock
Mar 31 16:10:49 wirenboard-AJI6L32R wb-mqtt-knx[7374]: INFO: [mqtt] UNIX socket exists, using it for connection
Mar 31 16:10:49 wirenboard-AJI6L32R wb-mqtt-knx[7374]: INFO: [mqtt] connection estabilished with code "0" <success>
Mar 31 16:10:49 wirenboard-AJI6L32R wb-mqtt-knx[7374]: INFO: [mqtt] subscription succeeded (message id 1)
Mar 31 16:10:49 wirenboard-AJI6L32R wb-mqtt-knx[7374]: INFO: [mqtt] subscription succeeded (message id 2)

ну проблему желательно решить в ближайшее время, а идей как нет.

сейчас такое содержимое:

[Unit]
Description=Wiren Board MQTT KNX bridge
After=knxd.service wb-hwconf-manager.service

[Service]
Type=simple
Restart=on-failure
RestartSec=15
User=root
ExecStart=/usr/bin/wb-mqtt-knx

RestartPreventExitStatus=2 3 4 5 6 7

[Install]
WantedBy=multi-user.target

что необходимо добавить?

Включен для в mosquitto persistence?
Отключите его так:

отключил, вроде всё заработало. Теперь бы понять, почему это произошло? На других устройствах посмотрел. persistence true, т.е. тоже может такой сбой произойти? отключить?

Проблема сохраняется в таком виде: если изменить конфигурацию KNX, то проблема проявляется, рестарт wb-mqtt-knx не помогает. если перезапустить mosquitto, а затем wb-mqtt-knx, то устройства knx работают нормально… но иногда отваливаются другие устройства. После перезагрузки контроллера всё работает нормально.

Приложите пожалуйста лог работы wb-mqtt-knx в момент возникающих проблем в работе.

03-04-2023 11:55:36.325 [init.scope]	wb-mqtt-knx.service: Consumed 4.152s CPU time.
03-04-2023 11:55:36.321 [init.scope]	wb-mqtt-knx.service: Scheduled restart job, restart counter is at 3.
03-04-2023 11:55:21.105 [init.scope]	wb-mqtt-knx.service: Consumed 4.152s CPU time.
03-04-2023 11:55:21.102 [init.scope]	wb-mqtt-knx.service: Failed with result 'signal'.
03-04-2023 11:55:21.098 [init.scope]	wb-mqtt-knx.service: Main process exited, code=killed, status=11/SEGV
03-04-2023 11:55:14.327 [init.scope]	wb-mqtt-knx.service: Consumed 4.151s CPU time.
03-04-2023 11:55:14.321 [init.scope]	wb-mqtt-knx.service: Scheduled restart job, restart counter is at 2.
03-04-2023 11:54:59.306 [init.scope]	wb-mqtt-knx.service: Consumed 4.151s CPU time.
03-04-2023 11:54:59.305 [init.scope]	wb-mqtt-knx.service: Failed with result 'signal'.
03-04-2023 11:54:59.303 [init.scope]	wb-mqtt-knx.service: Main process exited, code=killed, status=11/SEGV
03-04-2023 11:54:59.303 [init.scope]	wb-mqtt-knx.service: Main process exited, code=killed, status=11/SEGV
03-04-2023 11:54:52.074 [init.scope]	wb-mqtt-knx.service: Consumed 4.402s CPU time.
03-04-2023 11:54:52.071 [init.scope]	wb-mqtt-knx.service: Scheduled restart job, restart counter is at 1.
03-04-2023 11:54:36.855 [init.scope]	wb-mqtt-knx.service: Consumed 4.402s CPU time.
03-04-2023 11:54:36.854 [init.scope]	wb-mqtt-knx.service: Failed with result 'signal'.
03-04-2023 11:54:36.851 [init.scope]	wb-mqtt-knx.service: Main process exited, code=killed, status=11/SEGV
03-04-2023 11:54:27.073 [init.scope]	wb-mqtt-knx.service: Consumed 55.475s CPU time.
03-04-2023 11:54:27.069 [init.scope]	wb-mqtt-knx.service: Succeeded.
03-04-2023 11:54:27.056 [wb-mqtt-knx]	INFO: wb-mqtt-knx service stopped

Вот как раз в это время - есть записи в логи? особенно интересен вывод сообщений ядра.

если без фильтрации то вот:

03-04-2023 11:55:23.612 [nodered]	3 Apr 12:55:23 - [info] [wirenboard-out:f5abbe625e544738] Published to mqtt topic: /devices/Lights Status/controls/Status 2.Chandelier/on : 0
03-04-2023 11:55:23.609 [nodered]	3 Apr 12:55:23 - [info] [wirenboard-out:2286899ea3957620] Published to mqtt topic: /devices/Lights Status/controls/Status 1.Chandelier/on : 0
03-04-2023 11:55:21.105 [init.scope]	wb-mqtt-knx.service: Consumed 4.152s CPU time.
03-04-2023 11:55:21.102 [init.scope]	wb-mqtt-knx.service: Failed with result 'signal'.
03-04-2023 11:55:21.098 [init.scope]	wb-mqtt-knx.service: Main process exited, code=killed, status=11/SEGV
03-04-2023 11:55:21.096 [wb-mqtt-knx]	INFO: Connecting to knxd... URL: '
03-04-2023 11:55:21.090 [wb-mqtt-knx]	WARNING: [conventions] converting empty value to boolean "false"
03-04-2023 11:55:20.782 [wb-mqtt-knx]	INFO: [mqtt] subscription succeeded (message id 4396)
03-04-2023 11:55:20.683 [wb-mqtt-knx]	INFO: [mqtt] subscription succeeded (message id 4395)

А как за это время получить вывод сообщений ядра? у меня это не получилось, логи были только после (видимо всё, что до ребута, в логи не вошло)

Так, сейчас wb-mqtt-knx по прежнему перезапускается? Если да - дайте доступ к кнотроллеру, посмотрю сам, интересно.

Да, всё так же, после изменения конфигурации KNX требуется пезезапуск. Доступ по anydesk?

Предпочтительней, конечно ssh но можно и так.

Напишите как сможете пожалуйста.