Open corpix opened 2 months ago
Пробовали удалить файл и зайти на страницу настройки?
Да. Попробовал сделать свежую инсталляцию пакета, вот весь путь:
Если сразу после установки зайти на страницу http://127.0.0.1:8080/#!/configs/edit/~2Fusr~2Fshare~2Fwb-mqtt-confed~2Fschemas~2Fwb-engine.schema.json То через некоторое время прелоадер сменяется на ошибку:
Error loading the file: MQTT RPC request timed out MqttTimeoutError
Скорее всего потому что wb-engine-helper
не был инициализироване (вероятно по причине, которую я указывал ранее).
Попробовал поправить следующими действиями:
root@basileus:~# echo '{}' > /etc/wb-rules/wb-engine.conf
root@basileus:~# systemctl restart wb-rules
root@basileus:~# journalctl -u wb-rules --since -5m | grep wb-engine
May 05 19:46:24 basileus wb-rules[29758]: INFO: [rule info] wb-engine init
May 05 19:46:24 basileus wb-rules[29758]: INFO: [rule info] wb-engine init finished
root@basileus:~# rm /etc/wb-rules/wb-engine.conf
После этого на странице http://127.0.0.1:8080/#!/configs/edit/~2Fusr~2Fshare~2Fwb-mqtt-confed~2Fschemas~2Fwb-engine.schema.json вижу ошибку (с пустым файлом тоже самое):
Error loading the file: Invalid config file EditorError
В пакете в postint создается пустой файл если его нет touch /etc/wb-rules/wb-engine.conf
Если Вы видите ошибку "Error loading the file: MQTT RPC request timed out MqttTimeoutError" скорей всего wb-engine-helper
падает и не отдает нужную конфигурацию странице настроек... (раньше падало из-за не верной инициализации Network устройств)
Попробуйте сделать rm /etc/wb-rules/wb-engine.conf; touch /etc/wb-rules/wb-engine.conf
Открыть лог в режиме follow journalctl -f
и после этого открыть страницу настроек.
Вот логи сразу после инсталляции:
May 06 23:39:05 basileus wb-mqtt-confed[1803]: INFO: reloading file: /usr/share/wb-mqtt-confed/schemas/wb-engine.schema.json
May 06 23:39:05 basileus wb-rules[29758]: INFO: reloading file: /etc/wb-rules/wb-engine.js
May 06 23:39:05 basileus wb-rules[29758]: ERROR: [rule error] failed to parse json: /etc/wb-rules/wb-engine.conf
May 06 23:39:05 basileus wb-rules[29758]: WARNING: warning: failed to load /etc/wb-rules/wb-engine.js: Error: error error (rc -100)
anon native strict preventsyield
anon wb-engine:3 preventsyield
require native strict preventsyield
F /etc/wb-rules/wb-engine.js:1 preventsyield
Вход на страницу настроек ничего нового в лог не добавляет. Вы правы, /etc/wb-rules/wb-engine.conf
создается, но он пустой.
Судя по документации к readConfig внутри должен быть валидный JSON (пустая строка валидным JSON'ом конечно не является). Могу предложить обернуть readConfig
в try&catch, по аналогии с helper'ом (хотя лучше конечно же было бы поставлять валидный конфиг). Например так #20
Посмотрел в код helper'а, не похоже чтобы на пустом конфиге он делал что-то полезное https://github.com/corpix/wb-engine/blob/master/wb-engine-helper#L859-L862
Но не смотря на это страничка конфигурации у меня все же загрузилась, один раз. Скорее всего нужно крутить RPC таймауты у WB. Но тут я сдаюсь, буду решать проблему другим путем, сорьки
"Скорее всего нужно крутить RPC таймауты у WB" такое бывает когда много устройств и скрипт не успевает конфигурацию подготовить для WB, главное чтобы он не падал сам по ошибке.
Еще способ проверить: cat /etc/wb-rules/wb-engine.conf | /usr/bin/wb-engine-helper --json
должно выдавать валидный json, это используется для отображения страницы настроек.
Установил из пакета, как и указано в конце readme, на систему:
В веб интерфейсе (
http://127.0.0.1:8080/#!/rules/edit/wb-engine.js
) ошибка:В логах (
journalctl -u wb-rules
):Файла
/etc/wb-rules/wb-engine.conf
в deb пакете нет.Поправил так:
UPD: Правда это фикс плохой и страница настройки будет пустой после него. Вобщем, как сделать так чтобы все заработало после установки - не понятно