//Программно-аппаратный ватчдог. Циклически с периодом time включает на полпериода выход output //и на полпериода его отключает. //Предназначен на вход реле, которое при остановке этих сигналов в любом состоянии отреагирует и просигнализирует зависание {//конструктор первичные установки var RN = "WatchDogV"; //имя ватчдога на вирт устройстве var OUTPUT = "wb-gpio/V_OUT"; // выход, на который периодически отправляются 1 var INTERVAL = 6000; //периодичносьт отправки положительного сигнала }//конструктор первичные установки var f_ini = true; var initimer = RN + "_initimer"; defineRule(RN + "_initialisation",{ asSoonAs: function(){return f_ini;}, then:function(){ f_ini = false; log(RN + ".initialisation: " + "Инициализация устройства " + RN); defineVirtualDevice(RN, { title: RN, cells:{ start: { type: "switch", value: false }, sygnal: { type: "text", value: dev[OUTPUT] }, interval: { type: "text", value: INTERVAL/1000 }, output: { type: "text", value: OUTPUT } } }); startTimer(initimer,20000); timers[initimer].name = initimer; log(RN + ".initialisation: " + "Инициализация окончена, ожидание запуска" + RN); } }); defineRule(RN + "_initimer_rule",{// обработка задержки для инициализации москито и прочего when: function(){return timers[initimer].firing;}, then: function(){ log(RN + ".initimer_rule:" + "Ватчдог запущен"); var timer_blink_name = RN + "_blink"; defineRule(RN + "_start",{ asSoonAs: function(){ return dev[RN + "/start"] == true; }, then:function(){ startTicker(timer_blink_name, INTERVAL); timers[timer_blink_name].name = timer_blink_name; log(RN + ".start:" + "Запущен таймер мигания выходом для " + OUTPUT); } }); defineRule(RN + "_change_output",{ when: function(){return timers[timer_blink_name].firing;}, then: function(){ dev[OUTPUT] = !dev[OUTPUT]; dev[RN + "/sygnal"] = dev[OUTPUT]; //log("RN + ".change_output:состояние изменилос на " + dev[OUTPUT]); } }); defineRule(RN + "_stop",{ asSoonAs: function(){ return dev[RN + "/start"] == false; }, then:function(){ timers[timer_blink_name].stop(); log(RN + ".stop:" + "Таймер мигания выходом остановлен " + OUTPUT); } }); //timers[initimer].stop(); //timers[timer_blink_name].stop(); } });