NEWS
Frage zu DeviceCounter script [object Object]
-
@Archimedeus sagte:
d_list.push(roomsX.enumNames)//, functionsX.enumNames);
Ändere mal Zeile 37:
d_list.push(roomsX.enumNames[0]); //, functionsX.enumNames[0]);
EDIT: Besser noch Zeilen 29 bis 37 ändern in
var room = getObject(id,'rooms').enumNames[0]; if(!d_list.includes(room)) d_list.push(room);
-
@paul53 said in Frage zu DeviceCounter script [object Object]:
var room = getObject(id,'rooms').enumNames[0];
Leider keine Verbesserung:
Leider ist total jetzt auch 0, sollte 2 sein.
Wenn ich nur wüsste, was mir JS mit [object Object] sagen will. Ich vermute, dass ist ein komplexeres Objekt, auf das man nur richtig zugreifen muss.
Ich probiere es mal so:
mylist = getState("javascript.0.deviceCounter.lamps_on.list").val; log(mylist); for(var property in mylist) { log(property + "=" + mylist[property]); }
Laut Google: The default conversion from an object to string is "[object Object]".
Das Ergebnis ist kurios:
21.12.2020, 22:13:51.887 [info ]: javascript.0 (1891) Stop script script.js.common.Experimental.ListTest 21.12.2020, 22:13:52.041 [info ]: javascript.0 (1891) Start javascript script.js.common.Experimental.ListTest 21.12.2020, 22:13:52.065 [info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: [object Object] 21.12.2020, 22:13:52.065 [info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 0=[ 21.12.2020, 22:13:52.066 [info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 1=o 21.12.2020, 22:13:52.066 [info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 2=b 21.12.2020, 22:13:52.066 [info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 3=j 21.12.2020, 22:13:52.066 [info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 4=e 21.12.2020, 22:13:52.066 [info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 5=c 21.12.2020, 22:13:52.067 [info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 6=t 21.12.2020, 22:13:52.067 [info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 7= 21.12.2020, 22:13:52.067 [info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 8=O 21.12.2020, 22:13:52.067 [info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 9=b 21.12.2020, 22:13:52.067 [info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 10=j 21.12.2020, 22:13:52.068 [info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 11=e 21.12.2020, 22:13:52.068 [info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 12=c 21.12.2020, 22:13:52.068 [info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 13=t 21.12.2020, 22:13:52.068 [info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: 14=] 21.12.2020, 22:13:52.069 [info ]: javascript.0 (1891) script.js.common.Experimental.ListTest: registered 0 subscriptions and 0 schedules
-
@Archimedeus
Was sagt das Log (anstelle Zeile 41)?log(d_list);
@Archimedeus sagte in Frage zu DeviceCounter script [object Object]:
Leider ist total jetzt auch 0, sollte 2 sein.
An der Zählung (Zeile 39) hat sich nichts geändert ?
-
Ich bin etwas weiter.
var roomsX = getObject(id,'rooms');
Die Zeile gibt schon das object Obct. Grund ist, dass in der Aufzählung direkt die Endpunkte -POWER stehen. ID ist dann also sonoff.0.sonoff1.POWER Da drin ist natürlich kein .rooms drin. Ich muss den Aufruf anders machen. Habe jetzt in der Auzählung sonoff.0.sonoff1 und versuche es so:
addDeviceCounter("lamps_on",$('channel[id=state.*.POWER](functions=sonoff)'), true);
Tut aber nicht, findet keine Devices. Ich glaube ioch muss mal drüber schlafen. Hast mir geholfen. Man kämpft sich bit für bit voran.
-
@Archimedeus sagte in Frage zu DeviceCounter script [object Object]:
Tut aber nicht, findet keine Devices.
Versuche es mal so:
addDeviceCounter("lamps_on",$('sonoff.0.*.POWER'), true);
@Archimedeus sagte in Frage zu DeviceCounter script [object Object]:
Das Problem mit LOWBATT und LOW_BATT bei HM und HMIP hat der * gelöst
Das sind unterschiedliche Instanzen.
-
@paul53 said in Frage zu DeviceCounter script [object Object]:
addDeviceCounter("lamps_on",$('sonoff.0.*.POWER'), true);
Das findet alle devices in sonoff (auch die bridge) aber roomsX bleibt object Object.
Das andere
addDeviceCounter("battery_homematic",$('channel[state.id=hm-rpc.*.*.0.LOW*]'), true);
funktioniert wirklich. Er findet die LOW* aus beiden instanzen.
-
@Archimedeus sagte:
funktioniert wirklich. Er findet die LOW* aus beiden instanzen.
Jetzt ist auch keine Instanz angegeben. Der Selektor kann kürzer sein:
addDeviceCounter("battery_homematic",$('hm-rpc.*.0.LOW*'), true);
@Archimedeus sagte in Frage zu DeviceCounter script [object Object]:
aber roomsX bleibt object Object.
Welche Version des Javascript-Adapters ? Sind Räume zugeordnet ?
-
@paul53
4.8.4 und ja es sind Räume zugewiesen. Morgen klappts. bestimmt -
@Archimedeus
Habe nicht mehr daran gedacht: Raumname kann mehrsprachig sein. Deshalbvar room = getObject(id,'rooms').enumNames[0]; if(typeof room == 'object') room = room.de; if(!d_list.includes(room)) d_list.push(room);
-
@paul53 said in Frage zu DeviceCounter script [object Object]:
var room = getObject(id,'rooms').enumNames[0];
Schon besser. Problem: enumNames nimmt nur den ersten Raum. Deshalb stand im Original auch
d_list.push(rooms.enumNames)
und
setState(state_list, d_list.join('-'));Naja, eigentlich sollte ein Gerät auch nur in einem Raum sein...
-
@Archimedeus
Aber es tut, was es soll! Danke vielmals! -