Есть возможность прочитать “Input counter” любой? Воспроизводится ошибка сама?
У меня некоторые датчики температурные на m1w2 “засыпают” и перестают отдавать значения т.к. думаю остыли до минимальной температуры среды и виртуальный термостат висит в состоянии ошибки и не работает, это к вопросу отношения к реальным задачам.
Вот реальный пример (правда тут повезло “всего” 5+ минут датчик “спал”):
Если в этот момент произойдет перезапуск wb-rules , то прочитать значение будет невозможно, будет null и это ошибка wb-rules, так быть не должно.
Сам wb-rules перезапускается (контроллер я не перезапускал пару недель, сегодня сделал проверить гипотезу) т.к. я делаю скрипт wb-engine и приходится часто проверять новые изменения, так и наткнулся на данную ошибку.
Сейчас получается , я в веб интерфейсе вижу retain значения от устройств, те же счетчики (понятно пример абстрактный) , но не могу прочитать эти же значения в wb-rules, пока не придет новое значение от устройства.
Переделал пример на чтение счетчика:
log(“counter={}”, dev[“wb-mdm3_195/Input 3 counter”], value);
Dec 22 23:52:46 wb wb-rules[16742]: INFO: [rule info] counter=null true
Спустя 30 минут:
Dec 23 00:21:18 wb wb-rules[16742]: INFO: [rule info] counter=null true
Нелогичное поведение, не могу прочитать значение которое вижу в веб интерфейсе…
значений в топиках - нет?
Не очень понимаю, как термостат может быть в ошибке, независимо от устройства если ли температура отличается от уставки - он включает исполнитель. Если нет - не работает.
А “состояние ошибки” - не понимаю.
Если значение температуры null, это некорректное значение , поэтому считается ошибка датчика и нельзя включать исполнитель, т.к. неизвестно что с датчиком?
Выше показал как выглядит mosquitto_sub, retain значение прилетает сразу при подписке, как и должно быть, а сами значения могут по 10 минут не приходить и более. Почему у меня мне wb-rules игнорирует retain значение мне непонятно, и должен ли он его считывать?, в коде не нашел. У Вас я так понял не воспроизводится и Input Counter считывается…
Правило единственное, все остальные отключил. Загрубил датчик, чтобы дискретность измерения была 0.5 гр.С, т.е. значение точно не изменяется. Десяток раз перезагрузил wb-rules. Ни разу не получил null - выводятся одинаковые значения температуры.
Пока могу вам предложить повысить дискретность самого датчика командами:
адрес датчика поменяйте на свой и проверьте наличие такого файла. Датчик начнет отдавать значения часто. Только датчик подключите непосредственно к Wiren Board, не через WB-M1W2, когда будете его перенастраивать.
Подумаю еще.
Увидел по вашим значениям, что у вас дискретность и так 12 бит - тогда не понятно, почему так редко меняются значения. У меня при такой дискретности они валятся часто.
Проблема то в том что у меня wb-rules не показывает retain значения, я не могу “прочитать” counter простой, пока он не поменяется, так же не должно быть?