NEWS
Fragen / Antworten rund um die neue Alias Funktion
-
@paul53 said in Fragen / Antworten rund um die neue Alias Funktion:
@asman-hm
Versuche es mal so:const test = $('*.STATE(functions=09BueroLicht)'); // test Lampen test.each(function(id, i) { log(id); });
Damit bekomme ich die STATES von Lampe und ALIAS angezeigt! Danke schonmal dafür.
In "meinem" Originalskript verwende ich folgenden Selektor:
var cacheSelectorState = $('channel[state.id=*.STATE](functions="09BueroLicht")');
Ich müssten den also wie folgt umbauen?
var cacheSelectorState = $('*.STATE(functions=09BueroLicht)');
Könnt Ihr mir auch noch den Unterschied erklären? Sorry, bin echt Anfänger und versuche durch probieren, lesen etc. zu lernen.
Vielen Dank euch beiden!
-
@asman-hm sagte:
Unterschied erklären?
Der ursprüngliche Selektor selektiert die Kanäle mit dem Gewerk. Da ein Kanal mehrere Datenpunkte haben kann, erfolgt außerdem noch die Einschränkung auf .STATE.
Wenn Du konsequent zu allen benötigten Datenpunkten einen Alias erstellst, bist Du nicht an die Endung .STATE gebunden und der Selektor sollte so aussehen:
const cacheSelector = $('alias.0.*(functions=09BueroLicht)');
-
@paul53 said in Fragen / Antworten rund um die neue Alias Funktion:
@asman-hm sagte:
Unterschied erklären?
Der ursprüngliche Selektor selektiert die Kanäle mit dem Gewerk. Da ein Kanal mehrere Datenpunkte haben kann, erfolgt außerdem noch die Einschränkung auf .STATE.
Ok, das verstehe ich. (glaube / hoffe ich)
Wenn Du konsequent zu allen benötigten Datenpunkten einen Alias erstellst, bist Du nicht an die Endung .STATE gebunden und der Selektor sollte so aussehen:
const cacheSelector = ('alias.0.*(functions=09BueroLicht)');
Ich habe meinen bisherigen Selektor durch den von dir vorgeschlagenen ausgetauscht...
Funktioniert! Danke! Danke!
Und jetzt kommt die letzte große Frage:
Wenn ich das richtig verstanden habe (und konsequent umsetzte), dann kann ich mir die Unterscheidung zwischen HUE und Homematic sparen. Homematic hat Endung "STATE" und HUE hat als Endung "on", weshalb meine bisherige Abfrage relativ komplex war.Mit Alias ist das aber jetzt egal, weil beide Systeme "true / false" als Wert haben und ich ja nicht mehr auf die Endung abfrage. Korrekt?
-
@asman-hm sagte:
Mit Alias ist das aber jetzt egal, weil beide Systeme "true / false" als Wert haben und ich ja nicht mehr auf die Endung abfrage. Korrekt?
Ja.
-
schau mal hier, da hatte ich schon den gleichen Gedanken, genau aus diesem Grund, nur habe ich bisher noch nicht für alle Geräte alias'e erstellt. Deshalb auch die Antwort von @paul53 unter diesem Post.
-
@dslraser said in Fragen / Antworten rund um die neue Alias Funktion:
schau mal hier, da hatte ich schon den gleichen Gedanken, genau aus diesem Grund, nur habe ich bisher noch nicht für alle Geräte alias'e erstellt. Deshalb auch die Antwort von @paul53 unter diesem Post.
Aus dem Thread hatte ich ja - dank dir - mein bisheriges Skript zum zählen der Lichter. Soweit runter bin ich beim lesen aber nicht gekommen
Habe soeben einen gemischten Raum (HUE + HM) umgebaut und es funktioniert.
Nachdem ich mich erst seit gut 2 Wochen mit iobroker beschäftige, bin ich noch fleissig am experimentieren. Ich probiere einfach alles aus, um sukzessive alle Funktionen von meiner Raspberrymatic umzuziehen.
Und beim experimentieren kam mir die nächste Frage:
Kann man denn den Selektor
const cacheSelector = ('alias.0.*(functions=09BueroLicht)');
so erweitern, dass man noch über den Raum filtern kann?
Natürlich falsch so, aber ich denke man versteht was ich suche:
const cacheSelector = (?IRGENDEIN RAUM?)('alias.0.*(functions=00HausLicht)');
Wenn das funktionieren würde, dann bräuchte ich nur noch eine einzige Aufzählung für alle Lampen, da ich beim ALIAS den Raum mitpflege.
Ich finde es super wie hilfsbereit hier alle sind!
-
@asman-hm
ich habe keine Räume eingerichtet, müsste ich mal probieren. -
@asman-hm sagte :
const cacheSelector = (?IRGENDEIN RAUM?)('alias.0.*(functions=00HausLicht)');
Ja, man kann auch zusätzlich den Raum selektieren (gerade getestet).
const cacheSelector = $('alias.0.*(functions=00HausLicht)(rooms=meinraum)');
-
@paul53 said in Fragen / Antworten rund um die neue Alias Funktion:
Ja, man kann auch zusätzlich den Raum selektieren (gerade getestet).
const cacheSelector = ('alias.0.*(functions=00HausLicht)(rooms=meinraum)');
Funktioniert! Du bist der Hammer, tausend Dank.
-
Sorry für die freche Frage aber der Fred ist echt schon ewig lang.
Gibt es jetzt ein Script mit dem ich automatisch von mir gewählte Datenpunkte als Aliase anlegen kann und werden dabei Konfigurationen wie Wertebereiche und Smartnamen übernommen? -
-
@paul53 Dankeschön!
Was mach ich falsch wenn der angelegte Alias de Ursprungs DP nicht schaltet? -
@Rushmed sagte:
der angelegte Alias de Ursprungs DP nicht schaltet?
Starte mal nach Alias-Erstellung die Admin-Instanz neu (nicht stoppen !).
-
@paul53 sagte in Fragen / Antworten rund um die neue Alias Funktion:
Starte mal nach Alias-Erstellung die Admin-Instanz neu (nicht stoppen !).
Macht es vielleicht Sinn das gleich im Script mit ein zu bauen ? Also alias ist erstellt, dann starte admin Instanz neu.
-
@dslraser sagte:
Macht es vielleicht Sinn das gleich im Script mit ein zu bauen ?
Nein, wenn man mehrere Alias erstellen will, möchte man nicht, dass jedesmal der Admin neu startet.
-
@paul53
ja, stimmt schon, dann aber vielleicht einen Hinweis/Kommentar im Script. -
@paul53 die Sache mit den Adapterneustarts nach Alias-Erstellung/Bearbeitung: wird das so bleiben oder ist das bekanntes Fehlverhalten an dem sich was ändern wird?
-
@Xyolyp sagte:
ist das bekanntes Fehlverhalten an dem sich was ändern wird?
Das ist offenbar ein bekanntes Puffer-Problem, das sich (hoffentlich) in einer der nächsten Versionen ändern wird.
-
@paul53 Danke
-
Hi, ich lese immer alias.0 Bei mir gibt es den DP-Ordner nicht.
Habe dann mal "iobroker setup costum ausgeführt:iobroker@iobroker:~$ iobroker setup costum object 0_userdata.0.example_state yet exists object 0_userdata.0 yet exists object alias.0 yet exists object system.certificates yet exists object system.repositories yet exists object system.config yet exists object enum.functions yet exists object enum.rooms yet exists object system.group.user yet exists object system.group.administrator yet exists object _design/system yet exists
Leider taucht der Ordner nicht auf: