Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. setState mit eigenem Kennzeichen versehen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    setState mit eigenem Kennzeichen versehen

    This topic has been deleted. Only users with topic management privileges can see it.
    • hanss
      hanss @paul53 last edited by

      @paul53
      Ich kriegs einfach nicht hin.
      Wann verwendet man denn getState und getObject?

      createState("javascript.0.zigbee.0.Test", {    
                  name: "objekt",
                  type: 'object',
          });
      
      var Alarm = {
         Wert: 0,
         Last: ''
      };
      
      Alarm.Wert = 5
      Alarm.Last = "Heizung"
      setState("javascript.0.zigbee.0.Test", Alarm)
      
      Alarm = getObject("javascript.0.zigbee.0.Test")
      var x = Alarm.Wert
      var y = Alarm.Last
      
      log("Lesen- Wert: " + x + " Last: "+y)
      
      paul53 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @hanss last edited by

        @hanss
        createState() und setState() arbeiten asynchron, was bedeutet, dass man nicht sofort den Wert mit getState() einlesen kann. Man erhält den "alten" Wert.

        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @hanss last edited by paul53

          @hanss sagte:

          Alarm = getObject("javascript.0.zigbee.0.Test")

          ist falsch. Richtig:

          Alarm = getState("javascript.0.zigbee.0.Test").val;
          

          Besser:

          on("javascript.0.zigbee.0.Test", function(dp) {
             Alarm = dp.state.val;
             log("Lesen- Wert: " + Alarm.Wert + " Last: " + Alarm.Last);
          });
          
          hanss 1 Reply Last reply Reply Quote 0
          • hanss
            hanss @paul53 last edited by

            @paul53 sagte in setState mit eigenem Kennzeichen versehen:

            @hanss sagte:

            Alarm = getObject("javascript.0.zigbee.0.Test")

            ist falsch. Richtig:

            Alarm = getState("javascript.0.zigbee.0.Test").val;
            

            Und wie erhalte ich dann:
            var x = Alarm.Wert // Fehlermeldung

            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @hanss last edited by

              @hanss sagte:

              Und wie erhalte ich dann:
              var x = Alarm.Wert // Fehlermeldung

              Genau so. Bringt der Compiler eine Fehlermeldung, Javascript zur Laufzeit oder der Editor ? Eine rote Wellenlinie im Editor kannst Du ignorieren.

              hanss 1 Reply Last reply Reply Quote 0
              • hanss
                hanss @paul53 last edited by hanss

                @paul53
                zur Laufzeit: TypeError: Cannot read property 'Wert' of null

                Es ist auch im Objekt nichts von Alarm oder Wert oder Last eingetragen:

                {
                  "common": {
                    "name": "objekt",
                    "type": "object",
                    "unit": "",
                    "role": "state"
                  },
                  "native": {},
                  "type": "state",
                  "from": "system.adapter.javascript.0",
                  "user": "system.user.admin",
                  "ts": 1584874455228,
                  "_id": "javascript.0.zigbee.0.Test",
                  "acl": {
                    "object": 1636,
                    "state": 1636,
                    "owner": "system.user.admin",
                    "ownerGroup": "system.group.administrator"
                  }
                }
                
                paul53 2 Replies Last reply Reply Quote 0
                • paul53
                  paul53 @hanss last edited by paul53

                  @hanss sagte:

                  Cannot read property 'Wert' of null

                  Nach einem 2. Script-Start sollte der Fehler nicht mehr kommen, da dann setState() den Wert geschrieben hat.

                  Script_temp.JPG

                  hanss 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @hanss last edited by

                    @hanss sagte:

                    Es ist auch im Objekt nichts von Alarm oder Wert oder Last eingetragen:

                    Das darf auch nicht im statischen Objekt erscheinen, sondern im Zustand (state) des Datenpunktes.

                    1 Reply Last reply Reply Quote 0
                    • hanss
                      hanss @paul53 last edited by

                      @paul53

                      Egal wie oft ich dieses Script starte, der Fehler erscheint immer:

                      createState("javascript.0.zigbee.0.Test", {    
                                  name: "objekt",
                                  type: 'object',
                          });
                      
                      var Alarm = {
                         Wert: 0,
                         Last: ''
                      };
                      
                      Alarm.Wert = 4
                      Alarm.Last = "Heizung"
                      setState("javascript.0.zigbee.0.Test", Alarm)
                      
                      Alarm = getState("javascript.0.zigbee.0.Test").val;
                      
                      var x = Alarm.Wert
                      var y = Alarm.Last
                      
                      log("Lesen-Wert: " + x + " Last: "+y)
                      
                      paul53 2 Replies Last reply Reply Quote 0
                      • paul53
                        paul53 @hanss last edited by

                        @hanss sagte:

                        Egal wie oft ich dieses Script starte, der Fehler erscheint immer:

                        Das Script läuft unter der Instanz javascript.0 ?

                        hanss 1 Reply Last reply Reply Quote 0
                        • hanss
                          hanss @paul53 last edited by

                          @paul53
                          Jawohl

                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @hanss last edited by

                            @hanss
                            Welche Javascript-Version ?

                            hanss 1 Reply Last reply Reply Quote 0
                            • OliverIO
                              OliverIO last edited by OliverIO

                              Wenn du der einzige bist, der den State beschreibt, dann schreib doch einfach Ein JSON Objekt mit zwei Attributen rein (Value und Source)
                              Dann musst du nicht so viel rum experimentieren

                              1 Reply Last reply Reply Quote 0
                              • hanss
                                hanss @paul53 last edited by

                                @paul53
                                Node.js: v10.19.0 Script Engine 4.4.3

                                paul53 1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @hanss last edited by

                                  @hanss sagte:

                                  Node.js: v10.19.0 Script Engine 4.4.3

                                  Damit muss es funktionieren so wie mit meiner Version 4.4.0.

                                  hanss 1 Reply Last reply Reply Quote 0
                                  • hanss
                                    hanss @paul53 last edited by hanss

                                    @paul53
                                    Könntest Du freundlicherweise einmal das Script von oben einmal bei Dir laufen lassen?
                                    (Egal wie oft ich dieses Script starte, der Fehler erscheint immer:)

                                    Jetzt funktionierts, ich weis aber nicht warum, ich habe nur die Kommentare aus dem
                                    Script gelöscht.

                                    Vielen, vielen Dank.

                                    1 Reply Last reply Reply Quote 0
                                    • paul53
                                      paul53 @hanss last edited by

                                      @hanss sagte:

                                      setState("javascript.0.zigbee.0.Test", Alarm)

                                      Hat auch bei mir nicht funktioniert.

                                      setState("javascript.0.zigbee.0.Test", Alarm, true);
                                      

                                      funktioniert.

                                      hanss 1 Reply Last reply Reply Quote 0
                                      • hanss
                                        hanss @paul53 last edited by

                                        @paul53
                                        Du hast recht, das true macht´s aus.
                                        Mann, da war die MSBasic Syntax ja richtig einfach dagegen.

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate
                                        FAQ Cloud / IOT
                                        HowTo: Node.js-Update
                                        HowTo: Backup/Restore
                                        Downloads
                                        BLOG

                                        847
                                        Online

                                        32.0k
                                        Users

                                        80.5k
                                        Topics

                                        1.3m
                                        Posts

                                        setstate kennzeichen id
                                        3
                                        20
                                        631
                                        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