@aleks-83 sagte:
Das Thema kann nicht mehr gefunden werden.
Link oder Variante mit Count down:
Blockly_temp.JPG
Huhu,
ich habe hier einige Probleme mit Datenpunkten die ich als Schalter benutze.
Egal ob ich Blockly, JS oder NodeRed benutze. Wenn ich den Datenpunkt "auf Aktualisierung" prüfe wird 3 mal getriggert.
Dies führt natürlich dazu dass die nachfolgenden Befehle im Script auch 3 mal ausgeführt werden.
Wenn ich "auf Änderung" prüfe gibt es diese Probleme nicht.
Hier mal die Debug-Ausgabe, geschaltet aus Vis On/Off.
15.1.2019, 12:24:39.257 [info ]: javascript.0 Stop script script.js.Schalter.SZ_Beamer
15.1.2019, 12:24:41.804 [info ]: javascript.0 Start javascript script.js.Schalter.SZ_Beamer
15.1.2019, 12:24:41.808 [info ]: javascript.0 script.js.Schalter.SZ_Beamer: registered 1 subscription and 0 schedules
15.1.2019, 12:24:48.028 [info ]: javascript.0 script.js.Schalter.SZ_Beamer: true
15.1.2019, 12:24:48.061 [info ]: javascript.0 script.js.Schalter.SZ_Beamer: true
15.1.2019, 12:24:49.025 [info ]: javascript.0 script.js.Schalter.SZ_Beamer: true
15.1.2019, 12:24:54.160 [info ]: javascript.0 script.js.Schalter.SZ_Beamer: false
15.1.2019, 12:24:54.198 [info ]: javascript.0 script.js.Schalter.SZ_Beamer: false
15.1.2019, 12:24:55.173 [info ]: javascript.0 script.js.Schalter.SZ_Beamer: false
Gibt es eine Möglichkeit dies zu entprellen ??
Grüsse
Ingo
So…
zum Beispiel:
Entpreller ist eine Variable
Anstatt debug deine eigentlichen Befehle ausführen
Timeout nach Bedarf anpassen.
Super, funktioniert.
Vielen Dank.
Grüsse
Ingo
funktioniert. `
Dann markiere bitte das Thema im Betreff des ersten Beitrags als [gelöst].
Noch ne kurze Info dazu.
"falls Entpreller = 0" hat nicht funktioniert habe stattdessen "falls Entpreller ≠ 1" genommen, das klappt.
Grüsse
Ingo
Das liegt daran, dass die Variable beim Skriptstart nicht mit 0 initialisiert wird und somit "undefined" zurückgibt. Wenn außerhalb des Triggers (also oben dran verbunden) die Variable auf 0 gesetzt wird funktioniert es auch mit dem Vergleich auf 0
habe stattdessen "falls Entpreller ≠ 1" genommen, das klappt. `
Das funktioniert nicht.
Was auch nach Skriptstart funktioniert: falls nicht Entpreller
OK, die Variable vorher zu setzen ist wahrscheinlich die sauberste Lösung.
Danke
Grüsse
Ingo
Ich habe das in der Praxis anstatt mit Variable mit Datenpunkt gelöst und nur für das Beispiel geändert.
Das Problem ist mir dabei nicht aufgefallen.
Also sorry, war mein Fehler.
Hallo, ich hänge mich mal hier dran.
So wirklich gelöst ist das Problem ja nicht, es wurde ja auch ein Github dazu erstellt:
https://github.com/ioBroker/ioBroker.ja … issues/288
Ich verwende bei mir mehrere GHoma-Steckdosen mit Leistungsmessung. Damit will ich u.a. Trockner/Waschmaschine überwachen.
Im Log bekommen ich jetzt jedes Update mehrfach angezeigt, teilweise auch von die Leistungswerten von andere Steckdosen obwohl die korrekte ausgewählt wurden. (Trockner hat ~ 500W)
code Aus Blockly
on({id: new RegExp('g-homa\\.0\\.4FEC24\\.power' + "|" + 'vis\\.0\\.datapoints\\.WM_Meldung_Aus'), change: "ne"}, function (obj) {
CrtPower = getState("g-homa.0.4FEC24.power").val;
console.log((['Trockner Leistung:',(obj.state ? obj.state.val : ""),' W, Status: ',WM_Status].join('')));
..
Log
13:37:12.958 info javascript.0 script.js.GHoma.Trockner: Trockner Leistung:475.94 W, Status: 2
13:37:12.959 info javascript.0 script.js.GHoma.Trockner: Trockner Leistung:475.94 W, Status: 2
13:37:12.959 info javascript.0 script.js.GHoma.Trockner: Trockner Leistung:475.94 W, Status: 2
13:37:13.401 info javascript.0 script.js.GHoma.Trockner: Trockner Leistung:0.93 W, Status: 2
13:37:13.402 info javascript.0 script.js.GHoma.Trockner: Trockner Leistung:0.93 W, Status: 2
13:37:13.403 info javascript.0 script.js.GHoma.Trockner: Trockner Leistung:0.93 W, Status: 2
13:38:27.978 info javascript.0 script.js.GHoma.Trockner: Trockner Leistung:475.28 W, Status: 2
13:38:27.979 info javascript.0 script.js.GHoma.Trockner: Trockner Leistung:475.28 W, Status: 2
13:38:27.979 info javascript.0 script.js.GHoma.Trockner: Trockner Leistung:475.28 W, Status: 2
13:38:51.831 info javascript.0 script.js.GHoma.Trockner: Trockner Leistung:484.22 W, Status: 2
13:38:51.832 info javascript.0 script.js.GHoma.Trockner: Trockner Leistung:484.22 W, Status: 2
13:38:51.832 info javascript.0 script.js.GHoma.Trockner: Trockner Leistung:484.22 W, Status: 2
13:38:52.337 info javascript.0 script.js.GHoma.Trockner: Trockner Leistung:0.94 W, Status: 2
13:38:52.338 info javascript.0 script.js.GHoma.Trockner: Trockner Leistung:0.94 W, Status: 2
13:38:52.338 info javascript.0 script.js.GHoma.Trockner: Trockner Leistung:0.94 W, Status: 2
Hier steht auch noch was dazu allerdings ohne Lösung:
Участник @Tottbeck написал в [gelöst] Entprellen von Schaltern:
obj.state ? obj.state.val : ""
Kannst du so was ausgeben: console.log('Leistung: ' + JSON.stringify(state))
?
Hi,
ich muss zum verständnis mal was nachfragen!
@totocotonio
Ohne selber ein Spezialist bei Blockly zu sein - hast du die Variable entpreller irgendwo mit 0 vorbelegt ? Wenn nein, dann rechne ich damit das er da nicht rein kommt.
@Asgothian Ok, wo muss dann mein eigentliches Blockly hin?
@totocotonio
setz mal ein Objekt Setze Entpreller auf 0 vor den Falls Objekt geändert block. Das wird dann nur einmal beim Aufruf des Blocklys aufgerufen
@Asgothian Auwei, ich verstehe nicht was du meinst.
@totocotonio
versuch das mal so:
(Bild hab ich zusammen kopiert, kann aktuell nicht auf meinen iobroker)
Und ja, da wo du hin zeigst muss das rein was du ausführen willst.
@Asgothian Ahhh ,
jetzt weiß ich wie du es meintest und so habe auch ich es verstanden.
Ich versuche es mal so.
Danke.
@Asgothian Hi,
ich habe so gemacht und es funktioniert scheinbar, ich muss es noch ausgiebig testen.