NEWS
[gelöst] Frage zu langer Wenn/Dann Abfrage
-
@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.
-
@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
-
@mcu Du kannst die Liste auch direkt als TEXT anlegen. Aber wichtig ein vergessenes " und es ist keine JSON-Liste mehr!
Was musst du denn dann an ToDoist übergeben?Also bis jetzt:
-
@mcu ToDoist hat ein eigenes Blockly und benötigt zwei Dinge:
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.
-
@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.
Falls mal öfter Deine RFID für das gleiche Produkt nutzt, musst du auf wurde aktualisiert ändern.
Und dann ist MQTT-Nummer = WERT:
ObjectID-> WERT auswählen
-
@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.
-
@claus1985 Soweit ich das erkennen kann, hast du die Kommas vergessen.
ab dem zweiten ein Komma vor { -
@mcu Ah ok d.h. am Ende jedes Listeneintrags muss ein Komma rein?
-
@claus1985 Ich würde es davor machen dann kannst du es auch erkennen.
-
@mcu danke für den Tipp, teste ich direkt aus!
-
@claus1985
setze RFID_ID = WERT siehe oben (Trigger/ObjectID -> ändern auf WERT) -
@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. -
@claus1985 Dann bitte oben im ersten Post die Überschrift anpassen auf [gelöst] ...