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.
    • paul53
      paul53 @hanss last edited by

      @hanss sagte:

      setState("javascript.0.zigbee.0.AlarmLicht", {val: 3, ID: xyz})

      Datenpunkte vom Typ "Objekt" können es aufnehmen. Aber nicht den Bezeichner val im Objekt verwenden, denn val hat in Datenpunkten eine besondere Bedeutung.

      hanss 1 Reply Last reply Reply Quote 0
      • 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

                                          777
                                          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