Как объяснить такое поведение поля Status?
WEB UI показывает 03.05.2020 14:50:02
defineVirtualDevice(‘nw_tools’, {
title: ‘Interfaces’,
cells: {
‘Router IP’: {
type: ‘text’,
value: ‘’
},
‘Status’: {
type: ‘text’,
value: ‘’
}
…
});
Изменяется поле такой строчкой в правиле - dev[‘nw_tools’][‘Status’] = status
wb-rules 2.3.1
Уточните, пожалуйста:
- Что именно здесь не так, как должно быть?
- Как нам это воспроизвести?
Ещё меня смущает readonly 1
Status содержит два разных значения. Как это происходит если изменяется одной командой? Я ожидаю что оно всегда должно перезаписываться новым значением. Очень часто новое значение появляется только после перезагрузки контролера.
Меня тоже, но этот виртуальное устройство создано движком правил. Как пофиксить?
Создать с правильным значением параметра, как здесь: Примеры правил — Wiren Board
Так у вас разные топики содержат разные значения. Чем отличаются топики c /on
и без /on
на конце: MQTT в контроллерах Wiren Board — Wiren Board
Я выложил немного выше кусок кода которым создается это виртуальное устройство. Там есть ошибки? Все так же как по ссылке. Попробовал еще раз - удалил все и создал снова - все осталось как было.
Я это понимаю. Чего я не понимаю - почему текстовое поле содержит топик on, как одна и та же функция пишет в разные топики или почему они не синхронизируются.
Не вижу куска вашего кода, где было бы прописано значение readonly. Ссылку я давал именно на пример, где задано значение readonly.
@changer подскажите ещё пожалуйста, топик с /on у вас retain или нет? Т.е. значение там показывается сразу, как только вы запускаете mosquitto_sub или спустя какое-то время?
Был retain. После того как я еще все раз удалил / пересоздал, он пропал. Но проблемы не закончились
Как я писал выше, это поле изменяется в одном месте и следующей строчкой идет логирование. И по логу - все идеально. Но веб интерфейс и mqtt возвращаются к старому значению спустя несколько минут (уже без /он). Есть идеи почему это происходит?
/devices/nw_tools/controls/Status 14.05.2020 18:55:12
/devices/nw_tools/controls/Balance 37.76
/devices/nw_tools/controls/Balance/meta/type text
/devices/nw_tools/controls/Balance/meta/order 1
…
/devices/nw_tools/controls/Status 03.05.2020 14:50:02
/devices/nw_tools/controls/Status/meta/type text
/devices/nw_tools/controls/Status/meta/order 7
/devices/nw_tools/controls/Status/meta/readonly 1
/devices/nw_tools/controls/Status 14.05.2020 19:00:02
/devices/nw_tools/controls/Balance 37.76
/devices/nw_tools/controls/Balance/meta/type text
/devices/nw_tools/controls/Balance/meta/order 1
/devices/nw_tools/controls/Balance/meta/readonly 1
…
/devices/nw_tools/controls/Status 03.05.2020 14:50:02
/devices/nw_tools/controls/Status/meta/type text
/devices/nw_tools/controls/Status/meta/order 7
/devices/nw_tools/controls/Status/meta/readonly 1
После перезагрузки движка правил - отображается правильное, последнее значение.
я не понимаю, что именно за лог вы привели, что это за многоточия, что за жирный текст и т.п.
Прошу
- сделать минимальный пример, воспроизводящий проблему. Т.е. это значит сделать одно отдельное правило и уменьшать его до тех пор, пока проблема ещё будет воспроизводиться. Выложить его сюда.
- В этом примере оставить вывод log(), выложить сюда весь вывод этого лога с временем у каждой строчки
- выложить вывод параллельно запущенного
mosquitto_sub -v -t "тот единственный топик, на который надо смотреть" | ts
. Без редактирования.
Вывод `mosquitto_sub -v -t “виртуального устройства”. Точки - вырезано изменения других топиков не относящихся к делу. Жирным выделено изменения интересующего топика. Выдержка из лога:
May 14 18:55:12 wirenboard-AHZ2TA3P daemon.info wb-rules[27644]: INFO: [rule info] Status is changed to: 14.05.2020 18:55:12
May 14 19:00:02 wirenboard-AHZ2TA3P daemon.info wb-rules[27644]: INFO: [rule info] Status is changed to: 14.05.2020 19:00:02
В логе никаких других записей относящихся к этому устройству нет.
Точно не влияет - много раз обнаруживал постфактум несоответствие веб-интерфейса и логов.
У меня есть два таких контрола с которыми долго и пока безуспешно борюсь и 5-6 которые работают нормально. Поэтому как сделать минимальный пример, воспроизводящий проблему незнаю.
Смотрите, без кода мы в любом случае вам не сможем помочь. Если сможете из него что-то необязательное убрать, чтобы проблема при этом осталась, - хорошо, не сможете - придётся разбираться с тем, что есть.
Кроме кода, нам нужны:
- Пояснение, как заставить этот код привести к проблеме (если нужно что-то нажимать, например).
- Чтобы вы сами этим же способом привели к проблеме, и показали, в чём именно она состоит. Для этого нужны пункты:
(с закрытым интерфейсом), и
Не относящиеся к делу строчки тоже оставьте, мы сами сможем отфильтровать.
На этот раз немного по другому - небыло возврата после первого изменения.
mqtt log rules.txt (10.5 КБ)
Например, у нас нет файла connection-check.
Я хочу воспроизвести вашу проблему на своём контроллере. Расскажите, пожалуйста, что мне скачать, и как запускать.
#!/bin/sh
HOST="4.2.2.2"
MAIN_GW="192.168.15.1"
MAIN_DEV=eth0
RESER_DEV=ppp0
LOCKFILE="/tmp/check_internet.lock"
LOGFILE="/var/log/check_internet.log"
EXIST=`ip route show ${HOST} | wc -l`
if [ ${EXIST} -eq 0 ]
then
route add ${HOST} gw ${MAIN_GW} dev ${MAIN_DEV} 2>&1
fi
ping -I ${MAIN_DEV} -c 3 -n -q ${HOST} > /dev/null 2>&1
if [ $? -ne 0 ]; then
if [ ! -f ${LOCKFILE} ]; then
pon mobile
ip route del default
ip route add default dev ${RESER_DEV} metric 10
touch ${LOCKFILE}
MSG=`date +'%d.%m.%Y %H:%M:%S'`
echo "${MSG} Internet connection changed to GSM" >> ${LOGFILE}
echo "GSM ${MSG}"
fi
else
if [ -f ${LOCKFILE} ]; then
poff mobile
ip route del default
ip route add default via ${MAIN_GW} metric 10
rm -f ${LOCKFILE}
MSG1=`date +'%d.%m.%Y %H:%M:%S'`
echo "${MSG1} Internet connection changed to LAN" >> ${LOGFILE}
echo "LAN ${MSG1}"
fi
fi
Этот скрипт поднимает и глушит интернет соединение на встроенном модеме. Результат выдает в консоль который затем передается в правила и логируется в отдельный лог. Скрипт работает нормально и я почти уверен что не имеет отношения к проблеме.
root@WB:~# mosquitto_sub -v -t “/devices/nw_tools/controls/Status/”# |ts
May 17 22:14:03 /devices/nw_tools/controls/Status/meta/type text
May 17 22:14:03 /devices/nw_tools/controls/Status/meta/order 7
May 17 22:14:03 /devices/nw_tools/controls/Status/meta/readonly 1
May 17 22:14:03 /devices/nw_tools/controls/Status LAN 15.05.2020 14:10:02
May 17 22:20:12 /devices/nw_tools/controls/Status GSM 17.05.2020 22:20:12
May 17 22:22:40 /devices/nw_tools/controls/Status LAN 15.05.2020 14:10:02
May 17 22:22:40 /devices/nw_tools/controls/Status/meta/type text
May 17 22:22:40 /devices/nw_tools/controls/Status/meta/order 7
May 17 22:22:40 /devices/nw_tools/controls/Status/meta/readonly 1
May 17 22:25:03 /devices/nw_tools/controls/Status LAN 17.05.2020 22:25:03
May 17 22:28:05 /devices/nw_tools/controls/Status LAN 15.05.2020 14:10:02
May 17 22:28:05 /devices/nw_tools/controls/Status/meta/type text
May 17 22:28:05 /devices/nw_tools/controls/Status/meta/order 7
May 17 22:28:05 /devices/nw_tools/controls/Status/meta/readonly 1
log.txt (12.0 КБ)
Получилось воспроизвести? Нужны еще какие-либо данные? Есть надежда на исправление?