Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Wert in einen Datenunkt schreiben

    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

    Wert in einen Datenunkt schreiben

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

      Hallo ich möchte den State einer LED in einen Datenpunkt schreiben. Es handelt sich um switch_led des Typs Boolean. Diesen Punkt habe ich auch so angelegt Mit folgendem Script schreibe ich ihn::

      on({ id: 'mihome.0.devices.switch_158d00023e651b.click' /* Simple click */, val: true }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        setState('0_userdata.0.Licht.Fenster3.switch_led' /* Licht.Fenster3.switch_led */, Object.keys(getObject('tuya.0.bff11e43a9cf6c6fd92nlc.20')));
      });
      
      //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbiUyMiUyMGlkJTNEJTIyJTNCWlVuJTdDaGdtRyUyM2slMjRCYy0lN0JyZSUyNHglMjIlMjB4JTNEJTIyMTM4JTIyJTIweSUzRCUyMi0xNjIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VtaWhvbWUuMC5kZXZpY2VzLnN3aXRjaF8xNThkMDAwMjNlNjUxYi5jbGljayUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09ORElUSU9OJTIyJTNFdHJ1ZSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQUNLX0NPTkRJVElPTiUyMiUzRSUzQyUyRmZpZWxkJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMlNUQVRFTUVOVCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMml3aiUyQ3AtbkZDbiUzRGY4ajVKZXFCJTVEJTIyJTNFJTNDbXV0YXRpb24lMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhodG1sJTIyJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFMF91c2VyZGF0YS4wLkxpY2h0LkZlbnN0ZXIzLnN3aXRjaF9sZWQlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvYmplY3Rfa2V5cyUyMiUyMGlkJTNEJTIyWDYyJTQwcWolNURMajFFUkIlM0I3WU0qTF8lMjIlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJPQkpFQ1QlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIyZ2V0X29iamVjdCUyMiUyMGlkJTNEJTIyOUdwJTYwOC5ZJTQwJTNCMyU0MHRXJTNCcXkxYWIxJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFdHV5YS4wLmJmZjExZTQzYTljZjZjNmZkOTJubGMuMjAlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ4bWwlM0U=
      

      Wenn ich es nun ausführe, bekomme ich folgenden Fehler:

      
      javascript.0
      2025-01-27 15:31:42.346	warn	at process.processImmediate (node:internal/timers:483:21)
      
      javascript.0
      2025-01-27 15:31:42.345	warn	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:645:29)
      
      javascript.0
      2025-01-27 15:31:42.345	warn	at Object.<anonymous> (script.js.Licht.Küche.Test_Variable:5:3)
      
      javascript.0
      2025-01-27 15:31:42.345	warn	at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:2090:20)
      
      javascript.0
      2025-01-27 15:31:42.345	warn	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1452:38)
      
      javascript.0
      2025-01-27 15:31:42.345	warn	at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/cjs/lib/adapter/adapter.js:7336:48)
      
      javascript.0
      2025-01-27 15:31:42.344	warn	You are assigning a array to the state "0_userdata.0.Licht.Fenster3.switch_led" which expects a boolean. Please fix your code to use a boolean or change the state type to array. This warning might become an error in future versions.
      

      Wo liegt mein Fehler?
      Ideal wäre ein Script, das alle Leuchten im Tuya Adapter mit den Werten switch::led, work_mode, bright_value und colour_data RGB ausließt.

      VG

      Krodon

      screenshot.JPG

      Homoran paul53 haus-automatisierung 3 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @krodon last edited by

        @krodon sagte in Wert in einen Datenunkt schreiben:

        Wo liegt mein Fehler?

        wenn das ein Blockly ist, wie die Kategorie erahnen lässt, bitte auch das Blockly zeigen

        K 1 Reply Last reply Reply Quote 0
        • K
          krodon @Homoran last edited by

          @homoran ich habe es eingefügt, leider habe ich den rechten Teil nicht komplett drauf bekommen

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

            @krodon sagte: You are assigning a array to the state "0_userdata.0.Licht.Fenster3.switch_led" which expects a boolean

            Was willst du mit der Liste der Objekt-Attribute?

            Für eigene Datenpunkte verwendet man Block "aktualisiere" anstelle von "steuere".

            K 1 Reply Last reply Reply Quote 0
            • haus-automatisierung
              haus-automatisierung Developer Most Active @krodon last edited by haus-automatisierung

              @krodon sagte in Wert in einen Datenunkt schreiben:

              ich möchte den State einer LED in einen Datenpunkt schreiben.

              Ja, die erwartet einen Boolschen Wert. Also true oder false. Du schreibst alle Attribute eines Objektes (was ein Array ist) in den Datenpunkt. Das ist natürlich Quatsch. Was möchtest Du damit bezwecken?

              Suchst Du eventuell einfach nur den "umschalten"-Baustein, wenn Du auf den Button drückst?

              Grundlagen anschauen (wobei Du ja seit 2018 dabei bist und das eigentlich können müsstest).

              K 2 Replies Last reply Reply Quote 1
              • K
                krodon @haus-automatisierung last edited by

                @haus-automatisierung ich möchte nur einzelne Datenpunkte aus einem Array schreiben, nicht eine Kopie des Arrays. Der Hintergedanken ist nachdem ein Bewegungsmelder die Beleuchtung verändert hat, den alten Zustand wieder zu erzeugen.

                VG

                Krodon

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

                  @krodon sagte: Beleuchtung verändert hat, den alten Zustand wieder zu erzeugen.

                  Dann verwende eine ID-Liste mit allen betreffenden Datenpunkten und eine korrespondierende Werte-Liste, in der die Werte in einer Schleife gemerkt werden.

                  Prinzip:

                  Blockly_temp.JPG

                  K 1 Reply Last reply Reply Quote 0
                  • K
                    krodon @haus-automatisierung last edited by

                    @haus-automatisierung said in Wert in einen Datenunkt schreiben:
                    (wobei Du ja seit 2018 dabei bist und das eigentlich können müsstest).

                    Leider hatte ich mich die letzten Jahre nicht mehr damit beschftigt 😞

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

                      @paul53 danke für das script. In meinen Augen ist es komplex, verstehe aber im Prinzip was Du damit bezweckst. Zu Blockly habe ich immer nur sehr einfache Anleitungen gefunden. Hast Du eine Quelle die besser ist?

                      VG

                      Edi

                      Homoran 1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @krodon last edited by

                        @krodon sagte in Wert in einen Datenunkt schreiben:

                        In meinen Augen ist es komplex,

                        Möglicherweise liegt das an deinen Anforderungen.

                        eine einfache Lampe, bei der nur an/aus geschaltet würde wäte nur ein Parameter
                        selbst bei einer gedimmten Lsmpe wäte es nur Brightness, die zwischengespeichert werden müsste

                        K 1 Reply Last reply Reply Quote 0
                        • K
                          krodon @Homoran last edited by krodon

                          @homoran said in Wert in einen Datenunkt schreiben:

                          @krodon sagte in Wert in einen Datenunkt schreiben:

                          In meinen Augen ist es komplex,

                          Möglicherweise liegt das an deinen Anforderungen.

                          Die einfache Lampe ist nur ein erster Schritt, bei dem ich lernen möchte, ich habe noch anspruchsvollere Iden. Das Problem ist, dass mir Javascript nicht liegt oder ich auch nicht die Zeit hierfür finde.
                          Bei Blockly habe ich leider keine Anleitungen für "for each" und "array" finden können, dies würde viel weiterhelfen.

                          Dennoch bleibt noch mein ursprüngliches Problem, wie ich ein Boolean in das Array schreiben kann. Mir fehlt der Befehl "dim"

                          VG

                          Krodon

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

                            @krodon sagte: wie ich ein Boolean in das Array schreiben kann.

                            In ein Array kann man jeden Wert schreiben - egal ob boolean, number, string oder object - und das auch gemischt.

                            @krodon sagte in Wert in einen Datenunkt schreiben:

                            keine Anleitungen für "for each"

                            Ich hatte in meinem Vorschlag die "for Schleife" mit Index-Zähler verwendet, weil nur bei dieser Schleife die Reihenfolge garantiert ist.

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

                              @paul53 said in Wert in einen Datenunkt schreiben:

                              @krodon sagte: wie ich ein Boolean in das Array schreiben kann.

                              In ein Array kann man jeden Wert schreiben - egal ob boolean, number, string oder object - und das auch gemischt.

                              Wieso bekomme ich dann diese Fehlermeldung?

                              javascript.0
                              
                              2025-01-27 15:31:42.344	warn	You are assigning a array to the state "0_userdata.0.Licht.Fenster3.switch_led" which expects a boolean. Please fix your code to use a boolean or change the state type to array. This warning might become an error in future versions.
                              

                              In VBScript konnte ich die einzelnen Ebenen definieren.

                              Hast Du gute Anleitungen zu Blockly die weiter als die Basics gehen?

                              VG

                              Krodon

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

                                @krodon sagte: Wieso bekomme ich dann diese Fehlermeldung?

                                Du schreibst ein Array in einen Datenpunkt vom Typ "boolean".
                                Zeige mal das Skript!

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

                                  @paul53 das Script steht gleich im ersten Posting.

                                  VG

                                  Krodon

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

                                    @krodon sagte: das Script steht gleich im ersten Posting.

                                    Das Skript ist sinnfrei. Was soll es machen?
                                    Der Attribute-Block liefert eine Liste der Objekt-Keys:

                                    [ '_id', 'type', 'common', 'native', 'acl', 'from', 'user', 'ts' ]
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • K
                                      krodon @paul53 last edited by

                                      @paul53

                                      Ich möchte nicht das komplette Array in den Datenpunkt schreiben, sondern nur die Variable switch_led, die vom Wert boolean ist, so ist auch der Datenpunkt definiert.

                                      VG

                                      Krodon

                                      Homoran paul53 2 Replies Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators @krodon last edited by

                                        @krodon sagte in Wert in einen Datenunkt schreiben:

                                        Ich möchte nicht das komplette Array in den Datenpunkt schreiben,

                                        Ich fürchte du bist dir nicht bewusst, was das für ein Array ist, das du da speichersz.
                                        @paul53 hat es fir eben gezeigt.
                                        Ist es das wovon du redest?

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

                                          @krodon sagte: sondern nur die Variable switch_led

                                          Du meinst den Datenpunkt-Wert von "switch_led"? Dann so:

                                          Blockly_temp.JPG

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

                                            @paul53 said in Wert in einen Datenunkt schreiben:

                                            @krodon sagte: sondern nur die Variable switch_led

                                            Du meinst den Datenpunkt-Wert von "switch_led"? Dann so:

                                            Blockly_temp.JPG

                                            Erst mal vielen Dank!
                                            Leider kann ich es erst kommendes WE ausprobieren.

                                            VG

                                            Krodon

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            915
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            20
                                            731
                                            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