Hauptmenü

Notify mit If bedinung

Begonnen von Manu1982, 22 November 2017, 11:15:43

Vorheriges Thema - Nächstes Thema

Manu1982

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

Thorsten Pferdekaemper

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
FUIP

Beta-User

(Ü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');}}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Manu1982

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

Beta-User

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?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Manu1982

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


Beta-User

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');;}
}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

t1me2die

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

Beta-User

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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

CoolTux

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