NEWS
[gelöst] finde meinen Blockly-Fehler nicht
-
Hallo,
bisher lief alles gut bis ich versucht habe, die Lüfterzeiten mal nachzuvollziehen.
Ich habe auf meinen Raspberry pi 5 einen Zusatzlüfter installiert, der bei vermeintlich zu hohen Temperaturen der CPU eingeschaltet wird und bei Erreichen einer vorgegebenen unteren Temperatur ausgeschaltet wird.
Das soll das Blockly-Script machen:
Problem: egal, was ich als Maximalwert und Minimalwert einstelle - im Ergebnis kommen immer glatte Minuten für die Dauer "Lüfter=an" raus in Sekunden: 120, 180, 240 (Variable "dauer").
Auch mit einer Stoppuhr läßt sich das nachvollziehen.
Der Lüfter wird für an/aus nur über die Stromzuführung (an/aus) gesteuert.Habe ich hier einen Denkfehler eingebaut ?
-
@dgr sagte in fonde meinen Blockly-Fehler nicht:
Habe ich hier einen Denkfehler eingebaut ?
lass dir mal an und aus per debug-Block Anzeigen
Warum per Cron und nicht auf Änderung der CPU Temp triggern?
-
@dgr
Als Erstes solltest Du den Zeitplan da rauswerfen.
Stattdessen einen Trigger auf den Temperatur-State.Die beiden Temperaturen sollten etwas auseinanderliegen, damit nicht ständig hin und her geschaltet wird (Hysterese).Hast Du ja schon. -
@codierknecht sagte: Trigger auf den Temperatur-State.
Vorschlag:
@dgr sagte in fonde meinen Blockly-Fehler nicht:
im Ergebnis kommen immer glatte Minuten für die Dauer "Lüfter=an" raus
Wird der Temperatur-DP der Instanz "rpi2.0" nur jede Minute aktualisiert?
-
kann mich leider erst morgen wieder melden. Besuch kommt.
Sorry. -
@paul53
Aktualisierung rpi2 (zum testen in history) :
Das scheint wirklich die Ursache zu sein. Kann ich das beeinflussen/ändern?
-
@dgr
Du setzt den Wert eines DP und liest den dann direkt wieder aus.
Das wird nicht funktionieren.Besser die Ergebnisse von Berechnungen in Variablen zwischenspeichern und dann diese Variablen verwenden.
-
@dgr sagte in finde meinen Blockly-Fehler nicht:
Kann ich das beeinflussen/ändern?
Möglich!
Wenn du die Temperatur selber per Skript ausliest, könnte es mit kürzeren Intervallen versuchen.
Bedingung wäre, dass im Raspi OS der Wert öfter als jede Minute aktualisiert wirdSieht bei mir pro Minute so aus:
-
@dgr sagte in finde meinen Blockly-Fehler nicht:
Kann ich das beeinflussen/ändern?
Höchstens - soweit der Adapter das vorsieht - durch ein dort einstellbares Aktualisierungsintervall.
Aber 1x pro Minute sollte eigentlich ausreichen. Mit einem kürzeren Intervall produzierts Du auch mehr Last.
Versuch macht klug -
@codierknecht
Du setzt den Wert eines DP und liest den dann direkt wieder aus.
Das wird nicht funktionieren.Ist das ein Zeitproblem? Das würde aus meiner Sicht bedeuten, dass mit der Verarbeitung der Variablen gewartet wird bis sie "gefüllt" sind - im Gegensatz zur Verarbeitung eines Datenpunktes.
-
@dgr sagte in finde meinen Blockly-Fehler nicht:
Ist das ein Zeitproblem?
ja!
Das Schreiben eines Wertes in einen Datenpunkt (wegen der Struktur) dauert seine Zeit, eine Variable wird nur innerhalb des Skriptes innerhalb Millisekunden gesetzt -
@dgr sagte in finde meinen Blockly-Fehler nicht:
Ist das ein Zeitproblem?
Wie @Homoran schreibt: Ja!
Das liegt daran, dass das Ganze asynchron ausgeführt wird.
Das Setzen des Wertes wird zwar "angestoßen", ist aber beim Lesen möglicherweise (in der Regel) noch nicht abgeschlossen. Wir reden hier über Milli- oder gar Mikrosekunden.
Dann liest Du noch den alten Wert. -
@codierknecht
OK. Dann werde ich das auf Variablen umstellen.
Abfrageintervall:
Da lasse mal lieber die Finger von.
-
@dgr ich hab mal mein Blockly alle 10 Sekunden feuern lassen:
Dann kommen auch immer unterschiedliche Werte.
Die Limitierung auf 1 Minute liegt nicht am RaspberryPi OS