Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [GELÖST] state auslesen und state setzen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

[GELÖST] state auslesen und state setzen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 2 Kommentatoren 2.0k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • T Offline
    T Offline
    tomdeboom
    schrieb am zuletzt editiert von
    #1

    Hi,

    ich versuche mich gerade eine JS zu schreiben, ich möchte es irgendwann auch verstehen, die folgendes tun soll:

    1. Aus "dwd.0.warning.text" auslesen was da steht und mit z.B. obj.newState.val == "FROST" vergleichen.

    2. Wenn dies übereinstimmt, dann soll er einen Wert in ein neuen state schreiben.

    Mein Versuch:

    createState(idWarn, "", {type: 'string'});
    
    schedule('1 0 * * *', function()
    
    on('dwd.0.warning.text', function(obj) 
    { 
    if (obj.newState.val == "FROST") { setState("Warn","1"); } 
    if (obj.newState.val == "GLÄTTE") { setState("Warn","2"); } 
    if (obj.newState.val == "STURM") { setState("Warn","3"); } 
    }
    
    setState(idWarn, Warn);
    

    Gruß,

    Tom

    <size size="85">CCU2 | QNAP TVS-473 64GB | VM Lubunto iBroker | Echo 2\. Gen. | LAN/Wifi | 18 Geräte</size>

    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2
      const idWarn = 'DWD.Warnung';
      
      createState(idWarn, "", {type: 'string'});
      
      on('dwd.0.warning.text', function(obj) { 
         var Warn = "0";
         if (obj.newState.val == "FROST") Warn = "1";
         if (obj.newState.val == "GLÄTTE") Warn = "2";
         if (obj.newState.val == "STURM") Warn = "3";
         setState(idWarn, Warn, true);
      });
      
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Antwort Letzte Antwort
      0
      • T Offline
        T Offline
        tomdeboom
        schrieb am zuletzt editiert von
        #3

        Hi Paul,

        danke für das Script, aber es wird kein State geschrieben obwohl dwd.o.warning.text = FROST ist.

        Dann sollte doch unter Warn eine 1 stehen?

        Gruß,

        Tom

        <size size="85">CCU2 | QNAP TVS-473 64GB | VM Lubunto iBroker | Echo 2\. Gen. | LAN/Wifi | 18 Geräte</size>

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @tomdeboom:

          aber es wird kein State geschrieben obwohl dwd.o.warning.text = FROST ist. `
          Der Trigger reagiert nur auf Änderung des Inhalts des Datenpunktes 'dwd.0.warning.text'. Solange der Inhalt auf konstant "FROST" bleibt, passiert nichts. Wenn bei Skriptstart der Datenpunkt "javascript.0.DWD.Warnung" auch gesetzt werden soll, dann muss das Script erweitert werden.

          const idWarn = 'DWD.Warnung';
          const idText = 'dwd.0.warning.text';
          
          function setWarn(obj) {
             var Warn = "0";
             if (obj.newState.val == "FROST") Warn = "1";
             if (obj.newState.val == "GLÄTTE") Warn = "2";
             if (obj.newState.val == "STURM") Warn = "3";
             setState(idWarn, Warn, true);
          }
          
          createState(idWarn, "", {type: 'string'}, function() {
             var dp = getObject(idText);
             dp.newState = getState(idText);
             setWarn(dp);
          });
          
          on(idText, setWarn); // Triggert bei Wertänderung
          
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          0
          • paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #5

            Anmerkung: Gibt es einen Grund, weshalb Du den Ziel-Datenpunkt vom Typ "string" deklariert hast ? Typ "number" wäre naheliegender.

            Du benutzt die "veraltete" Eigenschaft newState, die zwar (aus dem Grund der Kompatibilität) gültig ist, aber schon seit einiger Zeit durchdie Eigenschaft state ersetzt wurde. In meiner Schreibweise benutze ich den Variablenbezeichner dp für Datenpunkte, die sämtliche Eigenschaften wie common, native, type, state und oldState enthalten. Deshalb modifiziere ich das letzte Script in diese Richtung:

            const idWarn = 'DWD.Warnung';
            const idText = 'dwd.0.warning.text';
            
            function setWarn(dp) {
               var Warn = 0;
               if (dp.state.val == "FROST") Warn = 1;
               if (dp.state.val == "GLÄTTE") Warn = 2;
               if (dp.state.val == "STURM") Warn = 3;
               setState(idWarn, Warn, true);
            }
            
            createState(idWarn, 0, {type: 'number'}, function() {
               var obj = getObject(idText);
               obj.state = getState(idText);
               setWarn(obj);
            });
            
            on(idText, setWarn); // Triggert bei Wertänderung
            
            

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            1 Antwort Letzte Antwort
            0
            • T Offline
              T Offline
              tomdeboom
              schrieb am zuletzt editiert von
              #6

              Guten Morgen Paul,

              erstmal, Danke, Danke und nochmal Danke.

              Der Grund warum ich den Typ "String" gewählt habe ist Copy&Paste…

              Ich versuche gerade endlich Javascript zu verstehen und zu Lernen und deswegen versuche ich mich an kleinen Scripts um zu verstehen wie sieh funktionieren.

              Es ist für mich sehr Hilfreich das du mir auch bestimmte Zustände erklärt hast, wie z.B. das der Datenpunkt erst Aktuallisiert wird wenn er geändert wird und mir aber auch aufzeigst wie mann dies erzwingen kann.

              Vielen Dank, da habe ich wieder etwas gelernt! :D

              Schöne Ostern und Gruß,

              Tom

              <size size="85">CCU2 | QNAP TVS-473 64GB | VM Lubunto iBroker | Echo 2\. Gen. | LAN/Wifi | 18 Geräte</size>

              1 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              656

              Online

              32.6k

              Benutzer

              82.3k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe