DOIF in Abhängigkeit von Faktoren

Begonnen von AmunRe, 09 Mai 2016, 16:12:53

Vorheriges Thema - Nächstes Thema

AmunRe

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?
4 x Echo Dot, HMLAN Gateway, und diverse HM Komponenten, Philips Hue + OSRAM Plugs

CoolTux


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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Per

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.

AmunRe

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.
4 x Echo Dot, HMLAN Gateway, und diverse HM Komponenten, Philips Hue + OSRAM Plugs

CoolTux

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 musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Ellert

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))

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

AmunRe

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!
4 x Echo Dot, HMLAN Gateway, und diverse HM Komponenten, Philips Hue + OSRAM Plugs

CoolTux

Hallo,

Jepp. Jedes Device mit dem Namen Kodi_irgendwas und dem state opend bekommt die Nachricht.
Versuch es einfach mal  ;)
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

AmunRe

#9
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.
4 x Echo Dot, HMLAN Gateway, und diverse HM Komponenten, Philips Hue + OSRAM Plugs

CoolTux

Ah, dann heißt das STATE also opened. Gut zu wissen.
Funktioniert es denn nun genau so wie Du es Dir vorgestellt hast?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

AmunRe

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!
4 x Echo Dot, HMLAN Gateway, und diverse HM Komponenten, Philips Hue + OSRAM Plugs

CoolTux

Bitte, gern geschehen. Freut mich das Du was gelernt hast.

Grüße
Leon
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net