NEWS
Grundsatzfragen zu API
-
Hallo Zusammen
ich habe zwei dingz Schalter (Multifunktionsschalter mit WLAN aus der Schweiz).
Diese können mittels API angesteuert werden ( https://documenter.getpostman.com/view/11123877/TVKD1x7V#82665bf7-cb0d-48d0-a7f1-80887b5f559e )Nun möchte ich die LED via iobroker ansteuern (Alarmanlage ein = rot, aus = grün)
Wie löse ich das nun mit iobroker? Muss dies via JavaScript gemacht werden?
Mir ist nicht klar, wie ich die POST Befehle versenden kann...
Ich weiß, das es einen Adapter für dingz gibt, leider unterstützt dieser aber die Ansteuerung der LED nicht. -
@roger-spo Im Prinzip, kannst Du es via JavaScript, Blockly oder NodeRed verschicken. Wie steht ja auf der Seite von der Seite die Du gespostet hast wunderbar drin. Sprich Du schickst die JSON Strings mit ggf. den entsprechenden Header mit der POST Methode hin. Da ich NodeRed benutze, bleibe ich Dir erst mal die Syntax schuldig, aber gibt sicher Leute, die das schon häufig gemacht haben.
-
@mickym Danke für deine schnelle Antwort! Somit könnte ich dies also auch via NodeRed machen? Stehe leider etwas auf dem Schlauch, da ich aus der KNX Welt komme. JSON und NodeRed sind für mich noch neu...
-
@roger-spo
Du kannst es auch mit CURL auf der Kommandozeile machen - auf der Seite hast Du ja auf der rechten Seite die Beispiele:In Node Red bereitest Du alles mit einer Change Node vor - die URL kannst entweder in msg.url mitgeben oder in der HTTP-Request node.
So müsste es eigentlich gehen:
In NodeRED gibst Du den Body einfach in der msg.payload, die header als msg.headers ein und zwar beides als JSON!
hier die payload
hier die headers
In der request Nachricht dann mit Methode POST versenden und noch die URL eintragen.
-
@mickym Vielen Dank für deine Bemühungen! Habe das ganze nun versucht zu integrieren, leider ohne Erfolg. Sollte nicht noch irgendwo dieses mit: {{ip}}/api/v1/led/set?
habe es in der request so versucht: 192.168.10.128/api/v1/led/set aber auch so kein Erfolg... -
Hmm nein ich glaub ich hab unten in der Payload einen Fehler gemacht.
Die URL ist meines Erachtens richtig - aber wir haben nicht die action sondern den response verschickt.
Ich hab den Flow mal geändert und auch Deine IP in die URL mitaufgenommen:
Ich hatte vorher in der payload die Antwort des servers und nicht die Action
Ansonsten würde ich halt mal die curls auf der Kommandozeile ausprobieren, denn wenn die auch nicht funktionieren, dann hast Du ein anderes Problem.
Also probiers mal auf der Kommandozeile mit:
curl --location -g --request POST '192.168.10.128/api/v1/led/set' --data-raw 'action=on&color=50;100;100&mode=hsv&ramp=50'
Du willst die LED ja schalten - insofern gibst DU bei action ein: on, off oder toggle
-
@roger-spo sagte in Grundsatzfragen zu API:
@mickym Vielen Dank für deine Bemühungen! Habe das ganze nun versucht zu integrieren, leider ohne Erfolg. Sollte nicht noch irgendwo dieses mit: {{ip}}/api/v1/led/set?
habe es in der request so versucht: 192.168.10.128/api/v1/led/set aber auch so kein Erfolg...Das mit dem set und dem ? verwendet man in der Regel eigentlich bei GET Request. Wo hast Du denn ein Beispiel auf der Webseite gefunden?
Hier ein Video von Steve der macht POST Request
https://www.youtube.com/watch?v=wW_UeqeszEs
zu einem thingsboard.Bei dem CURL Kommando muss man ggf. doch das http mitgeben - da bin ich mir nicht sicher:
curl --location -g --request POST 'http://192.168.10.128/api/v1/led/set' --data-raw 'action=on&color=50;100;100&mode=hsv&ramp=50'
-
@mickym Ich hab es nun hinbekommen. Mit dem exec Befehl einfach das CURL Kommando senden.