Skip to content
Permalink
Browse files

Add updateOnAction and skipEventIfSameValue flags to HTTPDevice and C…

…odeDevice
  • Loading branch information...
Poltorak Serguei
Poltorak Serguei committed Jul 1, 2015
1 parent 6db2aec commit c198b624e5adb419d332c37e4e40d251123d228f
@@ -122,7 +122,10 @@ CodeDevice.prototype.update = function (vDev) {
getterCode = this.config["getter_" + deviceType];

if (getterCode) {
vDev.set("metrics:level", eval(getterCode));
var newValue = eval(getterCode);
if (this.config.skipEventIfSameValue !== true || newValue !== vDev.get("metrics:level")) {
vDev.set("metrics:level", newValue);
}
}
};

@@ -131,12 +134,14 @@ CodeDevice.prototype.act = function (vDev, action, subst, selfValue) {
deviceType = this.config.deviceType,
setterCode = this.config["setter" + action + "_" + deviceType];

if (setterCode) {
if (!!setterCode) {
if (subst != null) {
setterCode = setterCode.replace(/%%/g, subst);
}
eval(setterCode);
} else if (selfValue !== null) {
}

if ((!setterCode || this.config.updateOnAction === true) && selfValue !== null) {
vDev.set("metrics:level", selfValue);
}
};
@@ -15,5 +15,9 @@
"l_getter_value":"Code um einen Wert abzufragen",
"h_getter_switchMultilevel":"Rückgabe eines Wertes von 0 bis 99",
"l_getterPollInterval":"Abfrageintervall in Sekunden:",
"h_getterPollInterval":"0 oder eine leere Eingabe deaktivieren die periodische Abfrage (explizite Update-Kommandos werden weiterhin ausgeführt)"
"h_getterPollInterval":"0 oder eine leere Eingabe deaktivieren die periodische Abfrage (explizite Update-Kommandos werden weiterhin ausgeführt)",
"rl_updateOnAction": "Update value on action",
"h_updateOnAction": "On actions (on/off/dimming) update value accordingly before it is polled",
"rl_skipEventIfSameValue": "Don't send update event if value has not changed",
"h_skipEventIfSameValue": "If same value is reported, do not send update event. In this case no update listeners will be called."
}
@@ -15,5 +15,9 @@
"l_getter_value":"Code to get value",
"h_getter_switchMultilevel":"Should return value from 0 to 99",
"l_getterPollInterval":"Interval in seconds between polling requests",
"h_getterPollInterval":"Empty or 0 to disable periodical requests (explicit update command will still initiate request process)"
"h_getterPollInterval":"Empty or 0 to disable periodical requests (explicit update command will still initiate request process)",
"rl_updateOnAction": "Update value on action",
"h_updateOnAction": "On actions (on/off/dimming) update value accordingly before it is polled",
"rl_skipEventIfSameValue": "Don't send update event if value has not changed",
"h_skipEventIfSameValue": "If same value is reported, do not send update event. In this case no update listeners will be called."
}
@@ -15,5 +15,9 @@
"l_getter_value":"Код для получения значения",
"h_getter_switchMultilevel":"Должен вернуть значение от 0 до 99",
"l_getterPollInterval":"Интервал в секундах опроса значения",
"h_getterPollInterval":"Пусто или 0 отключают периодический опрос (запросить значение можно вручную командой update)"
"h_getterPollInterval":"Пусто или 0 отключают периодический опрос (запросить значение можно вручную командой update)",
"rl_updateOnAction": "Менять состояние при действиях",
"h_updateOnAction": "При действиях с устройством (включение/выключение/диммирование), менять состояние на соответствующее действию, не дожидаясь получения опроса значения.",
"rl_skipEventIfSameValue": "Не отправлять событие обновления, если значение не поменялось",
"h_skipEventIfSameValue": "Если получено значение, совпадающее с предыдущим, не обновлять значение. В этом случае не будут вызваны подписчики на события обновления."
}
@@ -34,7 +34,11 @@

"setterLevel_switchMultilevel": "",
"getter_switchMultilevel": "",
"getterPollInterval_switchtMultilevel": 0
"getterPollInterval_switchtMultilevel": 0,

"updateOnAction": false,

"skipEventIfSameValue": false
},
"schema": {
"type": "object",
@@ -114,6 +118,17 @@
"type": "integer",
"required": false,
"dependencies": "deviceType"
},

"updateOnAction": {
"type": "boolean",
"required": true,
"dependencies": "deviceType"
},

"skipEventIfSameValue": {
"type": "boolean",
"required": true
}
}
},
@@ -223,6 +238,21 @@
"dependencies": {
"deviceType": "switchMultilevel"
}
},

"updateOnAction": {
"type": "checkbox",
"rightLabel": "__rl_updateOnAction__",
"helper": "__h_updateOnAction__",
"dependencies": {
"deviceType": [ "switchBinary", "switchMultilevel"]
}
},

