NEWS
Fragen / Antworten rund um die neue Alias Funktion
-
Mag er auch nicht.
Hab jetzt mal noch ein paar Zeilen entfernt und nur das nötigste drinnen.
Aber der DP zeigt noch die Formel.{ "type": "state", "common": { "name": "Konverttest", "role": "state", "type": "string", "read": true, "write": true, "alias": { "id": "0_userdata.0.example_state", "read": "\"val == true ? an : aus\"" } }, "_id": "alias.0.og.Thermostat_Wohnbereich.WINDOW_STATE_2", "native": {}, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1709923909780 }
-
@david-g sagte: true = offen und anstatt false = geschlossen im. DP habe.
val ? 'offen' : 'geschlossen'
Im JSON:
"read": "val ? 'offen' : 'geschlossen'"
-
Klappt, vielen Dank
-
Hallo,
ich habe ein Problem mit der Groß- und KLeinschreibung:zigbee-devices geben ihre Objekte im iobroker UNVERÄNDERBAR in Kleinbuchstaben an:
zigbee.0.a4c138ef9eefc967.battery
Versuche ich dieses Objekt durch einen Alias zur ersetzen, gibt mir der alias-Adapter zwingend dabei Großbuchstaben an:
alias.0.Flur.Tuerklingel.BATTERY
In Scripten ist das kein Problem, bei der Programmierung von Tabellen mittels ng-repeat
<table class="table table-bordered" columns="2"> <caption> Zigbee-Schalter Batteriezustand</caption> <div ng-app="" ng-init="geraete=[ {raum:'Heizung-Eco (Flur)',adresse:'zigbee.0.0c4314fffe1e2d25.'}, {raum:'Multi-Licht (Flur)',adresse:'zigbee.0.b4e3f9fffed1bd72.'}, {raum:'Klingelkontakt (Flur)',adresse:'alias.0.Flur.Tuerklingel.'} ]"> <tr> <th>Raum</th> <th>Prozent</th> </tr> <tr ng-repeat="x in geraete"> <td>{{x.raum}}</td> <td ng-init="percentV=itemValue(x.adresse+'battery')" ng-class="{'alarm': percentV <= 45, 'attention': percentV > 45 && percentV <= 70}"> {{'%.0f' | sprintf:percentV}} %</td> </tr> </div> </table>
bin ich aber zwingend auf die exakt gleiche Schreibweise angewiesen, um ng-repeat verwenden zu können.
Allerdings kann ich weder im zigbee-Objekt, noch im alias-Objekt die Schreibweise ändern und somit anpassen. Ich brauche eine übereinstimmende Schreibweise, am Besten im alias-Objekt in Kleinbuchstaben.
Eine Änderung der Property "Name" bringt nichts, es wird "ID" verwendet und diese ist nicht änderbar, bleibt in Großbuchstaben.
Den langen, steinigen Weg, nun alle meine zigbee-Objekte mit einem Alias zu versehen, will ich -noch- nicht gehen.
Gibt es einen Ausweg?
Viele Grüße, jahnbes. -
@jahnbes Was ist ng-repeat? generell klingt es nach einer limitierung von dieser Library/Tool/Whatever... vllt dort mal einen Feature-Request stellen hier auch grossbuchstaben zu erlauben?
Warum: Weil das bei zigbee vllt immer so ist mit allem Kleinbuchstabeln, aber allein mit homematic ist das schon kaputt und andere Adapter nutzen wieder andere Mixe. Also iobroker ist hier "flexibel" und es gibt keine zwingende Vorgabe alles klein zu schreiben und es gibt viele Bestandsadapter die das auch nicht tun - also hier bei iobroker zu limitieren fühlt sich nach dem falschen Weg an.
-
@jahnbes sagte in Fragen / Antworten rund um die neue Alias Funktion:
Versuche ich dieses Objekt durch einen Alias zur ersetzen, gibt mir der alias-Adapter zwingend dabei Großbuchstaben an:
Sicher?
Ich kann die anlegen wie ich möchte
-
@apollon77
Hallo apollo 77, danke für Deine Antwort.
ng-repeat ist eine Direktive in AngularJS. So ziemlich jede Anwendung, die mit Collections operiert, benötigt den Einsatz dieser Direktive, um die Sammlungen von Daten in einer View bequem ausgeben zu können. Ich benutzte sie, um Tabellen in HABPanel dynamisch gestalten zu können, das heißt, eine Zeile der Tabelle wird als Schablone programmiert, dann eine Liste der darzustellenden Elemente (z.B. ZigBee-Geräte) erstellt und mit Hilfe von ng-repeat diese Liste abgearbeitet und die Tabelle mit allen Zeilen (ZigBee-Geräte) erzeugt. Neben der einfacheren Programmierung der Tabelle (ich muss nur eine Zeile programmieren) hat das auch deutliche Vorteile, wenn Elemente (Zeilen) zur Tabelle hinzukommen oder entfallen. Ich muss im Code nur die Liste ändern, siehe das oben angeführte Beispiel.
Hier die zugegebenermaßen kleine Tabelle, die der obige Code generiert:
AngularJS ist ein clientseitiges JavaScript-Webframework zur Erstellung von Single-Page-Webanwendungen nach einem Model-View-ViewModel-Muster.Es geht aus meiner Sicht auch nicht darum, etwas zu limitieren, sondern zu flexibilisieren, soll heißen, ich sollte Klein- und Großbuchstaben verwenden können.
Viele Grüße, jahnbes. -
@crunchip
Hallo crunchip, danke für Deine Antwort. Die ist interessant. Wie hast die die Alias angelegt? Ich habe es über den iobroker gemacht (Wie sonst?) und da kamen zwangsweise starre Gropßbuchstaben raus.
Jetzt bin ich mir nicht mehr sicher. Ich werde testen und mich melden.
Viele Grüße, jahnbes. -
@jahnbes Das kannst Du - dann musst Du die Alias Objekte selbst anlegen. Die grossbuchstaben werden die wuasi nur vorgegeben wenn du den "Devices" adapter nutzt, weil der das in seinen templates so definiert hat. könntest es so anlegen, dann aliase exportieren, löschen und im json File die Namen so anpassen wie Du es brauchst und wieder importieren (Weil ändern von Objekt-IDs geht nicht).
-
@jahnbes wie siehe Bild, mit dem alias Manager, der ist flexibler und meiner Meinung besser zu händeln
-
@crunchip Alias Manager geht auch - der nutzt keine/andere templates
-
@apollon77
Danke!!!!!!!!!!!
Hallo apollon77 und crunchip, mit Euren Hinweise und Eurer Zusprache von Mut hat es geklappt, ich habe jetzt die Alias in Kleinbuchstabenund mein ng-repeat funktioniert:
Der Weg, wie von Euch angeregt:
- Im iobroker unter "Geräte" das Alias erzeugen (noch in Grossbuchstaben).
- Unter "alias" das Objekt (noch mit Grossbuchstaben) "ändern".
- Dort links unten (roter Pfeil) auf "Erstellen Sie eine Kopie des Objektes.".
- Dem neuen Objekt einen Namen mit Kleinbuchstaben geben.
- Das alte Objekt mit den Grossbuchstaben löschen.
Klasse!
Vielen Dank und Gruß jahnbes.
-
@jahnbes Denke it dem json export gehts bei vielen noch schneller Aber hautptsache Du hast einen Weg der für dich funktioniert!
-
@apollon77
Mit dem alias-Manager geht es auch echt gut! -
Ich melde mich auch mal kurz mit einer Frage.
Meine Versuche klappen alle irgendwie nicht.
Quelldatenpunkt liefert 0 und 1.
Mein Alias soll false und true melden.Was wären Formeln fürs lesen und schreiben?
EDIT:
Habs geschafftval == 1 ? true : false val === true ? 1 : 0
-
-
Danke
Kurzes offtopic...
Ich hab gtad den Rechner an ^^.
Magst du mir mal kurz hier weiterhelfen?
https://forum.iobroker.net/topic/78608/bilder-mittels-llm-analysieren/10 -
@david-g sagte: hier weiterhelfen?
Davon habe ich keine Ahnung. Von wem stammt die Javascript-Funktion?
-
ChatGPT
In den Log bekomme ich was ich möchte. Hätte es aber gerne in den return für die Funktion.
-
Hallo zusammen,
ich meinte es ist mal über Vorlagen gesprochen worden, welche Änderungen an Instanzen vererben.
Leider finde ich dazu nichts (mehr).
Gibt es mittlerweile die Möglichkeit eine Master Alias zu erstellen und diesen dann zu instanziieren, so dass Änderungen des Master direkt in die Instanzen übernommen werden.
Analog zu den Adapter und deren Instanzen.Ich frage, da ich gerade 2 x 14 Geräte des gleichen Typs via Z-Wave einbinde. Dort eine Änderung, Anpassung nachzuführen ist doch sehr mühsam.
Danke
Stefan