mehrere datapoint Commands in einem Notify werfen ERROR

Begonnen von dwi, 10 Juni 2019, 22:47:33

Vorheriges Thema - Nächstes Thema

dwi

Hallo,

ich habe einen 6er HMIP Taster (HmIP-WRC6).
Dort wollte ich eine Taste für "Gehe ins Bett" belegen. Dann sollen alle Lampen ausgehen und mein Kombisignalgeber (HmIP-MP3P) soll grün oder rot leuchten und mir sagen, ob ggf noch Fenster offen sind.
Dafür habe ich dieses Notify auf dem Schalter:
{
  if ("$EVTPART0" eq "1.PRESS_SHORT:") {
    fhem("set HueBridge scene 9IRlyXzxdrEYvtm")
  } elsif ("$EVTPART0" eq "2.PRESS_SHORT:") {
    fhem("set HueBridge_HUEGroup3 off")
  } elsif ("$EVTPART0" eq "2.PRESS_LONG:") {
    fhem("set HueBridge scene CUAtUbI05hG0ziJ");
  } elsif ("$EVTPART0" eq "1.PRESS_LONG:") {
    fhem("set HueBridge scene 0xbEBOpguKzQGlz");
  } elsif ("$EVTPART0" eq "5.PRESS_SHORT:") {
    fhem("
      # hier schalte ich die Lampen aus
    ");
    if(ReadingsVal("Fenster1","state",undef) eq "open" ||
      ReadingsVal("Fenster2","state",undef) eq "open" ||
      ReadingsVal("Fenster3","state",undef) eq "open" ||
      ReadingsVal("Fenster4","state",undef) eq "open" ||
      ReadingsVal("Fenster5","state",undef) eq "open" ||
      ReadingsVal("Fenster6","state",undef) eq "open" ||
      ReadingsVal("Fenster7","state",undef) eq "open"
    ) {
      fhem("set FSignal datapoint 6.COLOR 4 ;;
        set FSignal datapoint 6.LEVEL 1 ;;
        set FSignal datapoint 2.SOUNDFILE 2 ;;
        set FSignal datapoint 2.LEVEL 0.5
      ");
    }
  } elsif ("$EVTPART0" eq "5.PRESS_LONG:") {
    fhem("set HueBridge scene CUAtUbI05hG0ziJ");
  } elsif ("$EVTPART0" eq "6.PRESS_SHORT:") {
    fhem("set HueBridge scene CUAtUbI05hG0ziJ");
  } elsif ("$EVTPART0" eq "6.PRESS_LONG:") {
    fhem("set HueBridge scene CUAtUbI05hG0ziJ");
  }
}


Drücke ich allerdings den Button 5 kurz, kommen nur dieser Fehler im Log:
2019.06.10 22:43:51 3: set FSignal datapoint 6.COLOR 4 ;;
        set FSignal datapoint 6.LEVEL 1 ;;
        set FSignal datapoint 2.SOUNDFILE 2;;
        set FSignal datapoint 2.LEVEL 0.4
       : HMCCUDEV: FSignal Usage: set FSignal datapoint [{channel-number}.]{datapoint} {value} [...]
2019.06.10 22:43:51 3: FSchalterNotify0 return value: HMCCUDEV: FSignal Usage: set FSignal datapoint [{channel-number}.]{datapoint} {value} [...]


Ändere ich den Code vom Button wie folgt, dann klappt es:
{
  if ("$EVTPART0" eq "1.PRESS_SHORT:") {
    fhem("set HueBridge scene 9IRlyXzxdrEYvtm")
  } elsif ("$EVTPART0" eq "2.PRESS_SHORT:") {
    fhem("set HueBridge_HUEGroup3 off")
  } elsif ("$EVTPART0" eq "2.PRESS_LONG:") {
    fhem("set HueBridge scene CUAtUbI05hG0ziJ");
  } elsif ("$EVTPART0" eq "1.PRESS_LONG:") {
    fhem("set HueBridge scene 0xbEBOpguKzQGlz");
  } elsif ("$EVTPART0" eq "5.PRESS_SHORT:") {
    fhem("
      # hier schalte ich die Lampen aus
    ");
    if(ReadingsVal("Fenster1","state",undef) eq "open" ||
      ReadingsVal("Fenster2","state",undef) eq "open" ||
      ReadingsVal("Fenster3","state",undef) eq "open" ||
      ReadingsVal("Fenster4","state",undef) eq "open" ||
      ReadingsVal("Fenster5","state",undef) eq "open" ||
      ReadingsVal("Fenster6","state",undef) eq "open" ||
      ReadingsVal("Fenster7","state",undef) eq "open"
    ) {
      fhem("set FSignal datapoint 6.COLOR 4");
      fhem("set FSignal datapoint 6.LEVEL 1");
      fhem("set FSignal datapoint 2.SOUNDFILE 2");
      fhem("set FSignal datapoint 2.LEVEL 0.5");
    }
  } elsif ("$EVTPART0" eq "5.PRESS_LONG:") {
    fhem("set HueBridge scene CUAtUbI05hG0ziJ");
  } elsif ("$EVTPART0" eq "6.PRESS_SHORT:") {
    fhem("set HueBridge scene CUAtUbI05hG0ziJ");
  } elsif ("$EVTPART0" eq "6.PRESS_LONG:") {
    fhem("set HueBridge scene CUAtUbI05hG0ziJ");
  }
}


Ich habe lediglich aus einem fhem() mit mehreren mit ;; getrennten Commands jetzt mehrere gemacht. Das schlägt allerdings gefühlt auf die Performance der Aktion. Zwischen Drücken, Farbe an, Sound an, vergehen wenige Sekunden.

Kann mir jemand helfen, wo mein Denkfehler liegt?

Viele Grüße
dwi

CoolTux

Mach aus ;; einfach ; und dann passt es.
Eines der weggenommenden ; kannst dann hier verwenden
fhem("set HueBridge_HUEGroup3 off")
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

dwi

Zitat von: CoolTux am 10 Juni 2019, 22:59:07
Mach aus ;; einfach ; und dann passt es.
Eines der weggenommenden ; kannst dann hier verwenden
fhem("set HueBridge_HUEGroup3 off")

Danke. Irgendwann lerne ich das nochmal mit ; und ;;.