FHEM Forum

FHEM => Frontends => FHEMapp => Thema gestartet von: iguana am 10 Januar 2024, 00:58:47

Titel: [Gelöst] Bug: Problem mit Commands die mit 'set' beginnen
Beitrag von: iguana am 10 Januar 2024, 00:58:47
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.
Titel: Aw: Bug: Problem mit Commands die mit 'set' beginnen
Beitrag von: jemu75 am 10 Januar 2024, 23:25:38
Kannst du bitte mal die komplette Template-Definition schicken.

Grüße
Jens
Titel: Aw: Bug: Problem mit Commands die mit 'set' beginnen
Beitrag von: iguana am 10 Januar 2024, 23:35:30
Als Workaround kann man einfach ein entsprechendes Eventmapping anlegen
attr tahoma_9183101 eventMap setOrientation:blindsund im Template verwenden
"leftClick": ["SlateOrientationState::blinds %i15"]
Titel: Aw: Bug: Problem mit Commands die mit 'set' beginnen
Beitrag von: iguana am 11 Januar 2024, 00:52:35
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.   
Titel: Aw: Bug: Problem mit Commands die mit 'set' beginnen
Beitrag von: jemu75 am 11 Januar 2024, 20:50:56
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 :)
Titel: Aw: Bug: Problem mit Commands die mit 'set' beginnen
Beitrag von: iguana am 14 Januar 2024, 23:34:46
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
Titel: Aw: Bug: Problem mit Commands die mit 'set' beginnen
Beitrag von: jemu75 am 17 Januar 2024, 19:03:15
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
Titel: Aw: [Gelöst] Bug: Problem mit Commands die mit 'set' beginnen
Beitrag von: iguana am 23 Januar 2024, 15:47:26
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.

{
  "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"]
  }
}