FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: slako am 25 August 2019, 07:57:19

Titel: Schalten in Abhängigkeit
Beitrag von: slako am 25 August 2019, 07:57:19
Morgen,
ich mache gerade meine Ersten Schritte in FHEM und Versuche gerade einen Dummy Schalter zu schalten sobald meine Wetterstation eine Temperatur größer 25 anzeigt. Die Wetterstation gibt mir folgenden Status:
STATE T: 25.2 H: 58

Ich habe auch schon ein Notify angelegt das schalten soll sobald T größer 20 ist:
define DUMMYEIN notify Wetterstation:T:>20 set mySwitch1 on

Was mache ich falsch?

Titel: Antw:Schalten in Abhängigkeit
Beitrag von: Shadow3561 am 25 August 2019, 08:07:47
https://wiki.fhem.de/wiki/Notify (https://wiki.fhem.de/wiki/Notify)
Hier ist deine Antwort versteckt. Ziemlich weit unten gibt es Beispiele.
Titel: Antw:Schalten in Abhängigkeit
Beitrag von: masl am 25 August 2019, 11:45:05
Warum kein DOIF statt notify
Beispiel:

(([10:00-12:00]) and ([Temp_Pool:temperature] < 30) and ([Temp_Solar:temperature] > 30)) (set Pumpenprogramm heizung)

Gesendet von meinem SM-G960F mit Tapatalk

Titel: Antw:Schalten in Abhängigkeit
Beitrag von: slako am 26 August 2019, 07:03:09
Hallo,

für alle die das gleiche Problem haben, ich habe es mit einem Timer gelöst (ich weiß ist noch ausbaufähig).

Lösung:

define DUMMYEIN WeekdayTimer mySwitch1 78|00:01|on 78|23:59|off (ReadingsVal("MEINGERÄT","temperature",0) >= 20)

Man muss nur beachten das der Timer nicht sofort losrennt. Erst wenn es das nächste mal zutrifft. Bedeutet, jetzt aktiviert beginnt es erst im am nächsten Tag um 00:01 Uhr.
Will man es soft schalten muss der Befehl so aussehen:

define DUMMYEIN WeekdayTimer mySwitch1 78|aktuelleZeit +2|on 78|23:59|off (ReadingsVal("MEINGERÄT","temperature",0) >= 20)

Dann startet er jetzt + 2 Minuten. Man muss jetzt nur noch die Zeiten wieder anpassen.
Titel: Antw:Schalten in Abhängigkeit
Beitrag von: Damian am 26 August 2019, 10:05:24
Zitat von: slako am 26 August 2019, 07:03:09
Hallo,

für alle die das gleiche Problem haben, ich habe es mit einem Timer gelöst (ich weiß ist noch ausbaufähig).

Lösung:

define DUMMYEIN WeekdayTimer mySwitch1 78|00:01|on 78|23:59|off (ReadingsVal("MEINGERÄT","temperature",0) >= 20)

Man muss nur beachten das der Timer nicht sofort losrennt. Erst wenn es das nächste mal zutrifft. Bedeutet, jetzt aktiviert beginnt es erst im am nächsten Tag um 00:01 Uhr.
Will man es soft schalten muss der Befehl so aussehen:

define DUMMYEIN WeekdayTimer mySwitch1 78|aktuelleZeit +2|on 78|23:59|off (ReadingsVal("MEINGERÄT","temperature",0) >= 20)

Dann startet er jetzt + 2 Minuten. Man muss jetzt nur noch die Zeiten wieder anpassen.

Das ist aber nicht sonderlich elegant und sehr statisch, da im Abstand von 24 Stunden die Temperatur ausgewertet wird. Das eigentlich wichtige Ereignis der Temperaturüberschreitung wird hier gar nicht wahrgenommen.
Titel: Antw:Schalten in Abhängigkeit
Beitrag von: slako am 26 August 2019, 10:59:33
Hab ich hinterher auch gemerkt :P Hast mir aber in meinen anderen Beitrag schon super geholfen ;D
Titel: Antw:Schalten in Abhängigkeit
Beitrag von: Pfriemler am 26 August 2019, 11:25:35
Ne. Ein Anfänger hat eine Idee und weiß nicht warum sie nicht funktioniert. Jetzt lassen wir ihn mal bei der Idee und bringen sie zu Ende.

