FHEM Forum

FHEM => Automatisierung => Thema gestartet von: MadMax am 28 August 2017, 07:41:20

Titel: HttpUtils # in URL
Beitrag von: MadMax am 28 August 2017, 07:41:20
Hallo Zusammen,

ich würde gerne mit den HttpUtils.pm ein par Daten vom Piko 10 BA auslesen (Neues Webmodul).

Leider bekomme ich immer als Inhalt
Sorry, the requested file does not exist on this server.

Die URL ist
http://192.168.2.85/#/home

im Browser wird mir die Seite angezeigt, mit dem BlockingGet kommt nur die Meldung.
Mein Code in Fhem (nur zum Testen).

D_KOSTAL_READ:klick {

fhem("set D_KOSTAL_READ nix");

my $param = {url        => "http://192.168.2.85/#/home", timeout    => 60};

my @WERT = HttpUtils_BlockingGet($param);

fhem("set D_KOSTAL_READ_ERROR ".@WERT[0]);
fhem("set D_KOSTAL_READ_AUSGABE ".@WERT[1]);
}



Wenn ich im Browser "http://192.168.2.85/home" eingebe bekomme ich auch angezeigt das die Datei nicht auf dem Server existiert.
Darum vermute ich das es an der # liegt.

Leider weiß ich hier nicht mehr weiter, würde mich über Unterstützung freuen, danke :)

Gruß
Max
Titel: Antw:HttpUtils # in URL
Beitrag von: EinEinfach am 28 August 2017, 07:48:27
Schon mal HTTPMOD Modul angeschaut?

Gruß
Titel: Antw:HttpUtils # in URL
Beitrag von: justme1968 am 28 August 2017, 07:49:55
du musst das # als %23 schreiben.

such mal bei google nach urlencode

es gibt zeichen die müssen in einer url besonders codiert werden. die browser machen das zum teil automatisch. in fhem muss du es selber genau vorgeben.
Titel: Antw:HttpUtils # in URL
Beitrag von: MadMax am 28 August 2017, 07:56:32
Hallo,

HTTPMOD habe ich noch nicht angeschaut, werde ich gleich mal machen.

das mit %23 habe ich versucht, ging leider auch nicht :(

Gruß
Titel: Antw:HttpUtils # in URL
Beitrag von: MadMax am 28 August 2017, 08:08:45
HTTPMOD bringt mir das gleiche, der Server meldet das die Datei nicht verfügbar ist und das bekomme ich dann als ausgabe zurück.

Leider finde ich auch nix ob es einene URL ohne # gibt.
Titel: Antw:HttpUtils # in URL
Beitrag von: justme1968 am 28 August 2017, 08:45:20
schau mal ob es mit wget geht. die original url und mit debug schauen was genau geholt wird.
Titel: Antw:HttpUtils # in URL
Beitrag von: MadMax am 28 August 2017, 09:33:12
So, HttpUtils mit Loglevel 1, bei beiden Varianten ob mit # oder %23 das gleiche.
Aber die # ist in der URL drin

2017.08.28 09:23:08 1: HttpUtils url=http://192.168.2.85/#/home
2017.08.28 09:23:08 2: HttpUtils request header:
WGET /#/home HTTP/1.0
Host: 192.168.2.85
User-Agent: fhem

2017.08.28 09:23:08 1: http://192.168.2.85/#/home: HTTP response code 200
2017.08.28 09:23:08 1: HttpUtils http://192.168.2.85/#/home: Got data, length: 173
2017.08.28 09:23:08 2: HttpUtils response header:
HTTP/1.0 200 OK
Content-Type: text/html
Expires: Sun, 02 Jan 2000 11:11:11 GMT



2017.08.28 09:27:05 1: HttpUtils url=http://192.168.2.85/%23/home
2017.08.28 09:27:05 2: HttpUtils request header:
WGET /%23/home HTTP/1.0
Host: 192.168.2.85
User-Agent: fhem

2017.08.28 09:27:05 1: http://192.168.2.85/%23/home: HTTP response code 200
2017.08.28 09:27:05 1: HttpUtils http://192.168.2.85/%23/home: Got data, length: 173
2017.08.28 09:27:05 2: HttpUtils response header:
HTTP/1.0 200 OK
Content-Type: text/html
Expires: Sun, 02 Jan 2000 11:11:11 GMT


Titel: Antw:HttpUtils # in URL
Beitrag von: MadMax am 28 August 2017, 09:47:40
Ich habe was.

http://192.168.2.85/api/dxs.json?dxsEntries=33556736
{"dxsEntries":[{"dxsId":33556736,"value":4926.920898}],"session":{"sessionId":0,"roleId":0},"status":{"code":0}}

Da bekomme ich die Aktuelle PV Leistung.

http://192.168.2.85/api/dxs.json?dxsEntries=33556736&dxsEntries=67109120&dxsEntries=83888128&dxsEntries=33556229&dxsEntries=16780032

Bringt mir dann:

{"dxsEntries":[{"dxsId":33556736,"value":4850.602051},{"dxsId":67109120,"value":1106.510010},{"dxsId":83888128,"value":1074.247559},{"dxsId":33556229,"value":32.000000},{"dxsId":16780032,"value":3}],"session":{"sessionId":0,"roleId":0},"status":{"code":0}}


Also:
DC-Eingang Gesamt
Ausgangsleistung
Eigenverbrauch
Batterie Ladezustand
Betriebsstatus

Jetzt muss ich mir nur noch die IDs für die Parameter die Interessant sind raussuchen und Fertig :)

Rausbekommen habe ich das über die Netzwerkanalyse mit Firefox, da sieht man wo das JS so drauf zugreift.

Also ist mir das mit der # auch egal.

Aber Danke für die Hilfe. Dann werde ich mal schauen das ich mein erstes Modul baue.

Gruß
Max
Titel: Antw:HttpUtils # in URL
Beitrag von: MadMax am 28 August 2017, 13:10:49
Zur Info.

//Leistungswerte
    ID_DCEingangGesamt = 33556736;         // in W
    ID_Ausgangsleistung = 67109120;        // in W
    ID_Eigenverbrauch = 83888128;          // in W
    //Status
    ID_Status = 16780032;                  // 0:Off
    //Statistik - Tag
    ID_Ertrag_d = 251658754;               // in Wh
    ID_Hausverbrauch_d = 251659010;        // in Wh
    ID_Eigenverbrauch_d = 251659266;       // in Wh
    ID_Eigenverbrauchsquote_d = 251659278; // in %
    ID_Autarkiegrad_d = 251659279;         // in %
    //Statistik - Gesamt
    ID_Ertrag_G = 251658753;               // in kWh
    ID_Hausverbrauch_G = 251659009;        // in kWh
    ID_Eigenverbrauch_G = 251659265;       // in kWh
    ID_Eigenverbrauchsquote_G = 251659280; // in %
    ID_Autarkiegrad_G = 251659281;         // in %
    ID_Betriebszeit = 251658496;           // in h
    //Momentanwerte - PV Genertor
    ID_DC1Spannung = 33555202;             // in V
    ID_DC1Strom = 33555201;                // in A
    ID_DC1Leistung = 33555203;             // in W
    ID_DC2Spannung = 33555458;             // in V
    ID_DC2Strom = 33555457;                // in A
    ID_DC2Leistung = 33555459;             // in W
    //Momentanwerte Haus
    ID_HausverbrauchSolar = 83886336;      // in W
    ID_HausverbrauchBatterie = 83886592;   // in W
    ID_HausverbrauchNetz = 83886848;       // in W
    ID_HausverbrauchPhase1 = 83887106;     // in W
    ID_HausverbrauchPhase2 = 83887362;     // in W
    ID_HausverbrauchPhase3 = 83887618;     // in W
    //Netz Netzparameter
    ID_NetzAusgangLeistung = 67109120;     // in W
    ID_NetzFrequenz = 67110400;            // in Hz
    ID_NetzCosPhi = 67110656;
    //Netz Phase 1
    ID_P1Spannung = 67109378;              // in V
    ID_P1Strom = 67109377;                 // in A
    ID_P1Leistung = 67109379;              // in W
    //Netz Phase 2
    ID_P2Spannung = 67109634;              // in V
    ID_P2Strom = 67109633;                 // in A
    ID_P2Leistung = 67109635;              // in W
    //Netz Phase 3
    ID_P3Spannung = 67109890;              // in V
    ID_P3Strom = 67109889;                 // in A
    ID_P3Leistung = 67109891;              // in W
Titel: Antw:HttpUtils # in URL
Beitrag von: justme1968 am 28 August 2017, 13:16:38
HTTPMOD und jsonreadings sollte dir weiter helfen.
Titel: Antw:HttpUtils # in URL
Beitrag von: MadMax am 30 August 2017, 20:18:13
Funktioniert mit HTTPMOD und der oben angegebenen URL hervorragend.