Hallo Zusammen, ich versuche mich grad an einem DOIF.
Folgendes Problem, ich will, wenn der Washer auf Standby ist, dass er wenn eines der Kodi Devices vorhanden ist, an dieses eine Nachricht sendet.
Bisher sieht es bei mir so aus:
define washermeldung DOIF([washerAction] eq "standby" and [Kodi_sz] eq "opend" or [washerAction] eq "standby" and [Kodi_wz] eq "opend" or [washerAction] eq "standby" and [Kodi_bad] eq "opend")
(set $DEVICE msg 'fhem' 'Waschmaschine fertig!' 7000 info)
Leider funktioniert das nicht. Ich nehm an, weil er das $DEVICE nicht richtig befüllt.
Ich weiß ich könnte für jede Bedingung ein eigenes DOELSEIF machen, kann man das aber auch kürzen?
define washermeldung DOIF([washerAction] eq "standby" and [?Kodi_sz] eq "opend" or [?Kodi_wz] eq "opend" or [?Kodi_bad] eq "opend")
(set kodi_alle msg 'fhem' 'Waschmaschine fertig!' 7000 info)
Das mit dem Device wird so aber dann nicht gehen.
Zitat von: AmunRe am 09 Mai 2016, 16:12:53Ich nehm an, weil er das $DEVICE nicht richtig befüllt.
Der auslösende Trigger ist bei dir nicht das Kodi-Device, sondern die Waschmaschine. Deshalb wird diese in $DEVICE landen.
Falls du das öfter benötigst, ist eine Funktion für kodi_alle in 99_myUtils eine Möglichkeit.
Oder du nimmst zwei DOIFs, eine für die Waschmaschine, eine weitere, um irgend etwas (z.B. "Waschmaschine fertig") an das aktive Kodi-Device zu senden.
Zitat von: Per am 09 Mai 2016, 22:58:14
Der auslösende Trigger ist bei dir nicht das Kodi-Device, sondern die Waschmaschine. Deshalb wird diese in $DEVICE landen.
Falls du das öfter benötigst, ist eine Funktion für kodi_alle in 99_myUtils eine Möglichkeit.
Oder du nimmst zwei DOIFs, eine für die Waschmaschine, eine weitere, um irgend etwas (z.B. "Waschmaschine fertig") an das aktive Kodi-Device zu senden.
Was meinst Du mit einer Funktion in 99_myutils?
Okay, das mit dem Device stimmt, ich will ja auch gar nicht das Kodi das DOIF triggert, deswegen geb ich CoolTux insofern Recht als das ein ? an den Anfang gehört.
btw hab ich die Oder Bedingung wohl falsch verstanden? Ich dachte immer es heißt Waschmaschine UND Kodi oder anderer Kodi oder anderer Kodi Ich wollte aber schon das es nur Waschmaschine und ein jeweiliger Kodi ist. Stimmt das dann mit einem einfachen oder? Bin beeindruckt, habe deswegen immer die Waschmaschine nochmal mit in jedes oder Glied aufgenommen.
Bis hier her schon einmal vielen Dank.
Das DOIF mit nur einmal Waschmaschine und den ? bei den Kodis sollte funktionieren. Was Du nun brauchst ist eine Möglichkeit beim msg Befehl den richtigen Kodi zu treffen.
Ich arbeite noch nicht mit msg, wenn Du aber den eigentlichen set Befehl nimmst und es ein Reading gibt bei den Kodis, um zu prüfen ob das Kodi an ist, dann kannst du mit Filter arbeiten.
Beispiel
set (Nexus5Marko|Nexus7Wohnzimmer|Nexus7Schlafzimmer):FILTER=deviceState=online ttsMsg Waschmaschine ist fertig.
Hier würde er nur die Nachricht an die Geräte schicken die laut dem Reading deviceState online sind.
Du könntest auch mit IF arbeiten
DOIF([washerAction] eq "standby" and [Kodi_sz] eq "opend" or [washerAction] eq "standby" and [Kodi_wz] eq "opend" or [washerAction] eq "standby" and [Kodi_bad] eq "opend")
(IF ( [Kodi_sz] eq "opend") (set Kodi_sz msg 'fhem' 'Waschmaschine fertig!' 7000 info),
IF ( [Kodi_wz] eq "opend") (set Kodi_wz msg 'fhem' 'Waschmaschine fertig!' 7000 info),
IF ( [Kodi_bad] eq "opend") (set Kodi_bad msg 'fhem' 'Waschmaschine fertig!' 7000 info))
Ich sehe gerade da ist ja noch ein Fehler in Deiner Benachrichtigung kann das sein. Also es gibt den FHEM Befehl msg. Gibt es bei Kodi bei den set Befehlen auch ein msg?
Ansonsten hier jetzt mal ein komplettes DOIF basierend auf Deiner Vorlage.
define washermeldung DOIF ([washerAction] eq "standby" and [?Kodi_sz] eq "opend" or [?Kodi_wz] eq "opend" or [?Kodi_bad] eq "opend")
(set Kodi_.*:FILTER=STATE=opend msg 'fhem' 'Waschmaschine fertig!' 7000 info)
attr washermeldung do always
do always damit er immer den Zustand cmd1 schaltet. Kannst das auch weg lassen und hinter dem ganzen ein DOELSE () schreiben. Ersteres ist aber denke mal sauberer. Achte aber darauf das Du am besten bei washerAction ein event-on-change-reading setzt. Sonst bekommt zu oft ne Meldung.
Zitat von: CoolTux am 10 Mai 2016, 12:26:45
Ich sehe gerade da ist ja noch ein Fehler in Deiner Benachrichtigung kann das sein. Also es gibt den FHEM Befehl msg. Gibt es bei Kodi bei den set Befehlen auch ein msg?
Ansonsten hier jetzt mal ein komplettes DOIF basierend auf Deiner Vorlage.
define washermeldung DOIF ([washerAction] eq "standby" and [?Kodi_sz] eq "opend" or [?Kodi_wz] eq "opend" or [?Kodi_bad] eq "opend")
(set Kodi_.*:FILTER=STATE=opend msg 'fhem' 'Waschmaschine fertig!' 7000 info)
attr washermeldung do always
do always damit er immer den Zustand cmd1 schaltet. Kannst das auch weg lassen und hinter dem ganzen ein DOELSE () schreiben. Ersteres ist aber denke mal sauberer. Achte aber darauf das Du am besten bei washerAction ein event-on-change-reading setzt. Sonst bekommt zu oft ne Meldung.
Der Washer wird abhängig vom Stromverbrauch gesetzt und ist nur aktiv, wenn ich den Stromzähler auch einschalte, daher kommen da nicht viele Events. nur On Off und stanby.
Das msg gibt es im Kodi tatsächlich. Hab ich auch einzeln schon getestet. Aber ich will halt nicht 3 notifys haben, daher überhaupt die Frage.
ZitatKodi_.*:FILTER=STATE=opend
Setzt er dann für jedes Device mit state open eine Meldung ab oder nur für das erste das er erreicht? Sieht an sich nach einer tollen Funktion aus, könnte ich dann für mein SONOS System nutzen, aber nur wenn er es für alle setzt.
Und vielen Dank für die Hilfe!
Hallo,
Jepp. Jedes Device mit dem Namen Kodi_irgendwas und dem state opend bekommt die Nachricht.
Versuch es einfach mal ;)
Zitat von: CoolTux am 10 Mai 2016, 20:21:07
Hallo,
Jepp. Jedes Device mit dem Namen Kodi_irgendwas und dem state opend bekommt die Nachricht.
Versuch es einfach mal ;)
Funktioniert leider nicht.
Er sendet es nicht, auch nicht wenn ich es direkt in das Commandfeld eingebe.
set Kodi_.*:FILTER=STATE=opend msg 'fhem' 'Waschmaschine fertig!' 7000 info
das hier klappt aber:
set Kodi_wz msg 'fhem' 'Waschmaschine fertig!' 7000 info
Fehler gefunden.
Man sollte auch auf opened triggern, wenn der state auch so heißt.
Ah, dann heißt das STATE also opened. Gut zu wissen.
Funktioniert es denn nun genau so wie Du es Dir vorgestellt hast?
Zitat von: CoolTux am 10 Mai 2016, 20:38:36
Ah, dann heißt das STATE also opened. Gut zu wissen.
Funktioniert es denn nun genau so wie Du es Dir vorgestellt hast?
Ja, es funktioniert genau so! VIELEN DANK!
Er triggert alle Kodi wenn die Maschine fertig ist. Hab das ganze jetzt auf mein Sonos ausgeweitet.
Da waren es nämlich voher 4 DOIF DOIFELSE abfragen, das kann ich jetzt in einer Lösen.
Hab auch jede Menge gelernt. Dachte immer das Oder bezieht sich dann auf eine gesammte oder bedingung, tut es aber wohl gar nicht.
Und das mit dem Devspec, ist ja auch mal richtig gut. Danke!
Bitte, gern geschehen. Freut mich das Du was gelernt hast.
Grüße
Leon