DOIF Verständnisprobleme - Zeit aus reading

Begonnen von Stonemuc, 13 September 2018, 04:10:47

Vorheriges Thema - Nächstes Thema

Stonemuc

Ich möchte die Lüftung meiner THZ Wärmepumpe mit einem DOIF regeln, allerdings hab ich dabei grundsätzliche Verständnisprobleme - ich hoffe ich bin hier richtig.

Das DOIF soll folgende Funktion haben: Wenn die Außentemperatur höher ist als die Temperatur eines bestimmten Raumthermostats, soll der Lüfter auf 0 geschalten werden, ansonsten soll das DOIF den Wert der aktuellen Lüftungsstufe beibehalten - wobei die Lüftungsstufe nur zur programmierten Tagzeit schalten soll (Hier gibt es 30 verschiedene Zeiträume, die sich erst nach dem Text programFan_ unterscheiden und entweder die Werte hh:mm-hh:mm oder n.a.-n.a. abbilden).

Nun zu meinen Fragen:
Wie Bilde ich den Teil ab, indem ich die Readings, die entweder mit der Zeitspanne oder dem n.a. für nicht belegt mit der aktuellen Systemzeit abgleiche? Geht das ohne dummy? Oder muss ich vorab den entsprecheden Zeitwert in einen dummy schreiben und den Wert von dort übernehmen?

Wie setze ich die Klammern richtig?

Ich hab jetzt die halbe Nacht commandref_DOIF gelesen und bin nun noch verwirrter.

Hier mal der Code - vermutlich auch noch mit falsch gesetzten Klammern

define LR_Tag DOIF ([Mythz:outside_temp] >=  EnO_05045D78:temperature and [($hms eq ,,Mythz:"programFan_.*" )] ( set Mythz:p07FanStageDay 0) DOELSE (set Mythz:p07FanStageDay Mythz:fanstage)

eq wird sicher falsch sein - gibt es dafür einen Befehl? und ist der teil mit Mythz:"programFan_.*" richtig um alle 30 Readings mit dem gleichen Wortlaut am Anfang auszuwerten?

Es wäre super, wenn ihr mich da auf den richtigen Weg lenken könntet.
FHEM aus Raspberry PI 3 B+, Haussteuerung auf EnOcean Basis, Tecalor THZ 404eco Wärmepumpe

Otto123

Moin,

Du kannst nicht in einem Vergleich, der dafür gemacht ist zwei Werte mit einander zu vergleichen, versuchen einen Wert mit x anderen Werten (definiert durch regExp) zu vergleichen.

Ich habe keinen Ansatz wie dein jetziges Konstrukt einfach aufgelöst werden könnte. Ich denke die 30 Zeiträume müssen am einfachsten je ein DOIF Zweig sein.

Oder Du musst ein kleines Perlprogramm schreiben und das über 99_myUtils aufrufen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Ellert

Entweder Du baust eine Funktion wie, z.B. sunset, dann wird der nächste Zeipunkt beim Auslösen des vorhergehenden Zeitpunktes berechnet.
([{DeineZeitberechnung}])(set ...)
Wenn der Rückgabewert keiner gültigen Zeitangabe entspricht, dann gibt es einen Hinweis. Oder Du verwendest die indirekte Zeitangabe, dazu musst Du keinen Dummy verwenden um die Zeit zu speichern, es kann auch ein Reading im DOIF sein.
([[$SELF:naechster_Zeitpunkt]]) (set ...)
Auch hier wird eine ungültige Zeitangabe gemeldet.

Stonemuc

Ich mach es jetzt einfach mit einer festgesetzten Zeit, da ich sie in der Heizung sowieso für jeden Tag gleich konfiguriert habe. Aber danke für die Hilfestellung.
FHEM aus Raspberry PI 3 B+, Haussteuerung auf EnOcean Basis, Tecalor THZ 404eco Wärmepumpe