Datei im Netzwerk abrufen

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

St08

Benutzer
Registriert
27. März 2014
Beiträge
38
Reaktionspunkte
2
Punkte
8
Hallo zusammen,
ich scheitere gerade an einer vermeintlich einfachen Aufgabe: Ich habe eine XML-Datei auf der Webstation liegen und möchte sie innerhalb des Netzwerks abrufen. Aber es scheitert wohl an der Berechtigung...

Der Reihe nach:
  1. Ich habe auf der Westation ein PHP-Script, dass regelmäßig automatisch ausgeführt wird. Es sammelt im Internet Informationen an einer API ein und legt sie als XML-Datei im Verzeichnis \web ab.
  2. Ich habe im Docker IOBroker laufen und möchte in der Visualisierung des IOBrokers auf die Informationen in der XML-Datei zugreifen.
  3. Im IOBroker läuft ein Javascript, dass per fetch('http://ip-der-diskstation/123.xml') die Daten abruft.
  4. Es kommt die Fehlermeldung "Access to XMLHttpRequest at 'http://ip-der-diskstaion/123.xml' from origin 'http://ip-der-diskstation:8082' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Jetzt habe ich schon versucht, per SSH die Config des NGINX zu ändern, um den Server zu erlauben. Aber da komme ich nicht weiter.

Vielleicht bin ich aber auch auf dem Holzweg.

Gibt es eine einfachere Möglichkeit, meine XML-Datei innerhalb der Diskstation zu übergeben?
 
Den Dateipfad, in dem die Datei liegt, direkt in den Container mounten?
 
Ja, das ist eine gute Idee. Darauf bin ich noch nicht gekommen.

Habe ich gerade versucht, aber vielleicht stelle ich mich zu blöd an. Damit kriege ich den IOBroker zum Absturz. :-/

Habe jetzt den Pfad web im Docker in /opt/iobroker/iobroker-data/files/xyz gemountet. Der Ordner ist dort auch zu sehen - aber wenn ich auswähle, stürzt IOBroker ab ("keine Verbindung"), die Visualisierung lässt sich gar nicht mehr laden und zeigt im Anschluss nur noch kryptische Pfade und Dateien...

Ach ja: Und der Ordner xyz ist leer. Habe es mehrfach probiert und ihn auch mal in ander Pfade gemountet. Mache ich was falsch?
 
Zuletzt bearbeitet:
Zeig doch einfach deine Installation vom Container. Du kannst jeden Ordner mounten. Willst die Datei in einen bestimmten Ordner im Container haben?
 
Da dein JavaScript lokal ausgeführt wird und du hier versuchst auf externe Daten zuzugreifen (PC -> NAS) wird es hier sicherlich zu dem besagten CORS-Problem kommen. https://stackoverflow.com/questions...oad-xxx-no-access-control-allow-origin-header

Hast du das JavaScript zufälligerweise in deiner VIS eingebunden? Das wäre jetzt die einzig logische Erklärung hierfür.
Der normale ioBroker-Ansatz wäre hier das Ganze über den Skript-Adapter abzubilden, Datenpunkt beschreiben und dann in der VIS einzubetten.

Du kannst natürlich auch versuchen den Header mit zu übergeben, siehe auch:
https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin
https://www.youtube.com/watch?v=Tmib_2sCPww

P.S.: Solche Themen sind im ioBroker-Forum besser aufgehoben.
 
Okay, danke für die Antworten.

Ich glaube so langsam übersteigt das doch meine Programmier-Fähigkeiten... :)

Vielleicht gibt es ja auch eine ganz andere Möglichkeit? Ich rufe ja mit einer PHP-Datei Daten von einer API im Web ab und speichere sie als XML. Ich habe mich für die PHP-Variante entschieden, weil ich es nur so geschafft habe, mich beim API-Server per Zertifikatsdatei zu authentifizieren. Und ich dachte, es wäre dann einfach, diese Daten im lokalen Netz beliebig weiterzuverarbeiten, wenn sie ja "schon mal da liegen". Aber ganz so einfach ist es wohl doch nicht...

Ich suche mal im IOBroker-Forum weiter.
 
Wenn du schon mit PHP experimentierst, könntest du die Daten auch direkt parsen und in eine Datenbank schreiben. Das macht das Abgreifen der Daten in der VIS einfacherer und ist prinzipiell ressourcenschonender. Ersatzweise könntest du es ja auch noch mit dem Parser-Adapter probieren. Den kann man, neben URLs auch mit Dateien füttern. Zum Parsen müsstest du dich notfalls ein wenig mit regEX auseinandersetzen. Das muss jetzt aber kein Drama sein.

Wenn das nicht hilft.. Viele Wege führen nach Rom.. oder ins ioBroker-Forum.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat