Диковатый глюк в wb-rules

Понял Вашу логику. Поймать молчаливый (как обычно) вывал из функции.
Ща. Бутербродик доем.

Оно должно ругаться. Если не ругается, хотя бы в лог - заставим.
ЗЫ. Ненавижу неявное изменение типов.

UPD: Ну и можно явно сравнить if (newValue == true) {log.info(“starting pump true”);}

Напоминаю, весь демон падал всегда молча. Пока я из Никиты палками не выбил версию для себя, с логом терминатуса. Я полтора года ору тут про логи, единственное нормальное средство отладки.

Ща.

Угу, Вы правы. Глубоко закопано.
Если без typeof(), первая строка отрабатывает, дальше нет.
В случае дерганья ползунка руками - всё штатно, typeof boolean.
Логи - безмолвны.

Но ПОЧЕМУ на вебальнике всё щелкает как надо!? Значит - может? Это создает иллюзию работоспособности того, что не работает.

Так. А еще вопрос - сбриджевано с подтопиками? То есть, как пример:

mosquitto_sub -v -t /devices/wb-gpio/controls/V_OUT/#
/devices/wb-gpio/controls/V_OUT/meta/order 9
/devices/wb-gpio/controls/V_OUT/meta/readonly 0
/devices/wb-gpio/controls/V_OUT/meta/type switch
/devices/wb-gpio/controls/V_OUT 1

на слейве в MQTT есть подтопик “/meta/type”?
Ну, то есть структура MQTT - точно такая же как на мастере?
И, если нету, но опубликовать его на слейв “руками” - заработает?

Чувствую, соберу завтра такой же стенд и буду воспроизводить.

Если не собрать идентичный виртуальный дивайс и на слейве и на мастере, управлять вообще нельзя, я говорил тут несколько месяцев назад: топики от одного могут прорезаться на другом, причем по одному и не сразу, а могут и отсутствовать: закономерности я найти не смог, документации нет. Иду свиньей, наслепую.

Поэтому сейчас везде дублирую виртустройства, чтоб хотя бы видно их было.

Нет, тут надо бриджевать вместе с подтопиками. Тогда можно. И так и надо, в общем. Ну тода выложите настройки действующего бриджа тоже.

connection master
address 176.118.21.40
local_clientid  wb-AOPRJUVF
remote_clientid wb-ABKSM5GI
notifications true
cleansession true
start_type automatic
topic # out 2 /devices/NODE_STATUS/ /devices/well5_status/
topic # both 2 /devices/PUMP1/ /devices/well5_pump1/
topic # in 2 /devices/master_status/ /devices/NODE_STATUS/

На мастере ответного коннекшына не заводил, в этом случае лезут топики, которые я не заказывал (см. линк на соседнюю ветку, где никто не ответил). Очень старый москита.

Ок. Воспроизведу завтра.
Настроено верно, вообще должно работать.

Я с этой благой мыслью и влип в ваш стартап… розовый безусый вьюнош со взглядом горящим…

Ну, мы не стартап, мы делом заняты. Железо производим, ПО пишем. Зачем сразу обзываться-то?

Здравствуйте, девушки.
Пока не отлажено ничего, это стартап. И нет смысла обижаться: допиливать надо.
Хотите - удалите эту ремарку, но факт останется фактом. Ничего оскорбительного в виду не имею. У самого пяток проектов еще не готовы и я это понимаю, и клиенты.

Не будем ничего удалять. И критике - рады, правда.

Ну а я всегда рад помочь.
Могу повторить предложение насчет участия в допиливании. Ибо нет ни времени, ни денег делать практически то же самое с нуля самому.

мы всегда только рады багрепортам и пуллреквестам

Коллеги, после полутора лет интенсивного колупания я знаю только две вещи, делающие контроллер неработоспособным: древний москито, за который вы вроде бы уже взялись, и wb-rules, который, на мой взгляд разработчика, пора прекращать гальванизировать, и нужно срочно переделать с нуля на живом и поддерживаемом движке. Это я долдоню не чаще раза в месяц, благодаря неимоверной выдержке, воспитанной годами упражнений. :slight_smile:

С остальным уже вполне можно жить.

это мы понимаем, есть в планах, правда в ближайшие полгода уже вряд ли успеем.

Тут, пожалуй, помочь можно одним способом - рассказать про наши замечательные вакансии всем знакомым специалистам.

Го в личку?! :star_struck:

Добрый день!

На всякий случай, если вопрос еще не решен.

Если сообщение в лог выводится, значит правило выполняется. Если К2 не срабатывает, то вероятнее всего, как уже писал коллега, newValue имеет тип не boolean и команда не выполняется или newValue может быть всегда 1 (после преобразования в тип boolean).
Можно попробовать такую конструкцию проверки типа переменной newValue на bool. Если переменная имеет другой тип, то попытаться его корректно преобразовать:

defineRule("pump_run", {
  whenChanged: ["PUMP/run_text"],
  then: function (newValue) {
    log.info("starting pump", newValue, typeof(newValue));
    
    if (typeof (newValue) != "boolean")
        {
            log("not bool");
            boolNewValue = Boolean (parseInt(newValue));
        }

    log.info("bool value", boolNewValue, typeof(boolNewValue));
    dev["wb-mr6c_78/K2"] = boolNewValue;
  }
});

Еще раз. Выкрутиться-то я смог, подставив очередной костыль. :slight_smile: Не привыкать.

Вопрос - как именно обычный, нормальный, человек смог бы понять, почему работающее с виду и не выдающее ошибок сооружение - по факту не работает.

Т.е. если эта волчья яма - “фича”, как было предположено выше, то нужно документировать ее, а также пути ее обхода. Если бага - лечить каленым железом.