Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Kann state nicht setzen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Kann state nicht setzen

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      fischmir last edited by

      // 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:

      804_1.png

      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ührt
      

      Hier 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!!

      804_2.png

      Die Farbe der states wechselt zwischen rot und grün.

      Das Widget habe ich bereits gelöscht und neu angelget, hat aber nix gebracht:

      804_3.png

      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

      1 Reply Last reply Reply Quote 0
      • F
        fischmir last edited by

        Nachdem ich einfach mal alle Adapter aktualisiert habe und zwei mal neu gestartet habe, fuktioniert es nun.

        Gruß,

        Christian

        1 Reply Last reply Reply Quote 0
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        705
        Online

        31.7k
        Users

        79.9k
        Topics

        1.3m
        Posts

        1
        2
        701
        Loading More Posts
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes
        Reply
        • Reply as topic
        Log in to reply
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
        The ioBroker Community 2014-2023
        logo