Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. States aus einer Liste in Datenpunkte zurück schreiben

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    States aus einer Liste in Datenpunkte zurück schreiben

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

      Hallo zusammen,
      ich hab mir über den Ping Adapter ein schönes Abwesenheits-Blockly gebastelt welches einen Datenpunkt setzt falls alle Handys nicht mehr im Haus sind und XX Minunten ohne Anwesenheit Aktionen startet. Soweit so gut ...

      Ich würde nun gerne mehrere Geräte und Lichter ausschalten bei der detektierten Abwesenheit aller Kinder die immer das Licht brennen lassen 8)- hierzu würde ich aber gerne die "States" sichern und bei "Wiedereintritt" eines Geräts den Originalzustand zurück schreiben so das alle Lichter / Geräte wieder angehen wie vor dem Energie-Sparen.

      Das Schreiben der States in eine Liste klappt bereits - nur wie bekomme ich nun die Daten wieder zurück geschrieben ?

      Das Script unten wirft im Protokoll schon :

      alexa2.0.Smart-Home-Devices.XXXXXXXXXX.powerState,false,yeelight-2.0.color-0xXXXXXXXXXXXX.control.power,false

      Also Object-ID und State werden schon in der Liste hinterlegt - nur was kommt in "für jeden Wert i in der Liste" ?

      Später will ich die Erstellung der Liste der Geräte evtl. noch über Function und IDs vom Selektor automatisieren.

      Für jeden Tipp bin ich sehr dankbar ... evtl. hat das ja schon jemand gebastelt ...
      Viele Grüße

      Blockly-Liste.PNG

      mickym paul53 2 Replies Last reply Reply Quote 0
      • mickym
        mickym Most Active @FoG last edited by mickym

        @fog Deine Liste ist ein Array und somit ein Objekt. Generell sollte man Objekte als JSON Strings abspeichern und acuh bei Lesen wieder zurückverwandeln.

        c4cb629a-62ab-4691-8064-cad4ba3aaaa6-image.png

        Dieses Teil sollte einen String aus Deinem Array machen, den Du dann in den Datenpunkt schreiben kannst.

        An Deiner Stelle hätte ich aber statt eines flachen Arrays - Objekte geschrieben und diese in ein Array geschrieben.

        Also:

        [
        { "alexa2.0.Smart-Home-Devices.XXXXXXXXXX.powerState":false},
        { "yeelight-2.0.color-0xXXXXXXXXXXXX.control.power": false}
        ]
        

        aber da muss der Blockly Guru sagen, wie das geht. Ich bin da überfragt.

        FoG paul53 2 Replies Last reply Reply Quote 0
        • FoG
          FoG @mickym last edited by

          @mickym Hey - schon mal vielen vielen Dank ... JSON hab ich mich noch nicht so tief beschäftigt - aber als IOBroker Verfallener schau ich da natürlich gerne mal drauf.

          Dank dir !

          madjack84 1 Reply Last reply Reply Quote 0
          • madjack84
            madjack84 @FoG last edited by

            0b3be941-6601-4124-8e1b-feaa3043ce29-image.png

            ich mache das aktuell so.... es funktioniert zwar aber ist nicht wunderunschön...
            gibt es da keine schönere Lösung? Ein Blockly um Listen direkt in Objekten zu bearbeiten und zurück zu speichern?

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

              @mickym sagte: Generell sollte man Objekte als JSON Strings abspeichern und acuh bei Lesen wieder zurückverwandeln.

              Das macht der Javascript-Adapter selbst, wenn der Datenpunkt vom Typ "array" ist.

              @mickym sagte in States aus einer Liste in Datenpunkte zurück schreiben:

              statt eines flachen Arrays - Objekte geschrieben und diese in ein Array geschrieben.

              Genau das ist in Blockly nicht so einfach. Man benötigt eine Javascript-Funktion.

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

                @fog sagte: wie bekomme ich nun die Daten wieder zurück geschrieben ?

                Du verwendest ein zweidimensionales Array.

                Blockly_temp.JPG

                FoG 1 Reply Last reply Reply Quote 1
                • FoG
                  FoG @paul53 last edited by

                  @paul53 Super - vielen Dank !!!!

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  618
                  Online

                  32.0k
                  Users

                  80.5k
                  Topics

                  1.3m
                  Posts

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