Hallo,
ich habe eine kleine HW bekommen die paar digitale Ausgänge und
Eingänge hat. Ein Webserver ist vorhanden und alles funktioniert wenn
man mit dem Browser arbeitet.
Ich möchte jetzt gerne ohne Browser einzelne Ausgänge setzen
und abfragen. Dazu benutze ich CURL. Da ich eigentlich keine Ahnung
von CURL, HTTP, CGI etc. habe, konnte ich nach langem suchen im WEB und
durch viel ausprobieren Ausgänge setzen und rückzusetzen.
also z.B.
curl -d "pin=2&val=1" http://192.168.11.100/dout.cgi
Man kann damit Batchfiles erstellen und mit einem Mausklick den
entsprechenden Ausgang setzen oder rücksetzen.
Mein Problem ist jetzt, wie kann ich Eingänge abfragen und das
zurückgelieferte Ergebnis weiterverarbeiten ?
Könnte mir da bitte jemand Hilfestellung geben?
(!!Ja, ich habe schon im WEB gesucht und damit sehr viel Zeit verbracht,
bin aber für meine Verständnis nicht fündig geworden!!)
Danke
Wenn du mit dem Browser den Status angezeigt bekommst (und nur dann)
geht es auch mit CURL.
Im Prinzip kannst du mit CURL den selben Output abholen, wie du mit
"Zeige Quelltext" im Browser vorgesetzt bekommst. Dann noch ein wenig
nachbearbeiten und fertig.
Ob das aber auf der Kommandozeile mit Batch-Verarbeitung etwas wird,
glaube ich eher nicht. Da musst du wohle einfache eine
Programmiersprache benützen.
StinkyWinky schrieb:> Wenn du mit dem Browser den Status angezeigt bekommst (und nur dann)> geht es auch mit CURL.
Ja, das glaube ich auch.
Frage ist aber, wie muss der CURL Einzeiler dazu aussehen?
Ich habe das in C programmiert. Dort genügt ein Einzeiler definitiv
nicht. Wie das auf der Kommandozeile gehen würde, kann ich nur vermuten:
Die Seite in eine Datei herunterladen:
curl -o savedpage.txt http://192.168.11.100/
Dann die Datei mittels geeignetem Skript parsen, und das Resultat zu
weiteren Verwendung bereitstellen.
Schaue Dir mal awk an, damit kannst Du die Ausgabe von Curl parsen und
verarbeiten. Gibt es unter Linux, sollte es auch für Windows geben (OS
hattest Du nicht angegeben).
Awk arbeitet Zeilenweise mit Dateien oder stdin als Input.
StinkyWinky schrieb:> Wenn du mit dem Browser den Status angezeigt bekommst (und nur dann)> geht es auch mit CURL.> Im Prinzip kannst du mit CURL den selben Output abholen, wie du mit> "Zeige Quelltext" im Browser vorgesetzt bekommst. Dann noch ein wenig> nachbearbeiten und fertig.
Meiner Meinung nach ist cURL dafür der falsche Weg. Es führen zwar viele
Wege zum Ziel, ich würde in der Programmiersprache meiner Wahl die Seite
einfach mit der Webdownload-Funktion, z.B. aus dem .NET-Framework
herunterladen. Danach die Datei nach den gewünschten Daten durchsuchen
(parsen) und schon hast du das gewünschte Ergebnis. In VB.NET dürften
das so um die 30 Zeilen Code sein.
> Ob das aber auf der Kommandozeile mit Batch-Verarbeitung etwas wird,> glaube ich eher nicht. Da musst du wohle einfache eine> Programmiersprache benützen.
Sehe ich genauso. Das herunterladen ist nicht das Problem, allerdings
die Suche und Aufbereitung der Daten. Da hätte ich jetzt keine Idee, wie
das auf Kommandozeilen-Ebene laufen soll.
Ich bedanke mich sehr für die verschiedenen Hinweise.
Da es auf den ersten Blick recht einfach ist mit CURL per Mausklick
ein Pin (Relais) ein und auszuschalten, dachte ich naiver weise
das gilt auch irgendwie für's Auslesen (OS ist WIN8.1)
Eure Hinweise und Information geben mir aber wieder Input zum Weiter-
suchen.
Schön wäre halt, wenn man irgendwie ein Beispiel hätte, an dem man
sich "festhalten " könnte. Als unbedarfter Einsteiger ist es sonst
schwierig.
Aber nochmals vielen Dank für die Hinweise, ich denke das hilft schon
mal.
Jens P. schrieb:> Meiner Meinung nach ist cURL dafür der falsche Weg.
Das kommt auf die Seite an. Wenn man mit einem nachgeschalteten
Skript-Fünfzeiler die Daten bequem per Patternmatching aus der Seite
rausfischen kann, dann geht das schnell und bequem mit curl. curl ist
auch nichts anderes als eine
> Webdownload-Funktion.
Kommt vom Webserver hingegen ein moderner Wust aus minimaler HTML-Seite
und ein paar tausend Zeilen JavaScript, dann reicht ein Download der
Seite nicht, egal mit welcher Programmiersprache. Dann braucht man
notfalls eine Browser-Komponente mit JavaScript-Unterstützung und muss,
nachdem die Seite im Speicher fertig gerendert ist, das DOM nach den
Daten durchsuchen. Das ist dann der Punkt, wo man dem Hersteller der
Hardware sagen sollte, dass er mal auf sein Leben klarkommen soll und
eine vernünftige Schnittstelle anbieten sollte.
curl schrieb:> Da es auf den ersten Blick recht einfach ist mit CURL per Mausklick> ein Pin (Relais) ein und auszuschalten, dachte ich naiver weise> das gilt auch irgendwie für's Auslesen (OS ist WIN8.1)
Das hat nichts mit dem OS zu tun, sondern wie der Hersteller der
Hardware seinen eingebauten Webserver und seine Webseiten gestaltet hat.
> Schön wäre halt, wenn man irgendwie ein Beispiel hätte, an dem man> sich "festhalten " könnte.
Das können wir dir nicht liefern, weil wir nicht wissen wie der
Hersteller deiner Hardware seine Webseiten und Web-Schnittstellen
aufgebaut hat. He, wir wissen nicht mal, wer der Hersteller ist.
> Als unbedarfter Einsteiger ist es sonst> schwierig.
Frag den Hersteller nach vollständigen Beispielen.
Jack schrieb:> Das hat nichts mit dem OS zu tun, sondern wie der Hersteller der> Hardware seinen eingebauten Webserver und seine Webseiten gestaltet hat.>
Das wusste ich, nur wurde in einem vorherigen Beitrag nach dem OS
gefragt.
>> Das können wir dir nicht liefern, weil wir nicht wissen wie der> Hersteller deiner Hardware seine Webseiten und Web-Schnittstellen> aufgebaut hat. He, wir wissen nicht mal, wer der Hersteller ist.>
Das verstehe ich. Wollte auch keine perfekt Lösung sondern nur ein
Lösungsansatz, sozusagen nur eine prinzipielle Lösung.
Aber bitte. Hier ist der download link. Im Verzeichnis
WIZ550web_Webpages\0_Basic_Demopages ist der HTML Code
(index.html)den ich benutze.
http://wizwiki.net/wiki/lib/exe/fetch.php?tok=1e395e&media=https%3A%2F%2Fgithub.com%2FWiznet%2FWIZ550web%2Farchive%2Fv1.1.1.zip
Jetzt müsste alles bekannt sein, oder ?
>> Frag den Hersteller nach vollständigen Beispielen.
Der Herstellung sagt leider gar nichts dazu. Musste mir den ersten Teil
(setzen von Ausgängen) auch selbst erarbeiten.
--- schrieb:> FOR /F "usebackq" %%i IN (`wget -O - www.blubdidup.com ^| sed -n> "s/.*://" `) DO ECHO %%i
Sagt mir leider nichts. Wäre für eine Erklärung sehr dankbar!