Ich kann problemlos über HTTPMOD auf mein SENEC Webinterface der PV Anlage zugreifen und den HTML Code im Puffer sehen. Allerdings stehen da keine Werte, sondern die sind in einzelnen <DIV> Containern bis zu 6, 7 Ebenen tief verschachtelt verborgen (siehe angehängten Screenshot des Firefox Inspectors). Kann ich mit HTTPMOD da rankommen und wenn ja, hat jemand einen Link für eine Doku der Syntax?
			
			
			
				Hallo zusammen,
ich möchte dieses Thema gerne nochmal reaktivieren.  ;D
Ich besitze ebenfalls einen PV-Speicher von SENEC.IES.
Das Webinterface kann ich über die lokale, zugewiesene IP-Adresse erreichen.
Dann habe ich mal im Firefox unter den Entwicklerwerkzeugen die Netzwerkanalyse der Seite gestartet.
Die einzelnen Reiter dazu befinden sich im Anhang.
Kommt man wohl per HTTPMOD an die entsprechenden Werte? Exemplarisch habe ich mal die Abfrage zur PV-Leistung unter Webinterface, Parameter und Antwort gelb markiert.
Die Daten werden wohl von http://IP.DES.SENEC.SPEICHER/lala.cgi im Sekundentakt angefordert.
Im unteren Teil der Entwickleroptionen steht auch noch "POST (XHR) SPEICHER-IP/lala.cgi"
Eine einfache HTTPMOD Definition direkt auf die IP des Speichers führt bei mir zu folgendem Log-Eintrag:
HTTP/1.0 400 Bad Request Content-Type: application/json Server: Solute Connection: close
Ich finde leider keinen Ansatz...vielleicht kann ja jemand weiterhelfen, oder einen Schubs in die richtige Richtung geben?!?
Danke schonmal für jegliche Hilfe!!!
Gruß
Andreas
			
			
			
				Habe das Problem mittlerweile über ein von SENEC geliefertes Python Skript gelöst:
https://forum.fhem.de/index.php/topic,39258.msg322193.html#msg322193
Habe es Dir auch schon geschickt, @Vize
			
			
			
				Ja Björn, ich weiß...  ;)
Danke nochmal dafür!
Aber vielleicht kann ja doch noch jemand bei dem HTTPMOD-Ansatz weiterhelfen???
Gruß
Andreas
			
			
			
				ZitatEine einfache HTTPMOD Definition direkt auf die IP des Speichers führt bei mir zu folgendem Log-Eintrag:
was das wohl sein soll?
ich denke, dass du die POST daten nicht definiert hast, eventuell die angabe im bild "parameter" in ein entsprechendes attribut packen, zb requestData oder getXXData. 
lies noch mal aufmerksam das wiki oder commandref bezüglich POST-methode. 
			
 
			
			
				Zitat von: frank am 26 April 2016, 13:32:51
was das wohl sein soll?
Moin frank,
bitte nicht jedes Wort auf die Goldwaage legen...streiche das Wort "einfache" aus dem Satz...sorry.
Werde mich nochmal mit dem Wiki entsprechend befassen.
Danke für deine Hinweise!
Gruß
Andreas 
			
 
			
			
				Hallo,
so, hab mir nochmal das wiki zu HTTPMOD zur Brust genommen und (leider nur) folgendes erreicht:
Unter ubuntu habe ich auch mal perr Live HTTP headers den Aufruf der IP des Speichers aufgezeichnet.
Das sieht dann so aus:
http://IP.DES.SENEC.SPEICHERS/lala.cgi
POST /lala.cgi HTTP/1.1
Host: IP.DES.SENEC.SPEICHERS
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://IP.DES.SENEC.SPEICHERS/
Content-Length: 453
Connection: keep-alive
{"STATISTIC":{"STAT_DAY_E_HOUSE":"","STAT_DAY_E_PV":"","STAT_DAY_BAT_CHARGE":"","STAT_DAY_BAT_DISCHARGE":"","STAT_DAY_E_GRID_IMPORT":"","STAT_DAY_E_GRID_EXPORT":""},"ENERGY":{"STAT_LICENSCE_IS_OK":"","STAT_STATE":"","STAT_STATE_DECODE":"","GUI_BAT_DATA_POWER":"","GUI_INVERTER_POWER":"","GUI_HOUSE_POW":"","GUI_GRID_POW":"","STAT_MAINT_REQUIRED":"","MAINT_FILTER_REQUIRED":""},"RTC":{},"LICENSE":{},"LOG":{"USER_LEVEL":""},"WIZARD":{"CONFIG_LOADED":""}}
HTTP/1.0 200 OK
Content-Type: application/json
Server: Solute
Connection: close
Dann habe ich mit franks Hinweisen ein HTTPMOD "gebaut".
Hier das entsprechende list dazu:
Internals: 
   BUSY       0 
   CFGFN 
   CHANGED 
   DEF        http://IP.DES.SENEC.SPEICHERS/lala.cgi 60 
   Interval   60 
   LASTSEND   1461771006.53635 
   MainURL    http://IP.DES.SENEC.SPEICHERS/lala.cgi 
   NAME       httpmod_senec 
   NR         4301 
   STATE      ??? 
   TRIGGERTIME 1461771126.53741 
   TRIGGERTIME_FMT 2016-04-27 17:32:06 
   TYPE       HTTPMOD 
   addr       http://IP.DES.SENEC.SPEICHERS:80 
   buf        HTTP/1.0 200 OK
 
Content-Type: application/json
 
Server: Solute
 
Connection: close
 
 
{"ENERGY":{"STAT_LICENSCE_IS_OK":"u8_01","STAT_STATE":"u8_15","STAT_STATE_DECODE":"u8_10","GUI_BAT_DATA_POWER":"fl_80000000","GUI_INVERTER_POWER":"fl_3E94FDF4","GUI_HOUSE_POW":"fl_43C5EB85","GUI_GRID_POW":"fl_42D1AE14","STAT_MAINT_REQUIRED":"u8_00","MAINT_FILTER_REQUIRED":"u8_00"}} 
   code       200 
   conn 
   data       {"ENERGY":{"STAT_LICENSCE_IS_OK":"","STAT_STATE":"","STAT_STATE_DECODE":"","GUI_BAT_DATA_POWER":"","GUI_INVERTER_POWER":"","GUI_HOUSE_POW":"","GUI_GRID_POW":"","STAT_MAINT_REQUIRED":"","MAINT_FILTER_REQUIRED":""}} 
   displayurl http://IP.DES.SENEC.SPEICHERS/lala.cgi 
   header     Content-Type: Content-Type: application/x-www-form-urlencoded
 
Accept: application/json, text/javascript, */*; q=0.01 
   host       IP.DES.SENEC.SPEICHERS 
   httpheader HTTP/1.0 200 OK
 
Content-Type: application/json
 
Server: Solute
 
Connection: close 
   httpversion 1.0 
   hu_blocking 0 
   hu_filecount 42 
   ignoreredirects 0 
   loglevel   4 
   path       /lala.cgi 
   protocol   http 
   redirects  0 
   timeout    2 
   url        http://IP.DES.SENEC.SPEICHERS/lala.cgi 
   value      0 
   QUEUE: 
   Readings: 
   Request: 
     data       {"ENERGY":{"STAT_LICENSCE_IS_OK":"","STAT_STATE":"","STAT_STATE_DECODE":"","GUI_BAT_DATA_POWER":"","GUI_INVERTER_POWER":"","GUI_HOUSE_POW":"","GUI_GRID_POW":"","STAT_MAINT_REQUIRED":"","MAINT_FILTER_REQUIRED":""}} 
     header     Content-Type: Content-Type: application/x-www-form-urlencoded
 
Accept: application/json, text/javascript, */*; q=0.01 
     ignoreredirects 0 
     retryCount 0 
     type       update 
     url        http://IP.DES.SENEC.SPEICHERS/lala.cgi 
     value      0 
   Sslargs: 
