Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Object als States speichern

    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

    Object als States speichern

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

      Hallo zusammen,

      ich habe mich dumm und dusselig gesucht, um ein js Object als States zu speichern.
      Mein Anwendungsfall ist die Berechnung einer Lüftungsempfehlung für meine Räume.
      Dabei möchte ich neben der Empfehlung auch die dazu verwendeten Werte speichern.

      Da ich nichts gefunden habe, habe ich ein kleines Snippet gecoded, welches ein Objekt mit primitiven Eigenschaften speichern kann. Dabei wird jede Eigenschaft als einzelner State gespeichert.

      function setObjectAsStates(path, obj){
          for (let key in obj) {
              if (obj.hasOwnProperty(key)) {
      
                  var id = `${path}.${key}`;
                  if(existsState(id)){
                      setState (id, obj[key], true);
                  }else{                           
                      createState(id, obj[key] ,
                      {
                          read:true,
                          write:true,
                          desc:"",
                          type: typeof obj[key]
                      });
                  }
              }
          }
      }
      
      //Anwendung
      const userState = '0_userdata.0'
      var path = `${userState}.testObject`;
      
      
      let calcResult = {
                      absulute_humidity_outside:0,
                      absulute_humidity_inside:0,
                      absulute_humidity_difference:0,
                      temperature_outside:0,
                      temperature_inside:0,
                      recommendationString:"",
                      recommendation:0,
                      dateString: date.toISOString(),
                      ts: date.getTime() / 1000
                  };
      
      setObjectAsStates(path, calcResult);   
      

      Ich hoffe damit kann ich jemanden helfen.

      Falls es eine elegantere Lösung gibt, bin ich für Vorschläge offen.

      Gruß
      Basti

      mcm1957 1 Reply Last reply Reply Quote 0
      • mcm1957
        mcm1957 @Sebastian Hesse last edited by

        @sebastian-hesse

        Hast du das gefunden / getestet:
        state type JSON
        Und Daten als stringified json ablegen

        https://github.com/ioBroker/ioBroker.docs/blob/master/docs/en/dev/objectsschema.md#state

        Kommt aber drauf an was du mit dem State machen willst ...

        Sebastian Hesse 1 Reply Last reply Reply Quote 0
        • Sebastian Hesse
          Sebastian Hesse @mcm1957 last edited by

          @mcm1957
          Danke, dass ist auch eine Idee.
          Ich probieren beides mal aus.
          Mal sehen wie sich das Auslesen in der UI anfühlt.

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

          Support us

          ioBroker
          Community Adapters
          Donate

          919
          Online

          31.8k
          Users

          80.0k
          Topics

          1.3m
          Posts

          javascript
          2
          3
          114
          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