HTTP POST Requests mit Loxone senden
Wenn in der Schnittstellenbeschreibung angegeben ist, dass Daten mittels POST (statt GET) übertragen werden müssen, wird das folgendermaßen in Loxone konfiguriert:
Beispiel mit SimpleControl
Schnittstellenbeschreibung: https://www.simplecontrol.com/wp-content/uploads/2016/05/HTTPCommandInterface.pdf
Virtueller Ausgang
Hier die HTTP-Adresse inklusive Port angeben. Der Port ist meist ganz oben in der Schnittstellenbeschreibung angegeben, oder am Gerät direkt konfigurierbar.
Virtueller Ausgangs-Befehl
Das RunActivity-Beispiel in der Spezifikation wird mit der Syntax von cURL angegeben:
Der virtuelle Ausgangsbefehl muss für dieses Beispiel dann folgendermaßen angelegt sein:
Wichtig:
Befehl bei EIN muss die URL enthalten ohne den Hostnamen, deswegen nur
/api/v1/runactivity
.In HTTP-Post-Befehl bei EIN werden die Daten übernommen. Im curl-Befehl ist der String, der gesendet wird, mit einfachen Anführungszeichen (') eingeschlossen. Diese Anführungszeichen dürfen nicht übernommen werden. Ebensowenig die Befehlsparameter von curl, also kein
-d
und kein-X POST
.HTTP-Methode bei EIN wird auf POST gesetzt.
Die Rückgabewerte des Aufrufs können nicht in Loxone weiterverwendet werden. Das heißt in dem Beispiel, die Antwort "status" : "success"
kann nicht verarbeitet werden. Loxone bietet keine bidirektionale Kommunikation.
POST und GET Testscript für PHP
Das Script zeigt die eingehenden POST- und GET-Variablen an, und kann z.B. am LoxBerry eingesetzt werden, um zu sehen, was der Miniserver sendet.
Erstelle am LoxBerry dieses Script als /opt/loxberry/webfrontend/legacy/post.php
Test-Script POST und GET Daten
<?php
echo "------" . date("H:i:s") . "-----<br>";
$outstr = "-----" . date("H:i:s") . "-----\n";
$post = file_get_contents('php://input');
echo "POST: " . $post . "<br>";
$outstr .= "POST: " . $post . "\n";
$get = print_r($_GET, true);
echo "GET: " . $get . "<br>";
$outstr .= "GET: " . $get . "\n";
file_put_contents ( "/tmp/post.txt", $outstr, FILE_APPEND );
?>
Die Datei als Download: post.php
Über den Webbrowser kann das Script dann aufgerufen werden mit http://loxberry/legacy/post.php
Es erzeugt eine Datei /tmp/post.txt. Mit diesem Shellbefehl kannst du mitschauen, was in der Datei passiert:
tail -f /tmp/post.txt
Die Ausgabe sieht dann so aus:
Der erste Aufruf wurde aus dem Webbrowser mit Query-Parameter post.php?browser=test durchgeführt.
Die beiden weiteren Aufrufe kommen vom Miniserver mit POST-Daten