Beschattung mit FS20bs notify Problem

Begonnen von Tipsinipper, 15 Juni 2015, 18:02:42

Vorheriges Thema - Nächstes Thema

Tipsinipper

Hallo,
nach dem ich jetzt schon Wochen (Monaten?) dran rumdoktere frage ich mal hier nach, ob mir jemand auf die Sprünge helfen kann.

Den ersten Versuch habe ich nach dem Thread http:www.fhemwiki.de/wiki/Rolladensteuerung_mit_fs20rsu_und_fs20bs gemacht. Klappte mit dem herunterfahren und herauffahren nicht immer. Obwohl im Log des FS20RSU drinstand "WohnzRollo Ab80".
Dann habe ich es versucht selbst zu schreiben. Das sieht folgendermaßen aus:

# Definition des FS20bs:

define Sonne FS20 xxxx 04
attr Sonne IODev COC
attr Sonne comment Beschattungssteuerung on=dunkel off=hell
attr Sonne devStateIcon hell:Hell dunkel:Dunkel
attr Sonne dummy 1
attr Sonne eventMap /off 88:hell/on 26:dunkel/
attr Sonne group Sonne
attr Sonne icon icoHaus
attr Sonne model fs20bs
attr Sonne room EG
# off 88 und on 26 Werte aus den "Readings" gelesen

define FileLog_Sonne FileLog ./log/Sonne-%Y-%m.log Sonne
attr FileLog_Sonne icon icoLog
attr FileLog_Sonne room Logs

# Beschattungssteuerung
# Steuert WohnzRollo
# Siehe: http://www.fhemwiki.de/wiki/Rolladensteuerung_mit_fs20rsu_und_fs20bs. Inzw. geändert.
#                                         Sonne muss "hell" sein und das Rollo muss "Auf" sein.                                   

define Rollo.ntf.sonne notify Sonne {if ($EVENT=~ m"hell" && Value("WohnzRollo") eq "Auf") {fhem("set WohnzRollo Ab80") }\
else {fhem("set WohnzRollo Auf");;fhem("set WohnzRollo Auf")}}
attr Rollo.ntf.sonne group Sonne
attr Rollo.ntf.sonne room EG


Die Definition des WohnzRollo ist folgende:

define WohnzRollo FS20 xxx 00
attr WohnzRollo IODev COC
attr WohnzRollo devStateIcon Ab80:shutter_6 Auf:shutter_open Ab:shutter_closed
attr WohnzRollo eventMap /off-for-timer 10:Ab80/off:Ab/on:Auf/
attr WohnzRollo group Rollo
attr WohnzRollo icon icoHaus
attr WohnzRollo model fs20rsu
attr WohnzRollo room EG
attr WohnzRollo webCmd Auf:Ab80:Ab


Das WohnzRollo fährt morgens rauf und abends runter. Ohne einen Fehler. Nur wenn es durch den FS20bs gesteuert werden soll, fährt es nicht runter. Im Log vom WohnzRollo steht aber drin, das es auf Ab80 gefahren ist. Das wird auch durch das Icon angezeigt.
Dann habe ich die Zeile: {if ($EVENT=~ m"hell" && Value("WohnzRollo") eq "Auf".....) variiert und habe geschrieben:
{if (Value("Sonne") eq "hell" && Value("WohnzRollo") eq "Auf")..... Rest der Zeile ist gleich.
Da hat es ab und zu geklappt, aber nicht immer. Übrigends, die Ausgabe des FS20bs ist immer "off 88" für hell und "on 26" für dunkel
Ich kann mir nicht vorstellen, dass das Herauf- und Herunter-Fahren einwandfrei klappt, aber der Notify-Befehl nicht ausgeführt wird, obwohl im Log drinsteht, dass er ausgeführt wurde. Ist das ein Bug?
Gebe ich im Frontend (Befehlszeile) "set Sonne hell" ein, fährt das Rollo auf Ab80 und umgedreht.

FHEM läuft auf einem Raspbi B mit 512 KB, Rasbian und steuert Heizung und Beleuchtung sonst ohne Probleme.
Grüße aus Nürnberg

Tipsinipper
Mfg

Tipsinipper

Riker

Hallo,
Warum realisierst du es nicht über DOIF?
Ich würde es so machen.

define Beschattung DOIF ([Sonne:?off 88] and [Temperaturfuehler_wz:temperature] > 22) (set WohnzRollo off-for-timer 21 )


In diesem Fall würde der FS20BS bei off 88 und bei einer Temperatur im Wohnzimmer über 22 Grad deinen Rollo für 21 Sekunden runterfahren. Soweit ich weiss, schaltet der FS20BS nach 5 Minuten über Schwellwert oder? Andersum könntest du dann auch die Jalousie wieder hochfahren lassen, wenn länger als 5 Minuten die Sonne hinter Wolken verschwunden ist und die Temperatur und 22 Grad fällt.

Lieben Gruß

Tipsinipper

Danke für die Antwort Riker.
Ich werde das mal ausprobieren. Vielleicht ist das ein Timing Problem.  Alles andere klappt ja.
Das DOIF habe ich noch nicht verwendet. Ist das '?' nach 'Sonne:' syntaktisch richtig?
Mfg

Tipsinipper

rudolfkoenig

Bei den Events sollte man nicht raten, sondern diese aus dem Event-Monitor / inform timer abschreiben. Das notify kann man leicht mit dem trigger Kommando testen:
fhem> trigger Sonne hell
2015-06-16 20:01:35.311 FS20 Sonne hell

da muss man nicht auf die Sonne warten. In der Kommandozeile kann man auch einzelne Werte fhem> { Value("WohnzRollo") }
Auf
fhem>

bzw. Pruefungen
fhem> { Value("WohnzRollo") eq "Auf" }
1
fhem>

testen, wenn man unsicher ist. Ich verwende am liebsten ein telnet (bzw. socat TCP:fhemhost:fhemport readline) mit aktivierten "inform timer", da sieht man in einem Fenster Befehle und Events zusammen. Alternativ verwendet man 2 Browserfenster: eins mit dem Event-Monitor, und eins mit der Eingabezeile.

Mir kommt das doppelte abstezen des Auf kommandos merkwuerdig vor, die mir bekannten Steuerungen wuerden dabei nur kurz zucken.

Tipsinipper

Vielen Dank Herr König.

Ich habe das gleich ausprobiert. Funktioniert. Das doppelte "Auf" fahren des Rollos war ein Fehler meinerseits. Eigene Fehler sieht man meist nicht gleich.
Aber..., eins wundert mich.
Das Rollo fuhr immer hoch, nur nicht runter.(Wenn ich es vorher per "set WohnzRolle Ab80" heruntergefahren habe).  Bei dem Test mit "trigger Sonne dunkel" hat es aber tatsächlich nur gezuckt.

Ich werde das jetzt mit "auf Sonne warten" testen, denn bei mir funktionierte es immer mit den entsprechenden Befehlen, nur nicht, wenn die Sonne schien. Im Log vom WohnzRollo stand ja drin, dass es auf "Ab80" gefahren sei. Ist es aber nicht. Den FS20bs habe ich übrigens einmal ausgetauscht.
Sollte es jetzt nicht funktionieren, dann bleibt eigentlich nur der Rolloschalter. Der aber sonst funktioniert.
Sehr seltsam.
Mfg

Tipsinipper