Werte aus aus einem Tag / Variable (oder einem http-get) extrahieren?

Servus,

Ich würde gerne aus einem Get-Url einzelne Werte rausziehen, Beispiel:

http://ip-des-homey/irgendwas/message?text=blabla&type=0&timeout=5

Ich möchte text, type und timeout logischerweise in unterschiedliche variablen schreiben, mit der http-get-card stehen sie natürlich gemeinsam in einer: (message?text=blabla&type=0&timeout=5)

image

Nun müsste ich sozusagen parsen mit Trennern ? oder = damit ich das in einzelne Variablen schreibe. Aber wie? Programmieren kann ich nur C64er-Basic :grin: daher ist die Frage, geht das mit Homeyscript oder besser noch: irgendwie ohne?

Für Tipps dankbar! Stefan

Du willst also den Homey von außen aufrufen, einen Request schicken und Homey soll darauf reagieren?
Das geht über Webhook. Flow-Trigger “Logic/Ein Webhook is eingegangen”.
Du kannst dabei einen (!) Parameter angeben. Ob man dabei JSON verwenden kann, weiß ich nicht.

Wenn JSON als Url-Parameter geht, dann hast du den Wert in dem Trigger-Token und kannst iht in AdvancedFlow mit den neue. Logic-Karten auslesen (Parsen des JSON nach Elementname).
Wenn JSON als Parameter nicht geht, könntest du den Wert mit einem Homeyscript konvertieren, z.B. mit tokek.split(‘_’)[0] für den ersten Wert bei mit Unterstrich getrennten Werten.

Danke Ronny, genau das geht nur bei JSON, also wenn die Übergabe standardisiert ist - sonst eben nicht. Also auch nicht, wenn die Variablen in einem http-Get String steckt wie im Beispiel. Ich möchte also eine Variable auseinandernehmen. Wenn Trenner drin sind, sollte das ja nicht o schwer sein. Also im Grunde ganz normales parsen, nur eben nicht auf jSON-Basis.

Du kannst den JSON String direkt als Tag hinzufügen.
Ich hab jetzt den Logik Event Card genommen und diesen via diesen link getriggert.

https://<deine-homey-id>.connect.athom.com/api/manager/logic/webhook/test?tag={"test":123,"bool":true,"other":"string"}

Edit: Huch, wer lesen kann ist klar im Vorteil. Wenn es nicht via JSON geht, dann würde ich mir einen Homey Script basteln und einen trenner/splitter nehmen. Aber wenn irgendwie die Möglichkeit existiert das via JSON zu machen, würde ich es damit machen :grin:

Habs genauso gebaut, er triggert auch (die benachrichtigung wird ausgelöst dass er triggert)

aber er wirft einen “unxpected token t at position 1”

eine Idee?

http://192.168.1.92/api/manager/logic/webhook/test?tag={test:123,bool:true,other:"string"}

Ich weiß nicht, ob es einen Unterschied macht, aber du verwendet eine andere URL?

http://192.168.1.92/api/manager/logic/webhook/test?tag={test:123,bool:true,other:"string"}

Das liegt am JSON, das Forum hat es irgendwie falsch umgewandelt. Es fehlen die " bei den pfaden

https://<homey>.connect.athom.com/api/manager/logic/webhook/test?tag={"number":123,"bool":true,"string":"string"}

Info hab die JSON Pfad namen geändert :slight_smile:

Dein JSON wird nicht ‘verstanden’. Ich weiß nicht, wie das Parses des Parametern intern passiert. Probier mal bitte folgendes mit Anführungszeichen für die Json-Elemente:

http://192.168.1.92/api/manager/logic/webhook/test?tag={‘test’:123,‘bool’:true,‘other’:‘string’}

PS: wo genau tritt der Fehler auf: Beim der Json-Logik-Karte oder schon beim Trigger?

1 Like

Beim Parsen :slight_smile: Wie oben geschrieben liegt an den fehlenden Anführungszeichen für die Elemente/Pfade

2 Likes

Vollkommen richtig, vielen Dank für Eure Hilfe! Es ist natürlich zu viel verlangt, in das Infofeld der Karten seitens Athom einfach ein Beispiel reinzuschreiben :wink:

Es funktioniert:

https://192.168.1.92/api/manager/logic/webhook/test?tag={“test”:123,“bool”:true,“other”:“string”}

@Peter_Kawa Ich ruf das lokal auf, daher der andere URL. Brauch ja nicht unnötig über die Cloud gehen.

Ich weiss. Da es sich aber nicht um das Beispiel handelte, dachte ich schnell, dass der Fehler damit zusammenhängen könnte :grimacing: