FHEM Forum

FHEM => Automatisierung => Thema gestartet von: ujaudio am 10 Januar 2016, 11:12:27

Titel: [gelöst] notify nach DOIF: perl variable unklar
Beitrag von: ujaudio am 10 Januar 2016, 11:12:27
ich habe folgendes notify (vereinfacht auf das Wesentliche):
mm_sonos_Wohnzimmer:presence:.appeared {
  my $radio = Value("wk_radiosender");
  fhem ("set mm_sonos_Wohnzimmer StartRadio $radio");
}

Das Dummy "wk_radiosender" wird über ein anderes DOIF abhängig von verschiedenen Bedingungen gesetzt. Mit dem notify wird dann der Sender angewählt.
--> Wie ersetze ich nun das notify durch ein DOIF?

Warum will ich das überhaupt, wo doch alles funktioniert? Das notify ist in Summe viel umfangreicher und hat u.a. mehrere "sleep". Das könnte ich eleganter und übersichtlicher mit DOIF und dem wait-Attribut lösen.

Ich habe zwar in der commandref gelesen, dass man auch bei DOIF mit {} arbeiten kann, aber irgendwo stehe ich noch auf dem Schlauch.
Titel: Antw:notify nach DOIF: perl variable unklar
Beitrag von: marvin78 am 10 Januar 2016, 11:16:45
Es macht keinen Sinn, dass du ein vereinfachtes notify postest, wenn du das gesamte notify durch ein DOIF ersetzen möchtest. So wird das hier ganz sicher nur ein langes Frage-Antwort Spiel.

Für Perl Code im DOIF gibt es in der deutschen commandref Beispiele.
Titel: Antw:notify nach DOIF: perl variable unklar
Beitrag von: Damian am 10 Januar 2016, 11:18:14
Zitat von: ujaudio am 10 Januar 2016, 11:12:27
ich habe folgendes notify (vereinfacht auf das Wesentliche):
mm_sonos_Wohnzimmer:presence:.appeared {
  my $radio = Value("wk_radiosender");
  fhem ("set mm_sonos_Wohnzimmer StartRadio $radio");
}

Das Dummy "wk_radiosender" wird über ein anderes DOIF abhängig von verschiedenen Bedingungen gesetzt. Mit dem notify wird dann der Sender angewählt.
--> Wie ersetze ich nun das notify durch ein DOIF?

Warum will ich das überhaupt, wo doch alles funktioniert? Das notify ist in Summe viel umfangreicher und hat u.a. mehrere "sleep". Das könnte ich eleganter und übersichtlicher mit DOIF und dem wait-Attribut lösen.

Ich habe zwar in der commandref gelesen, dass man auch bei DOIF mit {} arbeiten kann, aber irgendwo stehe ich noch auf dem Schlauch.

Solche Konstrukte kannst du beim DOIF eleganter lösen:

([mm_sonos_Wohnzimmer:presence] eq "appeared") (set mm_sonos_Wohnzimmer StartRadio [wk_radiosender])
Titel: Antw:notify nach DOIF: perl variable unklar
Beitrag von: marvin78 am 10 Januar 2016, 11:19:20
Zitat von: Damian am 10 Januar 2016, 11:18:14
Solche Konstrukte kannst du beim DOIF eleganter lösen:

([mm_sonos_Wohnzimmer:presence] eq "appeared") (set mm_sonos_Wohnzimmer StartRadio [wk_radiosender])

Und das geht sogar im notify so einfach ;)
Titel: Antw:notify nach DOIF: perl variable unklar
Beitrag von: ujaudio am 10 Januar 2016, 12:09:46
Es tut mir leid, dass ich gedacht habe, die Aussage auf den Punkt zu bringen, wäre hilfreich. Es ging mir ja nur darum, wie ich den Dummy-Wert in das set-Kommando bringe.

Ich  habe auch versucht, die commandref-Beispiele auf mein Problem zu adaptieren, aber wie ich sagte, stand ich auf dem Schlauch, entschuldigung.

Danke für den Hinweis, wie ich es angehen kann.

Mit dem notify bin ich endlos gescheitert, bis ich die hier angegebene Lösung zusammen hatte. Ich wüsste momentan immer noch nicht, wie man es elegant mit notify löst. Macht nichts, ich habe ja eine Lösung.  ;)
Titel: Antw:[gelöst] notify nach DOIF: perl variable unklar
Beitrag von: justme1968 am 10 Januar 2016, 12:21:17
so:mm_sonos_Wohnzimmer:presence:.appeared set mm_sonos_Wohnzimmer StartRadio [wk_radiosender:state]

gruss
  andre