Понял Вашу логику. Поймать молчаливый (как обычно) вывал из функции.
Ща. Бутербродик доем.
Оно должно ругаться. Если не ругается, хотя бы в лог - заставим.
ЗЫ. Ненавижу неявное изменение типов.
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, который, на мой взгляд разработчика, пора прекращать гальванизировать, и нужно срочно переделать с нуля на живом и поддерживаемом движке. Это я долдоню не чаще раза в месяц, благодаря неимоверной выдержке, воспитанной годами упражнений.
С остальным уже вполне можно жить.
это мы понимаем, есть в планах, правда в ближайшие полгода уже вряд ли успеем.
Тут, пожалуй, помочь можно одним способом - рассказать про наши замечательные вакансии всем знакомым специалистам.
Го в личку?!
Добрый день!
На всякий случай, если вопрос еще не решен.
Если сообщение в лог выводится, значит правило выполняется. Если К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;
}
});
Еще раз. Выкрутиться-то я смог, подставив очередной костыль. Не привыкать.
Вопрос - как именно обычный, нормальный, человек смог бы понять, почему работающее с виду и не выдающее ошибок сооружение - по факту не работает.
Т.е. если эта волчья яма - “фича”, как было предположено выше, то нужно документировать ее, а также пути ее обхода. Если бага - лечить каленым железом.