HeatingControl Bedingung funktioniert nicht

Begonnen von Tenner, 02 Januar 2017, 13:35:26

Vorheriges Thema - Nächstes Thema

Tenner

Hallo,
Der Hauptgund für das Modul HeatingControl war, dass es die Einstellung der Temperatur bei offenem Fenster so lange verzögert,
bis das Fenster geschlossen wird.  Das funktioniert auch sehr gut.
Nun möchte ich aber, wenn die Temperatur an der Heizung manuell hochgestellt wurde, dass HC den Schaltvorgang nicht mehr ausführt.
Das klappe auch mit der DEF: Buero_Clima 08:30|19 18:00|12 (ReadingsVal("Buero_Clima", "desired-temp", "") < 19.0)
Allerdings Funktionierte dann auch das Zurückstellen auf 12.0 nicht mehr, weil die Condition ja nicht wahr war.
Die Änderung
Buero_Clima 08:30|19 18:00|12 (ReadingsVal("Buero_Clima", "desired-temp", "") < 19.0) && ($now lt "17:59:00")
hatte dann aber zur Folge, dass das Schalten auf 19.0 immer ausgeführt wurde, auch wenn vorher manuell 20.0 am Heizkörper eingestellt wurde.
Was muss ich tun, damit die UND Verknüpfung in der Condition funktioniert? Gibt es noch andere Ideen, außer die Uhrzeit in die Condition mit einzubeziehen?
Oder habe ich "nur" ein Syntax-Problem mit dem &&?

Vielen Dank schon mal,
Tenner

Dietmar63

ZitatNun möchte ich aber, wenn die Temperatur an der Heizung manuell hochgestellt wurde, dass HC den Schaltvorgang nicht mehr ausführt.
Diese Funktion ist in HC oder WDT nicht umgesetzt, aus genau dem Grund, dass man kein eindeutiges Kriterium definierne  kann, wann nicht geschaltet werden soll wann aber dann vielleicht doch wieder.

($now lt "17:59:00")
dürfte nicht fuktionieren, weil, wenn überhaupt $now verfügbar ist, $now die Zeit in Form des epoch-Formats(Sekunden GMT seit 1.1.1970) enthält.

Am sichersten(debuggen) lässt sich das Problem mit einer Funktion in 99_myUtils:

Buero_Clima 08:30|19 18:00|12 (customBedingung("$NAME","$EVENT"))

Dann müssen alle Bedingungen in der Funktion abgefragt und true oder false zurückgeliefert werden.
Dort kann man dann beliebig viel Programmcode hinterlegen. Code in der 99_myUtils wird syntaktisch überprüft und du kannst per Log(...) Funktion Variableninhalte überprüfen.
Allerdings erspart es Dir nicht  darüber nachzudenken, vernünftige Bedinungen für ein Nichtschalten zu finden und die Daten zu besorgen.

Eine Variante wäre, nicht zu Schalten, wenn die manuelle Änderung zwei Stunden zurückliegt. Aber woran willst du eine manuelle von maschinellen Änderung unterscheiden.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Tenner

Hallo Dietmar,

vielen Dank für Deine Antwort (und Deine tolle Arbeit an den FHEM Modulen!).
Ich werde mich mal in einer Funktion in 99_myUtils.pm versuchen und über die Bedingung für das Nichtschalten nachdenken..

Viele Grüße, Tenner