Hauptmenü

DOIF mit and geht nicht

Begonnen von Abercrombie1892, 10 Mai 2019, 23:15:40

Vorheriges Thema - Nächstes Thema

Abercrombie1892

hallo,

ich stehe ein wenig auf dem Schlauch  :-\

## Wenn Sonos etwas spielt den Receiver einschalten
([Sonos_Wohnzimmer:"PLAYING"]) (set Musik on)
## Wenn Sonos pausiert wird, Receiver nach 20 Sekunden abschalten und Lautstärke vom Connect auf 55 setzen
DOELSEIF
([Sonos_Wohnzimmer:"PAUSED_PLAYBACK"] and [Nvidia] eq "off") (set Musik off,set Sonos_Wohnzimmer Volume 55)/code]

Ich möchte das der Receiver ausschaltet , wenn ich Sonos stoppe, aber nur wenn ich nicht mit der Harmony Fernbedienung die Nvidia Activity gestartet habe.
Wenn ich aber auf die Harmony Activity umschalte, geht trotzdem alles nach 20 Sekunden aus.

Wenn ich es so umschreibe, schaltet der Receiver garnicht mehr ab

[code## Wenn Sonos etwas spielt den Receiver einschalten
([Sonos_Wohnzimmer:"PLAYING"]) (set Musik on)
## Wenn Sonos pausiert wird, Receiver nach 20 Sekunden abschalten und Lautstärke vom Connect auf 55 setzen
DOELSEIF
([Sonos_Wohnzimmer:"PAUSED_PLAYBACK"] and [Nvidia:"off"]) (set Musik off,set Sonos_Wohnzimmer Volume 55)



würde gerne mal wissen woran es liegt.

danke

Otto123

Hi,

das geht nicht:
[Sonos_Wohnzimmer:"PAUSED_PLAYBACK"] and [Nvidia:"off"]
Zwei Events können nicht zur gleichen Zeit wahr sein, das kann FHEM nicht. Selbst wenn es das könnte, wäre es so wahrscheinlich wie von zwei Blitzen gleichzeitig getroffen zu werden.

Beim ersten Versuch könnte eventuell helfen[Sonos_Wohnzimmer:"PAUSED_PLAYBACK"] and [?Nvidia] eq "off"dann wird auf Nvidia nicht getriggert.. Ansonsten musst Du im Eventmonitor schauen was da passiert.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

dr4g0n

Ich habe soetwas am laufen und das funktioniert wunderbar, ich habe mal in einem Beitrag gelesen das eine "AND/OR" geklammert werden muss.

d.h. die äußeren () sind für die IF Bedingung und die inneren () sind dafür um aus 2 IF ein Ergebnis zumachen. :)

(([Motion] eq "motion" and [MotionBright:dark]>0 and ([homeStatus] eq "home" or [homeStatus] eq "bett")))

Damian

Eventabfragen: [Nvidia:"off"] sind nicht mit Abfragen [Nvidia] eq "off" gleichzusetzen, das letzte kann auch ohne Trigger wahr sein, das erste nicht.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Otto123

#4
Zitat von: dr4g0n am 10 Mai 2019, 23:35:08
ich habe mal in einem Beitrag gelesen das eine "AND/OR" geklammert werden muss.
Diese Aussage entspricht etwa: "Kaffee muss getrunken werden"  ;)
Man muss "nur" dies beachten: https://perldoc.perl.org/perlop.html#Operator-Precedence-and-Associativity

Ja nach Situation muss man Klammern setzen oder nicht, Du findest hier im Forum fast täglich Fallbeispiele.  ;D
https://forum.fhem.de/index.php/topic,100405.msg938416.html#msg938416

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Abercrombie1892

danke für eure Erläuterungen dazu.

dann hab ich das mit den doif´s wohl noch nicht richtig verstanden. das mit dem Fragezeichen vor Nvidia hat leider auch keinen Einfluss auf das doif. er schaltet trotzdessen nach 20 Sekunden aus.

## test
([Sonos_Kueche:"PAUSED_PLAYBACK"] or [Sonos_Kueche:"STOPPED"]) (set Sonos_Kueche MakeStandaloneGroup)




hab jetzt hier nochmal ein doif wo ich auf dem schlauch stehe.. wenn ein Ereignis eintritt entweder oder soll Küche aus der Gruppe geworfen werden nach 30 Sekunden, wenn aber Küche weiterspielt vor den 30 Sekunden, soll der wait Timer stoppen. der wait Timer läuft aber trotzdem weiter obwohl kein Ereignis von oben zutrifft

## Alle Sonosgruppen trennen, sobald alle Player gestoppt haben
##([Sonos_Wohnzimmer:"PAUSED_PLAYBACK"] or [Sonos_Wohnzimmer:"STOPPED"] and [Sonos_Kueche:"PAUSED_PLAYBACK"] or [Sonos_Kueche:"STOPPED"] and [Sonos_Schlafzimmer:"PAUSED_PLAYBACK"] or [Sonos_Schlafzimmer:"STOPPED"] and [Sonos_Bad:"PAUSED_PLAYBACK"] or [Sonos_Bad:"STOPPED"]) (set Sonos Groups Reset)


hier genau das gleiche ( obwohl ich denke das hier die klammern falsch sind wegen and or )

schönen abend an alle

Abercrombie1892

hab mich jetzt noch ein wenig damit beschäftigt, vielleicht nicht die schönste art von allen, aber so geht es bei mir.

## Wenn Sonos etwas spielt den Receiver einschalten
([Sonos_Wohnzimmer:"PLAYING"]) (set Musik on)
## Wenn Sonos pausiert wird, Receiver nach 20 Sekunden abschalten und Lautstärke vom Connect auf 55 setzen
DOELSEIF
([Sonos_Wohnzimmer:transportState] =~ "PAUSED_PLAYBACK|STOPPED") (set Musik off,set Sonos_Wohnzimmer Volume 55)
## Wenn TV eingeschaltet wird, Timer anhalten!!!
DOELSEIF
([Nvidia] eq "on")


habs jetzt mit den befehlszweigen etwas verstanden, nur so, wird der timer deaktiviert. die anderen doifs, hab ich auf die gleiche art und weise umgebaut.


Otto123

Zitat von: Damian am 10 Mai 2019, 23:41:53
Eventabfragen: [Nvidia:"off"] sind nicht mit Abfragen [Nvidia] eq "off" gleichzusetzen, das letzte kann auch ohne Trigger wahr sein, das erste nicht.
Moin,
ich denke Du hast die Aussage von diesem Satz nicht verstanden.
Zitat von: Abercrombie1892 am 11 Mai 2019, 19:48:38
hier genau das gleiche ( obwohl ich denke das hier die klammern falsch sind wegen and or )
So etwas [Blitz:"on"] kannst Du nur mit or verknüpfen mit and macht es generell keinen Sinn.
Solche Ausdrücke wie [Licht] eq "off" kannst Du beliebig mit and und or verknüpfen und je nach gewünschtem Ergebnis und Komplexität der Ausdrücke musst Du klammern.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz