Циклический перезапуск сервиса wb-welrok

Здравствуйте! Прошу помочь с проблемой.
Термостаты Welrok OZ

1. В логах сыпятся сообщения:

02-03-2026 21:45:57.990 [init.scope]	wb-welrok.service: Consumed 1.995s CPU time.
02-03-2026 21:45:57.989 [init.scope]	wb-welrok.service: Failed with result 'exit-code'.
02-03-2026 21:45:57.987 [init.scope]	wb-welrok.service: Main process exited, code=exited, status=1/FAILURE
02-03-2026 21:45:57.714 [wb-welrok]	KeyError: 'mqtt_server_uri'
02-03-2026 21:45:57.714 [wb-welrok]	    devices_config[0]["mqtt_server_uri"] if devices_config and len(devices_config) > 0 else None
02-03-2026 21:45:57.711 [wb-welrok]	  File "/opt/venvs/wb-welrok/lib/python3.9/site-packages/wb_welrok/wb_welrok_client.py", line 21, in __init__
02-03-2026 21:45:57.711 [wb-welrok]	    welrok_client = WelrokClient(devices)
02-03-2026 21:45:57.711 [wb-welrok]	  File "/opt/venvs/wb-welrok/lib/python3.9/site-packages/wb_welrok/main.py", line 75, in main
02-03-2026 21:45:57.711 [wb-welrok]	    sys.exit(main(sys.argv))
02-03-2026 21:45:57.710 [wb-welrok]	  File "/usr/bin/wb-welrok", line 8, in <module>
02-03-2026 21:45:57.710 [wb-welrok]	Traceback (most recent call last):
02-03-2026 21:45:57.664 [wb-welrok]	INFO: Welrok service starting (main.py:50)
02-03-2026 21:45:55.935 [init.scope]	Started Wiren Board Welrok thermostat MQTT driver.

2. Проверка статус сервиса:

# systemctl status wb-welrok
● wb-welrok.service - Wiren Board Welrok thermostat MQTT driver
     Loaded: loaded (/lib/systemd/system/wb-welrok.service; enabled; vendor preset: enabled)
     Active: activating (auto-restart) (Result: exit-code) since Mon 2026-03-02 21:58:22 MSK; 3s ago
    Process: 4198 ExecStart=/usr/bin/wb-welrok (code=exited, status=1/FAILURE)
   Main PID: 4198 (code=exited, status=1/FAILURE)
        CPU: 1.973s

3. Скриншот настроек в Web-UI (/etc/wb-welrok.conf)

4. Установленный пакет:

# apt show wb-welrok
Package: wb-welrok
Version: 0.0.16
Priority: optional
Section: misc
Maintainer: Ivan Belokrylov <belokrylov.i@welrok.com>
Installed-Size: 28.3 MB
Download-Size: 6,205 kB
APT-Manual-Installed: yes
APT-Sources: http://deb.wirenboard.com/wb7/bullseye stable/main armhf Packages
Description: Wiren Board MQTT Driver for Welrok thermostat
 This is a distribution of "wb-welrok" packaged as a self-contained

5. Архив с диагностикой:

приложен диагностический архив, доступен только сотрудникам поддержки
(290,1 КБ)

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

Подключение: подключается датчик температуры и подается питание из розетки (на фото)

Фото устройства (спереди и сзади):


Регуляторы подключены в локальную сеть по вай-фай.
Связь с облаком Welrok есть. С Wirenboard соединял по инструкции в вики

Попробуйте заново перезапустить сервис
systemctl restart wb-welrok
Проверьте сервис должен стать активным
systemctl status wb-welrok

если не помогает то попробуйте переустановить
apt update && apt reinstall wb-welrok

