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. Über SetState geänderte Werte werden auf dem objects-Tab nicht korrekt angezeigt

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.4k

Über SetState geänderte Werte werden auf dem objects-Tab nicht korrekt angezeigt

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
3 Beiträge 1 Kommentatoren 491 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
    Thorsten
    schrieb am zuletzt editiert von
    #1

    Ich teste gerade ein Java-Skript mit dem ich den Status von Hue/Tradfri Lampen abfrage und in Objekten in der Javascript-Instanz speichere. Dazu habe ich zunächst über

    createState("thorstd.E27_Wohnz_1", 0, {read: true, 
                              write: true, 
                              desc: "Lampe 1 Wohnzimmer", 
                              type: "number"
        });
    

    einen 'State' angelegt. Wenn das Skript erkennt daß eine Lampe an ist und der gespeicherte Status 0 ist (über GetState() ausgelesen) dann wird die aktuelle Uhrzeit mit SetState() gespeichert. Erkennt das Skript daß eine Lampe aus ist und der gespeicherte Status ist nicht 0 (ebenfalls über GetState() ausgelesen) dann setze ich den Status über SetState() auf 0.

    Das Skript funktioniert soweit einwandfrei. Da ich in jedem der if/else-Blöcke console.log verwende sehe ich, daß der Status korrekt erkannt und SetState() aufgerufen wurde. Hier die Ausgabe:

    19:07:20.651	[info]	javascript.0 script.js.common.Skript4: Lampe ist aus
    19:07:25.649	[info]	javascript.0 script.js.common.Skript4: Lampe ist aus
    19:07:30.647	[info]	javascript.0 script.js.common.Skript4: Lampe ist aus
    19:07:35.651	[info]	javascript.0 script.js.common.Skript4: Sichere Einschaltzeit
    19:07:45.649	[info]	javascript.0 script.js.common.Skript4: Einschaltdauer 4
    19:07:50.650	[info]	javascript.0 script.js.common.Skript4: Einschaltdauer 9
    19:07:55.649	[info]	javascript.0 script.js.common.Skript4: Einschaltdauer 14
    19:08:00.649	[info]	javascript.0 script.js.common.Skript4: Einschaltdauer 19
    19:08:05.649	[info]	javascript.0 script.js.common.Skript4: Einschaltdauer 24
    19:08:10.648	[info]	javascript.0 script.js.common.Skript4: Lampe ist aus
    19:08:10.648	[info]	javascript.0 script.js.common.Skript4: Setze Einschaltzeit auf 0
    19:08:15.652	[info]	javascript.0 script.js.common.Skript4: Lampe ist aus
    19:08:20.649	[info]	javascript.0 script.js.common.Skript4: Lampe ist aus
    19:08:25.649	[info]	javascript.0 script.js.common.Skript4: Lampe ist aus
    19:08:26.643	[info]	javascript.0 Stop script script.js.common.Skript4
    

    Das Problem ist nur, daß der Wert für das Statusobjekt auf dem Tab Objekte (meist) nicht korrekt angezeigt wird. Ist die Lampe aus und lt. Skript wurde die Einschaltzeit auf 0 gesetzt zeigt das Objekt immer noch die Einschaltzeit (bzw. umgekehrt). Siehe Bildschirmphoto.

    Mache ich hier etwas falsch oder laufe ich in einen Bug?

    function ManageLight(lamp)
    {
      var name_saved_state_lamp = "javascript.0.thorstd." + lamp; 
      var name_lamp             = "deconz.0.RaspBee-GW." + lamp;
    
      if (getState(name_lamp + ".on").val === true)
      {
        // Lampe ist an
        // console.log('Lampe ist an');
    
        if (getState(name_saved_state_lamp).val === 0) 
        {
          console.log('Sichere Einschaltzeit');
          setState(name_saved_state_lamp, new Date().getTime());
        } 
        else
        {
          // Prüfe wie lange die Lampe schon an ist
    
          var y2 = getState(name_saved_state_lamp).val;
          console.log((String('Einschaltdauer ') + String((function () {var v = getDateObject(((new Date().getTime()) - y2)); return v.getHours() * 3600 + v.getMinutes() * 60 + v.getSeconds();})())));
        }
      } 
      else 
      {
        // Lampe ist aus, also Statusobjekt auf 0 setzen
        console.log('Lampe ist aus');
    
        if (getState(name_saved_state_lamp).val !== 0) 
        {
          console.log("Setze Einschaltzeit auf 0")
          setState(name_saved_state_lamp, 0, true)
        }
      }
    }
    // Einschaltdauer speichern
    schedule("*/5 * * * * *", function () 
    {
      ManageLight("E27_Wohnz_1");
      // ManageLight("E27_Wohnz_2");
    }
    );
    

    3296_iobroker1.jpg

    1 Antwort Letzte Antwort
    0
    • T Offline
      T Offline
      Thorsten
      schrieb am zuletzt editiert von
      #2

      Niemand? :cry:

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

        Ich hab die Lösung:

        setState(name_saved_state_lamp, new Date().getTime());
        

        funktioniert nicht. Hier liefert getState() zwar den korrekten Wert zurück, aber auf dem objects-Tab wird der geänderte Wert nicht angezeigt. Wenn ich aber Datum/Zeit nach Int konvertiere

        setState(name_saved_state_lamp, parseInt(new Date().getTime()));
        

        funktioniert es. <size size="150">Warum?</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

        591

        Online

        32.4k

        Benutzer

        81.5k

        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