Logitech Harmony, Twilight und DOIF

Begonnen von Kai-Uwe, 09 Dezember 2015, 14:52:38

Vorheriges Thema - Nächstes Thema

Kai-Uwe

Hallo Forengemeinde,

nachdem ich hier nun schon lange "lurke" und fast alle meine offenen Fragen durch lesen beantwortet wurden. Gibt es doch noch etwas was ich nicht auf die Reihe bekomme. Also habe ich mich nun endlich registriert um meine Frage zu Posten.

Vorab ein paar Eckdaten:
AVM Fritzbox 7390
AVM Dect Schaltsteckdosen
Raspberry Pi II
Logitech Harmony Ultimate

Alles mit aktueller Firm-/Software

Ich habe meine Logitech Harmony mit in FHEM eingebunden und u.a. ein Notify erstellt welches beim Einschalten des Fernsehers dafür sorgen soll, das die entsprechende Beleuchtung geschaltet wird.
Soweit funktioniert das super.

Der Notify ist mit folgendem Inhalt im DEF erstellt:

SZ.Harmony.currentActivity:.starting.Fernsehen set FBDECT_FritzBox_19 off;set FBDECT_FritzBox_16,FBDECT_FritzBox_17 on

Ergebnis: Eine Lampe geht aus, wenn sie denn an ist und zwei andere gehen an, soweit sie nicht schon an sind. Wunderbar!

Nun möchte ich aber, das z.B. tagsüber, wenn es sowieso noch hell ist, das ganze nicht ausgeführt wird. Dazu habe ich mir gedacht müsste das doch mit DOIF funktionieren. Es soll also erst beiner bestimmten Dunkelheit das licht entsprechend geschaltet werden. Wenn es noch (zu) hell ist soll die Aktion Fernsehen quasi von FHEM unbeachtet bleiben. Leider bekomme ich das absolut nicht auf die Reihe.

Unter anderem habe ich auch sowas hier versucht. Natürlich ohne Erfolg :-( :

SZ.Harmony.currentActivity:.starting.Fernsehen DOIF([Lichtwetter_sr_weather]>5) set FBDECT_FritzBox_19 off;set FBDECT_FritzBox_16,FBDECT_FritzBox_17 on

Hoffentlich hilft mir einer von euch da weiter. Das was Twilight so ausgibt habe ich mal als Anhang angefügt. Evtl. hilft es ja.

Grüße Kai-Uwe code

d.schoen

Hallo Kai-Uwe,

erst einmal Hallo als aktives Mitglied :-)

Mit dem notify wirst du da nicht weiter kommen.

Du musst dir dafür ein DOIF Device definieren (statt dem notify).

Als Definition brauchst du etwas in der Richtung:
define SZ.LampenMitFernseher DOIF ([SZ.Harmony.currentActivity] eq ".starting.Fernsehen" and [?Lichtwetter_sr_weather]>5) (set FBDECT_FritzBox_19 off;set FBDECT_FritzBox_16,FBDECT_FritzBox_17 on)
FHEM 5.7 auf RasPi2
COC 868MHz, Jeelink Clone
Devices: IT, HomeMatic, LaCrosse, ENIGMA2, LG-TV, Thinkingcleaner (iRobot Roomba), LIFX Wifi-Bulbs
Helper: TelegramBot, Homebridge (Siri), Geofency

Kai-Uwe

Ups, das ging fix! Danke!

Dabei bekomme ich jedoch folgende Fehlermeldung:

SZ.LampenMitFernseher DOIF: no right bracket: (set FBDECT_FritzBox_19 off
Unknown argument on), choose one of msgInterval off on on-for-timer on-till off-for-timer on-till-overnight blink toggle off-till-overnight intervals off-till
Unknown argument on), choose one of msgInterval off on on-for-timer on-till off-for-timer on-till-overnight blink toggle off-till-overnight intervals off-till

Grüße Kai-Uwe

Dietmar63

#3
Inwiefern das mit DOIF wie zu machen ist kann ich dir nicht sagen, aber das Problem ist dass viele unabhängige Ereignisse das Schalten beeinflussen können - nicht ganz so einfach zu lösen.

Es ist sehrwohl mit notifys ... möglich.
Du musst alle möglichen Ereignise auf einen Handler(Perlfunktion) umlenken.

Etwa so:

... notify1 {meinFunktionsHandler()}
... notify2 {meinFunktionsHandler()}
... notify3 {meinFunktionsHandler()}


in meinFunktionsHandler() musst du dann sämtliche Bedingungen nochmals prüfen und ggf. schalten.
Das Ganze ist dann sehr leicht durch weitere Ereignisse erweiterbar.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

igami

Bei DOIF werden FHEM Befehle mit , (Komma) getrennt, wenn diese als Trennzeichen zwischen Devices verwendet werden muss damit speziell umgegangen werden. Näheres dazu liefert die deutsche Commandref.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Kai-Uwe

