LabVIEWForum.de
kommunikation über LAN / HTTP - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: kommunikation über LAN / HTTP (/Thread-kommunikation-ueber-LAN-HTTP)



kommunikation über LAN / HTTP - wohl - 19.01.2011 10:34

Ich möchte eine über LAN ansteuerbare Steckdosenleiste (ePowerSwitch von Leunig) mittels Labview ansteuern.
Im Augenblick stochere ich ziemlich im Trüben, und weiß nicht, wie und wo ich anfangen soll. Kann mir jemand eine Empfehlung geben?

Labview bietet VIs für TCP, HTTP, und anderes. Ich muß wissen, wie ich die Kommunikation mit dem Gerät, welches vernetzt ist, aufnehmen kann. Per Browser funktioniert das ganz gut, nur muß dieses Gerät in den Programmablauf eingebunden werden.

Ist das Basispaket von Labview für diese Aufgabe ausreichend?
Bitte um Tips, bezüglich Verwendung von VIs.
Welche Literatur gibt es, mit dessen Hilfe man sich in diese Aufgabenstellung einarbeiten kann?
Gibt es Beispiele, für derartige Aufgaben?

Gezeigt ist die Homepage des servers in der Steckdosenleiste.

Lv10

Vielen Dank.

Wolfgang


kommunikation über LAN / HTTP - Richard - 19.01.2011 11:23

Hallo wohl,

die Basisversion von LabView müsste dafür ausreichen.

Du kannst dich über TCP/IP open mit der IP Verbinden. Als Port wirst du vermutlich die 80 brauchen. Danach kannst du den gleichen String, den du im Browser verwendest versuchen. Die Addressierung (http:\[ip]) ist dabei optional.

Gibt es für die Steckdosenleiste eine cgi?

In dieser müsste das genaue Protokoll dokumentiert sein.

Gruß Richard


kommunikation über LAN / HTTP - wohl - 19.01.2011 17:15

Hallo Richard,

vielen Dank, das sieht gut aus. Der Hersteller hat mir einen Programmcode in Delphi geschickt, in dem alle Befehle aufgelistet sind. Viel ist das ja nicht.

Der Verbindungsaufbau hat anscheinend geklappt, jedenfalls bekam ich keine Fehlermeldung mehr, als das Labview in der Firewall erlaubt wurde.

Nur, diese Steckdosenleiste fragt normalerweise zuerst nach dem User, und will ein Paßwort haben. Mit dem Browser (Firefox) ist das ja klar, aber mit den VIs TCP-Lesen, und TCP-Schreiben komme ich da nicht weiter. Im Frontpanel sehe ich keine Ausgabe. Auch irgendwelche Inputs bleiben ohne Wirkung.

Wolfgang


kommunikation über LAN / HTTP - rolfk - 20.01.2011 11:15

Du wirst Dich mit Authenifizierung herumschlagen müssen. So auf die Schnelle ist nicht zu sagen was für eine Autentizifierungsform Deine Steckdosenleiste möchte. HTTPS scheint es jedenfalls nicht zu sein, und das macht es schon mal wesentlich einfacher.

Wahrscheinlich hast Du in Deinem HTTP Header den Du von der Leiste bekommst Dinge drin wie:

HTTP Status 401
.....
WWW-Authenticate: Digest realm="<application name>", qop="auth,auth-int", salgorithm="MD5", nonce="2C8F69C7E3AB04CB87138C41B3D46320", opaque="9FFE6C2CEEA5FEF8FA6C6DE3071D2A3" ....

oder

WWW-Authenticate: Base

und musst du entsprechend antworten:

Authorization: Base <Base64 encoded username and password>

oder

Authorization: Digest username="<name>", realm="<applications name>", nonce="2C8F69C7E3AB04CB87138C41B3D46320",
uri="<die entsprechende uri>", response="123456789019234566778, opaque="9FFE6C2CEEA5FEF8FA6C6DE3071D2A34",
qop=auth, nc=00000001, cnonce="082c875dcb2ca740"

Diese zweite ist ziemlich kompliziert wenn Du Dich noch nie mit Kryptografie auseinandergesetzt hast aber ausser ein paar Strings
aneinander fügen und ein paar MD5 oder SHA256 Hashes darüber los lassen ist es nicht wirklich schwierig. Da es wohl hauptsächlich für Netwerkinterne Sachen vorgesehen ist wäre die Base Authentifizierung wohl keine Katastrophe, so Dein Device die denn unterstützt.

