Homegear UI - Wie fügt man einen Rollladen Aktor hinzu?

Moin Moin in die Runde,

ich habe mal eine Frage zum User Interface (ui). Im Großen und Ganzen habe ich schon einige Sache in der Visualisierung umsetzen können, hauptsächlich Lampen und geschaltete 230V Aktoren. Aber woran ich scheitere sind meine Wired Rollladen Aktoren.

Was ich bislang (in unterschiedlicher Kombinatorik) probiert habe ist, ähnlich wie mit den Lampen zuvor:

Die LEVEL Variable einer Rolle zuzuweisen und diese dann mit addUiElement() hinzuzufügen.

homegear -e rc 'print_v($hg->addVariableToRoom(16, 3, "LEVEL", 2));'
homegear -e rc 'print_v($hg->addRoleToVariable(16, 3, "LEVEL", 501000));'
homegear -e rc 'print_v($hg->addUiElement(16, 3, "LEVEL", "Rollladen Straßenseitig"));'

Scheitert aber immer, in etwa so:

PHP Fatal error:  Uncaught Homegear\HomegearException: Role has no UI definition. in /var/lib/homegear/scripts/inline.php:7
Stack trace:
#0 /var/lib/homegear/scripts/inline.php(7): Homegear\Homegear->__call('addUiElement', Array)
#1 {main}
  thrown in /var/lib/homegear/scripts/inline.php on line 7

Hat jemand von Euch schon Rollläden im UI am laufen und kann auch deren Level sehen, die Kanäle 1+2 (Auf und Ab) steuern? Wie habt Ihr das bewerkstelligt?

Wäre toll wenn etwas Licht ins Dunkel kommt. Höchst wahrscheinlich habe ich ein Verständnis-Problem und die Geschichte muss eh ganz anders gemacht werden.

Aber schauen wir mal …

Vorab schon mal vielen Dank
VG Sven

Hallo Sven,

der Anfang ist gut, nur noch nicht ganz fertig und richtig :wink: . Aber wie sollte es auch anders sein, wenn es nicht dokumentiert ist :slight_smile: .
Ich habe das Kapitel mal im Starterguide ergänzt:

Vorgehen:

  1. Gerät/Kanal/Variablen einem Raum zuweisen
  2. Variablen mit Rollen verknüpfen
  3. Ein (aktuell gehen nicht alle!) Unterelement visualisieren
  4. Sich über das komplexe Element Rollladen freuen und/oder hier nochmal melden :slight_smile:

vielen Dank fürs Testen!

3 Likes

Hallo @Sim,

vielen Dank für die Ergänzung der Doku. Ich hänge leider an der gleichen Fragestellung fest wie @morphax2k. Einfache UI-Elemente funktionieren bereits sehr gut, aber es gelingt mir bis jetzt nicht, beispielsweise einen Rollladen-Aktor HM-LC-Bl1PBU-FM in der Visualisierung einzubinden. Bei mir läuft das aktuelle Nightly unter Raspbian Stretch.

Grundsätzlich kann ich die beschriebene Vorgehensweise nachvollziehen aber mein Device hat leider andere Variablen (z.B. UP, DOWN und STATE_LEVEL fehlen).

Ich habe es jetzt mit folgenden Rollenzuweisungen versucht:
LEVEL: 501004
DIRECTION: 501005
STOP: 501003

Dies scheint aber noch nicht ausreichend zu sein. Der Test mit checkUiElementSimpleCreation liefert mir immer noch das Ergebnis Could not find a matching variable set.

Habe ich vielleicht etwas übersehen ?

Vielen Dank.

P.S. Die Abweichung der Variablen von der Doku beobachte ich übrigens auch bei meinen Heizungsreglern HM-CC-RT-DN.

Viele Grüße

FiveEights

Hallo FiveEights,