"skipEventIfSameValue": {
"type": "checkbox",
"rightLabel": "__rl_skipEventIfSameValue__",
"helper": "__h_skipEventIfSameValue__"
}
}
}
@@ -148,7 +148,7 @@ HTTPDevice.prototype.update = function (vDev) {
}
}
}
if (data !== null) {
if (data !== null && (self.config.skipEventIfSameValue !== true || data !== vDev.get("metrics:level"))) {
vDev.set("metrics:level", data);
}
},
@@ -166,7 +166,7 @@ HTTPDevice.prototype.act = function (vDev, action, subst, selfValue) {
moduleName = "HTTPDevice",
langFile = self.controller.loadModuleLang(moduleName);

if (url) {
if (!!url) {
if (subst) {
url = url.replace(/\$\$/g, subst);
}
@@ -178,7 +178,9 @@ HTTPDevice.prototype.act = function (vDev, action, subst, selfValue) {
self.controller.addNotification("error", langFile.err_req + response.statusText, "module", moduleName);
}
});
} else if (selfValue !== null) {
}

if ((!url || this.config.updateOnAction === true) && selfValue !== null) {
vDev.set("metrics:level", selfValue);
}
};
@@ -1,6 +1,6 @@
{
"m_title":"HTTP-Gerät",
"m_descr":"Erstellt ein virtuelles Gerä mittels HTTP-Daten.",
"m_descr":"Erstellt ein virtuelles Gerä mittels HTTP-Daten.",
"l_schema":"Wählen Sie einen Gerätetyp",
"l_setterOn":"Schalte das Gerät über die URL an (ON)",
"p_setterOn":"http://192.168.0.100/action/on",
@@ -19,5 +19,9 @@
"h_setterLevel":"$$ wird benutzt um das Level in der URL zu symbolisieren. Bsp.: http://host/dimmer/level/$$/set",
"l_scale":"Sensor Skala",
"l_method":"HTTP Methoden",
"err_req":"Es konnte kein Request gesendet werden: "
"err_req":"Es konnte kein Request gesendet werden: ",
"rl_updateOnAction": "Update value on action",
"h_updateOnAction": "On actions (on/off/dimming) update value accordingly before it is polled",
"rl_skipEventIfSameValue": "Don't send update event if value has not changed",
"h_skipEventIfSameValue": "If same value is reported, do not send update event. In this case no update listeners will be called."
}
@@ -18,5 +18,9 @@
"h_setterLevel":"$$ is used to represent level in the URL. For example: http://host/dimmer/level/$$/set",
"l_scale":"Sensor scale",
"l_method":"HTTP method to use",
"err_req":"Can not make request: "
"err_req":"Can not make request: ",
"rl_updateOnAction": "Update value on action",
"h_updateOnAction": "On actions (on/off/dimming) update value accordingly before it is polled",
"rl_skipEventIfSameValue": "Don't send update event if value has not changed",
"h_skipEventIfSameValue": "If same value is reported, do not send update event. In this case no update listeners will be called."
}
@@ -18,5 +18,9 @@
"h_setterLevel":"Символы $$ содержат значение уровня диммирования от 0 до 99 в URL. Например: http://host/dimmer/level/$$/set",
"l_scale":"Единица измерения",
"l_method":"HTTP метод",
"err_req":"Невозможно выполнить запрос: "
"err_req":"Невозможно выполнить запрос: ",
"rl_updateOnAction": "Менять состояние при действиях",
"h_updateOnAction": "При действиях с устройством (включение/выключение/диммирование), менять состояние на соответствующее действию, не дожидаясь получения опроса значения.",
"rl_skipEventIfSameValue": "Не отправлять событие обновления, если значение не поменялось",
"h_skipEventIfSameValue": "Если получено значение, совпадающее с предыдущим, не обновлять значение. В этом случае не будут вызваны подписчики на события обновления."
}
@@ -40,7 +40,11 @@
"getterParser_switchMultilevel": "",
"getterPollInterval_switchMultilevel": 0,

"method": "GET"
"method": "GET",

"updateOnAction": false,

"skipEventIfSameValue": false
},
"schema": {
"type": "object",
@@ -146,6 +150,17 @@
"type": "string",
"required": true,
"enum": ["GET", "POST"]
},

"updateOnAction": {
"type": "boolean",
"required": true,
"dependencies": "deviceType"
},

"skipEventIfSameValue": {
"type": "boolean",
"required": true
}
}
},
@@ -282,6 +297,21 @@
"method": {
"label": "__l_method__",
"type": "select"
},

"updateOnAction": {
"type": "checkbox",
"rightLabel": "__rl_updateOnAction__",
"helper": "__h_updateOnAction__",
"dependencies": {
"deviceType": [ "switchBinary", "switchMultilevel"]
}
},

"skipEventIfSameValue": {
"type": "checkbox",
"rightLabel": "__rl_skipEventIfSameValue__",
"helper": "__h_skipEventIfSameValue__"
}
}
}

0 comments on commit c198b62

Please sign in to comment.
You can’t perform that action at this time.