Ich besitzt zur Zeit einen Server (Linux) im Internet, den ich als Webserver (Apache2) nutzen möchte.
Dieser Webserver soll unter anderem die Temperaturwerte meine Räume anzeigen, die Symcon brav Zuhause mitloggt.
Nun habe ich mir vorgestellt, daß ich die Werte mit JSON abfrage und einfach auf der Webseite meines Internet Web-Servers darstelle.
Ich habe also in eine Webseite folgendes Script eingefügt
Webfront ist vom Internet aus auf Port 80 erreichbar.
Wenn ich die Zeile „http://username:kennwort@server.domain.net:80/api/“ im Browser eingebe, dann bekomme ich das zurück:
{ „IP-Symcon“: „3.00“,
„API“: „0.1“,
„JSON-RPC“: „2.0“}
Sieht also erstmal gut aus, aber auf der Webseite wird nichts dargestellt - Wieso.
Nicht = Fehler? Du hast bestimmt einen Scriptfehler
Und vermutlich fehlt einfach die JSONRPC-Klasse auf deinem WebServer… Du findest diese unter _jsonrpc.inc.php im scripts Ordner. Rüberkopieren und per include in dein Skript - dann sollte es gehen
wie willst du genau auf den IPS-Server via JSON-RPC Schnittstelle zugreifen?
Hast du auf deinem Apache Server im Internet ein PHP skript, welches die JSON Ausgabe von deinem IPS-Server in HTML umwandelt? Wenn ja, muss dieses PHP Skript beim Aufruf einen POST Request mit korrektem JSON Request-Payload zu deinem IPS-Server senden und die Response auslesen und weiter verarbeiten. Die Aufrufkette sähe dann so aus:
Browser —(HTTP GET REQUEST)—>Apache Internet -> PHP Skript (für IPSAufruf) —(HTTP POST REQUEST)—> IPS Server —> (HTTP RESPONSE)—> Apache Internet -> PHP Skript(für Ergebnisrendering) —(HTTP RESPONSE)—>Browser.
Der PHP Code, den du erwähnt hast funktioniert so nur auf dem IPS (Web)Server. Für deinen zusätzlichen Apache müsstest du dann eben noch den POST Request zum IPS und das Ergebnisrendering bauen.
Du könntest den JSON-RPC Aufruf auch direkt clientseitig mit JavaScript im Browser durchführen und das Ergebnis aufbereiten.
Ergänzung zur clientseitigen Variante: Hier muss der IPS (Web) Server „CORS“ unterstützen, wenn die Ursprungsseite von einem anderen Origin kommt (z.B. Apache im Internet). Das habe ich noch nicht getestet, ob das möglich ist. Sollte generell machbar sein, man muss hier in die Response einen zusätzlichen Header einbauen.
Nein, kein Denkfehler. Wenn du diesen JSONRPC Aufruf in PHP auf deinem extra Apache Server ausführen willst, musst du nur beachten, dass du am einfachsten so wie paresy geschrieben hat die _jsonrpc.inc.php rüberkopierst und im Aufrufscript inkludierst, so dass der generische JSONRPC auch hier klappt. Als URL dann beim Instanzieren der Klasse natürlich die öffentliche URL deines IPS (Web)Servers eintragen.
Hallo,
Vielen Dank für Eure Hilfestellung, aber es funktioniert nicht. :mad:
So wie beschrieben habe ich es gemacht, aber es wird nichts angezeigt - kein Fehler einfach Nichts.
Die Datei von IPS habe ich umgenannt in „jsonrpc.inc.php“ und somit die führenden Untersriche im Dateinamen entfernt - Ich denke das ist egal!?
Sie liegt nun so im Root Verzeichnis (/var/www) des Webservers:
-rw-r–r-- 1 www-data www-data 1281 10. Okt 14:32 jsonrpc.inc.php
Die Webseite die ich aufrufe ist einfach gestrickt und sieht in etwa so aus
.
.
.
.
<h1>Ãbersicht</h1>Platzieren Sie hier Ihre eigenen Texte und Bilder. Bearbeiten Sie diesen Text einfach durch einen Doppelklick.
<br><br>
<?PHP
include(jsonrpc.inc.php);
$rpc = new JSONRPC("http://username:kennwort@server.domain.net:80/api/");
$result = $rpc->IPS_GetKernelDir();
echo "KernelVersion: ".$result;
?>
</div>
<h1>Test</h1>
.
.
...usw...
Ich gebe zu Das macht Sinn und funktioniert nun wie gewünscht.
Ihr wisst ja, daß ich mich mit Programmierung nicht auskenne und auf Eure Hilfe ab und an mal angewiesen bin.
Vielen, vielen Dank !!!
Ich hoffe die Datenbankabfrage funktioniert genauso mit „AC_GetAggregatedValues“ usw…