[Gelöst]Frage zur If Anweisung

Begonnen von Schlamandi, 04 Februar 2018, 21:56:28

Vorheriges Thema - Nächstes Thema

Schlamandi

Hallo,  ich lese schon einige Zeit hier mit.
Doch jetzt habe ich mich selbst fest gefahren.
Wahrscheinlich ist es wieder einfacher als ich es versuche.
Ich habe einen Verstärker, wenn der eingeschaltet wird soll die funksteckdose des Subwoofer auch an gehen.
Der Status des Verstärker Frage ich mit get wz_Denon power

So sieht mein notify aus
wz_Denon:power:.* {
if ("$EVENT" eq "on") {fhem("set BassBox on") if (Value ("BassBox") eq "off")}
else {fhem ("set BassBox off") if (Value ("BassBox") eq "on")}
}


Leider funktioniert es so nicht. Das Event on kommt nicht rein

KernSani

Hi,

wie sieht das event denn im EventMonitor aus? Da steht sicher nicht nur "on". Du brauchst übrigens garkeine komplexe Abfrage:
Wahrscheinlich geht sowas in der Art:

wz_Denon:power:.* set BassBox:FILTER=STATE!=$EVTPART1 $EVTPART1

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Schlamandi

Also der Eventmonitor gibt folgendes zurück
DENON_AVR wz_Denon power: on

KernSani

#3
The variable $EVENT will contain the complete event, e.g. measured-temp: 21.7 (Celsius)
Bei dir also
power: on
Hast du meinen Codevorschlag mal ausprobiert?

Kurz, weil mobil...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Schlamandi

werde ich heute Abend mal testen

Schlamandi

Zitat von: KernSani am 04 Februar 2018, 22:04:38

wz_Denon:power:.* set BassBox:FILTER=STATE!=$EVTPART1 $EVTPART1


Vielen Dank, der Code arbeitet astrein. Kannst du mir zu dem STATE und EVENTPART eine kleine Erläuterung geben, oder einen Link.

EVENTPART1 wird den ersten oder den zweiten Teil des Ergebnisses zurückgeben. Je nachdem ob es auch ein EVENTPART0 gibt.
Aber was  bewirkt der FILTER und das STATE?

KernSani

#6
Zitat von: Schlamandi am 06 Februar 2018, 19:38:05
Aber was  bewirkt der FILTER und das STATE?
Das ist eine Devspec (https://fhem.de/commandref.html#devspec) Kurz gesagt, suchen wir alle Devices die BassBox heißen und filtern die, deren STATE nicht dem EVTPART1 entspricht (also, wenn ein "on" geschickt wird suchen wir alle die nicht on sind und setzen sie auf on - wenn die BassBox auf on ist, wird sie nicht gefunden und es passiert nix, wenn sie off ist wird sie gefunden und auf on gesetzt - genauso umgekehrt)

EDIT: Bitte noch vor das Subject des ersten Posts [Gelöst] schreiben :-)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...