Hauptmenü

neues Modul DOIF

Begonnen von Damian, 21 Mai 2014, 15:53:18

Vorheriges Thema - Nächstes Thema

MadCat

Hallo, Dank Eurer Hilfe, funktioniert mein DOIF genau so wie ich es gewollt habe, leider hatte ich aber ein Physikalisches Problem nicht bedacht.

(([Kesselpumpe] =~ "on" and [Puffer2_100:temperature]<50) or ([Heizkreispumpe] =~ "on" and [Puffer1_25:temperature]<[Puffer2_20:temperature]))  (set Heizkreisventil on, set Puffer_2 on, set Puffer_1 off) DOELSE (set Heizkreisventil off, set Puffer_2 off, set Puffer_1 on)

Irgendwann, ist der Sollwert von [Puffer2_100:temperature]<50 erreicht, aber wie das nun mal so ist mit Temperaturen, Sie schwanken und so schaltet das Heizkreisventil solange auf und zu, bis der Kessel abgebrandt ist und die Kesselpumpe ausschaltet.

Mein Gedanke war nun dieses Problem mit einem Threshold in den Griff zu bekommen, aber wenn ich die Commandref richtig verstehe, geht dies aber wohl nicht mit meinen Bedingungen.

Hat vielleicht jemand eine Idee, wie ich dieses Problem gelöst bekomme?


Damian

Zitat von: MadCat am 13 Februar 2015, 20:31:34
Hallo, Dank Eurer Hilfe, funktioniert mein DOIF genau so wie ich es gewollt habe, leider hatte ich aber ein Physikalisches Problem nicht bedacht.

(([Kesselpumpe] =~ "on" and [Puffer2_100:temperature]<50) or ([Heizkreispumpe] =~ "on" and [Puffer1_25:temperature]<[Puffer2_20:temperature]))  (set Heizkreisventil on, set Puffer_2 on, set Puffer_1 off) DOELSE (set Heizkreisventil off, set Puffer_2 off, set Puffer_1 on)

Irgendwann, ist der Sollwert von [Puffer2_100:temperature]<50 erreicht, aber wie das nun mal so ist mit Temperaturen, Sie schwanken und so schaltet das Heizkreisventil solange auf und zu, bis der Kessel abgebrandt ist und die Kesselpumpe ausschaltet.

Mein Gedanke war nun dieses Problem mit einem Threshold in den Griff zu bekommen, aber wenn ich die Commandref richtig verstehe, geht dies aber wohl nicht mit meinen Bedingungen.

Hat vielleicht jemand eine Idee, wie ich dieses Problem gelöst bekomme?

Definiere einfach ein wait-Attribut auf deine Befehle, so werden die Schwankungen ignoriert.

z. B. (15 minutige Verzögerung)

attr <dein_DOIF_Modul> wait 900:900

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

MadCat

Zitat von: Damian am 13 Februar 2015, 20:40:33
Definiere einfach ein wait-Attribut auf deine Befehle, so werden die Schwankungen ignoriert.

z. B. (15 minutige Verzögerung)

attr <dein_DOIF_Modul> wait 900:900

Gruß

Damian

Vielleicht nicht die sauberste Lösung aber Praktikabel, 15min wären mir aber zu kurz, bis zu welcher Zeitspanne kann dieses Wait ausgereizt werden?

Gruß Ralph

Damian

Zitat von: MadCat am 13 Februar 2015, 20:58:54
Vielleicht nicht die sauberste Lösung aber Praktikabel, 15min wären mir aber zu kurz, bis zu welcher Zeitspanne kann dieses Wait ausgereizt werden?

Gruß Ralph

Das ist deine Entscheidung - es gibt keine Grenzen. Schaue dir an, wie lange deine Temperatur um 50 pendelt und danach bestimmst du den Wert.

Alternativ kannst du mit dem Attribut cmdpause experimentieren.

Gruß

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

MadCat

Zitat von: Damian am 13 Februar 2015, 21:06:48

Alternativ kannst du mit dem Attribut cmdpause experimentieren.

Gruß

Damian

Hm wo ist denn da der Unterschied zu dem wait, ich blicke da noch nicht durch.

Gruß Ralph

Damian

Zitat von: MadCat am 13 Februar 2015, 21:14:00
Hm wo ist denn da der Unterschied zu dem wait, ich blicke da noch nicht durch.

Gruß Ralph

Erklärungen und Beispiele findest du in der Commandref zu DOIF.

Hier nur kurz: wait verzögert die erste Ausführung (hier geht nichts verloren), cmdpause ignoriert Events, die nach der letzten Ausführung in der angegebenen Zeit kommen.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Spartacus

