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
      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

                                      559
                                      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