GELÖST!!! zeitabhängige Steuerung incl. Bewegungsmelder und verschiedener Dimmwerten

Begonnen von dauma, 15 Januar 2018, 21:03:49

Vorheriges Thema - Nächstes Thema

dauma

Hallo zusammen,
nach einigen Stunden googlen und durchstöbern des Forums bekomme ich leider noch keine zufriedenstellend Lösung für mein Problem.

Folgendes Szenario:
Meine Außenbeleuchtung schaltet sich 30 Minuten vor Sonnenuntergang auf 51% ein. Um 0:01h auf 26% und bei Sonnenaufgang wieder aus.
Wenn der Bewegungsmelder anschlägt "on" soll das Licht auf 100% geschaltet werden. Nach x Sekunden kommt der off Befehl, nun soll der alte Schaltzustand hergestellt werden.

Drei Lösungen dürften funktionieren, jedoch schaffe ich es nicht sie umzusetzen:
a) wird vom Bewegungsmelder "on" gesendet soll zwischen sunset und sunrise auf 100% eingeschaltet werden. Wird "off" gesendet soll der alte Zustand wiederhergestellt werden"
b) "on" wie a). Der Zustand einer anderen Lampe, die nicht über den Bewegungsmelder gesteuert wird soll übernommen werden (51%, oder 26%)
c) "on" wie a). Zeitgesteuertes senden der Prozente analog den Einstellungen beim einschalten.

Hier meine aktuelle Konfig:

define AB_sunset at *{sunset(-1800,"16:00","22:00")} set group=Außenbeleuchtung value 51
attr AB_sunset group zeitgesteuert
attr AB_sunset room Außenbeleuchtung

define AB_Nacht at *00:01:00 set group=Außenbeleuchtung value 26
attr AB_Nacht group zeitgesteuert

define AB_sunrise at *{sunrise(0,"06:30","08:30")} set group=Außenbeleuchtung value 0
attr AB_sunrise group zeitgesteuert
attr AB_sunrise room Außenbeleuchtung

define BWMTerrasseValue100_notify notify BWMTerrasse:on set group=Außenbeleuchtung value 100
attr BWMTerrasseValue100_notify room Außen      -------> würde leider den ganzen Tag einschalten

define BWMTerrasseValue51_DIF DOIF ([{sunset(-1800,"16:00","22:00")}] and [BWMTerrasse:off]) (set group=Außenbeleuchtung value 51)     ------> funktioniert leider nicht

Hoffe Ihr habt ein Tipp für mich.
Vielen Dank im Voraus

loescher

Hi!

Ich bin zwar noch FHEM Anfänger, aber ich glaube dass
[BWMTerrasse:off]
auf ein Event triggert. (So verstehe ich zumindest die doif commandref)
Daher müsste durch die "and" Verknüpfung der sunset uns das Event gleichzeitig eintreten - sehr unwahrscheinlich.
Hat dein BWM auch ein Status Reading?
Das wäre das richtige an dieser Stelle.
In etwa dann so:

