NEWS
[geloest] Probleme mit cacheSelectorState functionsfilter
-
Servus
Habe jetzt schon seit stunden das Forum durchsucht, aber leider nicht spezifisches zu dem Filter functions gefunden.
Habe folgendes Problem, habe mehere Datenpunkte (Fenster,Türen,ToreStatus). alle nur erkennbar durch die Spalte Funktion (ich glaub es wird auch Gewerke ganannt)
laut den Beispielen hie, sollte es ja mit
var cacheSelectorState=('channel[state.id=*.state](functions="Fenster")')
funktionieren
was es aber bei mir nicht macht, habe auch schon den iobroker demöfteren rebootet, da laut beschreibung ja nur beim start vom iobroker die Datenpunkte eingelesen werden.
vorerst mal eine ganz simple Abfrage
var cacheSelectorState = $('channel[state.id=*](functions="Fenster")'); cacheSelectorState.each(function(id, i) { log('Name: '+id); });
ergebnis
! 18:15:27.167 [info] javascript.0 Stop script script.js.common.test
! 18:15:27.269 [info] javascript.0 Start javascript script.js.common.test
! 18:15:27.269 [info] javascript.0 script.js.common.test: registered 0 subscriptions and 0 scheduleswenn ich das functiongedöns weg lasse zeigt er mir alle Einträge an
wenn ich folgendes Script benutze
const here = $('javascript.0.Raum.*'); here.each(function(id, i) { log(id); });
zeigt er mir sauber alle DP unter Raum an, was mir aber leider nichts hilft, da ich die Filterung nach Funktion(Gewerke) benötige.
bin jetzt komplett ratlos was ich noch probieren könnte :?: :?: :?: :?:
-
Die Gewerke sind nicht Kanälen zugeordnet, sondern Datenpunkten. Dann versuche es mal so:
const fenster = $('state[id=*](functions=Fenster)');
Evtl. "Fenster" klein geschrieben, wenn die ID lautet "enum.functions.fenster".
-
Guten Morgen
genau das wars, Danke
muss ich immer den iobroker rebooten um die Objekte neu einzulesen oder gibt es auch andere möglichkeiten???
Gibt es dafür irgendwo ne Doku????
-
Gibt es dafür irgendwo ne Doku????
https://github.com/ioBroker/ioBroker.javascript/blob/master/doc/en/javascript.md.
-
genau das wars
Dann markiere bitte das Thema im Betreff des ersten Beitrags als [gelöst].
muss ich immer den iobroker rebooten um die Objekte neu einzulesen oder gibt es auch andere möglichkeiten???
Weshalb willst/musst Du welche Objekte neu einlesen ?
-
Weshalb willst/musst Du welche Objekte neu einlesen ? `
Für bestimmte Selektoren (mir fällt gerade nicht genau ein welche, glaube das betrifft vor allem Channels) werden die zugehörigen Objekte beim ersten Aufruf zwischengespeichert. Wenn sich während der Laufzeit des JS-Adapters daran etwas ändert (also neue Objekte hinzu kommen oder entfernt werden), bekommt dieser die Änderungen nicht mit.Wenn das eintritt, muss lediglich der Skript-Adapter neu gestartet werden, nicht der gesamte ioBroker!
-
Wenn sich während der Laufzeit des JS-Adapters daran etwas ändert (also neue Objekte hinzu kommen oder entfernt werden), bekommt dieser die Änderungen nicht mit.
Ja, ich kann mich erinnern, dass nach Änderungen in den enum-Zuweisungen die JS-Instanz neu gestartet werden muss.
-
Dachte nur, da, wenn ich etwas geändert habe (Gewerke oder ids) hat die Abfrage immer noch die alten Werte angezeigt