#5
Äh,...Ja...Ok...

Das sprengt dann mein Wissen um längen. Sorry!
Geht's nicht einfacher? :-(
Ich bin absolut kein "Coder" Perl etc. sind für mich absolute "Fremdsprachen". :-)

Wenn ich mir das im WiKi ansehe muss

SZ.Harmony.currentActivity:.starting.Fernsehen DOIF([Lichtwetter_sr_weather]>5)
(set FBDECT_FritzBox_19 off;set FBDECT_FritzBox_16,FBDECT_FritzBox_17 on)

eigentlich aber richtig sein....

????

Grüße Kai-Uwe

Grüße Kai-Uwe

Kai-Uwe

So,

ich habe nun mal das hier getestet:

([SZ.Harmony.currentActivity] eq ".starting.Fernsehen" and [?LichtWetter_sr]>5) (set FBDECT_FritzBox_19 off) DOELSE set FBDECT_FritzBox_16,FBDECT_FritzBox_17 on)

Dabei tut sich dann gar nichts mehr. Kann es sein das bei "[?LichtWetter_sr]>5" schon etwas falsch ist?

Grüße Kai-Uwe

Ma_Bo

#7
Hallo Kai-Uwe versuch mal mit einem notify und IF abfrage, das funktioniert bei mir :

SZ.Harmony.currentActivity:.starting.Fernsehen IF ([Lichtwetter_sr_weather]>5) (set FBDECT_FritzBox_19 off,set FBDECT_FritzBox_16 on,set FBDECT_FritzBox_17 on)

Hierbei wird bei deinem alten notify, beim auslösen. überprüft ob die Helligkeit größer 5 ist und dann set FBDECT_FritzBox_19 off,set FBDECT_FritzBox_16 on,set FBDECT_FritzBox_17 on ausgeführt. Die Befehle werden aber ausgeführt ohne das überprüft wird, ob die Lampen an sind oder nicht, dazu müsste man dein notify noch weiter ändern.
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Kai-Uwe

Hi,

auch da tut sich dann leider gar nichts mehr.

Sobald wieder nur

"SZ.Harmony.currentActivity:.starting.Fernsehen set FBDECT_FritzBox_19 off;set FBDECT_FritzBox_16,FBDECT_FritzBox_17 on"

im Notify steht läuft es. Aber eben unabhängig vom Tageslicht. Habe auch mal testweise das > in ein < geändert ebenso Lichtwetter in LichtWetter. Ohne Erfolg.

Grüße Kai-Uwe

Ma_Bo

in welchem reading von Lichtwetter_sr_weather steht denn die 5 bzw. der Lichtwert ?
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Kai-Uwe

#10
Die "5" ist nur ein Testwert den ich mal eingegeben habe. Wenn das funktioniert soll da der wert rein der von der Helligkeit her am besten passt. Oder mach ich da schon/auch den "mega Denkfehler"? Die Datei mit den Readings habe ich im ersten Posting mit drangehängt gehabt. Ich meine das steht bei "state"? Da steht jetzt gerade um diese Zeit eine Wert von "9" drin. Ist ja auch dunkel draußen :-)

Wenn das Case Sensitive ist muss das aber auch LichtWetter und nicht Lichtwetter heissen :-)

Grüße Kai-Uwe, der gerade positiv überrascht ist wie viel und wie schnell versucht wird zu helfen! Danke!

Ma_Bo

Was ist Lichtwetter oder LichtWetter, denn für ein device ? ein dummy ?
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Kai-Uwe

Äh... Das wurde mit der Installation von Twilight automatisch mit angelegt. Steht bei mir unter Twilight. Wie kann ich das rausbekommen?

Grüße Kai-Uwe


Gesendet von iPad mit Tapatalk

Ma_Bo

Somit steht dein wert also im reading "light" von twilight.

Dann ändere mal das notify in

SZ.Harmony.currentActivity:.starting.Fernsehen IF ([LichtWetter:light]>5) (set FBDECT_FritzBox_19 off,set FBDECT_FritzBox_16 on,set FBDECT_FritzBox_17 on)

oder zum testen legst du dir einen dummy an z.B. :

define LichtWetterDummy dummy
set LichtWetterDummy 4

dann machst du dieses notify :

define LichtWetterDummy_n notify SZ.Harmony.currentActivity:.starting.Fernsehen IF ([LichtWetterDummy]>5) (set FBDECT_FritzBox_19 off,set FBDECT_FritzBox_16 on,set FBDECT_FritzBox_17 on)

jetzt kannst du mit set LichtWetterDummy 6 den Wert verändern und schauen ob beim auslösen dein notify funktioniert.
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Ma_Bo

es müsste aber <5 heissen, da der wert vom twilight Modul ja niedriger wird, sobald es dunkler wird
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.