NEWS
[fixed] on ID - Ausführung doppelt ?
-
Hi,
ich habe gerade festgestellt, dass bei mir die Ausführung des folgenden Codes doppelt erfolgt
on({id: "hm-rpc.0.JEQ0036xxx.1.STATE", val: true }, function(obj) {
log("Gruppe10 wurde ausgeführt"), "info";
}); // ende on id
Hat jemand eine Erklaerung dafür ?
vG Looxer
-
Hi,
ich habe gerade festgestellt, dass bei mir die Ausführung des folgenden Codes doppelt erfolgt
on({id: "hm-rpc.0.JEQ0036xxx.1.STATE", val: true }, function(obj) {
log("Gruppe10 wurde ausgeführt"), "info";
}); // ende on id
Hat jemand eine Erklaerung dafür ?
vG Looxer `
Kann das sein, dass ein mal mit ack und ein mal ohne ack kommt?on({id: "hm-rpc.0.JEQ0036xxx.1.STATE", val: true }, function(obj) { log("Gruppe10 wurde ausgeführt, Ack: " + obj.state.ack); }); // ende on id
-
Hallo,
versuche es einmal mit 'change: "gt"' statt 'val: true'. Dann wird 'on' auf jeden Fall nur aufgerufen,
wenn val zuvor false war und nicht mehr, wenn val schon true ist.
Eine andere Möglichkeit könnte sein, das obj.newState.ack einmal true (=tatsächliche Änderung des Zustandes)
und einmal false sein könnte.
Viele Grüße.
9821_fernzugriff.png
9821_login.png
9821_position_andy.png
9821_proaccount.png -
jap, danke euch. Das ist es.
Ich habe ack nicht abgefangen und die Quittung bekommen
super, danke nochmals.
vG Looxer
-
Hallo,
hat einer von euch auch eine Idee warum bei dem folgenden Script die e-Mail immer zweimal versendet wird?
var FbT11 = "hm-rpc.0.KEQ1004134.11.INSTALL_TEST"; // Fernbedienung 1OG:11.INSTALL_TEST on ({id: FbT11, change: "any"}, fTaste11); function fTaste11 (){ ZeitBadRechts = (getState("javascript.0.BadFensterRechtsOffen.Tag").val); ZeitBadLinks = (getState("javascript.0.BadFensterLinksOffen.Tag").val); ZeitBadBeide = Number(ZeitBadRechts) + Number(ZeitBadLinks); if (ZeitBadBeide > 0.01 && ZeitBadBeide < 30 ) { fEMail("test@domain.de", "Die Badezimmer Fenster waren heute erst " + ZeitBadBeide + " auf!", ""); } } function fEMail (strTo, strBetreff, strText){ sendTo("email", { from: "test@domain.de", to: strTo, subject: strBetreff, html: ' **Werte:** ' , }); }
Das Script läuft eigentlich Zeitgesteuert.
Die Taste habe ich nur zum Testen eingebaut 8-)
Im Log bekomme ich auch noch eine Fehlermeldung:
! 2016-02-17 21:30:22.507 - info: javascript.0 sendTo "send" to system.adapter.email from system.adapter.javascript.0: {"from":"","to":"","subject":"Die Ba$
! 2016-02-17 21:30:22.580 - error: WARNING: cannot find message with id = 4881
! 2016-02-17 21:30:22.572 - info: email.0 Send email: {"from":"","to":"","subject":"Die Badezimmer Fenster waren heute erst 10.32 auf!","html":"
! Werte$
! 2016-02-17 21:30:22.580 - info: email.0 Send email: {"from":"","to":"","subject":"Die Badezimmer Fenster waren heute erst 10.32 auf!","html":"
! Werte$
! 2016-02-17 21:30:23.432 - info: email.0 sent to ***
! 2016-02-17 21:30:23.438 - info: email.0 sent to ***
! 2016-02-17 21:30:23.493 - info: email.0 sent to ***
Gruß
! Phantomio -
Spontan würde ich sagen das es an "change: any" liegt. Wenn der status von deinem Objekt von true auf false und gleich wieder zurück wechselt wird das script 2 mal ausgeführt.
Gesendet von meinem Tab2A7-10F mit Tapatalk
-
Wow schnelle Reaktion
normalerweise wird das aber mit der schedule Funktion ausgelöst:
schedule("00 16 * * *", function () { ZeitBadRechts = (getState("javascript.0.BadFensterRechtsOffen.Tag").val); ZeitBadLinks = (getState("javascript.0.BadFensterLinksOffen.Tag").val); ZeitBadBeide = Number(ZeitBadRechts) + Number(ZeitBadLinks); if (ZeitBadBeide === 0 ) {fgEMail("test@domain.de", "Die Badezimmer Fenster waren noch nicht auf!", "");} if (ZeitBadBeide > 0.01 && ZeitBadBeide < 30 ) {fgEMail("test@domain.de", "Die Badezimmer Fenster waren heute erst " + ZeitBadBeide + " auf!", "");} });
fgEMail ist eine Globale Funktion.
auch hier wird die e-Mail doppelt gesendet.
Gruß
-
Also wenn aus zu schließen ist das die globale Funktion das Problem ist, hab ich grad keine Idee was es sein könnte.
Gesendet von meinem Tab2A7-10F mit Tapatalk
-
Da ich diese globale Funktion auch für andere Sachen benutze,
und diese nur eine e-Mail senden würde ich das erst mal ausschließen.
Die globale Funktion ist genau wie die Mail Funktion aufgebaut. Liegt halt nur in einem Globalen Script.