NEWS
Datenpunkt als Channel erzeugen für selection
-
Hallo zusammen,
ich hätte da eine Frage zu selection.
Ich wollte einige Datenpunkte eine bestimmte Funktion geben (alles_false) und über alle Datenpunkte (Java, Hue, HM, usw) dort wo Funktion "alles_false" eingetragen ist ein false übergeben.
Nun hampel ich mit
$('channel[state.id=*](functions=alles_false)').each(function (id, i) {log(id);});
rum.
Wenn ich es richtig verstanden habe, dann sucht er doch in allen "channel" vom jeden Objekt nach allen state.id mit der Funktion alles_false und listet die auf.
Das funktioniert auch soweit, aber nur mit Objekten, die ein Channel besitzen.
Bei meine Javascript Progs mit createstate sind die Oberordner nur leider keine Channels.
Muss ich die zu einem Channel machen? oder kann ich das Filtern nach channel irgendwie abschalten, sodas er mir nur Funktionen und Räumen filter?
Gruß und Danke
-
Im Editor für den Datenpunkt kannst du den Type von "state" auf "channel" umschreiben. (Raw Editor im Datenpunkt)
"type": "state",
ändern in
"type": "channel",
Ob das allerdings mit dem Selector funktioniert kann ich nicht 100% sagen.. Da diese "Channel"-Geschichte eigentlich von Homematic kommt und die Gräte einzelne Kanäle untergeordnet haben..
Kannst es ja probieren.
Ansonsten kannst du zum Beispiel auch mit
var cacheSelectorallefalse = $("[id=javascript.0.alle_false.*]");
Alle Datenpunkte unter dem Punkt "javascript.0.alle_false" überwachen..
Nur als kleiner Hinweis.
Gruß
-
Uh das muss ich mal testen,
ich bin auch gerne bereit andere Wege zu gehen, morgen mal schauen ob es damit so funktioniert.
Aber den Überordner kann ich leider nicht auf Channel setzen, da ich den Editierstift nicht für den Ordner habe
Es muss aber irgendwie gehen, da der WM-Bus Adapter das auch kann und die Channel auch automatisch anlegt.
Besten Dank.
1241_bildschirmfoto_2017-10-26_um_16.53.37.png -
Anlegen kannst du die auch manuell.. Ordner im Objektbrowser anklicken, "+" drücken und Typ: "Kanal" wählen..
Du kannst sie auch durch ein Script erzeugen/ändern:
Im Javascript Adapter "setObject" aktivieren.
Dann im Script:setObject('ChannelName', {common: {name: 'ChannelName'}, type: 'channel'});
https://github.com/ioBroker/ioBroker.ja … #setobject
Gruß
-
ok, ich hätte dabei schreiben sollen, dass ich es aus einem Script erzeugen muss / will
Kennst du den Befehl dafür??
-
Habe in der Mittagspause nur schnell den Beitrag "überflogen".. Du hast ja geschrieben
"Bei meine Javascript Progs mit createstate sind die Oberordner nur leider keine Channels." ..
Siehe meinen editierten Beitrag oben drüber diesbezüglich.
Gruß
-
Ah, das habe ich gesucht
Morgen mal beide Varianten durchtesten, mal schauen womit ich flexibler bin
Besten Dank
-
Lang ist her, aber nun kann ich mich mit dem Problem wieder beschäftigen.
Ich habe da einiges ausprobiert, aber noch zu keiner Lösung gekommen.
Hier mal ein Beispiel
$('channel[state.id=*][role=javascript]').each(function (id, i) { console.log(" gefunden wurde: " + id); log("gefilter"); });
Damit kann ich alle Datenpunkte finden, die die Rolle javascript besitzen. Bei mir sind das alle Datenpunkte aus dem Betriebsstundenzähler (Danke Looxer01).
Jedoch habe ich auch einige Datenpunkte, die aus meinen Scripten erzeugt werden und genau die werden nicht aufgelistet, nur ich weiß nicht warum.
Ist es möglich, mir die ID zurückgeben zu lassen, wenn ich nur nach Raum oder Funktion oder Rolle oder auch alle 3 zusammen filter? Oder ist es so nicht möglich. Ist vielleicht die Baumstruktur meiner erzeugten Datenpunkte aus den Scripten falsch?
Hat das einen Grund, warum die Filterfunktionen mal mit () gemacht werden für room, {} für type, [] role???
Das $('state
oder auch $('channel
was bewirkt das?
Gruß und vielen Dank.