Hoi! Ich mal wieder :)
Ich habe im Keller einen Homematic Wandthermostat (Wandthermostat_Climate:humidity)
mit einem at frage ich alle 30min ab:
define a_Luftfeuchtecheck at +*00:30:00 trigger n_Luftfeuchtecheck
mit einem notify möchte ich die Luftfeuchtigkeit einfangen und habe schwierigkeiten mit dem if:
notify entfernt :)
Der Luftentfeuchter ist eine Homematic Steckdose...
Was mache ich falsch?
wenn das alles stimmt so ziemlich alles... nicht böse sein.
also der reihe nach...
fhem arbeitet event basiert und die sensoren liefern im normalfall von selber werte. d.h. du fragst die werte nicht ab. ein notify ist normalerweise dazu da auf events die beim eintreffen bestimmter events (z.b. das ändern eines readings) zu reagieren. ohne ein festes zeitliches intervall.
du verwendest das notify als art makro um regelmassig etwas auszuführen. das ist in deinem fall unnötig. du kannst den code auch direkt im at haben.
im notfy fehlt die regex.
die setmagic geht im notify glaube ich nicht.
was sagt dein log?
warum nimmst du nicht THRESHOLD? das nimmt dir das reagieren auf events, die hysterese und wenn du willst noch mehr ab. es gibt sogar ein entfleucher/lüfter beispiel in der commandref.
Ich kann Andre nur zustimmen. Schau Dir einmal die Threshold Beispiele an.
Und sei so nett und lösche Dein Notify komplett aus Deinem Thread. Der Code ist Unsinn und sollte hier nicht weiter verbreitet werden.
Wenn Du noch Fragen hast kannst Du natürlich gerne fragen.
Grüße
Hi,
da ich das so verwende, wie von den Beiden vorgeschlagen, mal ein Beispiel:
defmod DE_GZ THRESHOLD SensorGZ_Weather:humidity PSD2_Sw |set @ on|set @ off|1
Beides wie bei Dir Homematic.
Mit diesem Befehl wird der Sollwert gesetzt
set DE_GZ desired 70
Mit set DE_GZ hysteresis 10
wird quasi das Schaltverhalten gesetzt.
Gruß Otto
Danke für eure Hilfe. Ich habe das notify eliminiert und hier rausgemacht :)
Das Treshold habe ich mir angesehen, das ist ja genial was es alles so gibt...
Gerät definiert, reagiert auf humidity und schaltet den Luftentfeuchter ein die 2 am ende ist wohl mein standard wert also aus
define t_Luftfeuchtigkeit THRESHOLD Hobbykeller_Wandthermo_Climate:humidity Luftentfeuchter |set @ on|set @ off|2
Die Hysterese habe ich mal auf 1 gestellt um das zu testen.
set t_Luftfeuchtigkeit hysteresis 1
Das tut noch nicht so ganz wie ich was will. Lege ich den auf die Terasse schaltet nix ein, lege ich ihn ins Wohnzimmer schaltet nichts aus :-(
Die Doku hast Du gelesen?
Das was Du meinst auf 2 abändern zu müssen ist <cmd_default_index> also lass es auf 1, das ist richtig so. Steht auch in dem Beispiel dort.
Einen Sollwert hast Du gesetzt?
Gib mal bitte ein list t_Luftfeuchtigkeit
Gruß Otto
Ja habe ich gelesen. Was ich nicht verstehe, wenn ich den TRESHOLD definiere mit dem ein und ausschalten, dann habe ich eine Luftfeuchte von 43% und er schaltet den Luftentfeuchter ein, deshalb habe ich diese beiden absichtlich vertauscht.
Was mir nicht ganz klar ist, meine desired stelle ich auf 50. Die Hysterese auf 2, heisst: er schaltet bei 50 ein, bei 51 aus und bei 49 wieder ein? richtig?
Internals:
CFGFN
CHANGED
DEF Hobbykeller_Wandthermo_Climate:humidity Luftentfeuchter |set @ on|set @ off|1
NAME t_Luftfeuchtigkeit
NR 331
NTFY_ORDER 50-t_Luftfeuchtigkeit
STATE active 50.0
TYPE THRESHOLD
cmd1_gt set Luftentfeuchter on
cmd2_lt set Luftentfeuchter off
cmd_default 1
hysteresis 2
offset 0
sensor Hobbykeller_Wandthermo_Climate
sensor_reading humidity
READINGS:
2019-03-16 14:01:40 cmd cmd2_lt
2019-03-16 13:59:43 desired_value 50
2019-03-16 13:59:43 mode active
2019-03-16 13:59:43 sensor_value 43
2019-03-16 13:59:43 state active 50.0
2019-03-16 14:01:40 threshold_max 50
2019-03-16 14:01:40 threshold_min 48
Attributes:
number_format %.1f
state_format _m _dv
Der Steuerung eines Badlüfters was bei mir der Grund zur Einführung von FHEM. Alles was es an fertigen feuchtigkeitsgesteuerten Lüftern gab war Mist.
Auch war eine Steuerung aus FHEM heraus mit absoluten Werten wenig hilfreich. Daher schreibe ich jetzt die Werte in eine Datenbank, und berechne in einem Userreading die Differenz zu den vorherigen Durchschnittswerten - ähnlich der differential-Funktion eines Userreadings.
Wenn die Feuchtigkeit sprunghaft ansteigt, wird der Lüfter eingeschaltet, wenn sie kaum noch abfällt, wird der Lüfter wieder ausgeschaltet.
Sieht dann so aus:
Hi,
er schreibt doch die Werte zum Ein- und Auschalten in die Readings:
2019-03-16 14:01:40 threshold_max 50
2019-03-16 14:01:40 threshold_min 48
Und laut Listing ist doch alles gut, er steht auf 43 und ist aus - oder?
2019-03-16 14:01:40 cmd cmd2_lt
2019-03-16 13:59:43 sensor_value 43
Gruß Otto
JA, ich war wieder mal zu ungeduldig, habe den Thermostat ins Bad gelegt nach dem Duschen dann war ein, und danach auf die Terasse dann war ausgeschaltet... Danke für eure Hilfe.
Die Datenbank-Lösung gefällt mir nicht. Ich habs gern einfach :)
ICh bin ja da auch noch am Anfang. Mit dem THRESHOLD gefällt mir das allerdings sehr gut!!!
Wusste ich nicht, dass es so etwas gibt.