Cron правило, после перезагрузки

Добрый день, подскажите пожалуйста, можно ли создать правило, которое будет выполняться 1 раз после загрузки контроллера?

WB6

Добрый день. Да, конечно. Использовать Cron для этого не нужно, все скрипты выполняются после загрузки (или перезапуска wb-rules), для того чтобы определить - была ли перезагрузка можно проверить uptime контроллера.

Если не затруднит можно пример, мне при включение нужно подать на реле управляющий сигнал, в описание движка написано что dev[] не стоит использовать вне функции, Но функцию без when я не могу создать, т.к. в When мне не чего писать и нечего отслеживать. Спасибо!

И не нашел пример как вызывается Uptime из wb-rules

Например так:

//06_15_test_04.js

defineVirtualDevice("StartRule", {
  title: "StartRule",
  cells: {
    executed : {
        type : "switch",
        value : false,
        readonly: true,
        forceDefault: true,
    },
  }
});

function onstart(){
  if (!dev["StartRule/executed"]){
    dev["StartRule/executed"] = true
    //выполняется что-то
  }
}

setTimeout(function() {onstart()}, 2000) //задержка старта выполнения

его надо через выполнение внешних процессов запускать-парсить.

1 лайк

А можно еще ткнуть меня носом, как получить ответ от запуска runShellCommand, нашел только как запускать, хочется спарсить ответ от внешней команды.

Вот так, например:

Эта задержка обусловлена какими-то особенностями запуска скриптов или показан пример запуска с отсрочкой?

Просто пример.
На самом деле - не очень хорошая практика, обычно лучше учитывать более релевантные признаки. Например, для реле - включить и проверять в правиле его uptime. То есть если uptime модуля реле меньше X (например 5), секунд - то не реагировать правилом.
Реальный кейс: Плохой контакт питания, реле перезапускается. При этом счетчики нажатий сбрасываются. И правило их отрабатывает. А при проверке uptime - не отработает.
Единственный минус - не будет работать x секунд раз в 2^32 секунд, когда счетчик переполнится.

Если говорить про контроль состояния за реле - не лучше ли мониторить связь? Пропажа питания = пропажа связи.
И да - если это реальный кейс, то можно условно бесплатно дать пользователям больше диагностики, генерируя скажем на 1с пульс “я перезагрузился” или что-то подобное.
Аптайм как-то слишком “сложно”.

На самом деле мой вопрос был больше про то, как “правильнее” организовывать скрипт, который выполняется 1 раз при загрузке. Типа скрипта инициализации

зачем если есть топик meta/error?
Но тут надо делить и обрабатывать все возможные комбинации.
То есть перебой питания всегда (если настроен опрос хоть одного “классического” регистра) вызывает установку meta/error. Точно так же сбой связи вызывает установку ошибок. Разница - в том что в первом случае сбрасываются значения счетчиков нажатий.
А во втором - нет. Но вот что делать с изменившимися счетчиками когда связи не было уже решает разработчик - инструменты все есть.

причина счетчики нажатий error
перебой с питанием сбрасываются “”->“r”->“”
перебой связи остаются “”->“r”->“”

Хм. Думаю что надо ориентироваться на то (статус), с чем будет работать скрипт…