define BWMTerrasseValue51_DIF DOIF ([{sunset(-1800,"16:00","22:00")}] and ([BWMTerrasse] eq "off") (set group=Außenbeleuchtung value 51)


LG,
Stephan.

dauma

@Stephan, vielen Dank!

Meine aktuelle Einstellung:
define AB_sunset at *{sunset(-1800,"16:00","22:00")} set group=Außenbeleuchtung value 51
attr AB_sunset group zeitgesteuert
attr AB_sunset room Außenbeleuchtung

define BWMTerrasseValue99_notify notify BWMTerrasse:on set group=Außenbeleuchtung value 99
attr BWMTerrasseValue99_notify room Außen

define BWMTerrasseValue51_DIF DOIF ([{sunset(-1800,"16:00","22:00")}] and [BWMTerrasse] eq "off") (set group=Außenbeleuchtung value 51)
attr BWMTerrasseValue51_DIF room Außen


Das Ergebnis:
...
2018-01-20 17:25:57 KNX AB_Terrasse_rechts wert-set: 99 %
2018-01-20 17:25:57 KNX AB_Terrasse_rechts 99 %
2018-01-20 17:25:57 TelegramBot teleBot message Bewegung vor der Terrasse!
2018-01-20 17:25:57 KNX BWMTerrasse getG1: on
2018-01-20 17:25:57 KNX BWMTerrasse last-sender: 1/2/76
2018-01-20 17:25:57 KNX BWMTerrasse on
2018-01-20 17:25:57 TelegramBot teleBot sentMsgResult: SUCCESS
2018-01-20 17:25:57 TelegramBot teleBot sentMsgId: 2413
2018-01-20 17:25:57 TelegramBot teleBot sentMsgPeerId: 240607932
2018-01-20 17:26:09 KNX BWMTerrasse getG1: off
2018-01-20 17:26:09 KNX BWMTerrasse last-sender: 1/2/76
2018-01-20 17:26:09 KNX BWMTerrasse off

Device                          BWMTerrasse                 2018-01-20 17:26:09
cmd                              2                                  2018-01-20 17:06:14
cmd_event                    BWMTerrasse                 2018-01-20 17:06:14
cmd_nr                         2                                  2018-01-20 17:06:14
e_BWMTerrasse_STATE   off                                2018-01-20 17:26:09
state                             cmd_2                          2018-01-20 17:06:14
timer_01_c01                21.01.2018 17:06:47     2018-01-20 17:15:07

Die Lampen werden nicht auf 51% geschaltet. Das off-Signal löst nichts aus!

Hat noch jemand eine Idee? Ich bekomme es einfach nicht hin!

Ellert

Wenn Du DOIF verwendest würde ich eines für den Zeitplan anlegen und die aktuell gültigen %-Werte in ein Reading schreiben. Mit einem 2. DOIF würde ich die Bewegungsmelderaktion realisieren und zum Wiederherstellen der Beleuchtung, die Prozentwerte aus dem Zeitplan-DOIF auslesen.

Und benutze Code-Tags, siehe https://wiki.fhem.de/wiki/DOIF/Tools_und_Fehlersuche#Qualifizierte_Angaben_zur_Anfrage_im_Forum

dauma

Danke Ellert, aber das ist mir zu hoch!

Ich habe es jetzt hiermit zum laufen gebracht:

define BWMTerrasseValue51_DIF DOIF (([{sunset(0,"16:00","22:00")}-{sunset_abs()}]) and [BWMTerrasse] eq "off") (set group=Außenbeleuchtung value 51)

Aktuell macht es genau was ich möchte. Mal schauen wie es sich zu anderen Zeiten verhält.

Der Fehler lag wohl hier:
[{sunset(-1800,"16:00","22:00")}]  ---->  die -1800 zerhauen offensichtlich die ganze Regel!

Kann mir jemand sagen was dieser Teil macht:
{sunset_abs()}

Ohne geht es nicht, ich verstehe aber auch nicht für was dies noch benötigt wird.

Ellert

Zitat von: dauma am 20 Januar 2018, 18:46:27
Danke Ellert, aber das ist mir zu hoch!

Ich habe es jetzt hiermit zum laufen gebracht:

define BWMTerrasseValue51_DIF DOIF (([{sunset(0,"16:00","22:00")}-{sunset_abs()}]) and [BWMTerrasse] eq "off") (set group=Außenbeleuchtung value 51)

Aktuell macht es genau was ich möchte. Mal schauen wie es sich zu anderen Zeiten verhält.

Der Fehler lag wohl hier:
[{sunset(-1800,"16:00","22:00")}]  ---->  die -1800 zerhauen offensichtlich die ganze Regel!

Kann mir jemand sagen was dieser Teil macht:
{sunset_abs()}

Ohne geht es nicht, ich verstehe aber auch nicht für was dies noch benötigt wird.
http://fhem.de/commandref_DE.html#SUNRISE_EL

dauma

Vielen Dank!
Gelesen habe ich es, jedoch nicht verstanden.

Manchmal ist es doch recht einfach!
Ich habe es zwar nicht so komplex hinbekommen wie ursprünglich gedacht, jedoch bin ich mit dem Ergebnis doch sehr zufrieden:

define AB_sunset at *{sunset()} set group=Außenbeleuchtung value 33
attr AB_sunset group zeitgesteuert
attr AB_sunset room Außenbeleuchtung

define AB_sunrise at *{sunrise()} set group=Außenbeleuchtung value 0
attr AB_sunrise group zeitgesteuert
attr AB_sunrise room Außenbeleuchtung

define BWMTerrasseValue100_DOIF DOIF (([{sunset()}-{sunrise()}]) and [BWMTerrasse] eq "on") (set group=Außenbeleuchtung value 100)
attr BWMTerrasseValue100_DOIF group zeitgesteuert
attr BWMTerrasseValue100_DOIF room Außenbeleuchtung

define BWMTerrasseValue33_DOIF DOIF (([{sunset()}-{sunrise()}]) and [BWMTerrasse] eq "off") (set group=Außenbeleuchtung value 33)
attr BWMTerrasseValue33_DOIF group zeitgesteuert
attr BWMTerrasseValue33_DOIF room Außenbeleuchtung

Vielen Dank für Eure Unterstützung!

Ellert

Dann nochmal mit anderen Worten: "sunset_abs gibt den Sonnenuntergang von heute an und sunset den von morgen." Für sunrise gilt das entsprechend.