NEWS
SOLVED [gelöst] Probleme mit Channel
-
moin,
um mir meine Fenster-Geräte auszugeben habe ich Folgendes probiert:
const myFenster = $('channel[state.id=*](functions="Fenster")'); myFenster.each(function(id, i) { var val = getObject(id).common.name; log(val); });
Ausgabe: nichts
const myFenster = $('channel[state.id=*]'); myFenster.each(function(id, i) { var val = getObject(id).common.name; log(val); });
also ohne die Einschränkung auf "Fenster" gibt mir alle Geräte aus. Natürlich habe ich mehrere Geräte mit der "Fenster" function.
Was mache ich falsch?
Danke,
a200.
-
Hallo,
es leuchtet nicht ein, aber du musst die Anführungszeichen um Fenster entfernen````
const myFenster = $('channelstate.id=*');
myFenster.each(function(id, i) {
var val = getObject(id).common.name;
log(val);
});Gruß Pix
-
@pix:Hallo,
es leuchtet nicht ein, aber du musst die Anführungszeichen um Fenster entfernen
Gruß
Pix `
Das habe ich auch versucht. Leider hilft es nicht. Das ist die Ausgangslage:
Aber sobald ich den Filter für Fenster mit gebe, bekomme ich keine Objekte mehr!Kann ich die functions eines Objekts ausgeben? Wenn ja wie?
Gibt es eine Definition von Channels zum nachlesen?
Danke
-
Es gibt keine Channels, deshalb
const myFenster = $('state[id=*](functions=Fenster)');
-
Es gibt keine Channels, deshalb
const myFenster = $('state[id=*](functions=Fenster)'); ```` `
Danke für deinen Tipp, aber es ist nicht die Lösung. Während
const myFenster = $('channel[state.id=opened]'); myFenster.each(function(id, i) { var val = getObject(id).common.name; log(val); });
mir folgende Ausgabe bringt:````
09:59:29.921 [info] javascript.0 script.js.test5.Skript4: Is open
09:59:29.921 [info] javascript.0 script.js.test5.Skript4: DG Rechts-R
09:59:29.922 [info] javascript.0 script.js.test5.Skript4: Is open
09:59:29.922 [info] javascript.0 script.js.test5.Skript4: DG Links-L
09:59:29.922 [info] javascript.0 script.js.test5.Skript4: DG Links-R
09:59:29.927 [info] javascript.0 script.js.test5.Skript4: Is open
09:59:29.927 [info] javascript.0 script.js.test5.Skript4: Is open
09:59:29.927 [info] javascript.0 script.js.test5.Skript4: registered 0 subscriptions and 0 schedulesund damit alle Kanäle findet. Liefert dein Vorschlag:```` const myFenster = $('state[id=*](functions=Fenster)'); myFenster.each(function(id, i) { var val = getObject(id).common.name; log(val); });
gar keine Ausgabe.
früher hatte ich (bedingt durch einen Fehler in einer älteren Version des Rega-Adapters) so komische Functions die $_Fenster oder ${Fester} oder so ähnlich. Diese habe ich aber irgendwann entfernt und habe nur 5 fest definierte Fenctios ohne Sonderzeichen in Namen. Kann da noch was im Argen liegen?
Danke für eure Unterstützung,
a200.
-
Lautet die ID enum.functions.fenster ? Dann muss "Fenster" klein geschrieben werden.
const myFenster = $('state[id=*](functions=fenster)');
-
Zeige mal den Reiter Aufzählungen/GEWERKE. Dann sieht man mehr.
-
Zeige mal den Reiter Aufzählungen/GEWERKE. Dann sieht man mehr. `
Gewerke habe ich nicht. das sind meine Functions,wie man es im SCreenshot sieht.
oder mache ich einen logischen Fehler ? -
Das sind eine ganze Menge Fenster. Sind das alles Zigbee-Geräte / Datenpunkte ?
Auf jedenfall sieht man, das im $Selector Kleinschreibung erfolgen muss. Für die Zigbee-Datenpunkte (Is open) muss es so funktionieren:
const myFenster = $('state[id=*](functions=fenster)');
-
Ich vermute, dass einige Fenster aus HomeMatic stammen ? Da in HomeMatic die Gewerke (=functions) den Kanälen zugeordnet werden, sind zwei unterschiedliche Selektoren erforderlich. Für HomeMatic:
const hmFenster = $('channel[state.id=*.STATE](functions=fenster)'); // HomeMatic
Falls die sinnvollen Namen den Geräten (Zigbee) bzw. den Kanälen (HomeMatic) vergeben sind, kann man sie so ermitteln:
const hmFenster = $('channel[state.id=*.STATE](functions=fenster)'); // HomeMatic const zbFenster = $('state[id=*](functions=fenster)'); // Zigbee function alleFenster(id, i) { var devid = id.substring(0, id.lastIndexOf('.')); var name = getObject(devid).common.name; log(name); } zbFenster.each(alleFenster); hmFenster.each(alleFenster);
-
Genial. So geht es!
Vielen herzlichen Dank. Jetzt kann ich weiter basteln!
-
So geht es! `
Dann markiere bitte das Thema im Betreff des ersten Beitrags als [gelöst]. -
Dann markiere bitte das Thema im Betreff des ersten Beitrags als [gelöst]. `
Done! Danke! -
@paul53 said in [gelöst] Probleme mit Channel:
Dann markiere bitte das Thema im Betreff des ersten Beitrags als [gelöst].
Mist, es ist doch noch nicht gelöst!
Bei mir laufen im Moment zwei ioBroker Instanzen. Die alte auf Raspi (bei der es geht) und eine neue auf QNAP bei der ich mit den gleichen Skripten Probleme habe. Also sollte es eher nicht am Skript liegen... Aber vielleicht hast du eine Idee, wo mein Denkfehler liegt?!
Hier die functions=fenster Zuweisung:
Hier der Datenpunkt:
Hier meine Abfrage:
const zbFenster = $('state[id=opened](functions=fenster)').each(function(id) { var dname = getObject(id).common.name; var mystat = getState(id).val; log(dname + " --> " + mystat); });
Ergebnis: Auf Raspi bekomme ich die Datenpunkte und die Zustände aufgelistet, beim QNAP nicht. Mir ist bewusst, dass nach dem Anlegen von neuen Aufzählungen der JS-Adapter durchgestartet werden muss. Ich habe sowohl den JS-Adapter, als auch die komplette ioBroker mehrmals durchgestartet, aber ich bekomme keinen einzigen Status angezeigt.
Vielleicht hast du eine Idee, was ich übersehen habe, denn am Skript kann es nicht liegen!
Danke.
-
@a200 said in [gelöst] Probleme mit Channel:
Vielleicht hast du eine Idee
Nein, nicht wirklich. Ich würde es mit modifiziertem Selektor versuchen.
const zbFenster = $('state[id=*.opened](functions=fenster)').each(function(id) { // oder const zbFenster = $('state[id=*](functions=fenster)').each(function(id) {
-
[gelöst]
@paul53 said in [gelöst] Probleme mit Channel:const zbFenster = $('stateid=*').each(function(id) {
Schade, aber das dachte ich mir schon. Das mit der Ferndiagnose ist so eine Sache...
Ich habe auch verschiedene Möglichkeiten ausprobiert.const zbFenster = $('state[id=opened]').each(function(id) {
geht, aber in dem Moment wo ich
(functions=fenster)
hinzufüge, bleibt der Selektor leer!
Trotzdem vielen Dank![Lösung]
Es war ein Problem mit dem 4er JS-Adapter. Mit 3.6.4 geht alles wie gewohnt.