Anmeldung an Webseite von Wechelrichter

Begonnen von lechez, 01 April 2013, 07:56:15

Vorheriges Thema - Nächstes Thema

lechez

Hallo,
mein Arbeitskollege hat mich auf den FHEM Virus gebracht.

Hab jetzt schon viel automatisiert. Würde gerne meine Solarnalge noch integrieren. Solarview unterstützt meine Anlage leider nicht.
Jetzt versuche ich es selber mal.
Ich kann mich mit dem Browser an den Wechselrichter anmelden: http://192.168.2.10/data/ajax.txt?CAN=1&HASH=00100403&TYPE=1
Und bekomme das zurück:
104 W;101 W;112 VA;55 var;337.00;234.20;0.31;0.43;104;98;---;---;0.78 i;0.01;0.01;520.91;1463.56;132;0;0;AT 4500;1; x 00100403;01;00000001

Wäre schön mit einem Perl Programm dies abzufragen. Einfach die Werte loggen und darstellen.

Bei mir scheitert es bei der Anmeldung am WR.
Ich habe mal versucht ein Perl Programm zu schreiben:

use LWP::UserAgent;
use HTTP::Request;
use HTTP::Cookies;

my $url = shift || 'http://192.168.2.10/data/ajax.txt?CAN=1&HASH=00100403&TYPE=1';

# setup your browser
my $ua = LWP::UserAgent->new(keep_alive => 1, timeout => 300);

# what kind of browser you are
$ua->agent("Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3a)
Gecko/20021207 Phoenix/0.5");

# a place to store cookies, if needed
$ua->cookie_jar( HTTP::Cookies->new(file => "perlcookies.dat", autosave
=> 1) );

# now build a request
my $request = HTTP::Request->new( GET => $url );

# set credentials
$request->authorization_basic('BN','PW');

# run browser
my $response = $ua->request($request);

# and check response
printf $response->content();

Ich kann mit dem Programm auf fhem (auch Passwort geschützt) zugreifen aber nicht auf den Wechelrichter es kommt als Ausgabe:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"><html><head><meta name="generator" content="HTML Tidy for Windows (vers 1st April 2002), see www.w3.org"><title>401 Unauthorized</title></head><body><script type="text/javascript">function getURL(){return document.URL();}</script><h1>Unauthorized</h1><p>Authorization for the requested URL: <b><script type="text/javascript">document.write(document.URL);</script></b> required.</p><hr><address>emBetter web server 2.0</address></body></html>

Welchen Denkfehler mache ich?
Vielleicht kann mir jemand helfen.
Würde dann mein fertiges Programm hier zur Verfügung stellen. Weil ja vielleicht ein Paar auch eine Wechselrichter von Sunways haben mit Webseite.

Gruß
Le Chez

lechez

hab es rausbekommen war digest auth.

hier mein code:

use WWW::Mechanize;
 
my $url = "http://192.168.2.10/data/ajax.txt?CAN=1&HASH=00100403&TYPE=1";
 
my $digest_user = "customer";
my $digest_password="pw";
 
my $mech = WWW::Mechanize->new( autocheck => 1 );
 
$mech->credentials($digest_user, $digest_password);
$mech->add_header( 'X-REQUESTED-AUTH' => 'Digest' );
$mech->get($url);
 
my $response = $mech->response();
printf $response->content();