Homegear-UI: Hinzufügen eines UI Elements nicht möglich

Hallo,

bei mir läuft aktuell das Nightly 0.8.0-3052 mit der zugehörigen UI revision 343.

Ich versuche den Zustand eines Tür-Fenster Kontakts in der Homegear UI anzeigen zu lassen. Der entsprechenden Variable „STATE“ des Devices habe ich die Rolle 301001 zugewiesen.
Anscheinend hat die Variable damit automatisch auch noch die Rollen 300000 und 301000 erhalten.

Mit folgendem Befehl sollte das UI-Element erzeugt werden:

rc print($hg->addUiElement(Device-ID,1,“STATE”,“Tür”))

(ich lasse immer gleich beim Erzeugen die ID des UI-Elements ausgeben, damit ich es später ggf. leichter wieder löschen kann).

Leider erhalte ich dann folgende Exception:

Required role exists multiple times in room. Simple UI element creation is not possible.

Diese Vorgehensweise hat früher mal funktioniert und außerdem ist das die einzige Tür in dem zugeordneten Raum.

Hat hierzu jemand eine Idee ? Vielen Dank.

Noch eine kurze Frage:
Gibt es eigentlich eine Funktion, um alle Rollen anzeigen zu lassen, die einer Variable zugeordnet sind ? Ich kenne getVariablesInRole und auch die entsprechende Funktionalität in der Admin-UI aber hier geht man ja immer von der Rolle aus und nicht von der Variable.

Viele Grüße

FiveEights

paging @sathya

Hallo @FiveEights,

magst du einmal die Ausgabe von homegear -e rc 'print_v($hg->getVariablesInRole(301001));' und homegear -e rc 'print_v($hg->getVariablesInRoom(<Raum-ID>);' posten? Probier vorher allerdings einmal, ob es mit dem aktuellen Nightly (> 3060) wieder funktioniert. Zwischenzeitlich gab es an dieser Stelle nämlich einen Fehler.

Viele Grüße

Sathya

Hallo @sathya,

Vielen Dank für das schnelle Feedback.
Ein Update auf das Nightly 3064 hat leider keine Verbesserung gebracht.

Hier die Ausgabe von getVariablesInRole. Diese ist nach meinem Verständnis korrekt d.h. alle vier Variablen, denen ich diese Rolle zugewiesen habe, werden angezeigt:

(Struct length=4)
{
  [16] (Struct length=1)
  {
    [1] (Struct length=1)
    {
      [STATE] (Struct length=3)
      {
        [direction] (Integer) 1
        [invert] (Boolean) 1
        [level] (Integer) 2
      }
    }
  }
  [18] (Struct length=1)
  {
    [1] (Struct length=1)
    {
      [STATE] (Struct length=3)
      {
        [direction] (Integer) 1
        [invert] (Boolean) 1
        [level] (Integer) 2
      }
    }
  }
  [19] (Struct length=1)
  {
    [1] (Struct length=1)
    {
      [STATE] (Struct length=3)
      {
        [direction] (Integer) 1
        [invert] (Boolean) 1
        [level] (Integer) 2
      }
    }
  }
  [35] (Struct length=1)
  {
    [1] (Struct length=1)
    {
      [STATE] (Struct length=3)
      {
        [direction] (Integer) 1
        [invert] (Boolean) 1
        [level] (Integer) 2
      }
    }
  }
}

Die Funktion getVariablesInRoom liefert kein Ergebnis zurück, auch wenn ich dem Raum mehrere Variablen zugewiesen habe:

rc print_v($hg->getVariablesInRoom(3))
(Array length=0)
[
]

Bei anderen Räumen werden auch keine Variablen angezeigt.
Die Anzeige der zugeordneten Variablen zu einem Raum in der Admin-UI ist allerdings korrekt.

Bitte melde Dich einfach, wenn Du noch mehr Details brauchst.

Viele Grüße

FiveEights

1 Like

Hallo @FiveEights,

was sagt:

homegear -e rc 'print_v($hg->getVariablesInRoom(3, true));'

Könntest du einmal ausführen:

homegear -e rc '$hg->addVariableToRoom(16, 1, "STATE", 3);'

Und dann noch einmal das getVariablesInRoom()?

Könntest du mir von dem Aufruf von addUiElement() ein Log auf Loglevel 5 senden?

Viele Grüße

Sathya

Hallo @sathya,

manchmal hilft es eben schon, wenn man ein Problem diskutiert, um auf die richtige Spur zu kommen.

Beim Check des Logfiles auf Debug Level 5 habe ich die Meldung entdeckt:
Debug: Required role (301001) STATE does not have required direction (input). Simple UI element creation is not possible.

Und tatsächlich war die Rolle 301001 für die Variable mit Direction=1 angelegt. Nachdem ich die Direction auf 2 geändert habe, ließ sich dann auch das UI-Element problemlos hinzufügen.
Die ursprüngliche Fehlermeldung war hier leider wenig intuitiv.

Das gleiche Issue hatte ich auch bei anderen Variablen und das Anpassen der Direction auf 2 hat bei einigen Rollen geholfen.
Anscheinend funktioniert für das UI nur Direction 2, mit Direction 0 und 1 hatte ich keinen Erfolg – also immer die Direction checken !

In diesem Zusammenhang ist übrigens die (nicht dokumentierte) Funktion getVariableDescription sehr hilfreich, um die Zuordnung von Rollen zu Variablen und die jeweiligen Parameter zu überprüfen.
Genau das hatte ich schon länger gesucht…

Mir ist übrigens aufgefallen, dass die Beschreibung des Parameters „direction“ anscheinend seit neustem in der Doku von addRoleToVariable fehlt. Ziemlich sicher war das früher mal in der Doku enthalten.

Vielen Dank auf jeden Fall für die Unterstützung !
Ich werde weiter mit dem Homegear UI experiementieren und sukzessive versuchen, alle meine Geräte einzubinden.

Viele Grüße

FiveEights

3 Likes

Hallo @FiveEights,

Mir ist übrigens aufgefallen, dass die Beschreibung des Parameters „direction“ anscheinend seit neustem in der Doku von addRoleToVariable fehlt. Ziemlich sicher war das früher mal in der Doku enthalten.

Vielen Dank. Habe ich (wieder?) ergänzt.