Moin ich wollte eine Notify schreiben die abfragt welchen Status der Receiver hat und dann unterschiedliche befehle abgibt.
mein versuch
Buero_BOB_80 if (Buero_Receiver "on" ) {fhem('set Buero_Receiver input netradio;sleep 5;sleep 5;set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock');}
else {if (Buero_Receiver "off" ) {fhem('set set Buero_Verstaerker on;sleep 15;set Buero_Receiver on;sleep 5;set Buero_Receiver volumeStraight -59;set Buero_Receiver input netradio;sleep 5;sleep 5;set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock');}}}
passiert aber nichts
Hi,
es gibt im Prinzip zwei verschiedene IFs. Einmal das Perl if und dann das FHEM IF. Groß-/Kleinschreibung ist dabei wichtig!
Schau Dir am Besten mal das IF in der Commandref an. Außerdem fehlen Vergleichsoperatoren und eckige Klammern um die Readings/Devices. Das was Du versuchst, müsste ungefähr so gehen:
IF ([Buero_Receiver] eq "on" )
(set Buero_Receiver input netradio, sleep 10, set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock)
ELSE (IF ([Buero_Receiver] eq "off" )
(set set Buero_Verstaerker on, sleep 15, set Buero_Receiver on, sleep 5, set Buero_Receiver volumeStraight -59, set Buero_Receiver input netradio, sleep 10, set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock))
Gruß,
Thorsten
(Überschneidet sich teilweise mit Thorstens Hinweisen, aber da fast fertig):
Moin,
bitte benutze zukünftig code-tags (# über den smilies).
Die perl-specials in der commandref und das Einsteiger-pdf (ca. ab S. 37) hast du durchgearbeitet?
Vielleicht postest du mal die ganze Definition (raw - unten beim Device). M.E. fehlt da noch der Trigger - notify's erstellt man am besten im Event-Monitor, siehe wiki dazu.
Und dann ist mind. noch die Klammersetzung nicht ok, versuch's mal (richtigen Trigger vorausgesetzt) in diese Richtung (ggf. muß noch escaped werden):
Buero_BOB_80
{
if (Buero_Receiver "on" )
{fhem('set Buero_Receiver input netradio;sleep 5;sleep 5;set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock');}
elsif (Buero_Receiver "off" )
{fhem('set set Buero_Verstaerker on;sleep 15;set Buero_Receiver on;sleep 5;
set Buero_Receiver volumeStraight -59;set Buero_Receiver input netradio;sleep 5;sleep 5;set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock');}}
bei
{
if (Buero_Receiver "on" )
{fhem('set Buero_Receiver input netradio;sleep 5;sleep 5;set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock');}
elsif (Buero_Receiver "off" )
{fhem('set set Buero_Verstaerker on;sleep 15;set Buero_Receiver on;sleep 5;
set Buero_Receiver volumeStraight -59;set Buero_Receiver input netradio;sleep 5;sleep 5;set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock');}}
kommt
syntax error at (eval 39938) line 2, near "Buero_Receiver "on""
syntax error at (eval 39938) line 5, near "}
elsif"
syntax error at (eval 39938) line 7, near "}}"
(Might be a runaway multi-line '' string starting on line 6)
als Meldung
OK, da fehlen tatsächlich diverse "eq". Bitte passend einsetzen...
Zitat von: Beta-User am 22 November 2017, 11:31:05
Vielleicht postest du mal die ganze Definition (raw - unten beim Device). M.E. fehlt da noch der Trigger
Das trigger-Thema ist geklärt?
defmod Buero_BOB_80_Dummy_on notify Buero_BOB_80_Dummy:on if (Buero_Receiver "on" ) {fhem('set Buero_Receiver input netradio;;sleep 5;;sleep 5;;set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock');;}\
else {if (Buero_Receiver "absent" ) {fhem('set set Buero_Verstaerker on;;sleep 15;;set Buero_Receiver on;;sleep 5;;set Buero_Receiver volumeStraight -59;;set Buero_Receiver input netradio;;sleep 5;;sleep 5;;set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock');;}}}
attr Buero_BOB_80_Dummy_on alias BOB 80
attr Buero_BOB_80_Dummy_on cmdIcon active:icoPfeil
attr Buero_BOB_80_Dummy_on group Büro
attr Buero_BOB_80_Dummy_on icon it_radio
attr Buero_BOB_80_Dummy_on room Büro
attr Buero_BOB_80_Dummy_on webCmd active
setstate Buero_BOB_80_Dummy_on active
setstate Buero_BOB_80_Dummy_on 2017-11-22 12:40:36 state active
Was ist jetzt mit den "eq"?
etwa so (ungetestet):
defmod Buero_BOB_80_Dummy_on notify Buero_BOB_80_Dummy:on {
if (Buero_Receiver eq "on" )
{fhem('set Buero_Receiver input netradio;;sleep 5;;sleep 5;;set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock');;}
elsif (Buero_Receiver eq "absent" )
{fhem('set set Buero_Verstaerker on;;sleep 15;;set Buero_Receiver on;;sleep 5;;set Buero_Receiver volumeStraight -59;;
set Buero_Receiver input netradio;;sleep 5;;sleep 5;;set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock');;}
}
Also hier stimmen noch eine Klammern und Befehle nicht.
Rück am besten die Klammern mal ein wenig ein, damit man einen kleinen Überblick bekommt.
defmod Buero_BOB_80_Dummy_on notify Buero_BOB_80_Dummy:state:on
{
if (ReadingsVal("Buero_Receiver","state","") eq "on" )
{
fhem("set Buero_Receiver input netradio ;; sleep 10 ;; set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock" )
}
else
{
if (ReadingsVal("Buero_Receiver","state","") eq "absent" )
{
fhem("set Buero_Verstaerker on ;; sleep 15 ;; set Buero_Receiver on ;; sleep 5 ;; set Buero_Receiver volumeStraight -59 ;; set Buero_Receiver input netradio ;; sleep 10 ;; set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock")
}
}
}
Beim zweiten ReadingsVal, denke ich aber, dass dort kaum "absent" drin steht. Dazu kenne ich die Readings von deinem "Buero_Receiver" nicht.
Am besten gibst du uns auch einmal ein:
list Buero_Receiver
Gruß
Mathze
btw.: da fehlen noch diverse Klammern bzw. ReadingsVal(), wie Thorsten P. ja bereits angemerkt hatte...
Etwa in der Art:
[Buero_Receiver:state]
Bitte mal das Einsteiger-pdf zu Rate ziehen, da gibt es entsprechende Beispiele.
Zitat von: t1me2die am 22 November 2017, 12:53:14
Also hier stimmen noch eine Klammern und Befehle nicht.
Rück am besten die Klammern mal ein wenig ein, damit man einen kleinen Überblick bekommt.
defmod Buero_BOB_80_Dummy_on notify Buero_BOB_80_Dummy:state:on
{
if (ReadingsVal("Buero_Receiver","state","") eq "on" )
{
fhem("set Buero_Receiver input netradio ;; sleep 10 ;; set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock" )
}
else
{
if (ReadingsVal("Buero_Receiver","state","") eq "absent" )
{
fhem("set Buero_Verstaerker on ;; sleep 15 ;; set Buero_Receiver on ;; sleep 5 ;; set Buero_Receiver volumeStraight -59 ;; set Buero_Receiver input netradio ;; sleep 10 ;; set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock")
}
}
}
Beim zweiten ReadingsVal, denke ich aber, dass dort kaum "absent" drin steht. Dazu kenne ich die Readings von deinem "Buero_Receiver" nicht.
Am besten gibst du uns auch einmal ein:
list Buero_Receiver
Gruß
Mathze
Bisschen viel des Guten wie ich finde.
defmod Buero_BOB_80_Dummy_on notify Buero_BOB_80_Dummy:state:on {
if(ReadingsVal("Buero_Receiver","state","") eq "on" ) {
fhem("set Buero_Receiver input netradio ; sleep 10 ; set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock" )
} elsif(ReadingsVal("Buero_Receiver","state","") eq "absent" ) {
fhem("set Buero_Verstaerker on ;; sleep 15 ;; set Buero_Receiver on ; sleep 5 ; set Buero_Receiver volumeStraight -59 ; set Buero_Receiver input netradio ; sleep 10 ; set Buero_Receiver navigateListMenu Lesezeichen/Manu/80er Rock")
}
}
Code ist für die DEF geschrieben nicht für fhem.cfg