Что означают провалы получения данных


Но так использовать не реально …

А какой смысл в этом?
Убедиться что когда нет точек на графике нет и логов? Но так и будет.
Но как подловить тот самый момент? В полной темноте, обычно …

Вот тут по точкам наглядно видно, что данные от освещенности пропадают …
А остальные передаются.

Включил 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;
    }
});

Вопрос в том, как дубль вообще появляется?
Как он попадает?
Отфильтровать все можно …

То есть это какая-то проблема …

Провел эксперимент.
Затемнил датчик на несколько секунд, потом почти на минуту …

И имеем:



Итого имеем:

  1. Ноль появляется в топике. Правила должны будут работать, должно быть все корректно
  2. Приходят в топик значения с одним и тем же временем и одинаковые (что это и почему?)
  3. Ноль приходит один раз за целую минуту … Не знаю насколько это правильно.
  4. WEB интерфейс контроллера имеет ошибку отображения данных, когда они нулевые …
  5. Были еще ошибки (возможно отображения) когда значения не нулевые (нужно посмотреть детальнее)

Откуда 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