FTP von Windows-PC zur SymBox

Hallo Zusammen,

ich versuche aus IP-Symcon über FTP auf eine Datei auf einem Windows-Rechner zuzugreifen.

Es geht darum einen Datenaustausch zwischen einer VBA-Anwendung und einer SymBox zu realisieren. Die SymBox liest über Modbus-TCP Wassertemperaturen ein und der PC steuert einen externen Anzeige-Bildschirm mit den Temperatur-Daten.

Umgekehrt gibt es einen Zahlenwert vom Windows-Rechner, der in die SymBox bzw. das Webfront reinlaufen soll.

In VBA werden TXT-Dateien erzeugt bzw. gelesen – das funktioniert bereits.

Ich habe dies in der Doku gefunden:

Auf dem Windows-Rechner habe ich einen Filezilla-Server (V1.3.0) installiert. Ich bekomme aber keinen Zugriff zustande, vermutlich passt der Connection-String nicht:

// $adresse = ftp://my-user:password@localhost/test.txt;
$adresse = ftp://ipsymcon:ipsymcon@192.168.17.44/besucherzahl.txt;
$inhalt = file_get_contents($adresse);

Warning: file_get_contents(): connect() failed: Connection refused

Die Konfiguration des Filezilla-Servers ist auch schwierig mit Virtual Path und Native Path, aber über WinSCP gelingt der Zugriff, dort aber nur, wenn „Explizites TLS“ eingestellt ist.

SymBox und Windows-PC liegen im selben Netzwerk 192.168.17.xx

Hat einer von Euch einen Tipp für mich?
Oder vielleicht eine ganz andere Idee wie der Zugriff funktionieren könnte?

Danke.

Viele Grüße aus dem Unterallgäu
Harry

Du willst auf Localhost zugreifen. Also von der Symbox auf die Symbox. Die aber garkeinen FTP Server eingebaut hat. Also ftp://....@192.168.17.xy/besucherzahl.txt wäre hier wohl sinnvoller. Wobei xy die IP des Filezilla Servers auf Windows ist.

Hallo Tobias,

danke für den Hinweis. Das hatte ich auch probiert:

$adresse = "ftp://ipsymcon:ipsymcon@192.168.17.44/besucherzahl.txt";
$inhalt = file_get_contents($adresse);

Hier läuft die Sanduhr durch und dann die Fehlermeldungen:

Warning: file_get_contents(): connect() failed: Connection timed out in /mnt/data/symcon/scripts/56211.ips.php on line 10
Warning: file_get_contents(ftp://...@192.168.17.44/besucherzahl.txt): failed to open stream: operation failed in /mnt/data/symcon/scripts/56211.ips.php on line 10

Sorry, im ersten Thread hatte ich durch Copy&Paste die falsche Zeile. Localhost geht natürlich nicht, wie Du korrekt angemerkt hast. Unter WinSCP habe ich auch die IP-Adresse drin, da geht der Zugriff.

Muss ich vielleicht bei file_get_contents oder in der php.ini noch etwas anpassen?

Viele Grüße aus dem Unterallgäu
Harry

winSCP ist erstmal ein SCP Client. Dass du den für FTP zweckentfremdest, ist mir nicht bewusst geworden. Wenn du dort explizit SSL aktivieren musst, hast du zwei Möglichkeiten. Du aktivierst in php auch FTP over SSL (ggf. mit ftps://) oder du deaktivierst im FTP Server ssl bzw. den Zwang dazu.

Vielen Dank für die Tipps.
Da werde ich mich als nächstes mit dem Filezilla Server und dem PHP-Manual befassen.

Viele Grüße aus dem Unterallgäu
Harry

PHP kann keine Verschlüsselung. D.h. du müsstest im FileZilla diese abschalten. Dann sollte es korrekt gehen.

paresy

Für so einfache Aufgaben nutze ich den Windows FTP Server vom IIS. Vielleicht als Alternative zu Filezilla.
Michael

PHP kann keine Verschlüsselung

PHP oder IPS?

Danke für den Hinweis, da brauche ich in der Richtung nicht mehr versuchen.

Viele Grüße aus dem Unterallgäu
Harry

Für so einfache Aufgaben nutze ich den Windows FTP Server vom IIS.

Danke für den Tipp - ist der IIS standardmäßig bei Windows 10 dabei?

Viele Grüße aus dem Unterallgäu
Harry

Ja, musst du über die Windows Features aktivieren.
Michael

Hallo Michael,
ich habe den IIS installiert und konfiguriert, komme aber dennoch nicht ans Ziel.
Hast Du vielleicht eine Zeile Beispielcode mit der korrekten URL für mich?

So habe ich es probiert:

$adresse = "ftp://192.168.1.44/besucherzahl.txt";
$inhalt = file_get_contents($adresse);

Die Fehlermeldung lautet: Warning: file_get_contents(): connect() failed: Connection timed out

Viele Grüße aus dem Unterallgäu
Harry

Port in der Firewall freigegeben?
Michael

Ja, auf dem PC in der Windows-Firewall.

Hat jemand eine andere Idee wie ich von einer SymBox auf Zahlenwerte einer VBA-Anwendung zugreifen bzw. schreiben kann (ich brauche beide Richtungen). Irgendwie hab ich zur Zeit ein Brett vorm Kopf.

Viele Grüße aus dem Unterallgäu
Harry

Z.B. MQTT in der VBA Anwendung und den Symcon MQTT Server nutzen.

Unser Excel SDK laden. Dort ist eine VBA Anwendung drin zum Auslesen vom Archiv über JSON RPC.

paresy

Zwei sehr gute Hinweise - DANKE

Fang ich mal mit EXCEL-SDK an. :raising_hand_man:t3:

Viele Grüße aus dem UA
Harry

Excel SDK sieht gut aus. Die Connection funktioniert und erste Variablen konnte ich auslesen. Danke.

Gibt es auch ein Code-Beispiel in VBA zum Schreiben in eine IPS-Variable? Da sollte dann ja ähnlich funktionieren?

Viele Grüße aus dem Unterallgäu
Harry

Nein, aber schaue dir an wie die Kommunikation funktioniert. Per JSON-RPC kannst du beliebige Befehle senden. Auch z.B. RequestAction.

paresy

Vielen Dank für die Hilfe.

Die erste Hälfte des Problems ist gelöst: Die Daten aus der SymBox werden in der VBA-Anwendung angezeigt.

Morgen versuche ich die andere Richtung mit JSON-RPC: einen Wert aus der VBA-Anwendung in eine IPS-Variablen zu senden.

Viele Grüße aus dem Unterallgäu
Harry

Das Schreiben aus VBA in eine IPS-Variable über JSON-RPC funktioniert nun auch.
Danke für Eure Hilfe und die Anregungen.

Viele Grüße aus dem Unterallgäu
Harry