NEWS
$-Selector mit "functions=" liefert zu viele Kanäle
-
Moin,
ich versuche mich gerade auch am ioBroker. Komme so langsam etwas rein, auch wenn ich mich echt noch orientieren muss.
Ich habe mich zuerst am "Licht zählen"-Skript versucht.
Ich verstehe die Rückgabe des $-Selectors bei meinem Test-Homematic-Zwischenstecker nicht.
Es werden auch die virtuellen? Kanäle 4+5 zurückgegeben, obwohl bei diesen "functions="funcLight" nicht gesetzt ist?
Test-Skript mit entsprechender Log-Meldung:
function testFunctionsFilter( obj) { $('state[id=*.STATE](functions="funcLight")[role=switch]').each( function( id, i){ var status = getState( id).val; var obj = getObject( id); log( obj.common.name); }); } function main() { setTimeout( function(){ testFunctionsFilter( ); }, 2000); } main(); --------- Log 18:50:55.080 [info] javascript.0 Stop script script.js.common.test_functionsFilter 18:50:56.301 [info] javascript.0 Start javascript script.js.common.test_functionsFilter 18:50:56.301 [info] javascript.0 script.js.common.test_functionsFilter: registered 0 subscriptions and 0 schedules 18:50:58.345 [info] javascript.0 script.js.common.test_functionsFilter: Wohnzimmer.Zwischenstecker:3.STATE 18:50:58.346 [info] javascript.0 script.js.common.test_functionsFilter: Wohnzimmer.Zwischenstecker:4.STATE 18:50:58.348 [info] javascript.0 script.js.common.test_functionsFilter: Wohnzimmer.Zwischenstecker:5.STATE ------
Hab ich da eine Denkfehler?
Danke
raller09
-
funcLight ist einem Kanal zugeordenet. Deshalb versuche es mal mit
$('channel[id=*.STATE](functions="funcLight")[role=switch]').each( function( id, i){
-
funcLight ist einem Kanal zugeordenet. Deshalb versuche es mal mit
$('channel[id=*.STATE](functions="funcLight")[role=switch]').each( function( id, i){ ```` `
Damit wird bei mir nichts gefunden.
Ich gestehe, das mir die Unterscheidung channel/state und Namensgebung in ioBroker noch nicht ganz klar ist.
Danke,
raller09
-
Damit wird bei mir nichts gefunden. `
Und so ?$('channel[id=*.STATE](functions="funcLight")').each( function( id, i){
Stimmt die Schreibweise "funcLight" ? Das ist der Name des Gewerkes, entscheidend ist aber die ID "enum.functions.funcLight" !
-
Und so ?
$('channel[id=*.STATE](functions="funcLight")').each( function( id, i){ ```` `
auch nichts.
"[role=switch]" hatte ich dazu genommen, da sonst auch der Kanal? "Wohnzimmer.Zwischenstecker:2.STATE" mit gefunden wird. Dieser wird auch beim Umschalten von ":3" einen kurzen Moment auf den gleichen Wert mit geschaltet.
Stimmt die Schreibweise "funcLight" ? Das ist der Name des Gewerkes, entscheidend ist aber die ID "enum.functions.funcLight" ! `
Ich denke, hier mal die "enum.functions":
Danke,
raller09
-
auch nichts. `
?? Bei mir funktioniert es so:const hmLicht = $('channel[state.id=*.STATE](functions=funcLight)'); hmLicht.each(function(id, i) { log(id); });
funcLight ist <u>einem</u> Kanal zugeordnet.
Welche Version des JS-Adapters ?
-
Moin,
ich habe bei mir den Enum-Namen nach der Lektüre zur Heizungs-Steuerung angepasst (weil das anscheinend dort zu Problemen führen kann), und die englischen "Spezial-Namen" durch ihre deutsche Übersetzung ersetzt (von rega neu einlesen lassen). Danach habe ich auch noch einmal den gesamten rpi neu gestartet.
Daher muss ich jetzt "functions=Licht" benutzen.
?? Bei mir funktioniert es so:
const hmLicht = $('channel[state.id=*.STATE](functions=funcLight)'); hmLicht.each(function(id, i) { log(id); }); ```` `
Dein alter Aufruf mit "$('channelid=*.STATE')" hat nicht funktioniert.
Dein neuer Aufruf mit "$('channelstate.id=*.STATE')" führt bei mir zu folgendem Ergebnis:
Log 22:39:58.013 [info] javascript.0 Stop script script.js.common.test_functionsFilter 22:39:58.024 [info] javascript.0 Start javascript script.js.common.test_functionsFilter 22:39:58.024 [info] javascript.0 script.js.common.test_functionsFilter: registered 0 subscriptions and 0 schedules 22:40:00.123 [info] javascript.0 script.js.common.test_functionsFilter: Wohnzimmer.Zwischenstecker:2.STATE 22:40:00.123 [info] javascript.0 script.js.common.test_functionsFilter: Wohnzimmer.Zwischenstecker:3.STATE 22:40:00.123 [info] javascript.0 script.js.common.test_functionsFilter: Wohnzimmer.Zwischenstecker:4.STATE 22:40:00.123 [info] javascript.0 script.js.common.test_functionsFilter: Wohnzimmer.Zwischenstecker:5.STATE
Er findet jetzt ja also das Gewerk "Licht" bei den virtuellen? Kanälen ? :2 - :5, obwohl ich das nur bei :3 eingetragen habe?
funcLight ist <u>einem</u> Kanal zugeordnet. `
Das verstehe ich jetzt nicht. Was meinst du damit?
Welche Version des JS-Adapters ? `
Script Engine - Installierte Version: 3.6.4
Danke,
raller09
-
Script Engine - Installierte Version: 3.6.4 `
Diese Version verwende ich auch.
@raller09:"$('channelstate.id=*.STATE')" führt bei mir zu folgendem Ergebnis: `
Sehr eigenartig :shock: Das kann ich bei mir nicht nachvollziehen:Wenn ich das Gewerk nur einem Kanal zuordne, erhalte ich einen Datenpunkt, bei Zuordnung zu 2 Kanälen erhalte ich 2.
-
Bei mir tritt das auch auf. Hast Du inzwischen eine Lösung gefunden?
Mein Fall:
Ich selektiere mit:
$("state[state.id=*.LEVEL](functions='Licht')").each(function(id,i) {
…alle Lichter.
Es geht dabei ausschließlich um Homematik-Geräte
Seit dem Letzten Update des HM-RPC Adapters auf 1.9.2 tritt das Problem bei allen alten (nicht IP) Dimmern auf:
2019-01-24 16:51:32.544 - info: javascript.0 script.js.common.Licht_An_Aus: LichtSchalten_ID:hm-rpc.2.JEQ0200834.1.LEVEL name:WZ-Decke-Dimmer:1.LEVEL parentDevicelId: hm-rpc.2.JEQ0200834 Gewerk: Licht Raum: Wohnzimmer
2019-01-24 16:51:32.546 - info: javascript.0 script.js.common.Licht_An_Aus: LichtSchalten_ID:hm-rpc.2.JEQ0200834.2.LEVEL name:HM-LC-Dim1TPBU-FM JEQ0200834:2.LEVEL parentDevicelId: hm-rpc.2.JEQ0200834 Gewerk: Licht Raum: Wohnzimmer
2019-01-24 16:51:32.549 - info: javascript.0 script.js.common.Licht_An_Aus: LichtSchalten_ID:hm-rpc.2.JEQ0200834.3.LEVEL name:HM-LC-Dim1TPBU-FM JEQ0200834:3.LEVEL parentDevicelId: hm-rpc.2.JEQ0200834 Gewerk: Licht Raum: Wohnzimmer
hm-rpc.2.JEQ0200834.2.LEVEL und hm-rpc.2.JEQ0200834.3.LEVEL sind aber nicht "Licht" zugeordnet.
Es werden aber auch Kanäle zurückgegeben die nicht dem Gewerk "Licht" zugeordnet sind.
In der Admin tauchen die Kanäle nicht unter den Aufzählungen bei "licht" auf.
Auch unter den "Objekten" in der Admin nicht.
Ich habe das Gerät auch schon komplett gelöscht und wieder angelegt. Ohne Erfolg.
Irgend welche Ideen?