Hallo,
versuche gerade mit dem DOIF meine Sonos-Timer zu modifizieren, aber das DOIF meldet mir permanent einen Klammerfehler!

([state.NRW.FerienClone.dum])
(set OG.kz.SON.ZP_S1 Alarm Update 674 {Volume=>5, Enabled => 0})
DOELSE
(set OG.kz.SON.ZP_S1 Alarm Update 674 {Enabled => 0})


Dieser Befehl läuft grundsätzlich!
set OG.kz.SON.ZP_S1 Alarm Update 674 {Volume=>5, Enabled => 0}
Was passt hier dem DOIF nicht?
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Brockmann

Zitat von: Spartacus am 14 Februar 2015, 17:22:20
Was passt hier dem DOIF nicht?
Es ist bei solchen Fragen immer hilfreich, die genaue Fehlermeldung dann auch mitzuliefern.
Aber ich tippe mal, es liegt am Komma, das bei DOIF ja der Trenner zwischen zwei Befehlen ist.
Eventuell hilft es, den ganze Befehl in ein fhem("...") zu verpacken.

automatisierer

jou, habs grad mal in mein test fhem eingehackt, mit ; als Trennzeichen nimmt er es an. obs auch funzt musst du mal testen

Spartacus

Hi,
danke für den Tipp, das ";" frisst er beim Sonos-Befehl nicht, habe es nun so gemacht!
([state.NRW.FerienClone.dum] or [hl.01.Feiertag.cdm:today] ne "none")
({fhem "set OG.kz.SON.ZP_S1 Alarm Update 674 {Volume => 5, Enabled => 0}"})
DOELSE
({fhem "set OG.kz.SON.ZP_S1 Alarm Update 674 {Volume => 5, Enabled => 1}"})

Sieht zwar doof aus mit den Klammern, aber es funzt!
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Damian

Zitat von: Spartacus am 14 Februar 2015, 17:52:51
Hi,
danke für den Tipp, das ";" frisst er beim Sonos-Befehl nicht, habe es nun so gemacht!
([state.NRW.FerienClone.dum] or [hl.01.Feiertag.cdm:today] ne "none")
({fhem "set OG.kz.SON.ZP_S1 Alarm Update 674 {Volume => 5, Enabled => 0}"})
DOELSE
({fhem "set OG.kz.SON.ZP_S1 Alarm Update 674 {Volume => 5, Enabled => 1}"})

Sieht zwar doof aus mit den Klammern, aber es funzt!
Christian

([state.NRW.FerienClone.dum] or [hl.01.Feiertag.cdm:today] ne "none")
((set OG.kz.SON.ZP_S1 Alarm Update 674 {Volume => 5, Enabled => 0}))
DOELSE
((set OG.kz.SON.ZP_S1 Alarm Update 674 {Volume => 5, Enabled => 1}))


hätte es auch getan. Die zusätzlichen runden Klammern besagen: das Komma nicht als Trennzeichen anzusehen.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Spartacus

Hallo Damian,
Vielen Dank!
Habe ich wieder etwas gelernt!

Grüß,
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

vbs

Sorry, mal ne blöde Frage. Ich hab wirklich gesucht: In der commandref, im Forum, im Wiki, aber ich finde es einfach nicht :(

Was muss ich schreiben, um im Ausführungsteil den Namen und das Reading des auslösenden Events zu bekommenn (analog zu notify)? Ich hab versucht $DEVICE, $device, %DEVICE.

Zum Beispiel:
([wz_dm7020hd:hdd1_free]<60) ({sendEmail("Die Dreambox %DEVICE hat nur noch %READING GB Speicherplatz frei!")})

Danke!

Damian

Zitat von: vbs am 15 Februar 2015, 21:54:27
Sorry, mal ne blöde Frage. Ich hab wirklich gesucht: In der commandref, im Forum, im Wiki, aber ich finde es einfach nicht :(

Was muss ich schreiben, um im Ausführungsteil den Namen und das Reading des auslösenden Events zu bekommenn (analog zu notify)? Ich hab versucht $DEVICE, $device, %DEVICE.

Zum Beispiel:
([wz_dm7020hd:hdd1_free]<60) ({sendEmail("Die Dreambox %DEVICE hat nur noch %READING GB Speicherplatz frei!")})

Danke!

([wz_dm7020hd:hdd1_free]<60) ({sendEmail("Die Dreambox wz_dm720hd hat nur noch [wz_dm7020hd:hdd1_free] GB Speicherplatz frei!")})

Platzhalter wie: $DEVICE, $device, %DEVICE gibt es bei DOIF nicht.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

vbs

Ahh, ok, dann kann ich immerhin aufhören zu suchen ;) Danke für die schnelle Info!