Выполнил - не помогло (

# systemctl restart wb-welrok
# systemctl status wb-welrok
● wb-welrok.service - Wiren Board Welrok thermostat MQTT driver
     Loaded: loaded (/lib/systemd/system/wb-welrok.service; enabled; vendor preset: enabled)
     Active: activating (auto-restart) (Result: exit-code) since Wed 2026-03-04 20:39:02 MSK; 4s ago
    Process: 8275 ExecStart=/usr/bin/wb-welrok (code=exited, status=1/FAILURE)
   Main PID: 8275 (code=exited, status=1/FAILURE)
        CPU: 1.935s
# journalctl --since 20:38:46
-- Journal begins at Thu 2022-12-22 14:55:45 MSK, ends at Wed 2026-03-04 20:39:24 MSK. --
Mar 04 20:38:46 wirenboard-********* systemd[1]: wb-welrok.service: Scheduled restart job, restart counter is at 37.
Mar 04 20:38:46 wirenboard-********* systemd[1]: Stopped Wiren Board Welrok thermostat MQTT driver.
Mar 04 20:38:46 wirenboard-********* systemd[1]: wb-welrok.service: Consumed 1.954s CPU time.
Mar 04 20:38:46 wirenboard-********* systemd[1]: Started Wiren Board Welrok thermostat MQTT driver.
Mar 04 20:38:47 wirenboard-********* wb-welrok[8162]: INFO: Welrok service starting (main.py:50)
Mar 04 20:38:47 wirenboard-********* wb-welrok[8162]: Traceback (most recent call last):
Mar 04 20:38:47 wirenboard-********* wb-welrok[8162]:   File "/usr/bin/wb-welrok", line 8, in <module>
Mar 04 20:38:47 wirenboard-********* wb-welrok[8162]:     sys.exit(main(sys.argv))
Mar 04 20:38:47 wirenboard-********* wb-welrok[8162]:   File "/opt/venvs/wb-welrok/lib/python3.9/site-packages/wb_welrok/main.py", line 75, in main
Mar 04 20:38:47 wirenboard-********* wb-welrok[8162]:     welrok_client = WelrokClient(devices)
Mar 04 20:38:47 wirenboard-********* wb-welrok[8162]:   File "/opt/venvs/wb-welrok/lib/python3.9/site-packages/wb_welrok/wb_welrok_client.py", line 21, in __>
Mar 04 20:38:47 wirenboard-********* wb-welrok[8162]:     devices_config[0]["mqtt_server_uri"] if devices_config and len(devices_config) > 0 else None
Mar 04 20:38:47 wirenboard-********* wb-welrok[8162]: KeyError: 'mqtt_server_uri'
Mar 04 20:38:48 wirenboard-********* systemd[1]: wb-welrok.service: Main process exited, code=exited, status=1/FAILURE
Mar 04 20:38:48 wirenboard-********* systemd[1]: wb-welrok.service: Failed with result 'exit-code'.
Mar 04 20:38:48 wirenboard-********* systemd[1]: wb-welrok.service: Consumed 1.943s CPU time.
Mar 04 20:38:53 wirenboard-********* systemd[1]: wb-welrok.service: Scheduled restart job, restart counter is at 38.
Mar 04 20:38:53 wirenboard-********* systemd[1]: Stopped Wiren Board Welrok thermostat MQTT driver.
Mar 04 20:38:53 wirenboard-********* systemd[1]: wb-welrok.service: Consumed 1.943s CPU time.
Mar 04 20:38:53 wirenboard-********* systemd[1]: Started Wiren Board Welrok thermostat MQTT driver.
Mar 04 20:38:54 wirenboard-********* wb-welrok[8223]: INFO: Welrok service starting (main.py:50)
Mar 04 20:38:54 wirenboard-********* wb-welrok[8223]: Traceback (most recent call last):
Mar 04 20:38:54 wirenboard-********* wb-welrok[8223]:   File "/usr/bin/wb-welrok", line 8, in <module>
Mar 04 20:38:54 wirenboard-********* wb-welrok[8223]:     sys.exit(main(sys.argv))
Mar 04 20:38:54 wirenboard-********* wb-welrok[8223]:   File "/opt/venvs/wb-welrok/lib/python3.9/site-packages/wb_welrok/main.py", line 75, in main
Mar 04 20:38:54 wirenboard-********* wb-welrok[8223]:     welrok_client = WelrokClient(devices)
Mar 04 20:38:54 wirenboard-********* wb-welrok[8223]:   File "/opt/venvs/wb-welrok/lib/python3.9/site-packages/wb_welrok/wb_welrok_client.py", line 21, in __>
Mar 04 20:38:54 wirenboard-********* wb-welrok[8223]:     devices_config[0]["mqtt_server_uri"] if devices_config and len(devices_config) > 0 else None
Mar 04 20:38:54 wirenboard-********* wb-welrok[8223]: KeyError: 'mqtt_server_uri'
Mar 04 20:38:55 wirenboard-********* systemd[1]: wb-welrok.service: Main process exited, code=exited, status=1/FAILURE
Mar 04 20:38:55 wirenboard-********* systemd[1]: wb-welrok.service: Failed with result 'exit-code'.
Mar 04 20:38:55 wirenboard-********* systemd[1]: wb-welrok.service: Consumed 1.995s CPU time.
Mar 04 20:39:00 wirenboard-********* systemd[1]: wb-welrok.service: Scheduled restart job, restart counter is at 39.
Mar 04 20:39:00 wirenboard-********* systemd[1]: Stopped Wiren Board Welrok thermostat MQTT driver.
Mar 04 20:39:00 wirenboard-********* systemd[1]: wb-welrok.service: Consumed 1.995s CPU time.
Mar 04 20:39:00 wirenboard-********* systemd[1]: Started Wiren Board Welrok thermostat MQTT driver.
Mar 04 20:39:00 wirenboard-********* systemd[1]: Stopping Wiren Board Welrok thermostat MQTT driver...
Mar 04 20:39:00 wirenboard-********* systemd[1]: wb-welrok.service: Succeeded.
Mar 04 20:39:00 wirenboard-********* systemd[1]: Stopped Wiren Board Welrok thermostat MQTT driver.
Mar 04 20:39:00 wirenboard-********* systemd[1]: Started Wiren Board Welrok thermostat MQTT driver.
Mar 04 20:39:02 wirenboard-********* wb-welrok[8275]: INFO: Welrok service starting (main.py:50)
Mar 04 20:39:02 wirenboard-********* wb-welrok[8275]: Traceback (most recent call last):
Mar 04 20:39:02 wirenboard-********* wb-welrok[8275]:   File "/usr/bin/wb-welrok", line 8, in <module>
Mar 04 20:39:02 wirenboard-********* wb-welrok[8275]:     sys.exit(main(sys.argv))
Mar 04 20:39:02 wirenboard-********* wb-welrok[8275]:   File "/opt/venvs/wb-welrok/lib/python3.9/site-packages/wb_welrok/main.py", line 75, in main
Mar 04 20:39:02 wirenboard-********* wb-welrok[8275]:     welrok_client = WelrokClient(devices)
Mar 04 20:39:02 wirenboard-********* wb-welrok[8275]:   File "/opt/venvs/wb-welrok/lib/python3.9/site-packages/wb_welrok/wb_welrok_client.py", line 21, in __>
Mar 04 20:39:02 wirenboard-********* wb-welrok[8275]:     devices_config[0]["mqtt_server_uri"] if devices_config and len(devices_config) > 0 else None
Mar 04 20:39:02 wirenboard-********* wb-welrok[8275]: KeyError: 'mqtt_server_uri'
Mar 04 20:39:02 wirenboard-********* systemd[1]: wb-welrok.service: Main process exited, code=exited, status=1/FAILURE
Mar 04 20:39:02 wirenboard-********* systemd[1]: wb-welrok.service: Failed with result 'exit-code'.
Mar 04 20:39:02 wirenboard-********* systemd[1]: wb-welrok.service: Consumed 1.935s CPU time.
Mar 04 20:39:07 wirenboard-********* systemd[1]: wb-welrok.service: Scheduled restart job, restart counter is at 1.
Mar 04 20:39:07 wirenboard-********* systemd[1]: Stopped Wiren Board Welrok thermostat MQTT driver.
Mar 04 20:39:07 wirenboard-********* systemd[1]: wb-welrok.service: Consumed 1.935s CPU time.
Mar 04 20:39:07 wirenboard-********* systemd[1]: Started Wiren Board Welrok thermostat MQTT driver.
Mar 04 20:39:09 wirenboard-********* wb-welrok[8332]: INFO: Welrok service starting (main.py:50)
Mar 04 20:39:09 wirenboard-********* wb-welrok[8332]: Traceback (most recent call last):
Mar 04 20:39:09 wirenboard-********* wb-welrok[8332]:   File "/usr/bin/wb-welrok", line 8, in <module>
Mar 04 20:39:09 wirenboard-********* wb-welrok[8332]:     sys.exit(main(sys.argv))
Mar 04 20:39:09 wirenboard-********* wb-welrok[8332]:   File "/opt/venvs/wb-welrok/lib/python3.9/site-packages/wb_welrok/main.py", line 75, in main
Mar 04 20:39:09 wirenboard-********* wb-welrok[8332]:     welrok_client = WelrokClient(devices)
Mar 04 20:39:09 wirenboard-********* wb-welrok[8332]:   File "/opt/venvs/wb-welrok/lib/python3.9/site-packages/wb_welrok/wb_welrok_client.py", line 21, in __>
Mar 04 20:39:09 wirenboard-********* wb-welrok[8332]:     devices_config[0]["mqtt_server_uri"] if devices_config and len(devices_config) > 0 else None
Mar 04 20:39:09 wirenboard-********* wb-welrok[8332]: KeyError: 'mqtt_server_uri'
Mar 04 20:39:09 wirenboard-********* systemd[1]: wb-welrok.service: Main process exited, code=exited, status=1/FAILURE
Mar 04 20:39:09 wirenboard-********* systemd[1]: wb-welrok.service: Failed with result 'exit-code'.
Mar 04 20:39:09 wirenboard-********* systemd[1]: wb-welrok.service: Consumed 2.043s CPU time.
Mar 04 20:39:14 wirenboard-********* systemd[1]: wb-welrok.service: Scheduled restart job, restart counter is at 2.
Mar 04 20:39:14 wirenboard-********* systemd[1]: Stopped Wiren Board Welrok thermostat MQTT driver.
Mar 04 20:39:14 wirenboard-********* systemd[1]: wb-welrok.service: Consumed 2.043s CPU time.
Mar 04 20:39:14 wirenboard-********* systemd[1]: Started Wiren Board Welrok thermostat MQTT driver.
Mar 04 20:39:16 wirenboard-********* wb-welrok[8457]: INFO: Welrok service starting (main.py:50)
Mar 04 20:39:16 wirenboard-********* wb-welrok[8457]: Traceback (most recent call last):
Mar 04 20:39:16 wirenboard-********* wb-welrok[8457]:   File "/usr/bin/wb-welrok", line 8, in <module>
Mar 04 20:39:16 wirenboard-********* wb-welrok[8457]:     sys.exit(main(sys.argv))
Mar 04 20:39:16 wirenboard-********* wb-welrok[8457]:   File "/opt/venvs/wb-welrok/lib/python3.9/site-packages/wb_welrok/main.py", line 75, in main
Mar 04 20:39:16 wirenboard-********* wb-welrok[8457]:     welrok_client = WelrokClient(devices)
Mar 04 20:39:16 wirenboard-********* wb-welrok[8457]:   File "/opt/venvs/wb-welrok/lib/python3.9/site-packages/wb_welrok/wb_welrok_client.py", line 21, in __>
Mar 04 20:39:16 wirenboard-********* wb-welrok[8457]:     devices_config[0]["mqtt_server_uri"] if devices_config and len(devices_config) > 0 else None
Mar 04 20:39:16 wirenboard-********* wb-welrok[8457]: KeyError: 'mqtt_server_uri'
Mar 04 20:39:16 wirenboard-********* systemd[1]: wb-welrok.service: Main process exited, code=exited, status=1/FAILURE
Mar 04 20:39:16 wirenboard-********* systemd[1]: wb-welrok.service: Failed with result 'exit-code'.
Mar 04 20:39:16 wirenboard-********* systemd[1]: wb-welrok.service: Consumed 1.954s CPU time.
Mar 04 20:39:22 wirenboard-********* systemd[1]: wb-welrok.service: Scheduled restart job, restart counter is at 3.
Mar 04 20:39:22 wirenboard-********* systemd[1]: Stopped Wiren Board Welrok thermostat MQTT driver.
Mar 04 20:39:22 wirenboard-********* systemd[1]: wb-welrok.service: Consumed 1.954s CPU time.
Mar 04 20:39:22 wirenboard-********* systemd[1]: Started Wiren Board Welrok thermostat MQTT driver.
Mar 04 20:39:23 wirenboard-********* wb-welrok[8521]: INFO: Welrok service starting (main.py:50)
Mar 04 20:39:23 wirenboard-********* wb-welrok[8521]: Traceback (most recent call last):
Mar 04 20:39:23 wirenboard-********* wb-welrok[8521]:   File "/usr/bin/wb-welrok", line 8, in <module>
Mar 04 20:39:23 wirenboard-********* wb-welrok[8521]:     sys.exit(main(sys.argv))
Mar 04 20:39:23 wirenboard-********* wb-welrok[8521]:   File "/opt/venvs/wb-welrok/lib/python3.9/site-packages/wb_welrok/main.py", line 75, in main
Mar 04 20:39:23 wirenboard-********* wb-welrok[8521]:     welrok_client = WelrokClient(devices)
Mar 04 20:39:23 wirenboard-********* wb-welrok[8521]:   File "/opt/venvs/wb-welrok/lib/python3.9/site-packages/wb_welrok/wb_welrok_client.py", line 21, in __>
Mar 04 20:39:23 wirenboard-********* wb-welrok[8521]:     devices_config[0]["mqtt_server_uri"] if devices_config and len(devices_config) > 0 else None
Mar 04 20:39:23 wirenboard-********* wb-welrok[8521]: KeyError: 'mqtt_server_uri'
Mar 04 20:39:24 wirenboard-********* systemd[1]: wb-welrok.service: Main process exited, code=exited, status=1/FAILURE
Mar 04 20:39:24 wirenboard-********* systemd[1]: wb-welrok.service: Failed with result 'exit-code'.
Mar 04 20:39:24 wirenboard-********* systemd[1]: wb-welrok.service: Consumed 1.953s CPU time.

А затем

# apt update && apt reinstall wb-welrok

И все тоже самое

В логах вижу что ругается на

У себя установил сервис, в веб интерфейсе вижу такое представление, увас не вижу почему-то


Ну и пример моего файла конфига:

{
    "devices": [
        {
            "device_id": "",
            "device_title": "Welrok_thermostat",
            "device_ip": "",
            "inner_mqtt_client_id": "",
            "inner_mqtt_pubprefix": "",
            "inner_mqtt_subprefix": "",
            "serial_number": "",
            "mqtt_server_uri": "tcp://localhost:1883",
            "mqtt_enable": false
        }
    ],
    "debug": false
}

у вас конфиг такого вида без строчки "mqtt_server_uri": "tcp://localhost:1883":

{
    "debug": true,
    "devices": [
        {
            "device_id": "welrok_oz_2",
            "device_ip": "192.168.30.242",
            "device_title": "Welrok thermostat 1",
            "inner_mqtt_client_id": "welrok oz_829348",
            "inner_mqtt_pubprefix": "house/",
            "inner_mqtt_subprefix": "house/",
            "mqtt_enable": false,
            "serial_number": "142B2F8293485CB8ADADB800000141"
        },
        {
            "device_id": "welrok_oz_1",
            "device_ip": "192.168.30.241",
            "device_title": "Welrok thermostat 2",
            "inner_mqtt_client_id": "welrok oz_829304",
            "inner_mqtt_pubprefix": "house/",
            "inner_mqtt_subprefix": "house/",
            "mqtt_enable": false,
            "serial_number": "142B2F82930410B8ADADB800000141"
        }
    ]
}

Т.е. вам нужно что бы сервис встал правильно и сформировал конфиг, если у вас при настройке термостата нет поля MQTT broker URI лучшим решением будет удалить сервис, удалить настроенные термостаты, выполнить apt update && apt upgrade (если это не повредит инсталляции) затем установить и настроить всё заново

1 Like

Да. Проблема была именно в отсутствии строчки
"mqtt_server_uri": "tcp://localhost:1883" в конфиге /etc/wb-welrok.conf

Решение:

# nano /etc/wb-welrok.conf
{
    "debug": false,
    "devices": [
        {
            "device_id": "welrok_oz_1",
            ...,
            "mqtt_server_uri": "tcp://localhost:1883"
        },
        {
            "device_id": "welrok_oz_2",
            ...,
            "mqtt_server_uri": "tcp://localhost:1883"
        }
    ]
}

Перезапуск сервиса

# systemctl restart wb-welrok

Проверка статуса

# systemctl status wb-welrok
● wb-welrok.service - Wiren Board Welrok thermostat MQTT driver
     Loaded: loaded (/lib/systemd/system/wb-welrok.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2026-03-09 13:42:42 MSK; 8s ago
   Main PID: 21348 (wb-welrok)
      Tasks: 4 (limit: 4790)
     Memory: 12.5M
        CPU: 1.978s
     CGroup: /system.slice/wb-welrok.service
             └─21348 /opt/venvs/wb-welrok/bin/python3 /usr/bin/wb-welrok

Mar 09 13:42:45 wirenboard-A6HMM4SI wb-welrok[21348]: INFO: /devices/Welrok thermostat 2 device created (wb_mqtt_device.py:150)
Mar 09 13:42:45 wirenboard-A6HMM4SI wb-welrok[21348]: INFO: Attempting MQTT connection to localhost:1883 (attempt 1) (mqtt_client.py:52)
Mar 09 13:42:45 wirenboard-A6HMM4SI wb-welrok[21348]: INFO: MQTT connected via TCP (mqtt_client.py:60)
Mar 09 13:42:45 wirenboard-A6HMM4SI wb-welrok[21348]: INFO: MQTT connection successful (mqtt_client.py:63)
Mar 09 13:42:45 wirenboard-A6HMM4SI wb-welrok[21348]: INFO: /devices/Welrok thermostat 1 device created (wb_mqtt_device.py:150)
Mar 09 13:42:45 wirenboard-A6HMM4SI wb-welrok[21348]: INFO: Attempting MQTT connection to localhost:1883 (attempt 1) (mqtt_client.py:52)
Mar 09 13:42:45 wirenboard-A6HMM4SI wb-welrok[21348]: INFO: MQTT connected via TCP (mqtt_client.py:60)
Mar 09 13:42:45 wirenboard-A6HMM4SI wb-welrok[21348]: INFO: MQTT connection successful (mqtt_client.py:63)
Mar 09 13:42:46 wirenboard-A6HMM4SI wb-welrok[21348]: INFO: MQTT connected for device welrok_oz_2, subscribing topics (wb_welrok_device.py:221)
Mar 09 13:42:46 wirenboard-A6HMM4SI wb-welrok[21348]: INFO: MQTT connected for device welrok_oz_1, subscribing topics (wb_welrok_device.py:221)

В WebUI значит недочет, который не учитывает отсутствие данного параметра конфиге, созданного в какой-то более ранней версии wb-welrok. При редактировании сущ устройства из более ранней версии (или создании дубликата), в форме этого параметра нет, а при добавлении нового устройства в текущей версии wb-welrok - он есть.