Hallo,
folgender Code soll die Rolläden selbstständig bei Regen schließen, sofern ich wach bin.
define Rollo_Regen_Ja DOIF (([wach] eq "on") and ([if($value{KS300:IR*}] eq "yes")) (set K2_Rollo position 80)
attr Rollo_Regen_Ja room Kind_2
define Rollo_Regen_Nein DOIF (([wach] eq "on") and ([if($value{KS300:IR*}] eq "no")) (set K2_Rollo position 0)
attr Rollo_Regen_Nein room Kind_2
der Dummy wach wird morgens nach dem aufstehen eingeschaltet. Das klappt auch soweit. Aber ich bekomme es nicht hin, das Reading vom KS300 für Regen auszulesen. Kann mir da einer mal einen Wink geben?
Folgende Infos liefert der KS300 im STATE
T: 16.0 H: 72 W: 0.2 R: 398.6 IR: no Wi: 0 D: 11.0
Und es gibt noch unter READINGS
israining no
Danke schonmal.
Joe
Hallo Joe,
Das geht mit einem Doif. DOELSEIF. Am besten schaust du mal in die commanref unter Doif.
Gruß Rolf
Dein Syntax ist ziemlich "speziell", versuch mal
([if($value{KS300:IR*}] eq "no") -> [KS300:israining] eq "no"
Gruß Otto
Oder posten einfach mal ein List von KS300, wie hier: https://forum.fhem.de/index.php/topic,71806.0.html erklärt. Dann kann man viel leichter helfen.
Hallo,
danke für die vielen Anregungen.
ein list KS300 ergibt:
Internals:
CODE 1234
CUL_0_MSGCNT 158
CUL_0_RAWMSG 810d04xx4027a0017133109800226c
CUL_0_RSSI -71.5
CUL_0_TIME 2017-09-08 07:34:17
DEF 1234
IODev CUL_0
LASTInputDev CUL_0
MSGCNT 158
NAME KS300
NR 45
RAINUNIT 255
STATE T: 13.3 H: 90 W: 0.8 R: 400.4 IR: no Wi: 0 D: 11.7
TYPE KS300
WINDUNIT 1
Readings:
2017-09-08 07:34:17 avg_day T: 13.1 H: 88 W: 0.0 R: 1.8
2017-09-08 00:04:24 avg_month T: 14.7 H: 48 W: 35.2 R: 18.9
2017-09-08 07:34:17 checksum c
2017-09-08 07:34:17 cum_day 2017-09-08 00:04:24 T: 353440.9 H: 2392007 W: 976.7 R: 398.6
2017-09-08 00:04:24 cum_month 7 T: 103.2 H: 336 W: 246.3 R: 18.9
2017-09-08 07:34:17 dewpoint 11.7
2017-09-08 07:34:17 humidity 90
2017-09-08 07:34:17 israining no
2017-09-08 07:34:17 rain 400.4
2017-09-08 07:34:17 rain_raw 1570
2017-09-08 07:34:17 rain_raw_adj 1570
2017-09-08 07:34:17 state T: 13.3 H: 90 W: 0.8 R: 400.4 IR: no Wi: 0
2017-09-08 07:34:17 temperature 13.3
2017-09-08 07:34:17 tsecs 1504848857.49854
2017-09-08 07:34:17 type_raw 7
2017-09-08 07:34:17 unknown3 1
2017-09-08 07:34:17 wind 0.8
2017-09-08 07:34:17 windIndex 0
Attributes:
IODev CUL_0
room Out
Ich habe das nun mal entsprechend Otto123´s Vorschlag angepasst. Leider erhalte ich dann eine Fehlermeldung beim Speichern der .cfg
Rollo_Regen_Ja DOIF: no right bracket: (([wach] eq "on") and ([if($value{KS300:IR*}] eq "yes")) (set K2_Rollo position 80) Rollo_Regen_Nein DOIF: no right bracket: (([wach] eq "on") and ([if($value{KS300:IR*}] eq "no")) (set K2_Rollo position 0)
Danke schonmal
Also ich sehe nicht das du Ottos Vorschlag genommen hast.
Der entscheidende Teil war dies
Zitat[KS300:israining] eq "no"
und das hier
Zitat([if($value{KS300:IR*}] eq "no")
meinte Otto mit speziell.
Also du wirfst da irgendetwas durcheinander Doif, notify was auch immer, also am besten wirklich nochmal in die Commandref zu Doif gucken.
Dein zweiter Teil im Doif
Rollo_Regen_Nein DOIF: no right bracket:
kann so auch nicht funktionieren, dafür wäre dann das Doelseif,
wie Rolfg ja auch schon geschrieben hat. Steht aber alles in der Commandref.
Vielleicht hätte ich drastischer sagen sollen, Deine Abfrage im define ist komplett Blödsinn? So könnte es klappen.
define Rollo_Regen_Ja DOIF ([wach] eq "on" and [KS300:israining] eq "yes") (set K2_Rollo position 80)
define Rollo_Regen_Nein DOIF ([wach] eq "on" and [KS300:israining] eq "no") (set K2_Rollo position 0)
Hallo,
ich bitte vielmals um Entschuldigung. Ich bin total verpeilt gewesen. Ich habe heute Morgen anstatt das richtige von Otto aus dem Beitrag von ihm mein altes kopiert. Es war scheinbar einfach zu früh und ich hatte ein mega Brett vorm Kopf.
Ich danke euch, dass ihr so viel Gedult mit mir hattet und nun warte ich auf Regen. Zumindest die Fehlermeldung ist schon mal weg. Danke, dass ihr Anfängern wie mir so unter die Arme greift und eure private Freizeit dafür opfert.
Ich melde mich nach dem nächsten Regen wieder und sage, ob es klappt oder nicht.
Lieben Gruß
Joe
wenn du etwas testen willst, dann kannst du auch machen in dem du mit "setreading" oder mit "trigger" arbeitest, bei DOIF auch mit direktem setzen des Command (cmd_1 etc). Erklärungen dazu erhälst du in der CommandRef.
Zitat von: Der_müde_Joe am 08 September 2017, 07:40:46
Leider erhalte ich dann eine Fehlermeldung beim Speichern der .cfg
Moin
Ich will hier mal den Finger heben! Du haettest wahrscheinlich einen Teil viel schneller selbst gemerkt, wenn du das in dem DOIF selst editiert haettest, als in der .cfg rumzutippen. Viele hier verstehen da keinen Spass, weil man demjenigen dann manchmal sehr schwer helfen kann!
Gruss Christoph
Moin,
bitte entschuldigt die späte Rückmeldung. Ich bin sehr begeistert, da das was ich wollte nun geht. Deshalb erstmal danke für eure Hilfe.
Leider hat sich wie so oft in der Automatisierung daraus ein neues Problem ergeben. Wenn es nämlich nur mieselt, signalisiert die Wetterstation immer mal wieder Regen und immer mal wieder auch kein Regen. So fährt das Rollo die ganze Zeit rauf und runter. Deshalb würde ich gerne den Rollo öffnen Befehl noch etwas anpassen und sagen, wenn es 45 Minuten nicht geregnet hat, dann fahre hoch. Mir ist aber nicht klar, wie ich eine Zeitspanne erzeuge und somit mehrere zurückliegende Einträge überprüfe. Ich bin gerne gewillt mich einzulesen, aber ich bräuchte mal einen Hinweis, welcher Befehl dazu überhaupt am sinnvollsten an zu wenden ist.
Lieben Gruß
Jens
Moin Jens,
schau mal in der Commandref, bei DOIF ist ein Beispiel mit der Waschmaschine (Verzögerungen von Timern):
"Benachrichtigung "Waschmaschine fertig", wenn Verbrauch mindestens 5 Minuten unter 2 Watt"
Das solltest doch leicht auf deinen Regen umbiegen können ;-)
Auch das danach Beschriebene "Zurücksetzen des Waittimers für das gleiche Kommando" könntest du nutzen.
Grüße
Achim
im DOIF gibt es das Attribut "cmdpause"
https://fhem.de/commandref_DE.html#DOIF_cmdpause
damit solltest Du das in den Griff bekommen
aber bedenke: Was passiert wenn aus dem nieseln ein stärkerer Regen wird?
Du solltest nur eine Richtung verzögern...
Hallo,
Danke für die Hinweise. Ich verzögere natürlich nur das Hochfahren. Hatte ich ja auch oben schon geschrieben.
Das Beispiel habe ich auch gefunden:
define di_washer DOIF ([power:watt]<2) ({system("wmail washer finished")})
attr di_washer wait 300
Wenn ich das jetzt richtig verstehe, müsste das bei mir so ausschauen:
define Rollo_Regen_Nein DOIF ([wach] eq "on" and [KS300:israining] eq "no") (set K2_Rollo position 0)
attr Rollo_Regen_Nein wait 1800
So müsste er jetzt eine halbe Stunde warten, bevor er nach Ende des Regens wieder hoch fährt. Aber was ich nicht verstehe ist, wieso der Countdown abgebrochen wird, wenn dazwischen ein Regen Ja Befehl kommt. Ich dachte das Attr Wait würde nur verzögern aber nicht prüfen, ob dauerhaft die Bedingung erfüllt ist. Scheinbar habe ich mich da geirrt und das mit einem Timer verwechselt. Vielen Dank für die umfangreiche Hilfe. Nun bin ich mit meinem Rolladen erstmal glücklich. Sofern es funktioniert setze ich den Tread noch auf gelöst.
LG Jens
Poste mal die ganze definition (raw config) in code tags.
Der doif arbeitet weiter, da wird dann ein anderer Zweig wahr und schickt seine Befehle.
Gesendet von meinem S3_32 mit Tapatalk
Zitat von: Der_müde_Joe am 21 September 2017, 19:35:18
Hallo,
Danke für die Hinweise. Ich verzögere natürlich nur das Hochfahren. Hatte ich ja auch oben schon geschrieben.
Das Beispiel habe ich auch gefunden:
define di_washer DOIF ([power:watt]<2) ({system("wmail washer finished")})
attr di_washer wait 300
Wenn ich das jetzt richtig verstehe, müsste das bei mir so ausschauen:
define Rollo_Regen_Nein DOIF ([wach] eq "on" and [KS300:israining] eq "no") (set K2_Rollo position 0)
attr Rollo_Regen_Nein wait 1800
So müsste er jetzt eine halbe Stunde warten, bevor er nach Ende des Regens wieder hoch fährt. Aber was ich nicht verstehe ist, wieso der Countdown abgebrochen wird, wenn dazwischen ein Regen Ja Befehl kommt. Ich dachte das Attr Wait würde nur verzögern aber nicht prüfen, ob dauerhaft die Bedingung erfüllt ist. Scheinbar habe ich mich da geirrt und das mit einem Timer verwechselt. Vielen Dank für die umfangreiche Hilfe. Nun bin ich mit meinem Rolladen erstmal glücklich. Sofern es funktioniert setze ich den Tread noch auf gelöst.
LG Jens
bei Regen "ja", wird das DOIF-Modul getriggert und geht in den Sonst-Fall (cmd_2) - damit bricht der wait-Timer ab.