NEWS
Fragen / Antworten rund um die neue Alias Funktion
-
@cdn sagte in Fragen / Antworten rund um die neue Alias Funktion:
klappt
Was klappt? Das zuletzt gezeigte generische Script mit dem Selektor?
Hast Du dort diedescription
passend hinterlegt?
Gibt's eine Fehlermeldung?
Klappt das, wenn Du in den Ziel-DP manuell eine0
einträgst? -
@codierknecht
Das Skript mit dem Selektro klappt. Keine Fehlermeldung. Wenn ich per Hand eine 0 eintrage klappt es.EDIT: Klappt nun. Da war noch eine Funktion hinterlegt. Super Dann mache ich jetzt mal an die Arbeit!
-
@codierknecht Danke dir nochmal für deine Hilfe!
-
@cdn
Gerne. Viel Erfolg! -
Habe auch mal eine kleine Frage zum Alias.
Kann man damit "nur" Zahlen konvertieren?Hab jetzt schon einige Varianten versucht um einen bool in einen Text zu übersetzen, aber er meckert immer an, dass das Ergebnis keine Nummer ist.
-
@david-g sagte: meckert immer an, dass das Ergebnis keine Nummer ist.
Dann ist der Alias vom Typ "Zahl", was auf jeden Fall falsch ist.
Du willst den "WINDOW_STATE" schreiben? -
Glaube war wirklich in der falschen Zeile.
Bei lesen muss ich vermutlich hin?Ich möchte, dass ich anstatt true = offen und anstatt false = geschlossen im. DP habe.
Also eher so
Alias habe ich ja viele, aber noch nie was konvertiert...
Edit
Jetzt hab ich den nochmal neu angelegt.
Meckert nicht, im. DP steht aber immer die Formel.{ "type": "state", "common": { "name": "Koverttest", "role": "value.window", "type": "string", "max": 1, "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": 1709923236321 }
-
@david-g
Versuche es mal so:val == true ? "an" : "aus"
-
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.