besten Dank für deine ausführlich Nachricht. Das hilft sehr, die Herausforderung einzugrenzen :slight_smile:
Ich bin mir nicht sicher, welche Variablen verknüpft sein müssen, damit sich das Element visualisieren lässt, UP und DOWN dürften aber dabei sein. Wenn ein Gerät diese Variablen nicht hat, so hat man nur die Möglichkeit, einen Umweg über ein virtuelles Gerät zu basteln und in Node-Blue die Logik dafür zu erstellen. (In deinem Fall müsstest du herausfinden, wie LEVEL bzw. DIRECTION bei einem Druck auf auf/ab zu setzen sind, damit der Aktor macht, was er soll). Heißt also:

  1. virtuelles Gerät VirtualBlind erstellen
  2. Gerät einem Raum zuweisen
  3. Logik erstellen, um bei einem Druck auf auf/ab den Aktor zum Schalten zu bewegen
  4. Ein (aktuell gehen nicht alle!) Unterelement visualisieren
  5. Sich über das komplexe Element Rollladen freuen

Gleiches gilt für den HM-CC-RT-DN. Dafür habe ich für Punkt 3 auch ein Beispiel: flows.json.txt (10,7 KB)
(man beachte die loopback-prevention bei SET_TEMPERATURE!)

Hier noch ein Beispiel für die Ansteuerung eines Rollladens, der nur zwei Relais für AUF und AB hat (ohne Rückmeldung) und trotzdem auf Zwischenpositionen (LEVEL) gefahren werden soll: flows.json.txt (20,2 KB)

Genereller Hinweis: die JSONs lassen sich über das Burgermenü oben rechts in Node-Blue importieren.

Viel Erfolg!

2 Likes

Hallo,

das hatte ich mir leider nicht so kompliziert vorgestellt. Ins Thema „Virtuelle Geräte“ müsste ich mich erst mal einarbeiten. Geht das nur über die Homegear CLI oder kann ich hierfür schon das Admin-UI verwenden ?

Deine Beispiel-Flows werde ich mir auf jeden Fall aber noch genauer anschauen. Da kann ich sicher noch ein paar Tricks lernen.

Fürs Erste würde mir auch schon reichen, in der Visualisierung nur den aktuellen Stand des Rollladens anzeigen zu lassen. Dieser ist als Prozentwert in der Variable „LEVEL“ verfügbar.
Auf eine Steuerung z.B. über Buttons für Hoch/ Runter würde ich dann verzichten.

Hast Du hierzu vielleicht eine Idee ? Vielen Dank.

Viele Grüße

FiveEights

1 Like

Hallo @FiveEights,

ich habe mich seit gestern Abend auch dem Thema wieder gewidmet und musste auch feststellen das es nicht so einfach ist.

Trotzdem an dieser Stelle auch noch mal ein recht herzliches Dankeschön an @Sim. Es sind neue Ansätze da mit denen man arbeiten kann.

Was ich für mich jedenfalls schon raus gefunden habe ist das meine Rollladen Aktoren wohl auch über den Umweg des Virtuellen Devices zu realisieren sind. Das HMW-LC-Bl1-DR besitzt leider auch nicht, bis auf LEVEL, die benötigten States UP and DOWN.

Was jedenfalls geht ist über das Admin-UI einen virtuelles Blind Device anzulegen und es dann im Node Blue zu benutzen und auch zu referenzieren. Du findest unter dem Menü Punkt Geräte einen Button Gerät hinzufügen. Das sieht dann so aus:

Die ID 21 ist das virtuelle BlindDevice

homegear -e rc 'print_v($hg->addRoleToVariable(21, 1, "UP", 502001));' 
homegear -e rc 'print_v($hg->addRoleToVariable(21, 1, "DOWN", 502002));' 
homegear -e rc 'print_v($hg->addRoleToVariable(21, 1, "STOP", 502003));' 
homegear -e rc 'print_v($hg->addRoleToVariable(21, 1, "LEVEL", 502004, 1));' 
homegear -e rc 'print_v($hg->addRoleToVariable(21, 1, "STATE_LEVEL", 502004, 0));' 
homegear -e rc 'print_v($hg->addUiElement(21, 1, "LEVEL", "Rollladen Garagenseitig"));' 

Man kann es auch, wie @Sim schon erwähnt sehr einfach in die UI einbinden.

