@oliverio Das hier ist mein PHP-Skript:
<?php
$stopID = "de:xyz:xyz"; // Haltestelle
$now = date(DATE_ATOM);
$input_xml = "<?xml version='1.0' encoding='UTF-8'?><HIER IST DIE XML-ABFRAGE DRIN>";
$API_url = "https://api.xyz.de/xyz/";
$header = array(
"Content-type: text/xml;charset=\"utf-8\""
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $API_url); // URL
curl_setopt($ch, CURLOPT_POST, true); // Post
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); // Header
curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); // Anfrage
curl_setopt($ch, CURLOPT_VERBOSE, true); // Debugging ein
curl_setopt($ch, CURLOPT_SSLCERTTYPE, "PEM"); // Zertifikat ist ein PEM-Zertifikat
curl_setopt($ch, CURLOPT_SSLCERT, getcwd() . "/cert/API.crt"); // Zertifikat für Benutzer aufrufen
curl_setopt($ch, CURLOPT_SSLKEY, getcwd() . "/cert/key.key"); // Passwort für Zertifikat
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // jedes Zertifikat zulassen (besser TRUE, aber dann läuft es nicht)
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // checke, ob Host existiert und Name übereinstimmt
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/cert/XYZ-CA.crt"); // Root-Zertifikat nutzen
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Rückgabe ermöglichen
$data = curl_exec($ch);
if(curl_errno($ch))
print curl_error($ch);
else
curl_close($ch);
echo $data;
$filename = "xyz.xml";
$handle = fopen($filename, "w");
fwrite($handle, $data);
fclose ($handle);
?>
Die PHP authentifiziert sich halt mit crt-, key- und root-crt-Dateien und schickt eine XML-Abfrage an den Server der lokalen Verkehrsbetriebe. Die Antwort kommt auch als XML-Datei zurück. Die wird dann einfach nur abgespeichert.
Im nächsten Schritt habe ich dann ein Javascript, was die gespeicherte XML-Datei einliest und die Daten verarbeitet und optisch aufbereitet.
Das Javascript funktioniert halt auch ohne Probleme, wenn es direkt auf der Webstation läuft und er damit die XML-Datei "direkt vor Ort" liegen hat. Versuche ich es aber in IOBroker einzubauen, sieht er den Zugriff auf die XML-Datei halt als externen Zugriff und sperrt die Anfrage.
Um die XML-Daten direkt in IOBroker auszuwerten und weiterzuverarbeiten, müsste ich halt entweder die ganze API-Anfrage in IOBroker "nachbauen" oder die XML-Daten da irgendwie sonst reinbekommen.
Nur die API-Abfrage in IOBroker nachbauen kriege ich irgendwie nicht hin - habe die Authentifizierung per Datei eben nur in PHP geschafft...
Daher war meine Idee, irgendwie die XML-Daten in IOBroker abrufbar zu machen - nur wie?