NEWS
Blockly zählt zu schnell!
-
Guten Morgen,
ich versuche mich an einem einfachen (dachte ich zumindest) Blockly-Script zur Zeitmessung.
Die Laufzeit nach dem Einschalten meiner Geräte (PC Kids, Waschmaschine, Trockner) möchte ich gerne visuell auf der VIS anzeigen lassen.
Sollte ja, denke ich kein Problem sein - machte mich heran, mein erstes eigenes Blockly-Script zu schreiben - und …. scheitere jetzt an folgendem Problem.
Hier erstmal mein Script:
(ich weiß auch, das es ähnliche Scripte gibt, aber ich wollte einfach zur Einarbeitung, mein eigenes schreiben)
Zum eigentlichem Problem.
In diesem Fall, habe ich eine Lampe zum Start des Script herangenommen.
Lampe an …. Script fängt an zu zählen .... 1,2,3, funktioniert auch so weit - nur nach ein paar Sekunden, läuft der Zähler zu schnell - es ignoriert quasi den Intervall. (nach ein paar Sekunden ist schon die erste Minute erreicht. Er zählt aber fleissig bis 59 hoch!)
Könnt ihr mir sagen, wo mein Denkfehler in dem Script ist?
Danke vorab.
Gruß
Brunoz
-
Interessant sieht aus alsob er 100ms nimmt anstatt 1000ms.
Oben rechts kannste von blockly nach JavaScript, stell das Mal drauf und poste den Code.
Sent from my iPhone using Tapatalk
-
Klar mach ich!
var Intervall, LichtzaehlerSekunde, LichtzaehlerMinute, LichtzaehlerStunde; on({id: "tuya.0.002007555ccf7f53378d.1"/*switch_on*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("tuya.0.002007555ccf7f53378d.1").val == true) { LichtzaehlerSekunde = 0; LichtzaehlerMinute = 0; LichtzaehlerStunde = 0; } }); on({id: "tuya.0.002007555ccf7f53378d.1"/*switch_on*/, val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; Intervall = setInterval(function () { LichtzaehlerSekunde = (typeof LichtzaehlerSekunde == 'number' ? LichtzaehlerSekunde : 0) + 1; if (LichtzaehlerSekunde > 59) { LichtzaehlerMinute = (typeof LichtzaehlerMinute == 'number' ? LichtzaehlerMinute : 0) + 1; LichtzaehlerSekunde = 0; } if (LichtzaehlerMinute > 59) { LichtzaehlerStunde = (typeof LichtzaehlerStunde == 'number' ? LichtzaehlerStunde : 0) + 1; LichtzaehlerMinute = 0; } console.log(([LichtzaehlerStunde,' Stunde(n) ',LichtzaehlerMinute,' Minute(n)',LichtzaehlerSekunde,' Sekunde(n)'].join(''))); setState("javascript.0.Zeit.DauerLicht"/*DauerLicht*/, ([LichtzaehlerStunde,' Stunde(n) ',LichtzaehlerMinute,' Minute(n)',LichtzaehlerSekunde,' Sekunde(n)'].join(''))); }, 1000); }); on({id: "tuya.0.002007555ccf7f53378d.1"/*switch_on*/, val: false}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})(); });
-
Das Script ist OK, triggerr er eventuell öfter wodurch es mehrfach läuft?
Sent from my iPhone using Tapatalk
-
Danke für den Tipp!
Da dran lags!
Vielen Dank.
-
Danke für den Tipp!
Da dran lags!
Vielen Dank. `
Moin, wie hast du das gelöst?
Da ich genau sowas gesucht habe, dein Blockly mal nachgebaut.
Aber bei mir fängt er auch an zu rennen.
-
Ich würde vor dem Intervall ein Stop Intervall setzen. Damit verhindert man die mehrfach Ausführung vom Intervall…
Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk
-
Ich würde vor dem Intervall ein Stop Intervall setzen. Damit verhindert man die mehrfach Ausführung vom Intervall…
Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk `
Jow und wieder was gelernt, DankeJetzt rennt er nicht mehr und zählt sauber hoch.
-
eine Frage hätte ich,
1.) wenn man so ein script laufen lässt, wie bekommt man das hin, das nicht das ganze log zugemüllt wird?
2.) wie bekomm ich das hin, das am Ende der Laufzeit ein Datenpunkt gesetzt wird, den ich z.b. in sql schreiben, um mir eine Statistik zu erstellen?
Gruss
-
eine Frage hätte ich,
1.) wenn man so ein script laufen lässt, wie bekommt man das hin, das nicht das ganze log zugemüllt wird?
2.) wie bekomm ich das hin, das am Ende der Laufzeit ein Datenpunkt gesetzt wird, den ich z.b. in sql schreiben, um mir eine Statistik zu erstellen?
Gruss ` Zu 1) du nutzt den Block "debug output" der soll das Log vollmüllen ;D
Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk