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. `
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 `
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
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden