Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
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.
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.
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.
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:
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.
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.
02.02.2011, 09:21 (Dieser Beitrag wurde zuletzt bearbeitet: 07.02.2011 13:56 von rolfk.)
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.
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.
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.