Здрасьте! Вот прям ночь не спали. С утра написал проверку.
Садимся за веб интерфейс и дергаем таймеры на вкл выкл… минуты 3-5.
И оно медленно умирает. Основная проблема это огромная задержка на реакцию правил. Например на переключатели в примере.
Я слишком многого требую от скорострельности нашего четырёхъядерного калькулятора?
И в догонку. А как к таймеру через строковую переменную обращаться? А то код кривой получился…
var dn = "TT_01";
var dt = new Array();
var TT_01_PERIOD = 300;
var BUZ_DURATION = 200; // мс,
dt[0] = new Date();
startTicker("debug_sec_timer", 1000);
// Основной модуль
defineRule({
when: function () { return timers.debug_sec_timer.firing; },
then: function () {
log.info(Math.round((new Date() - dt[0]) / 10) / 100, " сек.");
dt[0] = new Date();
}
});
defineVirtualDevice(dn, {
title: dn,
cells: {
T1: { //
title: "T1",
type: "switch",
value: false,
readonly: false,
defaultvalue: true,
order: 1
},
S1: { //
title: "S1",
type: "text",
value: "blank",
readonly: true,
defaultvalue: true,
order: 101
},
T2: { //
title: "T2",
type: "switch",
value: false,
readonly: false,
defaultvalue: true,
order: 2
},
S2: { //
title: "S2",
type: "text",
value: "blank",
readonly: true,
defaultvalue: true,
order: 102
},
T3: { //
title: "T3",
type: "switch",
value: false,
readonly: false,
defaultvalue: true,
order: 3
},
S3: { //
title: "S3",
type: "text",
value: "blank",
readonly: true,
defaultvalue: true,
order: 103
},
T4: { //
title: "T4",
type: "switch",
value: false,
readonly: false,
defaultvalue: true,
order: 4
},
S4: { //
title: "S4",
type: "text",
value: "blank",
readonly: true,
defaultvalue: true,
order: 104
},
T5: { //
title: "T5",
type: "switch",
value: false,
readonly: false,
defaultvalue: true,
order: 5
},
S5: { //
title: "S5",
type: "text",
value: "blank",
readonly: true,
defaultvalue: true,
order: 105
},
T6: { //
title: "T6",
type: "switch",
value: false,
readonly: false,
defaultvalue: true,
order: 6
},
S6: { //
title: "S6",
type: "text",
value: "blank",
readonly: true,
defaultvalue: true,
order: 106
},
T7: { //
title: "T7",
type: "switch",
value: false,
readonly: false,
defaultvalue: true,
order: 7
},
S7: { //
title: "S7",
type: "text",
value: "blank",
readonly: true,
defaultvalue: true,
order: 107
},
T8: { //
title: "T8",
type: "switch",
value: false,
readonly: false,
defaultvalue: true,
order: 8
},
S8: { //
title: "S8",
type: "text",
value: "blank",
readonly: true,
defaultvalue: true,
order: 108
},
T9: { //
title: "T9",
type: "switch",
value: false,
readonly: false,
defaultvalue: true,
order: 9
},
S9: { //
title: "S9",
type: "text",
value: "blank",
readonly: true,
defaultvalue: true,
order: 109
},
T10: { //
title: "T10",
type: "switch",
value: false,
readonly: false,
defaultvalue: true,
order: 10
},
S10: { //
title: "S10",
type: "text",
value: "blank",
readonly: true,
defaultvalue: true,
order: 110
}
},
});
defineRule("T1", {
whenChanged: [dn + "/T1"],
then: function (newValue, devName, cellName) {
log("Правило: {}.{}={}", devName, cellName, newValue) // вывод сообщения в лог
if (newValue == true) {
startTicker("TT_01_T1", TT_01_PERIOD);
dt[1] = new Date();
}
else
timers.TT_01_T1.stop();
}
});
defineRule("T2", {
whenChanged: [dn + "/T2"],
then: function (newValue, devName, cellName) {
log("Правило: {}.{}={}", devName, cellName, newValue) // вывод сообщения в лог
if (newValue == true) {
startTicker("TT_01_T2", TT_01_PERIOD);
dt[2] = new Date();
}
else
timers.TT_01_T2.stop();
}
});
defineRule("T3", {
whenChanged: [dn + "/T3"],
then: function (newValue, devName, cellName) {
log("Правило: {}.{}={}", devName, cellName, newValue) // вывод сообщения в лог
if (newValue == true) {
startTicker("TT_01_T3", TT_01_PERIOD);
dt[3] = new Date();
}
else
timers.TT_01_T3.stop();
}
});
defineRule("T4", {
whenChanged: [dn + "/T4"],
then: function (newValue, devName, cellName) {
log("Правило: {}.{}={}", devName, cellName, newValue) // вывод сообщения в лог
if (newValue == true) {
startTicker("TT_01_T4", TT_01_PERIOD);
dt[4] = new Date();
}
else
timers.TT_01_T4.stop();
}
});
defineRule("T5", {
whenChanged: [dn + "/T5"],
then: function (newValue, devName, cellName) {
log("Правило: {}.{}={}", devName, cellName, newValue) // вывод сообщения в лог
if (newValue == true) {
startTicker("TT_01_T5", TT_01_PERIOD);
dt[5] = new Date();
}
else
timers.TT_01_T5.stop();
}
});
defineRule("T6", {
whenChanged: [dn + "/T6"],
then: function (newValue, devName, cellName) {
log("Правило: {}.{}={}", devName, cellName, newValue) // вывод сообщения в лог
if (newValue == true) {
startTicker("TT_01_T6", TT_01_PERIOD);
dt[6] = new Date();
}
else
timers.TT_01_T6.stop();
}
});
defineRule("T7", {
whenChanged: [dn + "/T7"],
then: function (newValue, devName, cellName) {
log("Правило: {}.{}={}", devName, cellName, newValue) // вывод сообщения в лог
if (newValue == true) {
startTicker("TT_01_T7", TT_01_PERIOD);
dt[7] = new Date();
}
else
timers.TT_01_T7.stop();
}
});
defineRule("T8", {
whenChanged: [dn + "/T8"],
then: function (newValue, devName, cellName) {
log("Правило: {}.{}={}", devName, cellName, newValue) // вывод сообщения в лог
if (newValue == true) {
startTicker("TT_01_T8", TT_01_PERIOD);
dt[8] = new Date();
}
else
timers.TT_01_T8.stop();
}
});
defineRule("T9", {
whenChanged: [dn + "/T9"],
then: function (newValue, devName, cellName) {
log("Правило: {}.{}={}", devName, cellName, newValue) // вывод сообщения в лог
if (newValue == true) {
startTicker("TT_01_T9", TT_01_PERIOD);
dt[9] = new Date();
}
else
timers.TT_01_T9.stop();
}
});
defineRule("T10", {
whenChanged: [dn + "/T10"],
then: function (newValue, devName, cellName) {
log("Правило: {}.{}={}", devName, cellName, newValue) // вывод сообщения в лог
if (newValue == true) {
startTicker("TT_01_T10", TT_01_PERIOD);
dt[10] = new Date();
}
else
timers.TT_01_T10.stop();
}
});
// TIMER #1
defineRule({
when: function () { return timers.TT_01_T1.firing; },
then: function () {
dtl = Math.round((new Date() - dt[1]) / 10) / 100;
log("TT_01_T1 ", dtl, " сек.");
dev[dn + "/S1"] = String(dtl);
dt[1] = new Date();
}
});
// TIMER #2
defineRule({
when: function () { return timers.TT_01_T2.firing; },
then: function () {
dtl = Math.round((new Date() - dt[2]) / 10) / 100;
log("TT_01_T2 ", dtl, " сек.");
dev[dn + "/S2"] = String(dtl);
dt[2] = new Date();
}
});
// TIMER #3
defineRule({
when: function () { return timers.TT_01_T3.firing; },
then: function () {
dtl = Math.round((new Date() - dt[3]) / 10) / 100;
log("TT_01_T3 ", dtl, " сек.");
dev[dn + "/S3"] = String(dtl);
dt[3] = new Date();
}
});
// TIMER #4
defineRule({
when: function () { return timers.TT_01_T4.firing; },
then: function () {
dtl = Math.round((new Date() - dt[4]) / 10) / 100;
log("TT_01_T4 ", dtl, " сек.");
dev[dn + "/S4"] = String(dtl);
dt[4] = new Date();
}
});
// TIMER #5
defineRule({
when: function () { return timers.TT_01_T5.firing; },
then: function () {
dtl = Math.round((new Date() - dt[5]) / 10) / 100;
log("TT_01_T5 ", dtl, " сек.");
dev[dn + "/S5"] = String(dtl);
dt[5] = new Date();
}
});
// TIMER #6
defineRule({
when: function () { return timers.TT_01_T6.firing; },
then: function () {
dtl = Math.round((new Date() - dt[6]) / 10) / 100;
log("TT_01_T6 ", dtl, " сек.");
dev[dn + "/S6"] = String(dtl);
dt[6] = new Date();
}
});
// TIMER #7
defineRule({
when: function () { return timers.TT_01_T7.firing; },
then: function () {
dtl = Math.round((new Date() - dt[7]) / 10) / 100;
log("TT_01_T7 ", dtl, " сек.");
dev[dn + "/S7"] = String(dtl);
dt[7] = new Date();
}
});
// TIMER #8
defineRule({
when: function () { return timers.TT_01_T8.firing; },
then: function () {
dtl = Math.round((new Date() - dt[8]) / 10) / 100;
log("TT_01_T8 ", dtl, " сек.");
dev[dn + "/S8"] = String(dtl);
dt[8] = new Date();
}
});
// TIMER #9
defineRule({
when: function () { return timers.TT_01_T9.firing; },
then: function () {
dtl = Math.round((new Date() - dt[9]) / 10) / 100;
log("TT_01_T9 ", dtl, " сек.");
dev[dn + "/S9"] = String(dtl);
dt[9] = new Date();
}
});
// TIMER #10
defineRule({
when: function () { return timers.TT_01_T10.firing; },
then: function () {
dtl = Math.round((new Date() - dt[10]) / 10) / 100;
log("TT_01_T10 ", dtl, " сек.");
dev[dn + "/S10"] = String(dtl);
dt[10] = new Date();
}
});