Ich bin leider noch nicht dazu gekommen den Flow von Sim’s so an zu passen das auch der Aktor rauf und runter fährt wie er soll. Sobald ich ein lauffähiges Setup habe melde ich mich aber noch mal. Aber definitiv ist flows.json.txt ein gangbarer Weg.
Was auf der Anderen Seite unschön ist, das man jetzt für alle Rollläden ein Mapping über ein weiteres virtuelles Device schaffen muss.

VG Sven

3 Likes

Hint: seit ein paar nightlies kann man die Zuweisung Geraetevariable -> Rolle auch ueber die Admin-UI machen :innocent:

– Micha

3 Likes

Die Benutzerfreundlichkeit werden wir auch noch weiter erhöhen. Ziel ist, das Anlegen der UI-Elemente über Node-BLUE zu ermöglichen.

1 Like

Einen wunderschönen Guten Morgen in die Runde,
@sathya @Micha @FiveEights @Sim @FiveEights @pmayer

ich habe gestern Abend meinen Lösungsansatz komplettiert und teile gerne meinen Flow um anderen gegebenenfalls weiterzuhelfen (Vielleicht gibt’s ja auch noch was zu verbessern :upside_down_face:.)

Wie im Post zuvor schon erwähnt, habe ich:

  1. ein virtuelles BlindDevice erzeugt (ID 21, VirtuelBlind EZ Hof) im AdminUI
  2. dieses BlindDevice einem Raum zugewiesen und mit addUiElement() dem UI hinzugefügt
  3. im Node-Blue einen neuen Flow angelegt und folgenden Ablauf geschaffen:

    Anbei der Flow als exportiertes JSON - rollershutter.json.txt (15,2 KB)

Randnotiz: UV - Dach 1 - Rollo EZ Hof mit der ID 17 ist ein Wired HMW-LC-Bl1-DR Aktor welcher mit zwei physikalischen Tastern (Hoch, Runter) an der Wand verdrahtet ist.

Mit den Tests gestern Abend war ich zufrieden. Ich konnte den Aktor sowohl aus der UI steuern als auch von den Tastern an der Wand. Auch das Unterbrechen des Rollladenlaufs ließ sich bewerkstelligen. Das einzige was etwas unschön ist, die UI hängt dem Sollzustand etwas nach. Sprich unterbricht man den Rollladenlauf durch ein betätigen der Stop Taste dauert, bedingt durch das ramp-to es etwas bis die UI den finalen Wert an zeigt. Der Rollladenlauf hingegen wird sofort unterbrochen.

Nichts desto trotz bin ich mit der aktuellen Lösung schon im Großen und Ganz zufrieden. Einziger Nachteil den ich jetzt sehe, ist wie schon zuvor erwähnt, das ich nun zusätzlich 15 Flows und 15 virtuelle BlindDevices schaffen muss um alle meine Aktoren auch aus der UI heraus zu steuern.
Sei es drum wenn’s nicht anders geht kann ich damit auch leben.

Ich möchte noch mal ein ganz dickes Lob an das gesamte Homegear Team :partying_face: und auch die Community aussprechen, es ist schön zu sehen wie sich das Produkt stätig weiter entwickelt. Danke :bouquet: für die tolle Arbeit!

VG Sven

3 Likes

Ich möchte noch mal ein ganz dickes Lob an das gesamte Homegear Team :partying_face: und auch die Community aussprechen, es ist schön zu sehen wie sich das Produkt stätig weiter entwickelt. Danke :bouquet: für die tolle Arbeit!

Vielen Dank!

1 Like

Hallo,

ich wollte mich nur kurz dem Lob meines Vorredners anschließen.
Ich bin immer wieder positiv überrascht, wieviel Know-How hier im Forum versammelt ist.

Vor kurzem war ich noch völlig ahnungslos in diesem Thema und jetzt konnte ich Dank Eurer gemeinsamen Unterstützung auch einen funktionsfähigen Prototypen in Node-Blue bauen.

In diesem Sinne, keep up the good work!

Viele Grüße

FiveEights

4 Likes