NEWS
Gruppierte Widget als Template oder ähnliche Möglichkeiten
-
Hallo Zusammen,
ich bin im Thema ioBroker und vis bisher ein Einsteiger und habe gewisse Views zwar schon erstellt, aber ich möchte dies noch ein bisschen verbessern, besonders in der Erstellung und hoffe hier ein paar Tipps zu bekommen.
Ich habe bereits im Forum und unter g... viel gesucht aber irgendwie noch nicht das richtige Ergebnis gefunden (vielleicht habe ich auch nicht die richtigen Suchbegriffe eingegeben :-().Nun zum eigentlichen Thema:
Mein eigentliches Ziel:
Ich möchte in einer Hauptview mehrere gleiche Widget für mehrere HM-HKT-WC (Homematic Thermostate) erstellen.
Dieses Widget oder Gruppe mit mehreren Widget sollen- ein Symbol,
- ein Namen
- den aktuellen Temperaturwert
- den Status des dazugehörigen Tür/Fensterkontakt enthalten.
- als Taster agieren und bei Druck ein Popup-Fenster erzeugen,
Im Popup sollen entsprechende Einstellungen vorgenommen werden können (Standardparameterveränderung am Objekt wie Modus und Temperatur und Tageseinstellungen, die evtl. auch über iobroker Script weiter verarbeitet werden können).
Dieses (Gruppen)-Widget soll dann als Template fungieren und wenn möglich folgende Eigenschaften enthalten:
- Die anzubindenen Objekte (Thermosstat und Türkontakt) sollen einmalmalig im (Gruppen-) Widget konfiguriert werden. Die Widgets der Gruppe sollten nicht angefasst werden müssen. Der Anfang der Objekt-ID ist ja für gewöhnlich immer gleich,so dass es evtl. ausreichen würde nur diesen einmalig einzutragen.
Hier würde man sich die Konfiguration der einzelnen Widget (auch im Popup) in der Gruppe ersparen. - Bei Änderung des Templats (z.B. hinzufügen eines Widgets) sollten sich das/die bereits im Einsatz befindlichen (Gruppen-) Widgets aktualisieren. Dadurch würde man eine Neuimplementierung/-konfiguration des Bestehenden (auch des Popups) ersparen.
Ich würde meinen, dass obiges sicherlich als Widget über einen Adapter programmierbar wäre, aber dafür habe ich zu wenig Ahnung in diesem Thema und wäre von meiner Seite her keine kurzfristige Lösung möglich.
Ich habe gehofft, dass es über Vorlagen funktioniert, aber meine Tests haben gezeigt, das das Update nicht funktioniert und ich nicht herausfinden konnte wie man den Konfigurationsaufwand minimieren kann.
Auch habe ich überlegt, dies über "View in Widget" zu lösen, aber hierfür müsste ich (nach meinen Kenntnisstand) für jedes Thermosstat eine View erstellen, d.h. ich kann nicht über das Widget Parameter mitgeben die den enthalten Widget in der aufgrufenen View zugeordnet werden könnten.Vielleicht hat jemand hier das bereits schon umgesetzt, eine weitere Idee für eine "einfache" Umsetzung oder Anregung wie es doch in den obigen Ansätzen lösbar wäre. Beispiele/Codeschnipsel wären mir sehr willkommen.
Ich bin gespannt auf Eure Beiträge.
Vielen Dank schon mal ....
-
@fleetch vielleicht Group-Attribute nutzen.
https://forum.iobroker.net/topic/15880/nutzung-von-attributen-in-gruppierungen
-
@spacerx super ... vielen dank für den Link ... der sieht vielversprechend aus ... ich werde diesen mal bei mir testen und melde mich ....
-
Danke für die Frage! Ein ähnliches Thema treibt mich auch gerade um...

Ich habe rausgefunden, wie ich mehrere Attribut-Namen und -Typen für ein Template definieren kann und die ich sie unter "Allgemein" dann auch befüllen kann.
Aber: Wie nutze ich diese Angaben dann?
Also wie kriege ich es hin, dass in meinem Beispiel das Wort "Leistung" durch "Testtitel" ersetzt wird? Und das Icon durch die verlinkte Datei und der Wert durch die aktuellen Daten des ausgewählten Gerätes ersetzt werden?
Darauf habe ich weder durch intensives Googlen, noch durch viele Einträge im Forum eine Lösung gefunden.
Edit: Ah, doch... groupAttr1, groupAttr2, etc...
-
Okay, an einer Stelle hänge jetzt auch fest:
Wie kann in der innerhalb der Gruppe auf den Rückgabewert des Gerätes zugreifen?
Ich habe es mit {groupAttr1} versucht, aber das gibt dann im Live-Betrieb nur "Undefined" aus und im Editor einfach nur den Namen des Geräts.

Hier ist ein ganz alter Thread dazu - gibt es dafür immer noch keine Lösung?
https://forum.iobroker.net/topic/12013/gruppieren-und-groupattr-nutzen
Das komische ist, wenn ich die Objekt-ID per Hand eintrage, geht es. Aber wenn die Objekt-ID durch groupAttr1 eingesetzt wird, kommt nur ein "undefined".
-
Eine weitere Alternative wäre so eine Gruppe zu exportieren
Und die Änderungen dann direkt im json durchzuführen und das wieder zurück zu exportieren.
Zur besseren Bearbeitung kann man das json durch einen beautifier jagen
https://codebeautify.org/jsonviewerBeim bearbeiten muss man etwas vorsichtig sein,
Das man die Struktur nicht kaputt macht, sonst klappt es nicht mehr mit dem Import. -
@oliverio Danke, probiere ich mal.
Was ist halt nicht verstehe: Wenn ich manuell im HTML-Code schreibe:
{shelly.0.shellyplus1pm#xyz#1.Relay0.Power}
dann wirft er immer den korrekten Messwert raus.Wenn ich aber
{groupAttr1}
schreibe, wird ebenfalls vollkommen korrekt der Code
{shelly.0.shellyplus1pm#xyz#1.Relay0.Power}
erzeugt (sieht man ja im Screenshot), aber es wird eben kein Wert ausgelesen, sondern "undefined". Warum? Keine Ahnung. -
@smartin23
dann scheint da was beim binding nicht richtig zu funktionieren.
zu beginn sammelt vis immer alle objectIDs ein und abonniert diese beim server.
in vis edit werden grundsätzlich alle object IDs abonniert, daher funktioniert das im edit modus
wenn bei der echten ansicht des views das nicht funktioniert, wurde die objectid nicht abonniert, daher undefined.mach da mal ein issue in github bei iobroker.vis aufmachen
-
@oliverio Okay, das schaue ich mir mal an. Habe sowas noch nie gemacht. Habe aber gesehen, dass das Problem schon alt sein muss - der andere Thread zum gleichen Thema ist von 2018.
Nutzt denn keiner außer mir diese Funktion?

Würde das super praktisch finden, um sich einmal ein Widget nach eigenen Vorstellungen zu konfigurieren und dann einfach mehrmals in einen View zu ziehen und schnell einem anderen Gerät zuzuordnen - wenn es funktionieren würde.
-
@smartin23
Ehrlicherweise kannte ich diese Funktion gar nicht.
Hab mir die Funktionsweise dann vom ausprobieren abgeleitet.
Steht auch in der Doku nicht wirklich drin oder hab es auch nicht gefunden. -
@smartin23
ich bin auch gerade mächtig am herumexperimentieren. IChhabe es soweit inbekommen, dass ich im eigenlichen Widget, welches in der Gruppe konfigurieren will das "groupAttr" one "{" eingetragen habe.
Falls das Problem bei Dir noch besteht , probier das mal aus ... -
vielleicht kann mir jemand in diesem Zusammenhang im nächsten Schritt weiterhelfen. Die Gruppierung bekomme ich soweit hin, aber stoße schon auf die nächste Herausforderung:
Ich versuche gerade mir das Leben bei der Nutzung dieser Gruppe (ich will das ja mehrfach nutzen / duplizieren) zu vereinfachen, indem ich in der Gruppenkonfiguration nur ein Teil der Objekt-ID als groupAttr eintrage, welches dann in der eigentlichen Konfiguration der Widgets ergänzt wird.
Zum Beispiel groupAttr (Text) = "Device1" wird in der Gruppenkonfiguration definiert und in dem Objekt-ID Parameter von einem der Widgets (vis-inventwo) wird dieser Teil ergänzt mit ".Temperatur" so dass die Objekt-ID im Widget dann "Device1.Temperatur" ist. Beim nächsten Widget der Gruppe wäre es dann "Device1.Mode" o.ä.
Ich hab es schon in verschiedenen Varianten ausprobiert, aber nichts hat geholfen.
In einem anderen Forumbeitrag habe ich ein Beispiel allgemeiner Art mit dem HTML-Widget gelesen und ich habe hier http://www.machs-smart.de/iobroker-bindings-farben-berechnungen-abfragen/ auch die verschiedene Bindings ausprobiert (mit "wert und wert+ z.B.). Ohne Erfolg. Aber vielleicht geht es auch nicht mit dem vis-inventwo widget?
Über ein Feedback würde ich mich freuen. -
hat jemand noch eine Tipp zu meinem letzten Eintrag? ... ich komme hier irgendwie nicht so richtig weiter