NEWS
Timeout Logikfehler?
-
Hallo. Ich komme nicht weiter.
Ich habe folgendes Script: wenn bestimmte Luftfeuchtigkeit herscht, soll die Lüftung reduziert werden, was durch den Aktor auf "wahr" geschieht. Wenn die Bedingungen nicht mehr erfüllt werden, soll als Hysterese eine Stunde Nachlaufzeit (hier testweise 10min) zählen, nach dem dann wieder auf falsch gestellt werden soll.Das habe ich ursprünglich gemacht mit wenn Bedingung stimmt dann mache Aktor auf Wahr und setze direkt den Timer. Problem hierbei: Sollte während der Timeout läuft iobroker z.B. abstürzen beendet auch der Timer. Wenn währenddessen auch noch die Dann Bedingungen wegfallen, geht der Aktor niemals auf falsch, sondern erst wenn wieder die Dann Bedingung eintrifft.
Nun habe ich es versucht zu umgehen, aber ich bekomme es einfach nicht hin. Es soll verhindert werden, dass sich ständige Timeouts aufschaukeln, es soll aber dafür gesorgt werden, dass der Aktor auf jeden falsch auf Falsch springen kann, und eine Hysterese. Könnt ihr mir einen Wink mit dem Zaunpfahl geben, wie ich verfahren soll? Ich verzweifel
Vielen Vielen Dank
P.S. Wie ist dass wenn Bedingung = wahr dann mache aktor auf wahr ansonsten auf falsch mit Verzögerung.
Wenn danach wieder auf Wahr gestellt wird, wird dann die vorherige Verzögerung beendet oder ist z.B. Verzögerung auf 10min, nach 2 min wird auf wahr gestellt und bleibt theoretisch noch 50min auf wahr. Da der Timer aber noch 8min hat, setzt er dann nach 8 min auf falsch vom vorherigen 10min Timer?
-
Du hast viele Temeperaturfühler, und zwei Geräte die darauf reagieren soll, wenn ich das richtig verstanden habe.
Kann denn aber nicht auch einer eine zu hohe Luftfeuchtigkeit melden während ein anderer eine zu niedrige meldet ? Was soll der Aktor dann tun ?
Der untere Bereich deines oberen Skript ist auch ziemlich unverständlich, ist die Luftfeuchtigkeit nun zu niedrig unter 32 oder unter 45 ?
Vorschlag:
-
@cinimod sagte: Vorschlag:
Funktioniert leider nicht, da bei Feuchtigkeit unter 60 mehrere Timer gestartet werden, die sich nicht mehr stoppen lassen.
Gegenvorschlag:
Das ließe sich analog um
minHum
erweitern.unten:
EDIT: Welche Funktion haben die Datenpunkte "Ventilation_2" und "Ventilation_4"?
-
@paul53 sagte in Timeout Logikfehler?:
@cinimod sagte: Vorschlag:
Funktioniert leider nicht, da bei Feuchtigkeit unter 60 mehrere Timer gestartet werden, die sich nicht mehr stoppen lassen.
Oh ja stimmt, ziehe meinen Vorschlag zurück
So einfach war es dann wohl doch nicht
-
@paul53 sorry dass ich mich so spät melde, viel um die Ohren. Danke für eure Beiträge. Ventilation_2 sorgt dafür dass die Lüftung per externem Eingang reduziert wird, Ventilation_4 sorgt dafür dass die Lüftung sich auf Intensivlüftung stellt.
-
@cinimod genau so war es in meiner Logik. Die Lüftung soll reduziert werden, aber nur wenn mindestens ein Raum, egal welcher, unter 32 % ist, jedoch nicht reduzieren, wenn irgendein Raum über 45 ist (im meisten Fall das Bad nach dem Duschen).
-
Lässt sich das nicht einfach Lösen? Im Grunde geht es mir nur um das Problem, dass bei einem Neustart, wenn der Timeout gerade läuft, der Aktor nie ausgeschaltet wird, wenn nach dem Neustart die Aktivierungsbedingungen nicht mehr passen. Aber ich schau mir gleich mal deinen Vorschlag an . Danke dafür
-
@maduuto sagte: Ventilation_2 sorgt dafür dass die Lüftung per externem Eingang reduziert wird, Ventilation_4 sorgt dafür dass die Lüftung sich auf Intensivlüftung stellt.
Was passiert, wenn beide auf false oder beide auf true sind?
-
@paul53 wenn beide auf falsch sind dann macht die Lüftung ihre Standardlüftung.
Wenn beide auf wahr sind nimmt die Lüftung meine ich nur das erste Signal an, sprich was zuerst eingeschaltet worden ist.Allgemein habe ich mein Problem aber bei mehreren Skripten. Mit Timeout = 15min wird z.B. bei einer Dann Bedingung eine Heizung eingeschaltet. Wenn währenddessen ich aber ein Neustart mache und die Einschaltbedingung nicht erfüllt wird, bleibt die Heizung ein, da bei "sonst" ja nichts ist. Wie kann man das allgemein umgehen?
Kann ich nicht einfach wenn X = ja dann schalte aktor ein, wenn x= nein dann schalte aktor aus mit Verzögerung? Was wäre, wenn die Bedingung innerhalb der Verzögerung wieder erfüllt ist? Löscht sich dann der Ausschalttimer im Aktor oder schaltet das Gerät nach der REstzeit einmal kurz aus und wieder ein?
-
@maduuto sagte: wenn X = ja dann schalte aktor ein, wenn x= nein dann schalte aktor aus mit Verzögerung? Was wäre, wenn die Bedingung innerhalb der Verzögerung wieder erfüllt ist? Löscht sich dann der Ausschalttimer im Aktor
Der Auschalt-Timer wird nur gelöscht, wenn der Haken bei "löschen falls läuft" gesetzt ist. Ich bevorzuge die Variante mit "Ausführen timeout" und "stop timeout":
-
@paul53 würde hier in dem Fall leider nicht gut funktionieren, da wenn die werte nicht mehr passen, der Sonst bereich aktiviert wird. Wenn das jedes mal passiert, startet ständig ein Timeout, oder?
-
-
@maduuto sagte: Die Lüftung soll reduziert werden, aber nur wenn mindestens ein Raum, egal welcher, unter 32 % ist, jedoch nicht reduzieren, wenn irgendein Raum über 45 ist
Vorschlag: