4mr / wb-engine

MIT License
43 stars 7 forks source link

Не рабочий rule wb-engine после установки #19

Open corpix opened 2 months ago

corpix commented 2 months ago

Установил из пакета, как и указано в конце readme, на систему:

 root@basileus:~# cat /etc/*-release                                                                                                                                                                                                                                                                                           
 PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"                                                                                                                                                                                                                                                                                  
 NAME="Debian GNU/Linux"                                                                                                                                                                                                                                                                                                       
 VERSION_ID="11"                                                                                                                                                                                                                                                                                                               
 VERSION="11 (bullseye)"                                                                                                                                                                                                                                                                                                       
 VERSION_CODENAME=bullseye                                                                                                                                                                                                                                                                                                     
 ID=debian                                                                                                                                                                                                                                                                                                                     
 HOME_URL="https://www.debian.org/"                                                                                                                                                                                                                                                                                            
 SUPPORT_URL="https://www.debian.org/support"                                                                                                                                                                                                                                                                                  
 BUG_REPORT_URL="https://bugs.debian.org/"                                                                                                                                                                                                                                                                                     
 RELEASE_NAME=wb-2401                                                                                                                                                                                                                                                                                                          
 SUITE=stable                                                                                                                                                                                                                                                                                                                  
 TARGET=wb7/bullsey

В веб интерфейсе (http://127.0.0.1:8080/#!/rules/edit/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

В логах (journalctl -u wb-rules):

 May 05 05:36:07 basileus wb-rules[8006]: ERROR: [rule error] failed to parse json: /etc/wb-rules/wb-engine.conf                                                                                                                                                                                                               
 May 05 05:36:07 basileus wb-rules[8006]: WARNING: couldn't 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 в deb пакете нет.

Поправил так:

echo '{}' > /etc/wb-rules/wb-engine.conf
systemctl restart wb-rules

UPD: Правда это фикс плохой и страница настройки будет пустой после него. Вобщем, как сделать так чтобы все заработало после установки - не понятно

4mr commented 2 months ago

Пробовали удалить файл и зайти на страницу настройки?

corpix commented 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
4mr commented 2 months ago

В пакете в 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 и после этого открыть страницу настроек.

corpix commented 2 months ago

Вот логи сразу после инсталляции:

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. Но тут я сдаюсь, буду решать проблему другим путем, сорьки

4mr commented 2 months ago

"Скорее всего нужно крутить RPC таймауты у WB" такое бывает когда много устройств и скрипт не успевает конфигурацию подготовить для WB, главное чтобы он не падал сам по ошибке. Еще способ проверить: cat /etc/wb-rules/wb-engine.conf | /usr/bin/wb-engine-helper --json должно выдавать валидный json, это используется для отображения страницы настроек.