NEWS
Yahka script mit array geht nicht mehr...
-
Bis vor kurzem habe ich die ChannelListe, die von meinem Sonos als array ([ "BR1","BR2", ...]) ausgegeben wird, ganz einfach in einem script in yahka dafür genutzt die einzelnen Kanäle in der HOME-App anzuzeigen und auszuwählen. Aber jetzt funktioniert das plötzlich nicht mehr. Anstelle des entsprechenden Listeneintrags wir jetzt nur noch der entsprechende Buchstabe in Reihenfolge des states ausgegeben. Also bei dem Beispiel oben [ "BR1","BR2", ...] kommt bei dem Aufruf "return value[5];" der Buchstabe "1" und nicht der 5. Listeneintrag so wie früher.
Ich kann mich nicht erinnern ein yakah update gemacht zu haben, nach dem es nicht mehr funktionierte. Kann das auch mit dem JavaScript-Adapter zusammenhängen? Dafür gab es glaube ich ein update...
Ich hab' schon ziemlich viel herumprobiert und absolut keine Lösung dafür gefunden.
Hat nicht von euch jemand eine Idee, ob hier was geändert wurde oder wie ich die Listeneiträge wieder korrekt anzeigen kann? -
@villarriba der State kann kein Array mehr beinhalten, sondern nur eine Zeichenkette. Wenn du den 2. Eintrag eines Arrays haben willst musst du das Array erst aus dem String erzeugen.
A.
-
@asgothian
Ok, ich dachte ein Array IST eine Zeichenkette mit entsprechenden Trennzeichen für die einzelnen Werte. ["0","1","2",...]Hast du eine Idee wie ich das dann umsetzen könnte?
Das müsste ja dann in Yahka ein script sein, denn nach deiner Aussage kann ich keinen State mit einem Array anlegen und in Yahka aufrufen.Ich frag' mich nur, warum es vorher funktioniert hat und jetzt nicht mehr?!?
Vielleicht nehme ich mal eine frühere Javascript-adapter-version.... könnte das was mit dem Update zu tun haben?! -
@villarriba Das hat etwas mit dem JS-Controller, nicht dem JavaScript adapter zu tun.
Es einen Unterschied zwischen
'["a","b","c"'
und["a","b","c"]
Das erste ist ein Array als Zeichenkette dargestellt, das 2. ist ein Array.
Seit dem Wechsel auf JS-Controller 3.3 (meine ich) sind in den Datenpunkten keine Objekte mehr erlaubt. Da in JS ein Array als Objekt verwaltet wird macht der JS-Controller bzw. der Adapter der das speichert daraus eine Zeichenkette.
Du kannst versuchen ob du statt
return value[5]
mit
return JSON.parse(value)[5]
arbeiten kannst.
A.
-
@asgothian
Allererste Sahne!! Funktioniert!Lösung:
return JSON.parse(value)[x];
Super, danke für die gute Erklärung und die Hilfe!