NEWS
Limit von Variablen pro Blockly?
-
Schade zu früh gefreut - mitlerweile werden einige Variablen gar nicht mehr aus dem Datenpunkt heraus genommen, obwohl die Bedingungen schon lange nicht mehr zutreffend sind.
Hier haben wir so ein Beispiel - Pool Status: und Rücklauftemperatur: - beides ist gemäß Blockly Definition nicht mehr zutreffend. In dem erzeugten Datenpunkt, steht der Pool Status aber noch vollständig drin und bei der Rücklauftemperatur wurde nur der Wert entfernt. Der Text ist nach wie vor vorhanden, obwohl dieser in der selben Variable Bedingung stehen, wie der Wert selber.
Hier die Auswertung, wann welches Ergebnis zu einem Texteintrag im Datenpunkt führen soll.
So sieht der eigentliche Block aus, der dann aus den ganzen Variablen, je nach Ergebnis einen Text Datenpunkt zusammenfügt.
.
.
.
.
-
@jb_sullivan sagte: das ganze sieht dann so aus.
Zwei gleiche Trigger? Das kann nicht funktionieren, da man nicht wissen kann, welcher zuerst auslöst. Man nimmt nur einen Trigger, setzt zuerst die Variablen und wertet sie anschließend aus.
-
@paul53 Meinst du mit Trigger "Matrix Standard = wahr"?
-
@jb_sullivan sagte: Meinst du mit Trigger "Matrix Standard = wahr"?
Du hast im Bild nebeneinander zwei Trigger mit den gleichen 15 Trigger-Datenpunkten. Die triggern quasi gleichzeitig, aber einer von beiden triggert zuerst, wobei man nicht voraussagen kann, welcher von beiden. Wenn der linke Trigger zuerst triggert, werden veraltete Werte in die Matrix geschrieben.
EDIT: Mit folgendem Prinzip sollte es funktionieren:
-
@paul53 Ich denke so ist das jetzt besser - oder?
Das mit der Uhrzeit und dem Versatz von ~ 4 Minuten habe ich auch raus gefunden. Das VIS Widget "Timeandweather - simple Clock" zeigt die Uhrzeit des PC an, auf dem die VIS gerade ausgeführt wird, währenddessen die Uhrzeit des "Aktuelle Zeit" Blockly die Uhrzeit von dem Rechner nimmt, auf dem ioBroker läuft.
Einmal Netzwerk Zeit synchronisiert und schon passt das auch
SORRY - hatte meinen Blockly "Umbau" schon fertig, bevor dein Beispiel da war. War in der Zwischenzeit nur was essen. Aber ich gucke mal ob es mit deinem Beispiel vielleicht noch einfacher wird - Vielen Dank schonmal dafür.
-
@jb_sullivan sagte: jetzt besser - oder?
Der gesamte Block "Auswertung DP" muss in den Trigger vor den Block "aktualisiere Matrix".
-
@jb_sullivan sagte in Limit von Variablen pro Blockly?:
Das VIS Widget "Timeandweather - simple Clock" zeigt die Uhrzeit des PC an, auf dem die VIS gerade ausgeführt wird, währenddessen die Uhrzeit des "Aktuelle Zeit" Blockly die Uhrzeit von dem Rechner nimmt, auf dem ioBroker läuft.
selbstverständlich!
-
@jb_sullivan sagte in Limit von Variablen pro Blockly?:
Einmal Netzwerk Zeit synchronisiert und schon passt das auch
Praxis-Tip: Lass den ntp-Service dauerhaft laufen. Die exakte Uhrzeit auf den Rechnern ist kein optisches Problem, es gibt einige Netzwerkdienste, die z. B. Plausibilitätstest machen und Pakete aus der Zukunft verwerfen.
-
Sorry wenn ich nochmal nerve - ich habe das Blockly ja nun nach @paul53 seinem Beispiel umgebaut.
Leider habe ich einen ganz Sack voll Datenpunkte, die sich immer nur sporadisch ändern (also in der Ergebnis Ausgabe), obwohl sie genauso abgefragt werden, wie Datenpunkte die sich kontinuierlich ändern. Obwohl die Bedingung schon längst "Geschichte" ist, wir der Text und der Wert immer noch angezeigt - teilweise über Stunden.
Stoppe ich das Skript und starte es neu - stimmen alles Ausgaben sofort wieder....... bis zum nächsten mal.
Ich komme ums verrecken nicht dahinter, warum ca. 3-4 Werte IMMER korrekt aktualisiert werden und die restlichen Werte sehr häufig auf einem alten Stand eingefroren werden.
Nun kam mir die Idee, das es ggf. zu viele Datenpunkte sind, auf die getriggert wird. Gibt es im ioBroker System irgend einen Datenpunkt, der kontinuierlich seinen Zustand wechselt, sodaß man nur auf diesen einen DP triggern könnte? Also so eine Art Taktgeber um de Lese/Schreibprozess des Blockly anzustoßen.
-
@jb_sullivan sagte: Text und der Wert immer noch angezeigt - teilweise über Stunden.
Das hast Du so programmiert, dass jeder Wert ständig angezeigt wird, auch wenn er über Stunden konstant bleibt.
Was wolltest Du erreichen?Wenn nur die Werte angezeigt werden sollen, bei denen die Prüfbedingung stimmt, muss vor den Prüfungen jeder Variable ein Leerstring zugewiesen werden.
EDIT: Einfacher geht es jedoch ganz ohne Variablen:
-
@paul53 sagte in Limit von Variablen pro Blockly?:
Das hast Du so programmiert, dass jeder Wert ständig angezeigt wird, auch wenn er über Stunden konstant bleibt.
Was wolltest Du erreichen?OK - habe ich das? Dann habe ich die Logik dahinter missverstanden
Ich dachte wenn der Wert nicht mit der Vorgabe überein stimmt, wird der DP auch nicht zur Anzeige frei gegeben - was ja auch sehr häufig "funktioniert" hat - aber auch sehr häufig nicht
Ich habe nun alle Variablen verworfen und das Blockly so aufgebaut wie in deinem letzten Beispiel. LÄUFT PERFEKT !!! Nun ist es genau so wie ich es mir ursprünglich erdacht hatte - Vielen Dank nochmal dafür. Ich sehe schon, ich muss noch viel lernen ......