NEWS
Frage zu "getIdByName()
-
gestern Abend war das Brett vorm Kopf schon ziemlich dick


Ich möchte die Werte der beiden Datenpunkte der Funktion übergeben. Volume hier "56" und Dot ist "Echo-Buero".
Erst als ich testweise auch mit deiner Variante Warnung erhalten habe ist mir aufgefallen, dass der Namen des Echos-Dot nicht eindeutig ist.
Der kommt einmal unter "alexa2.0.Echo-Devices" und ein weiteres mal unter "alexa2.0.Smart-Home-Devices" vor.Schade - dann kann so nicht funktionieren. Bin mir auch unsicher, ob man den Namen unter "alexa2.0.Echo-Devices" manuell ändern kann - wird wahrscheinlich wieder überschrieben.
LG
ich bin leider immer noch mit dem Blockly zugange.
Kann es sein das Namen kein ASCII 45 (-) enthalten sollte?
"Echo-Schlafzimmer" führt zu State "undefined.Player.volume" not found
"EchoSchlafzimmer" hingegen funktioniert.
-
ich bin leider immer noch mit dem Blockly zugange.
Kann es sein das Namen kein ASCII 45 (-) enthalten sollte?
"Echo-Schlafzimmer" führt zu State "undefined.Player.volume" not found
"EchoSchlafzimmer" hingegen funktioniert.
-
@muetzeheinrich sagte: Kann es sein das Namen kein ASCII 45 (-) enthalten sollte?
Im Namen sind alle Zeichen möglich, das "-" sollte kein Problem sein.
.. habe es noch mal geprüft. Es ist wirklich so !
"Echo-Buero" führt zur Warnung "State "undefined.Player.volume" not found"
"EchoBuero" findet das Gerät und setzt volume. -
.. habe es noch mal geprüft. Es ist wirklich so !
"Echo-Buero" führt zur Warnung "State "undefined.Player.volume" not found"
"EchoBuero" findet das Gerät und setzt volume. -
@muetzeheinrich
Dann checke mal mit einem TestSkript, wenn der Name "Echo-Schlafzimmer" ist:log(getIdByName("Echo-Schlafzimmer"));@paul53 sagte in Frage zu "getIdByName():
log(getIdByName("Echo-Schlafzimmer"));
script.js.TEST.ss99: undefined
-
@paul53 sagte in Frage zu "getIdByName():
log(getIdByName("Echo-Schlafzimmer"));
script.js.TEST.ss99: undefined
-
@muetzeheinrich sagte: script.js.TEST.ss99: undefined
Das Objekt mit dem Namen "Echo-Schlafzimmer" existiert?
-
@muetzeheinrich
Komisch: Ich habe es gerade mit einem Device-Namen "Echo-Schlafzimmer" getestet und es funktioniert."das gibst doch nicht" war meine erste Reaktion! Irgendwo muss aber ein Unterschied sein ..
{ "from": "system.adapter.alexa2.0", "user": "system.user.admin", "ts": 1613250245358, "common": { "name": "Echo-Schlafzimmer", "read": true, "write": false, "icon": "icons/echo_dot3.png" }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "_id": "alexa2.0.Echo-Devices.G090Xxxxxxxxxxxxx", "type": "device" }log(getIdByName("Echo-Schlafzimmer")); erzeugt :
22:35:01.450 info javascript.0 (25703) script.js.TEST.ss99: undefinedich weis gerade nicht weiter .
-
"das gibst doch nicht" war meine erste Reaktion! Irgendwo muss aber ein Unterschied sein ..
{ "from": "system.adapter.alexa2.0", "user": "system.user.admin", "ts": 1613250245358, "common": { "name": "Echo-Schlafzimmer", "read": true, "write": false, "icon": "icons/echo_dot3.png" }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "_id": "alexa2.0.Echo-Devices.G090Xxxxxxxxxxxxx", "type": "device" }log(getIdByName("Echo-Schlafzimmer")); erzeugt :
22:35:01.450 info javascript.0 (25703) script.js.TEST.ss99: undefinedich weis gerade nicht weiter .
Versuch mit "EchoSchlafzimmer gibt die ID wieder..
25703) script.js.TEST.ss99: alexa2.0.Echo-Devices.G090XG1103xxxxxxx -
Versuch mit "EchoSchlafzimmer gibt die ID wieder..
25703) script.js.TEST.ss99: alexa2.0.Echo-Devices.G090XG1103xxxxxxx -
@muetzeheinrich sagte: Versuch mit "EchoSchlafzimmer gibt die ID wieder..
Starte mal nach Änderung in "Echo-Schlafzimmer" die Javascript-Instanz neu. Es ist offenbar ein Puffer-Problem.
@paul53 sagte in Frage zu "getIdByName():
Starte mal nach Änderung in "Echo-Schlafzimmer" die Javascript-Instanz neu.
javascript.0 2021-02-13 23:03:40.095 info (13206) script.js.TEST.ss99: registered 0 subscriptions and 0 schedules javascript.0 2021-02-13 23:03:40.094 info (13206) script.js.TEST.ss99: undefined javascript.0 2021-02-13 23:03:40.086 info (13206) Start javascript script.js.TEST.ss99 -
@paul53 sagte in Frage zu "getIdByName():
Starte mal nach Änderung in "Echo-Schlafzimmer" die Javascript-Instanz neu.
javascript.0 2021-02-13 23:03:40.095 info (13206) script.js.TEST.ss99: registered 0 subscriptions and 0 schedules javascript.0 2021-02-13 23:03:40.094 info (13206) script.js.TEST.ss99: undefined javascript.0 2021-02-13 23:03:40.086 info (13206) Start javascript script.js.TEST.ss99 -
@paul53 sagte in Frage zu "getIdByName():
Starte mal nach Änderung in "Echo-Schlafzimmer" die Javascript-Instanz neu.
javascript.0 2021-02-13 23:03:40.095 info (13206) script.js.TEST.ss99: registered 0 subscriptions and 0 schedules javascript.0 2021-02-13 23:03:40.094 info (13206) script.js.TEST.ss99: undefined javascript.0 2021-02-13 23:03:40.086 info (13206) Start javascript script.js.TEST.ss99@muetzeheinrich sagte: script.js.TEST.ss99: undefined
Mit?
log(getIdByName("Echo-Schlafzimmer"));Ich habe "Echo-Schlafzimmer" in "Aussen / Garten" geändert und erst nach Neustart der Javascript-Instanz funktionierte
log(getIdByName('Aussen / Garten')); -
@muetzeheinrich sagte: script.js.TEST.ss99: undefined
Mit?
log(getIdByName("Echo-Schlafzimmer"));Ich habe "Echo-Schlafzimmer" in "Aussen / Garten" geändert und erst nach Neustart der Javascript-Instanz funktionierte
log(getIdByName('Aussen / Garten'));! zuerst mal für vielen Dank für deine Zeit.
Es ist so, wie du es geschrieben hast. Wenn die Javascript-Instanz nach umbennen von Namen neu gestartet wird, dann klappt es. Vielleicht wird ein cache neu erzeugt - habe es heute noch ein paar mal hin und her probiert. Sehr wahrscheinlich habe gestern die falsche JS-Instanz neu gestartet.
Das löst leider mein ursprüngliches Problem der mehrfach vorkommenden Gerätenamen nicht. Ich habe nur wenig Javascript Kenntnis, für if then else reicht es aber :-) .
Mit Versuch und Irrtum ist nun diese Blockly-Funktion entstanden , vielleicht geht es auch sicherer / einfachervar arr = getIdByName(echodot); if (arr != null) { for (var i = 0; i < arr.length; i++) { if (arr[i].indexOf("Echo-Devices") > -1) { setState(arr[i] + '.Player.volume', volume) } } } else { log ("Echo nicht vorhanden") }
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden

