Hauptmenü

mehrere Abfragen mit if

Begonnen von AET_FHEM, 06 Oktober 2015, 11:48:09

Vorheriges Thema - Nächstes Thema

AET_FHEM

Hallo,

kann ich mit if mehrere kombonenten abfragen?

zB.: habe ich 3 XBMC´s am laufen und einen bewegungs melder --> jetzt will ich wenn eine bewegung stat findet "motion" abfragen welcher XBMC an ist (das mach ich mit Ping und present und absent => das klappt auch)

=> Aufgabenstellung
wenn motion => dann
- if XBMC1 => present => set bla bla
- if XBMC2 => present => set bla bla
- if XBMC3 => present => set bla bla
--> wenn XBMC1 oder 2 nicht online ist sollte das trotzdem funktunieren ...

Ich habe mir das so vorgestellt  ;D :
define nfy_CAM_I_motion notify DY_CAM_I:motion {\
if ( Value("pc1") ne "absent") {fhem ("set XBMC1 addon script.CAM_I id 1")\
if ( Value("pc2") ne "absent") {fhem ("set XBMC2 addon script.CAM_I id 1")\
if ( Value("pc3") ne "absent") {fhem ("set XBMC3 addon script.CAM_I id 1")\
}

--> klappt leider nicht => ich habe die klammern schon umgestellt und geändert nur bekomm ich das nicht hin ... :o

Wuppi68


  • Öffnende und schliessende Klammern müssen in Summe immer 0 geben
  • Du benutzt verschiedene Gänsefüßchen
  • 3. mach es nicht in der Config sondern in der WebUI da gibt es einen JS Editor, der Dir die Klammern anzeigt und Du hast nicht die Maskierungsprobleme mit \;, usw
  • codetags machen das ganze infacher lesbarer hier im Forum
  • was sagt das LOG?

dann sollte es schon funktionieren ....

Zitat=> Aufgabenstellung
wenn motion => dann
- if XBMC1 => present => set bla bla
- if XBMC2 => present => set bla bla
- if XBMC3 => present => set bla bla

--> wenn XBMC1 oder 2 nicht online ist sollte das trotzdem funktunieren ...

Ich habe mir das so vorgestellt  ;D :
define nfy_CAM_I_motion notify DY_CAM_I:motion {\
if ( Value("pc1") ne "absent") {fhem ("set XBMC1 addon script.CAM_I id 1")\
if ( Value("pc2") ne "absent") {fhem ("set XBMC2 addon script.CAM_I id 1")\
if ( Value("pc3") ne "absent") {fhem ("set XBMC3 addon script.CAM_I id 1")\
}


define nfy_CAM_I_motion notify DY_CAM_I:motion {
if ( Value("pc1") ne "absent") fhem ("set XBMC1 addon script.CAM_I id 1");
if ( Value("pc2") ne "absent") fhem ("set XBMC2 addon script.CAM_I id 1");
if ( Value("pc3") ne "absent") fhem ("set XBMC3 addon script.CAM_I id 1");
}

Code für die WebUI
FHEM unter Proxmox als VM

AET_FHEM

Hey Wuppi

danke für die guten Tipps habe die COnfig erstmal umgestellt das mit der Formatierung der Gänsefüschen passiert wenn man in Word versucht die Cods zu schreiben :-(

hab dein Vorschlag getestet leider ohne erfolg im Log steht:
return value: Unknown command {
if, try help.
Unknown command if, try help.
Unknown command if, try help.
Unknown command }

Wuppi68

paste das mal so in den DEF Abschnitt in der WebUI ...


define nfy_CAM_I_motion notify DY_CAM_I:motion {
  if ( Value("pc1") ne "absent") fhem ("set XBMC1 addon script.CAM_I id 1");
  if ( Value("pc2") ne "absent") fhem ("set XBMC2 addon script.CAM_I id 1");
  if ( Value("pc3") ne "absent") fhem ("set XBMC3 addon script.CAM_I id 1");
}


der Coe sieht auf den ersten Blick gleich aus, es ist aber jetzt ein Leerzeichen nach der Klammer auf (also 2 vor dem if :-) )
FHEM unter Proxmox als VM

AET_FHEM

Hallo Wuppi

--> geht immer noch nicht im Log steht
PERL WARNING: Bareword found where operator expected at (eval 9297) line 4, near ") fhem"
2015.10.07 16:02:01 3: eval: {
  if ( Value("pc1") ne "absent") fhem ("set XBMC1 0815");
  if ( Value("pc2") eq "absent") fhem ("set XBMC2 0815");
  if ( Value("pc3") ne "absent") fhem ("set XBMC3 0815");


return value: syntax error at (eval 9297) line 2, near ") fhem "
syntax error at (eval 9297) line 3, near ") fhem "
syntax error at (eval 9297) line 4, near ") fhem "

--> kann doch nicht so schwehr sein ...

Wuppi68

geb mal bitte

{Value("pc")}

in die Ausführungszeile ein oder dem Telnet Prompt ein

klappt das?, weil bei mir funktioniert folgender Part im DEF Teil der GUI Problemlos

hm.remote.1.2
{
  if (ReadingsVal("hm.motion.1", "brightness", "50") < 40)
    { fhem "set hm.dim.1 12"  }
   else
    { fhem "set hm.dim.1 off" }
  if (ReadingsVal("harmony.hub.1", "activity", "undefined") eq  "TV")
    { fhem "set harmony.hub.1 off"}
  else
    { fhem "set harmony.hub.1 activity TV"}
}
FHEM unter Proxmox als VM

AET_FHEM

so geht's nicht {Value sondern { fhem

AKT
{
  if (Value("pc1") ne "absent")
   { fhem "set XBMC1 $EVENT"}
  if (Value("pc2") eq "on")
   { fhem "set XBMC2 $EVENT"}
  if (Value("pc3") ne "absent")
   { fhem "set XBMC3 $EVENT"}
}

--> Super Danke, dein Part hat mich auf die Idee gebracht :-)