NEWS
[gelöst] Kann state nicht setzen
-
// gelöst durch update aller Adapter und reboot.
Hallo zusammen,
ich Mühe mich seit Stunden ab, einen State zu setzen.
Ich habe eine Oberfläche (einen POC), auf welcher ich mehrere Radiosender auf einem Musiccast Gerät abspiele: Der aktuell laufender Sender soll in einem Widget erkannt werden. Dazu habe ich für jeden Radiosender einen State angelegt und mit dem entsprechenden Widget verbunden (true/ false). Wenn ein Radiosender gewechselt wird (der aktuell laufender Sender steht im State musiccast.0.WX-010_026D5843.netusb.artist), dann werden alle boolean-Variablen auf false gesetzt (alle Widgets sind orange) und im weiteren Verlauf des Scriptes wird dann nur der eine Radiosender-state auf true gestellt, wodurch genau ein Widget auf grün sprint und den aktuellen Radiosender markiert.
Die VIS sieht aktuell so aus:

Das Problem, für den Radiosender WDR2 und NDR2 funktioniert die o.g. Logik. Der aktuelle Wert des switches stehen unten drunter.
Aber für den Radiosender EinsLive klappt das nicht. Man erkennt auch unter dem Widget, dass der state überaupt keinen Wert hat. Auch nach einem Wechsel des Radiosenders nimmt der state keinen Wert an, d.h. der state kann nicht gesetzt werden (so die erste Vermutung). Das folgende Script verwende ich dazu:
on({id: "musiccast.0.WX-010_026D5843.netusb.artist"/*artist*/}, function (obj) { // Neuen Namen des Radiosender bestimmen var newStation = obj.newState.val; console.log("New Station: " + newStation); // erstmal alle boolean variablen auf false setzen setStateDelayed("javascript.0.YamahaKueche_EinsLIVE"/*YamahaKueche_EinsLIVE*/, false ,false, 0, false); setStateDelayed("javascript.0.YamahaKueche_WDR2"/*YamahaKueche_WDR2*/, false ,false, 0, false); setStateDelayed("javascript.0.YamahaKueche_NDR2"/*YamahaKueche_NDR2*/, false ,false, 0, false); // Nun den neuen Radiosender auf true setzen switch(newStation) { case "1LIVE": setStateDelayed("javascript.0.YamahaKueche_EinsLIVE"/*YamahaKueche_EinsLIVE*/, true , false, 10, false); console.log("1Live ausgeführt"); break; case "WDR 2 Münsterland": setStateDelayed("javascript.0.YamahaKueche_WDR2"/*YamahaKueche_WDR2*/, true , false, 10, false); console.log("WDR2 ausgeführt"); break; case "NDR 2 (HH)": setStateDelayed("javascript.0.YamahaKueche_NDR2"/*YamahaKueche_NDR2*/, true , false, 10, false); console.log("NDR2 ausgeführt"); break; } });Der Log sieht wie folgt aus:
22:16:24.259 [info] javascript.0 script.js.common.cVIS.Translate_YamahaKuecheRadioStation: New Station: 1LIVE 22:16:24.260 [info] javascript.0 script.js.common.cVIS.Translate_YamahaKuecheRadioStation: 1Live ausgeführtHier noch die Definition von zwei states (vielleicht ist da etwas aufällig).
{ "common": { "name": "YamahaKueche_EinsLIVE", "type": "boolean", "role": "switch", "def": false, "read": true, "write": true }, "native": {}, "type": "state", "from": "system.adapter.javascript.0", "ts": 1541096910081, "_id": "javascript.0.YamahaKueche_EinsLIVE", "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 } }und
{ "common": { "def": false, "type": "boolean", "read": true, "write": true, "name": "YamahaKueche_WDR2", "role": "switch" }, "native": {}, "type": "state", "from": "system.adapter.javascript.0", "ts": 1541021681946, "_id": "javascript.0.YamahaKueche_WDR2", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }In der Objektübersicht sehe ich jedoch, dass der state einen Wert hat!!

Die Farbe der states wechselt zwischen rot und grün.
Das Widget habe ich bereits gelöscht und neu angelget, hat aber nix gebracht:

Daher habe ich keine IDee mehr, was ich jetzt noch tun könnte und bin auf eure Ratschläge gespannt. Im Kern sieht es so aus, dass das Widget mit der state nicht zurecht kommt.
Danke und Gruß,
Christian
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