Да, воспроизвел.
//10_09_test_01.js
var in1 = "wb-gpio/EXT3_IN9"
var in2 = "wb-gpio/EXT3_IN10"
var in1counter =0, in2counter = 0, out1counter =0, out2counter = 0
var out1 = "wb-gpio/EXT2_K15";
var out2 = "wb-gpio/EXT2_K16";
//out1 соединен на in1, out2 соединен на in2
//правило makeRuleIn инкрементирует счетчик in1counter и in2counter
//при размыкании in1 или in2
//В результате можем получить разное значение in1counter и in2counter
log("Start", in1counter, in1counter)
function makeRuleIn (inName, nameCounter){
nameCounter=eval(nameCounter)
var oldDate = new Date();
defineRule("counter_"+inName, {
whenChanged: inName,
then: function(newValue, devName, cellName) {
if(!newValue)
{
tDate = new Date();
nameCounter++
//log("inc", inName, nameCounter, tDate-oldDate) //Вывод времени после предыдущего срабатывания
log("inc", inName, nameCounter)
oldDate = tDate;
}
}
}
)
}
makeRuleIn(in1, "in1counter");
makeRuleIn(in2, "in2counter");
makeRuleIn(out1, "out1counter");
makeRuleIn(out2, "out2counter");
function slowPWM_generator(namePWM, devicePWM, period, periodOn){
//Создаем таймер для канала.
this[namePWM+"_IntervalID"] = setInterval(function () {
//Тут Включим канал, если значение контрола виртуального устройства не 0
dev[devicePWM]=true;
//и сразу зададим время "включенного" состояние
setTimeout(function () {
//По таймауту - отключаем устройство
dev[devicePWM]=false;
}, periodOn);
}, period);
}
//топик физического устройства
//период
//время включения в миллисекундах
slowPWM_generator("Device1", out1, 400, 70)
slowPWM_generator("Device2", out2, 410, 70)
Счетчики расходятся если время срабатывания (размыкания) каналов близко. Если включить вывод времени после предыдущего срабатывания - виден момент пропуска.
Oct 10 11:10:01 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT3_IN10 617
Oct 10 11:10:01 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT2_K15 641
Oct 10 11:10:01 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT3_IN9 633
Oct 10 11:10:01 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT2_K16 626
Oct 10 11:10:02 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT3_IN10 618
Oct 10 11:10:02 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT2_K15 642
Oct 10 11:10:02 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT3_IN9 634
Oct 10 11:10:02 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT2_K16 627
Oct 10 11:10:02 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT3_IN10 619
Oct 10 11:10:02 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT2_K15 643
Oct 10 11:10:02 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT3_IN9 635
Oct 10 11:10:02 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT2_K16 628
Oct 10 11:10:02 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT3_IN10 620
Oct 10 11:10:02 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT2_K15 644
Oct 10 11:10:02 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT3_IN9 636
Oct 10 11:10:03 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT2_K16 629
Oct 10 11:10:03 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT3_IN10 621
Oct 10 11:10:03 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT2_K15 645
Oct 10 11:10:03 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT3_IN9 637
Oct 10 11:10:03 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT2_K16 630
Oct 10 11:10:03 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT3_IN10 622
Oct 10 11:10:03 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT2_K15 646
Oct 10 11:10:03 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT3_IN9 638
Oct 10 11:10:04 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT2_K16 631
Oct 10 11:10:04 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT3_IN10 623
Oct 10 11:10:04 wirenboard-AWI3MCGC wb-rules[15024]: INFO: [rule info] inc wb-gpio/EXT2_K15 647
Призову настоящих программистов.