А какой смысл в этом?
Убедиться что когда нет точек на графике нет и логов? Но так и будет.
Но как подловить тот самый момент? В полной темноте, обычно …
Вот тут по точкам наглядно видно, что данные от освещенности пропадают …
А остальные передаются.
Включил Debug для wb-mqtt-serial и погрепал “channel ‘Illuminance’ of device ‘wb-msw-v4_170’” (признак того что пишется новое значение в mqtt) и еще сам запрос регистров, по journalctl -f -u wb-mqtt-serial |grep " 04 00 03 00 09"
Драйвер оптимизирует чтение и запрашивает сразу 9 input с 3 адреса.
есть еще (небольшая) вероятность того что в какой-то момент датчик перестает отдавать корректно данные или они перестают парситься - но пока такого не нашел.
Банально подожду пока “перестанут” приходить - и посмотрю что в этот момент в логах.
Минимальную дельту, которою вижу: 0.1
То есть, либо мое предположение неверное, либо дельта, когда не передается, существует и она точно меньше чем 0.1
Попробую еще эксперименты провести (полностью затемнить датчик как-нибудь …)
Но есть еще одна странность!
Выше уже был пример6 когда данные пучком передавались, но похоже эта ситуация постоянная!
Довольно много значений идет парами в одно и то же время.
Это явно ошибка. (Да и вообще, смысл забивать канал дублями …)
Учел, добавив
//11_21_test_01.js
var sensorDev = "wb-msw-v4_170/Illuminance";
var lastVal = dev[sensorDev];
defineRule("devValueToLog", {
whenChanged: sensorDev,
then: function (newValue, devName, cellName) {
log.info("devValueToLog", devName, newValue)
if (lastVal == newValue){
log.info("devValueToLog", "wrong double")
}
lastVal = newValue;
}
});
Вопрос в том, как дубль вообще появляется?
Как он попадает?
Отфильтровать все можно …
То есть это какая-то проблема …
Итого имеем:
- Ноль появляется в топике. Правила должны будут работать, должно быть все корректно
- Приходят в топик значения с одним и тем же временем и одинаковые (что это и почему?)
- Ноль приходит один раз за целую минуту … Не знаю насколько это правильно.
- WEB интерфейс контроллера имеет ошибку отображения данных, когда они нулевые …
- Были еще ошибки (возможно отображения) когда значения не нулевые (нужно посмотреть детальнее)
Откуда WEB UI вообще значения берет? С потолка?
И почему идут дубли с одним и тем же значением (проблема не большая, но если так по каждому топику, то шина используется на прочном проценте времени (хоть и небольшом) впустую)
Включил Debug и погрепал “channel ‘Illuminance’ of device ‘wb-msw-v4_170’” (признак того что пишется новое значение в mqtt) и сам запрос-ответ, у меня так:
journalctl -f -u wb-mqtt-serial |grep " 04 00 03 00 09"
Nov 21 08:17:04 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [port] 10.0.0.71:502: Write: 92 81 00 00 00 06 aa 04 00 03 00 09
Nov 21 08:17:05 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [port] 10.0.0.71:502: Write: 92 88 00 00 00 06 aa 04 00 03 00 09
Nov 21 08:17:05 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [port] 10.0.0.71:502: Write: 92 8f 00 00 00 06 aa 04 00 03 00 09
Nov 21 08:17:05 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [port] 10.0.0.71:502: Write: 92 96 00 00 00 06 aa 04 00 03 00 09
Nov 21 08:17:05 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [port] 10.0.0.71:502: Write: 92 9d 00 00 00 06 aa 04 00 03 00 09
Nov 21 08:17:06 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [port] 10.0.0.71:502: Write: 92 a4 00 00 00 06 aa 04 00 03 00 09
Nov 21 08:17:06 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [port] 10.0.0.71:502: Write: 92 ab 00 00 00 06 aa 04 00 03 00 09
Nov 21 08:17:06 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [port] 10.0.0.71:502: Write: 92 b2 00 00 00 06 aa 04 00 03 00 09
Nov 21 08:17:06 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [port] 10.0.0.71:502: Write: 92 b9 00 00 00 06 aa 04 00 03 00 09
Nov 21 08:17:07 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [port] 10.0.0.71:502: Write: 92 c0 00 00 00 06 aa 04 00 03 00 09
В общем основная проблема в WEB UI - он теряет данные для отображения.
Скорее всего что-то где-то как-то усредняет, вместо того, чтобы показывать минимум и максимум за период … хотя там может сложнее.
Это не помешает двигаться дальше.
И непонятно почему есть дубли значений. Не критично, наверное, но странно.
Также непонятно, почему 0 передается один раз (некоторые значения тут же дублируются, а ноль может часами не передаваться …). Но, может быть, это не проблема.
Порог у датчика освещенности тоже странный.
Глаз может ничего не различать в помещении, но он показывает значение больше 0 (что похоже на правду, так как микро свет присутствует …)
Но вот сейчас решил проверить (сравнить логи с графиком и фактом).
Глаз вполне все различает. Освещенность субъективно даже больше 1 …
Более того, светит экран планшета …
Освещенность = 0.
Странно.
И непонятно, по алгоритму включения подсветки. Планировалось при нуле … но оказывается, что при нуле она может быть и не нужна …Свет из щелок от окна достаточен (но из окна на датчик не попадает, а отраженного, видимо, не достаточно …)
Странно.
Проверил. За ночь значение не менялось.
Из истории:
22 нояб. 2024 г. 0:20:20 5.01
22 нояб. 2024 г. 0:20:21 5.16
22 нояб. 2024 г. 0:20:22 5.01
22 нояб. 2024 г. 0:20:23 5.01
22 нояб. 2024 г. 0:20:24 5.16
22 нояб. 2024 г. 0:22:24 5.09
22 нояб. 2024 г. 6:56:24 5.16
22 нояб. 2024 г. 6:56:35 5.16
22 нояб. 2024 г. 6:56:36 5.01
22 нояб. 2024 г. 6:56:46 5.16
22 нояб. 2024 г. 6:56:47 5.16
22 нояб. 2024 г. 6:56:52 5.16
И вывод правила тоже
journalctl --since "2024-11-22 00:00:00" --until "2024-11-22 03:56:30" -u wb-rules
-- Journal begins at Fri 2024-11-22 02:04:32 UTC, ends at Fri 2024-11-22 08:59:17 UTC. --
Nov 22 03:56:23 wirenboard-AYK5U4TB wb-rules[1605476]: INFO: [rule info] devValueToLog wb-msw-v4_170 5.16
Nov 22 03:56:24 wirenboard-AYK5U4TB wb-rules[1605476]: INFO: [rule info] devValueToLog wb-msw-v4_170 5.01
Видно что к регистру запросы были:
Nov 22 02:00:00 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [port] 10.0.0.71:502: Write: b9 bf 00 00 00 06 aa 04 00 03 00 09
Nov 22 02:00:00 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [port] 10.0.0.71:502: ReadFrame: b9 bf 00 00 00 15 aa
Nov 22 02:00:00 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [port] 10.0.0.71:502: ReadFrame: 04 12 0f 1e 08 90 18 32 ff fe ff fe 03 64 00 00 01 f5 01 28
Nov 22 02:00:00 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [register] new val for <modbus-tcp:170:input: 3>: f1e
Nov 22 02:00:00 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [register] new val for <modbus-tcp:170:input: 5>: 1832
Nov 22 02:00:00 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [register] new val for <modbus-tcp:170:input: 11>: 128
Nov 22 02:00:00 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [serial port driver] channel 'Sound Level' of device 'wb-msw-v4_170' <-- 38.7
Nov 22 02:00:00 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [serial port driver] channel 'Humidity' of device 'wb-msw-v4_170' <-- 61.94
Nov 22 02:00:00 wirenboard-AYK5U4TB wb-mqtt-serial[2038449]: DEBUG: [serial port driver] channel 'Air Quality (VOC)' of device 'wb-msw-v4_170' <-- 296
Основная проблема именно в отображении и в логе в UI
Приходит 0 (а иногда и не ноль) - оно не отображается.
При этом в дельту закрашенную может попасть (то есть дельта может опуститься в нужный момент в ноль, а может и не опуститься)
Дополнительно, не очень понятно … если значение очень долго (часами!) не меняется, то оно не приходит. С одной стороны, это правильно. С другой … например, изменил правило в контроллере, но оно не выполнится, так как значение не приходит …
Сам датчик отрабатывает нормально.
Есть вопросы по порогу освещенности (но это решаемо и пока субъективно)
Есть вопросы по датчику температуры (думаю утеплить подрозетник как-нибудь изнутри, что-то не то явно)
Пока непонятно, является ли проблемой, что не изменившиеся значения не приходят часами … при чем странно (тот же серийный номер же не меняется … и как часто он передается и почему? А почему тогда ноль от освещенности не передается также часто?)
Драйвер публикует в брокер значения только если они меняются. Если остаются неизменными - то естественно публикации не происходит, для нее нет оснований.
GitHub - wirenboard/wb-mqtt-db: Wiren Board database logger в истории вызывается только при публикации все же.
Так что действия непротиворечивы.
Но вот с отображением я попробую пообщаться с разработчиками.
В данном случае они постоянно меняются. И довольно часто (когда есть освещение).
И похоже проблема исключительно с отображением … А может быть вообще потерей данных со стороны отображения. При этом часть данных попадает в “дельту” (а что это такое до конца не понятно … и зачем ее сделали (вероятно, не просто так, а как раз для чего-то специально …)), но тоже не все.
Да, вероятно. Посмотреть данные в базе можно, например с помощью GitHub - wirenboard/wb-mqtt-db-cli: CLI for wb-mqtt-db
Вот тут описано: Веб-интерфейс контроллеров Wiren Board (wb-mqtt-homeui) — Wiren Board