Attributes: 
   disable    1 
   requestData {"ENERGY":{"STAT_LICENSCE_IS_OK":"","STAT_STATE":"","STAT_STATE_DECODE":"","GUI_BAT_DATA_POWER":"","GUI_INVERTER_POWER":"","GUI_HOUSE_POW":"","GUI_GRID_POW":"","STAT_MAINT_REQUIRED":"","MAINT_FILTER_REQUIRED":""}} 
   requestHeader1 Content-Type: Content-Type: application/x-www-form-urlencoded 
   requestHeader2 Accept: application/json, text/javascript, */*; q=0.01 
   userattr   requestData requestHeader1 requestHeader2 
Leider befinden sich unter "buf" nicht die Werte, die auf der Seite des Speichers angezeigt werden, sondern nur kryptische Zeichenketten, z.B. "fl_80000000" oder "fl_3E94FDF4" usw., die wohl als Antwort auf den request kommen?
Hier komme ich leider nicht weiter.
Hat vielleicht noch jemand eine Idee, wie man an die Werte kommen könnte?
Danke schonmal für die Hilfe!
Gruß
Andreas
			
			
			
				das sieht doch schon gut aus. mit extractAllJson kann das bestimmt gut geparsed werden. 
Zitat"fl_3E94FDF4"
ich schätze datentyp float mit 4byte hex. die hexzahl umgewandelt zeigt dann 1049951732 dezimal. dü müsstest also mal vergleichen und interpretieren. 
prefix u8_ könnte unsigned integer 8bit sein. also 1byte in hex. u8_15 => 21 dezimal. 
aber eventuell hast du noch etwas vergessen, zb im header, sodass auch andere darstellungen gesendet werden können. hast du mal die von stefan empfohlene burp-suite probiert?
			
				Ich würde das nicht mit JSON angehen. Sondern mir aus den "verschachtelten <div>-Containern" mit Hilfe eines kurzen XPath-Ausdrucks genau den richtigen Wert holen. Kurzanleitung dafür siehe hier:
https://wiki.selfhtml.org/wiki/XML/XSL/XPath/Einf%C3%BChrung
LG
pah
			
			
			
				Guten Morgen,
@frank
Danke für deine Erläuterungen, muss ich mal schauen...aber
Zitat von: frank am 28 April 2016, 00:48:50hast du mal die von stefan empfohlene burp-suite probiert?
davon habe ich noch nicht gehört. Wo finde ich die denn?
@pah
Darüber hatte ich auch schon nachgedacht.
Wie von brembs (Björn) beschrieben, sehe ich die Werte zwar im Firefox-Inspektor, rufe ich aber die IP ohne lala.cgi des Speichers per HTTPMOD auf, steht in buf nur etwas von bad request oder so und nicht der html-code der Seite.
Habt ihr dazu noch Tipps für mich?
Gruß
Andreas
			
				Zitatdavon habe ich noch nicht gehört. Wo finde ich die denn?
im wiki ganz unten ist der link. http://portswigger.net/burp/ (http://portswigger.net/burp/)
du kannst eventuell auch den data-string auf die für dich notwendigen teile reduzieren. hast du schon mal nach einer doku zu dieser api gesucht?
zum parsen musst du nun noch zusätzliche attribute setzen. entweder über xpath, json oder regex, wie es dir beliebt.  ;)
			
 
			
			
				Hallo frank,
danke nochmal für die weiteren Infos...
Ich hab mir nun mal die Werte angeschaut, aber kann damit leider nix anfangen, wenn man die in dezimal umrechnet.
Ich glaube im Hintergrund werden auf dem Webinterface des Speichers auch noch verschiedene Java-Skripte aufgerufen, die wahrscheinlich die Werte auf die Anzeige umrechnen.
Schade...
Wie gesagt, wenn ich per HTTPMOD die "nackte" IP des Speichers aufrufe, bekomme ich nix in den buf, sonder nur einen Log-Eintrag:
2016.04.28 17:14:04 3: httpmod_test: Read callback: request type was update retry 0, no headers, body empty, 
Error: http://XXX.XXX.XXX.XXX: malformed or unsupported URL 
Zur api kann ich im Internet leider nichts finden...
Noch irgendwelche Ideen?
Gruß
Andreas
			
			
			
				hallo andreas, 
an deiner stelle würde ich 
nicht auf den cloud-server "ausweichen", nur weil im augenblick die darstellung der daten noch unbefriedigend ist. damit provozierst du doch eigentlich nur neue probleme. sei froh, dass du lokal an die daten kommen kannst. 
Zitat von: brembs am 02 April 2015, 17:43:12
Ich kann problemlos über HTTPMOD auf mein SENEC Webinterface der PV Anlage zugreifen und den HTML Code im Puffer sehen. Allerdings stehen da keine Werte, sondern die sind in einzelnen <DIV> Containern bis zu 6, 7 Ebenen tief verschachtelt verborgen (siehe angehängten Screenshot des Firefox Inspectors). Kann ich mit HTTPMOD da rankommen und wenn ja, hat jemand einen Link für eine Doku der Syntax?
das hört sich für mich danach an, dass brembs "korrekte" daten lokal abfragen konnte. er hat es nur nicht geschafft, sie in readings zu parsen. 
bisher habe ich bei dir nur 2 headerzeilen gesehen. hast du den header nun schon mal komplett nachgebaut?
sollte es dennoch nur bei den hex-daten bleiben, musst du mal eine tabelle anlegen, in der du die hexdaten mit den im browser gelieferten daten gegenüberstellst. dann kann man doch sicherlich eine regel erkennen, um die daten aufzubereiten. 
gruss frank
			
				Hallo frank,
das mit dem externen "cloud-server" möchte ich eigentlich schon gerne vorbereiten, da vom Speicherhersteller in Kürze noch was am Speicher ergänzt wird, und dann kommt man wohl nicht mehr so einfach lokal an die Daten...
Ich werde nacher mal deine Hinweise mit dem header und der Tabelle angehen.
Hab gestern auf die schnelle das schonmal für einige wenige Werte gemacht, konnte aber bisher keinen wirklichen Zusammenhang zu den im webinterface dargestellten Werten feststellen...
Kannst du mir vielleicht Tipps zu meinem Versuch über den cloud-server geben (siehe post im HTTPMOD-thread)?
Danke nochmal für deine Hilfe!
Gruß
Andreas
			
			
			
				ZitatKannst du mir vielleicht Tipps zu meinem Versuch über den cloud-server geben 
ich musste mich noch nie mit httpmod anmelden, daher habe ich damit null erfahrung. ich weiss nur, dass es hier und dort ein paar hinweise gibt. ich würde mit commandref und wiki beginnen und mit den namen der zuständigen attribute das forum durchsuchen. 
			
 
			
			
				Habe mittlerweile auch vom Hersteller die Antwort, dass lokale Zugriffe auf die Batterie/Strom-Daten nicht mehr möglich sind...
			
			
			
				Hallo,
nur zur Info:
Lösung hierzu (https://forum.fhem.de/index.php/topic,35785.msg444914.html#msg444914) (post 6) siehe hier (https://forum.fhem.de/index.php/topic,54022.0.html).
Gruß
Andreas