Zitat von: slako am 25 August 2019, 07:57:19
Die Wetterstation gibt mir folgenden Status:
STATE T: 25.2 H: 58
Vielleicht ist die zum Verständnis wesentliche Information erst mal gar nicht offensichtlich: Viele ereignisbasierte Aktionen, ob durch notify oder DOIF "bearbeitet", richten sich der Einfachheit halber nach dem STATE - das ist hier aber wenig hilfreich. Vielmehr dürfte die Wetterstation zusätzlich readings mit den Namen temperature und humidity liefern, deren Werte dann rein numerisch sind und damit besser auszuwerten.

Statt Deines Eingangsbeispiels solltest Du also eher an
define DUMMYEIN notify Wetterstation:temperature >20 set mySwitch1 on
denken.
Nur: Das funktioniert so nicht, weil ein notify in der Auslösebedingung keine numerische Auswertung vornimmt, sondern nur durch ein Ereignis getriggert wird. Zwar gibt es wie in dem im zweiten Beitrag genannten Wiki-Artikel diese Konstruktion für "alles über 75", aber das ist einfach zu kompliziert.
Die Lösung: Dein Notify reagiert auf jede Temperaturmeldung. Und im Ausführungsteil wird auf den Wert geprüft. Also
define DUMMYEIN notify Wetterstation:temperature IF ([Wetterstation:temperature] > 25) (set mySwitch1 on)
Das sollte jetzt zunächst einmal klappen - allerdings hat es einen gewissen Schönheitsfehler: Jeder gemeldete Temperaturwert über 25 Grad wird einen Schaltbefehl senden. Im Falle eines LaCrosse-Sensors können das bis zu 12 Befehle in der Minute werden, über Stunden, Tage, ... völlig unnötige Last ...

Stattdessen wäre so etwas wie eine "Zustandswippe" hilfreich - und sowas möchte man ja vermutlich auch erreichen: Bei Temperaturen über 25 Grad wird eingeschaltet, bei Temperaturen unter (sagen wir) 24 Grad wieder aus. Und ganz ohne viele Verrenkungen und Hilfskonstrukte ist Damians DOIF dann eine sehr elegante Lösung:
define di_Temperatursteuerung DOIF ([Wetterstation:temperaure] > 25) (set mySwitch1 on) DOELSEIF ([Wetterstation:temperaure] < 24) (set mySwitch1 off)
Ein DOIF wechselt zwischen den definierten Zuständen, wenn die betreffende Auswertung stimmt. Das heißt: Steigt die Temperatur erstmals über 25 Grad, wird es den ersten "Zweig" einnehmen und den damit verbundenen Schaltbefehl senden. Alle weiteren höheren Temperaturen werden dafür sorgen, dass das DOIF in diesem Zweig bleibt, aber der Schaltbefehl wird nicht erneut ausgeführt.

Sollte der zweite Schaltzweig nicht erwünscht sein, kann man mit ein paar einfachen Zusätzen erreichen, dass das DOIF den Einschaltbefehl wie ein Notify mehrfach sendet, aber die Häufigkeit der Aussendung lässt sich ebenso sehr einfach regeln oder begrenzen (etwa alle 10 Minuten, insgesamt 3x, ...)

Das ist einer der Gründe, warum manche Leute hier ein DOIF für viele Aufgaben geeigneter halten als ein notify ... (Glaubenskriegfrage!)

edit: Das Problem wurde inzwischen in einem anderen Thread gelöst ... deswegen ist es eigentlich immer gut, mit einer Frage in einem Thread zu bleiben.
Aber vielleicht konnte ich erhellen, warum der Wechsel zu DOIF eine gute Idee ist ...
Titel: Antw:Schalten in Abhängigkeit
Beitrag von: slako am 26 August 2019, 11:44:48
Hallo Pfriemler,

bin begeistert von deiner Antwort :) Besser gehts nicht !!! ;D Hast ja nicht nur mir geholfen sonder auch noch jeden anderen Anfänger ;D ;D ;D ;D ;D ;D