Bekomme ich das mit einem DOIF hin oder brauche ich Hilfskonstrukte?

Begonnen von Joerg_L, 12 Juni 2020, 10:33:58

Vorheriges Thema - Nächstes Thema

Joerg_L

Hallo zusammen,

ich habe das FHEM nun ein bisschen im Einsatz und es funktioniert einiges. Jedoch bekomme ich eine Heizungskörperregelung noch nicht so zum laufen mit DOIF wie ich es mir vorstelle.
Könnt ihr mir nur Tipps geben, wie ich das lösen kann, keine komplette Lösung! Kriege ich das alles in ein einzelnes DOIF pro Heizkörper? (Sie haben unterschiedliche Wochenschaltprogramme)

1. Alle Heizkörper (Dect 301) sollen bei einer Aussentemperatur (Dect 201) von über 20 Grad auf einen Wert von 7,5 gesetzt werden und bleiben bis die Temperatur wieder unter 20 Grad sind.
2. Alle Heizkörper sollen wenn Bedingung 1 nicht gegeben ist bei Abwesenheit aller Handies auf 18 Grad gestellt werden und bleiben, bis wieder jemand present ist. Bedingung 1. würde es aber überschreiben.
3. Alle Heizkörper haben sonst eine Wochentagsschaltung, die ausgeführt wird wenn 1, und 2. nicht zu treffen.

Die presence Structure mit den Handies habe ich und hier wird die an/abwesenheit richtig erkannt. Die Aussentemperatur habe ich auch.
Ein DOIF mit:
(([08:00-22:00|06] or [06:30-22:00|12345]) and ([AWState] eq "present" and [HKRAuto:state] eq "winter")) (set HKRBad desired-temp 22) DOELSE (set HKRBad desired-temp 18)
für einen einzelnen Heizkörper habe ich am laufen.
AWState ist ein dummy mit doif aus presence structure (present, absent)
HKRAuto ein dummy mit doif von der Aussentemeratur (summer, winter)

Momentan schaltet es also nur 22 Grad oder 18 Grad.

Es fehlen aber eben noch teilweise die obengenannten Zustände Heizkörper auf 7.5 wegen Außentemperatur und damit deaktivieren der Wochentagsregelung, Anwesenheitssteuerung, etc.

Wie gesagt, nur Tipps was mir fehlt, wie ich es angehen muss!
ich hatte es schon mit mehreren DOIF/DOELEIF/DOELSE und einer Struktur für alle Heizkörper zum gemeinsamen setzen probiert aber es hat dann doch nie so geschaltet wie ich wollte.

Hoffe es war verständlich und JA ich habe schon tagelang mit wiki doif, foren lesen, etc verbracht, aber das übersteigt doch etwas mein Verständnis.
Denke mit guten Tipps, werde ich es dann auch selber zusammenbasteln können.

Vielen Dank vorab,
Grüße
Jörg




Gisbert

Hallo Jörg,

die Informationen, die du von den dummies AWState und HKRAuto beziehst, kannst/solltest du von den zugrundeliegenden Devices beziehen, falls du diese Infos nicht an anderer Stelle benötigst. Weniger Device erhöht im allgemeinen die Übersicht.

Um die Sache nicht zu komplex zu gestalten, würde ich in einem weiteren DOIF (oder dummy oder direkt in dem Presence-Device, letzteres würde ich machen) ein Reading mit den Werten 18/20 erzeugen, basierend auf Anwesenheit.
Dieses Reading wird dann als (dynamischer) Sollwert für die Steuerung der Heizkörperventile genutzt.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome


Joerg_L

Hi zusammen,

erstmal Danke. Das Residents scheint mir ein wehing oversized zu sein, das struct mit dem presence funktioniert eigentlich so ganz gut...
Ich denke, ich habe nun auch endlich ein lauffähiges DOIF hinbekommen um meine Wünsche zu erfüllen.
Ich hatte bei den vorherigen Versuchen wohl zu wenig eindeutige DOELSEIF drin.
Mit diesem gehts nun:

([HKRAuto:state] eq "summer" and ([AWState] eq "absent" or [AWState] eq "present"))(set HKRBad desired-temp 7.5) DOELSEIF ([AWState] eq "absent" and [HKRAuto:state] eq "winter") (set HKRBad desired-temp 18) DOELSEIF ([08:00-22:00|06] or [06:30-22:00|12345] and [AWState] eq "present" and [HKRAuto:state] eq "winter") (set HKRBad desired-temp 22) DOELSE (set HKRBad desired-temp 18)


Unschön ist nur noch das:

and ([AWState] eq "absent" or [AWState] eq "present")

Wie macht man das besser dass es bei jeden Event beachtet wird (absent oder present) aber egal welcher Wert es ist?
Als dies nicht drin war, hats irgendwie nicht funktioniert.

Danke vorab,
Jörg


amenomade

and [AWState]

mit attr checkReadingEvent 0 => somit wird auf jedem Event von beiden involvierten Devices getriggert.

Oder wenn Du nur present und absent willst:
and [AWState] =~ (present|absent)

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus