FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Smile99 am 16 Dezember 2014, 23:50:24

Titel: Zwei IF Bedingungen in der CFG
Beitrag von: Smile99 am 16 Dezember 2014, 23:50:24
Hallo zusammen, habe gerade mein Bad begonnen zu Steuern.... ABER
Hätte gerne eine Lüftersteuerung die ab 70% rel. Feuchtigkeit beginnen soll. soweit so gut mit:

define check at +*00:10 IF ([TH_Bad:humidity] > 70) (set Luefter on) ELSE (set Luefter off)

Das Funktioniert

Jetzt hätte ich aber gerne einen Dummy in der Abfrage eingbaut... einen Ruhemodus  dass die Lüftung nicht anfängt wenn dieser Aktiviert ist.
dachte mir daher: der Dummy wird per FHEMobile mit einem state versorgt.

define Ruhemodus dummy
attr Ruhemodus room Bad
define check at +*00:10 IF ([Ruhemodus:state] = off) && ([TH_Bad:humidity] > 70) (set Luefter on) ELSE (set Luefter off)

Aber das geht nicht... hmm.. offenbar doch nicht so gescheit wie gedacht...

HILFE ? TIPPS ?
danke schon mal im Voraus!
Titel: Antw:Zwei IF Bedingungen in der CFG
Beitrag von: JensS am 16 Dezember 2014, 23:54:59
Hallo,

wie wärs, wenn du deinem dummy die Möglichkeit gibst, einen State zu definieren?
webcmd, setlist z.B.

Gruß Jens
Titel: Antw:Zwei IF Bedingungen in der CFG
Beitrag von: Bennemannc am 16 Dezember 2014, 23:58:32
Hallo,

schau mal in die Commandref und suche nach THRESHOLD. Dieses Modul ist genau für solche Steuerungen gemacht. Man kann einen Schwellwert und eine Hysterese eingeben. Das Modul prüft in regelmäßigen Abständen ob es eine Überschreitung gibt, oder ob der Wert unter die Schwelle (+Hysterese) gesunken ist.
Achtung nicht die fhem.conf von Hand ändern - der Threshold darf erst kommen, wenn das Gerät bereits definiert ist - sonst gibt es Fehlermeldungen. Mit "define NAME THRESHOLD GERÄT" in der Befehlszeile anlegen und dann editieren. Dann wird es automatisch an der richtigen Stelle in die Conf eingefügt.

Gruß Christoph
Titel: Antw:Zwei IF Bedingungen in der CFG
Beitrag von: Smile99 am 17 Dezember 2014, 00:19:41
Habe mir den TRESHOLD angesehen, bin aber ganz ehrlich... ich verstehs nicht wirklich

Hier das Beispiel

define TH_hum THRESHOLD sens:humidity:10:70||||on:off|_sc  - Bei 70 dreht er auf und bei 60 wieder ab... soweit so klar... was ist das _sc am Ende?
define dewpoint dewpoint indoor - Taupunkt wir bei mir mit dem Dummy ersetzt ?
define dewpoint dewpoint outdoor - dito
define TH_room THRESHOLD indoor:dewpoint:0:outdoor:dewpoint AND TH_hum:state:on ventilator|set @ on|set @ off|2 - Zweiter Wert wäre dann die Dummyabfrage ABER WIE ist das bei meinem Bsp?

Titel: Antw:Zwei IF Bedingungen in der CFG
Beitrag von: der-Lolo am 17 Dezember 2014, 07:06:39
im IF müsste das meiner meinung nach so ausschauen...
IF ([Ruhemodus] eq "off") and ([TH_Bad:humidity] > 70) (set Luefter on) ELSE

IF und if sollte man nicht mischen...
Titel: Antw:Zwei IF Bedingungen in der CFG
Beitrag von: Bennemannc am 17 Dezember 2014, 07:34:34
Hallo,

also fangen wir mit Taupunkt an.
define dew_all dewpoint dewpoint .* temperature humidity dewpoint
Erzeugt an allen Geräten die Temperatur und Feuchtigkeit messen ein zusätzliches Reading mit dem Taupunkt.
THRESHOLD
define Standby_off_Handy THRESHOLD Schaltsteckdose_1_Pwr:power:0.1:1.6 Schaltsteckdose_1_Sw | | set @ off |1
attr Standby_off_Handy devStateIcon disabled:rc_RED:active active:rc_GREEN:deactivated

define Name THRESHOLD Gerät_reading:Hysterese:Wert Actor || ein_bei_Überschreitung |1
Die letzte Zahl gibt an, welcher Zustand beim deaktivieren des THRESHOLD eingenommen werden soll. Man kann so eine Automatik ja auch abschalten. Ich habe Dir deswegen die zweite Zeile dazu kopiert.
Eine Hysterese von 10 bei der Feuchtigkeit halte ich für sehr hoch. Die Feuchtigkeit ändert sich nur langsam, zudem muss die Raumluft entsprechend zirkulieren. Ich würde es mit 1 oder 2 für den Anfang versuchen, sonst läuft der sehr lange bis dauernd.
Es ist schwierig, eine vernünftige Steuerung zu bauen, weil weder relative Feuchte noch der Taupunkt wirklich aussagekräftig sind. Wird der Taupunkt an den Wänden (Wandtemperatur) nicht unterschritten, fällt auch keine Feuchtigkeit aus. Auch eine Relative Feuchtigkeit von über 70 ist nicht unbedingt kritisch, wenn an den Wänden die Taupunkttemperatur nicht überschritten wird.
Eigentlich muss man den Taupunkt noch mit der Außentemperatur vergleichen. Liegt die Außentemperatur über dem Taupunkt, kann kein Wasser an den Innenseiten der Wände entstehen. Liegt sie darunter, kommt es auf die "Isolierfähigkeit" der Wand sowie eventuell vorhandener Kältebrücken an.

Gruß Christoph
Titel: Antw:Zwei IF Bedingungen in der CFG
Beitrag von: Smile99 am 17 Dezember 2014, 11:08:48
Bennemannc: Danke, aber den Taupunkt lasse ich absichtlich nicht berechnen, da das Badezimmer an keine Aussenwand grenzt - WOHNUNG
Verstehe nun den TRESHOLD, danke! Werde ihn wohl dann in den anderen Zimmern einsetzen.

der-Lolo: DAS war gesucht, leider funktioniert es noch immer nicht... habe ich noch einen logischen Fehler drinnen?

define Ruhemodus dummy
attr Ruhemodus room Bad

define check at +*00:01 IF ([Ruhemodus] eq "off") and ([TH_Bad:humidity] > 70) (set Luefter on) ELSE (set Luefter off)
attr check room Bad


den state hat der dummy bekommen, steht in den Resadings drinnen...

hmmm
Titel: Antw:Zwei IF Bedingungen in der CFG
Beitrag von: Smile99 am 17 Dezember 2014, 11:19:26
Ok, bin gerade selbst draufgekommen:
Der gesamte IF Ausdruck wird nur einfach in Klammer gesetzt

also
IF (WENN and WENN) ELSE
anstelle von
IF (WENN) and (WENN) ELSE

Titel: Antw:Zwei IF Bedingungen in der CFG
Beitrag von: der-Lolo am 17 Dezember 2014, 17:11:14
eigentlich müsste es dann aber

define check at *+00:01 IF (([Ruhemodus] eq "off") and ([TH_Bad:humidity] > 70)) (set Luefter on) ELSE (set Luefter off)


sein...
Titel: Antw:Zwei IF Bedingungen in der CFG
Beitrag von: JensS am 17 Dezember 2014, 17:44:45
In der Reference steht ein ähnliches Beispiel, bei dem zwei IFs geschachtelt sind.
define test notify lamp
IF ([lampe] eq "on") (

    IF ([outdoor:humidity] < 70)
        (set lamp off) ELSE
        (set lamp on)

) ELSE

    (set switch on)


Gruß Jens
Titel: Antw:Zwei IF Bedingungen in der CFG
Beitrag von: Smile99 am 17 Dezember 2014, 17:46:51
Es funktioniert wie gewünscht mit


define check at *+00:01 IF ([Ruhemodus] eq "off" and [TH_Bad:humidity] > 70) (set Luefter on) ELSE (set Luefter off)


Titel: Antw:Zwei IF Bedingungen in der CFG
Beitrag von: Brockmann am 17 Dezember 2014, 17:54:44
Zitat von: Smile99 am 17 Dezember 2014, 17:46:51
Es funktioniert wie gewünscht mit


define check at *+00:01 IF ([Ruhemodus] eq "off" and [TH_Bad:humidity] > 70) (set Luefter on) ELSE (set Luefter off)


Vielleicht schaust Du Dir mal DOIF an. Das funktioniert im Prinzip ganz ähnlich, nur kannst Du es Dir sparen, das alle x Sekunden ausführen zu lassen. DOIF reagiert automatisch, wenn sich die Werte ändern.

Und generell wirst Du mit einer Steuerung, die sich an fixen Werten orientiert, vermutlich nicht glücklich werden. Kann leicht passieren, dass der Lüfter mit solchen Vorgaben im Sommer gar nicht mehr ausgeht.
Es gibt hier im Forum einen längeren Thread zum Thema Badlüftung, die stehen einige Lösungen drin. Einfach mal suchen.