Wenn die Daten über das öffentliche Internet gehen müssen ist Base64 Encoding für ein Passwort aber bestenfalls ein schlechter Witz.


kommunikation über LAN / HTTP - wohl - 01.02.2011 15:09

Hallo,

leider bekomme ich überhaupt keine Antwort aus dem Server (Steckdosenleiste). Habe ich den Aufbau falsch konfiguriert? Ich denke, unter Daten müßte ich irgend etwas empfangen, auch wenn ich dessen Sinn (noch) nicht verstehe.

Rufe ich die Adresse im Browser auf, dann kommt die Anfrage nach einem Paßwort. Hier kommt gar keine Ausgabe.

Vielen dank für Hinweise.


kommunikation über LAN / HTTP - rolfk - 02.02.2011 09:21

' schrieb:Hallo,

leider bekomme ich überhaupt keine Antwort aus dem Server (Steckdosenleiste). Habe ich den Aufbau falsch konfiguriert? Ich denke, unter Daten müßte ich irgend etwas empfangen, auch wenn ich dessen Sinn (noch) nicht verstehe.

Rufe ich die Adresse im Browser auf, dann kommt die Anfrage nach einem Paßwort. Hier kommt gar keine Ausgabe.

Vielen dank für Hinweise.

Bevor ein HTTP Server antwortet musst Du ihm schon zuerst einen HTTP Request schicken. Du sprudelst ja auch nicht mit deinem Wissen los, nur weil Dein Telefon klingelt und sich dann niemand meldet.

Also sowas wie ein "GET / HTTP/1.0\r\n" sollte es schon minimal sein. Man beachte die \r\n am Ende die man in LabVIEW einführt nachdem man das entsprechende Stringkontrol oder -konstanate mit der rechten Maustastte in "Display Codes" umgeschaltet hat.

Hoffentlich unterstützt Deine Leiste HTTP 1.0 denn wenn Du HTTP 1.1 verwenden musst wird der Header einiges komplizierter.

Es ist aber gut möglich dass das noch nicht genug ist. So kann es beispielsweise sein dass der Server darauf mit einem Redirekt antwortet worin der Pfad enthalten ist, den du anstelle des ersten / in obiger Anfrage nochmal anfragen musst. Danach sollte aber die richtige Page kommen die dann wohl weiter oben genannte Informationen enthält um daraus aufbauend eine Authentifizierung zu generieren die Du dann wiederum als HTTP Request zum Server schickst.


RE: kommunikation über LAN / HTTP - wohl - 07.02.2011 15:11

Vielen Dank,

die Antwort hat mich wohl auf eine richtige Spur geführt.

Mit http VIs kann ich die Steckdose ansprechen, und prinzipiell auch steuern. Ich merkte es daran, daß ich beim Versuchen die Anmelde-Daten versehentlich geändert hatte. Im Header sah ich übrigens, daß http 1.1 zur Anwendung kommt.

Nur, das gezielte Steuern der einzelnen Funktionen ist mir bisher nicht gelungen. Gibt es eine Möglichkeit, den Verkehr mit einem Browser aufzuzeichnen? Da stehen ja mit Sicherheit die Befehle im Protokoll, welche das Endgerät steuern!?

Da gibt es die VIs GET, PUT, POST, ich habe alle probiert, aber auf keinen hat mein Input die erwartete Reaktion verursacht. Aus dem Inhalt des Heaaders von GET habe ich jedenfalls entnommen, daß ich mich ordnungsgemäß eingeloggt hatte. Jetzt muß ich nur die Information rüberbringen, und der Fall ist erledigt.

Bitte um Hinweise.

Wolfgang


RE: kommunikation über LAN / HTTP - wohl - 15.02.2011 17:07

... jetzt gebe ich mir selbst die Antwort Undecided

einen Web-Debugger (http://www.fiddler2.com) zu verwenden war hilfreich. Hier konnte ich den Inhalt des Request-Headers in die entsprechenden Dialogfeldes des VI eintragen, nachdem ich einmal das Gerät über den Browser betrieben hatte.

Wolfgang