Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [gelöst] Frage zu langer Wenn/Dann Abfrage

    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

    [gelöst] Frage zu langer Wenn/Dann Abfrage

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

      Hallo Zusammen,

      ich möchte ein Skript das ich in Perl gebastelt habe nach ioBroker in ein Blockly Skript übernehmen.
      Da ich noch recht neu bin habe ich was die Effizienz angeht noch etwas Nachholbedarf.. 🙄

      Ich möchte eine Abfrage bauen, die je nach Eingangswert (eine Zahl die per MQTT übertragen wird) einen Text in eine Variable schreibt. Es gibt allerdings 87 verschiedene Zahlen die dementsprechend 87 verschiedene Texte enthalten welche dann in die Variable geschrieben werden sollen.

      Mit welchen Blockly Bausteinen kann ich das am Ressourcenschonensten umsetzen?

      Nachdem ich das dann in der Variablen habe würde ich gerne per ToDoist Baustein einen neuen Listeneintrag anlegen.
      Kann mir hier jemand sagen, ob ich eine Aufgaben-ID erzeugen muss und wenn ja in welchem Format / was ich dabei beachten muss?

      Ich hätte das aus meiner Anfänger Sicht so gelöst (nicht wundern, der Sensorwert ist nur ein Platzhalter und wird gegen einen RFID-Reader getauscht):
      c5cbc58f-db94-421a-84e9-77d5aebf7dba-image.png

      Danke und Gruß,

      Claus

      1 Reply Last reply Reply Quote 0
      • M
        MCU last edited by MCU

        @claus1985
        Du kannst dir einen eigenen JSON-Datenpunkt erstellen:

        [{"ZAHL":"1","TEXT":"Beispiel"},{"ZAHL":"2","TEXT":"Test"}]
        

        Und dann in Abhängigkeit vom MQTT-Wert auswerten.

        f573fe8a-55c2-4ed3-a946-e1ce098fb1e9-image.png

        Claus1985 1 Reply Last reply Reply Quote 1
        • Claus1985
          Claus1985 @MCU last edited by Claus1985

          @mcu danke für den Tipp, das passt allerdings noch nicht komplett auf meinen Usecase.
          Vielleicht nochmal den ganzen Ablauf um nachvollziehen zu können wofür ich überhaupt was verwenden will:

          • Ich scanne eine RFID Karte an einem Arduino ein (jede Karte steht für einen Gegenstand, z.B. Milch)
          • Die Karte hat eine eindeutige ID, diese wird per RFID ausgelesen und per MQTT an ioBroker gesendet
          • ioBroker schreibt die ID in einen Userwert rein
          • Nachdem dieser Userwert verändert wurde soll die ID verwendet werden um in einer fix definierten Liste (lege ich nur einmal an und nehme max. alle paar Monate eine Änderung vor) die passende Entsprechungen rauszusuchen
          • Diese Entsprechung sende ich dann über den ToDoist Adapter an ToDoist um einen neuen Eintrag in einer Einkaufsliste anzulegen

          Beim testen ist mir gerade aufgefallen, dass ich ToDoist zwei Variablen mitgeben muss:

          • Den Inhalt der Task / den Text den er in der Liste anlegen soll
          • Den Namen der Liste (in meinem Fall z.B. Supermarkt, Drogerie, Sonstige).

          D.h. in der Liste müsste das dann z.B. so aussehen:

          [{"ZAHL":"810235440","TEXT":"1 x Nutella | max. 2,90€/750g", "LISTE":"Einkaufsliste_Supermarkt},{"ZAHL":"2","TEXT":"Test", "LISTE":"Einkaufsliste_Drogerie"}]
          

          Wenn ich Dein Blockly richtig verstehe, wird die Liste/Variable "JSON_DP" aktuell autom. aus einem Userstate angelegt oder?
          Wie könnte ich die Liste fix in einem Code hinterlegen so, dass das Skript sie anschließend durchsuchen kann?

          Danke und Gruß,

          Claus

          M 1 Reply Last reply Reply Quote 0
          • M
            MCU @Claus1985 last edited by MCU

            @mcu Du kannst die Liste auch direkt als TEXT anlegen. Aber wichtig ein vergessenes " und es ist keine JSON-Liste mehr!

            cbcd02fd-649d-40c1-8ca9-562359c7930e-image.png

            c940c91f-3fad-4be1-bfae-eabdadc26778-image.png
            Was musst du denn dann an ToDoist übergeben?

            Also bis jetzt:
            5f452407-85a1-44be-8a20-22b2d898798e-image.png

            Claus1985 1 Reply Last reply Reply Quote 0
            • Claus1985
              Claus1985 @MCU last edited by

              @mcu ToDoist hat ein eigenes Blockly und benötigt zwei Dinge:
              e875ffeb-346e-48f2-b8ac-d5db409359fc-image.png

              Den Baustein würde ich dann nach der Schleife mit den Variablen aus der Schleife füttern und damit den neuen Eintrag in ToDoist anlegen.

              M 1 Reply Last reply Reply Quote 0
              • M
                MCU @Claus1985 last edited by MCU

                @claus1985 Dann kann das ja direkt vor die SCHLEIFE abbrechen.
                Projekt ist dann jsonata(LISTE) anwenden auf i.
                Aufgabe ist dann jsonata(TEXT) anwenden auf i.

                Der Wert von RFID wird an MQTT übermittelt und den nutzt du als Trigger für das Script.

                d533f529-8127-472e-acb7-82a09f7af1b8-image.png

                Falls mal öfter Deine RFID für das gleiche Produkt nutzt, musst du auf wurde aktualisiert ändern.
                Und dann ist MQTT-Nummer = WERT:
                a7642b7b-ad00-44c6-a14f-c7910a7fbb3b-image.png

                adb0421a-7877-441d-a912-43694a056e42-image.png

                ObjectID-> WERT auswählen

                Claus1985 1 Reply Last reply Reply Quote 1
                • Claus1985
                  Claus1985 @MCU last edited by Claus1985

                  @mcu Habe das mal entsprechend aufgebaut. Allerdings passiert bei mir nichts.
                  Kann es sein, dass die Variable i in der Schleife hochgezählt werden muss damit etwas passiert?
                  Bei mir zeigt er nichts was innerhalb der Schleife sitzt an.

                  0946560d-9de7-4a2e-8955-da4c88b6f0e1-image.png
                  0a3fa994-4dc4-4fd4-a972-4435c2345fe7-image.png

                  M 1 Reply Last reply Reply Quote 0
                  • M
                    MCU @Claus1985 last edited by MCU

                    @claus1985 Soweit ich das erkennen kann, hast du die Kommas vergessen.
                    0e5be777-a3e7-4ec4-bde2-cb0a340e07bd-image.png
                    ab dem zweiten ein Komma vor {

                    Claus1985 1 Reply Last reply Reply Quote 1
                    • Claus1985
                      Claus1985 @MCU last edited by

                      @mcu Ah ok d.h. am Ende jedes Listeneintrags muss ein Komma rein?

                      M 1 Reply Last reply Reply Quote 0
                      • M
                        MCU @Claus1985 last edited by

                        @claus1985 Ich würde es davor machen dann kannst du es auch erkennen.

                        Claus1985 1 Reply Last reply Reply Quote 0
                        • Claus1985
                          Claus1985 @MCU last edited by

                          @mcu danke für den Tipp, teste ich direkt aus!

                          M 1 Reply Last reply Reply Quote 0
                          • M
                            MCU @Claus1985 last edited by

                            @claus1985
                            0b07cfd0-dff2-4827-9a03-3c83ee9e2789-image.png
                            setze RFID_ID = WERT siehe oben (Trigger/ObjectID -> ändern auf WERT)

                            Claus1985 1 Reply Last reply Reply Quote 0
                            • Claus1985
                              Claus1985 @MCU last edited by

                              @mcu Hat funktioniert!
                              Bzgl. aktualisiert / wurde geändert lasse ich es auf wurde geändert. Wenn versehentlich die gleiche Karte 2 x gescannt wird löst er so nicht doppelt aus.

                              M 1 Reply Last reply Reply Quote 1
                              • M
                                MCU @Claus1985 last edited by

                                @claus1985 Dann bitte oben im ersten Post die Überschrift anpassen auf [gelöst] ...

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                400
                                Online

                                31.9k
                                Users

                                80.2k
                                Topics

                                1.3m
                                Posts

                                2
                                14
                                633
                                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