[Gelöst] Bug: Problem mit Commands die mit 'set' beginnen

Begonnen von iguana, 10 Januar 2024, 00:58:47

Vorheriges Thema - Nächstes Thema

iguana

Ich versuch jetzt schon länger ein gescheites Template für meine Somfy IO Außenjalousien anzulegen. Nach etlichen Versuchen habe ich nun festgestellt, das es ein Problem mit Commands gibt die mit 'set' beginnen. Bei solchen Commands muss immer der komplette Set-Befehl im Template verwendet werden, damit es korrekt ausgeführt wird.

Beispiel:

Die folgende Kurzform funktioniert nicht:
"leftClick": ["SlateOrientationState::setOrientation %i15"]
Wird das komplette Set-Kommando mit Device-Namen angegeben, wird der Befehl ausgeführt:
"leftClick": ["SlateOrientationState::set tahoma_9183101 setOrientation %i15"]


Richtig blöd ist nun, dass man den fixen Devicenamen nicht durch ein 'connected' ersetzen kann: Der Versuch erzeugt eine Fehlermeldung mit dem Hinweis das es unzulässig ist, den Connected-Wert mit dem aktuellen Devicenamen zu belegen.

Irgendwelche Vorschläge wie ich das Problem löse ohne individuelle Templates pro Device anzulegen?

PS: Ich hab dafür ein Issue in GitLab angelegt.

jemu75

Kannst du bitte mal die komplette Template-Definition schicken.

Grüße
Jens

iguana

#2
Als Workaround kann man einfach ein entsprechendes Eventmapping anlegen
attr tahoma_9183101 eventMap setOrientation:blindsund im Template verwenden
"leftClick": ["SlateOrientationState::blinds %i15"]

iguana

Hier noch das komplette Template für die Somfy-IO Jalousien:
{
  "name": "shutter_somfy",
  "author": "iguana",
  "date": "2024-01-10",
  "status": {
  "bar": ["ClosureState::%n:success:"],
  "error": ["StatusState:unavailable:100:error:Keine Verbindung"]
  },
  "main": [
    {
      "leftBtn": "mdi-chevron-down",
      "leftClick": ["MovingState:true|1:stop", "SlateOrientationState::blinds %i20"],
      "leftLong": ["state::down"],
      "text": ["MovingState:true:Fährt...","ClosureState:100:Geschlossen","ClosureState:1:%n% verdeckt","ClosureState:0:Offen" ],
      "rightBtn": "mdi-chevron-up",
      "rightClick": ["MovingState:true|1:stop", "SlateOrientationState::blinds %i-20"],
      "rightLong": ["state::up"]
    }
  ],
  "info": {
    "left1": ["MovingState:true|1::mdi-window-shutter-cog","state:1::mdi-window-shutter","state:0::mdi-window-shutter-open"],
    "left2": ["SlateOrientationState::%s% Wendung"]
  }
}

Das Template benötigt das eventMapping aus vorigem Beitrag, damit es funktionmiert.   

jemu75

Ich habe mir dein Template angesehen. Das das zu setzende Reading mit "set" beginnt ist in der Tat ein Problem. Hast du mal probiert den Befehl wie folgt zu schreiben:

"leftClick": ["SlateOrientationState::set %d setOrientation %i15"]

Bitte gib mir Bescheid, ob das funktioniert. Falls nicht würde ich ein Bugfix für die aktuelle Version fertig machen.

Beste Grüße
Jens :)

iguana

Hallo Jens,
Sorry für die späte Rückmeldung und bei der Gelegenheit auch gleich vielen Dank für FHEMApp und Deinen Einsatz!

Ich hab Deinen Vorschlag mit dem "set %D ..." ausprobiert, aber leider funktioniert er nicht.

Viele Grüße,
Igi

jemu75

Hallo Igi,

ich habe ein Fix erstellt. Bitte installiere mal die aktuelle Version 3.36.4
Damit sollte set %d ... funktionieren.
Bei Fragen melde dich gern.

Grüße
Jens

iguana

Hallo Jens,

vielen Dank für den Fix! Das explizite Setzen eines "setIrgendwas"-Property funktioniert nun auch, wenn man den Platzhalter %d für den Devicenamen verwendet.

Für Interessierte hier noch das komplette Template für Somfy-IO Außenjalousien.
  • Lange Pushs fahren rauf oder runter
  • Kurze Pushs stoppen eine aktuelle Fahrt oder drehen die Lamellen um jeweils 20 Grad auf oder zu

{
  "name": "shutter_somfy",
  "author": "iguana",
  "date": "2024-01-23",
  "status": {
  "bar": ["ClosureState::%n:success:"],
  "error": ["StatusState:unavailable:100:error:Keine Verbindung"]
  },
  "main": [
    {
      "leftBtn": "mdi-chevron-down",
      "leftClick": ["MovingState:true|1:stop", "SlateOrientationState:^([8-9].)$:set %d setOrientation 100", "SlateOrientationState::set %d setOrientation %i20"],
      "leftLong": ["state::down"],
      "text": ["MovingState:true:Fährt...","ClosureState:100:Geschlossen","ClosureState:1:%n% verdeckt","ClosureState:0:Offen" ],
      "rightBtn": "mdi-chevron-up",
      "rightClick": ["MovingState:true|1:stop", "SlateOrientationState:^([1-9]|1.)$:set %d setOrientation 0", "SlateOrientationState::set %d setOrientation %i-20"],
      "rightLong": ["state::up"]
    }
  ],
  "info": {
    "left1": ["MovingState:true|1::mdi-window-shutter-cog","state:1::mdi-window-shutter","state:0::mdi-window-shutter-open"],
    "left2": ["SlateOrientationState::%s% Wendung"]
  }
}