76_SMAPortal - Integration SMA Sunny Portal - Ideen & Modulweiterentwicklung

Begonnen von DS_Starter, 08 Juli 2019, 18:45:46

Vorheriges Thema - Nächstes Thema

Dersch

Ich finde es halt echt enttäuschend von SMA, dass es einfach keine ordentliche API gibt.

Mit Victron wäre das nicht passiert ;)

Danke für deine Mühe den SMA Unzugänglichkeiten irgendwie zu begegnen.

DS_Starter

ZitatIch finde es halt echt enttäuschend von SMA, dass es einfach keine ordentliche API gibt.
Ja, würde um einiges mehr Freude bereiten.

Aber ich habe mal wieder ein bisschen was näckisches eingebaut. Wenn das Attribut userAgent nicht festgelegt ist,
wird bei jedem Lauf ein Zufalls-Agent aus einem Vorrat ausgewählt.
Außerdem wird ein Reading angelegt, welches den aktuell verwendeten Agenten dokumentiert.
Den Vorrat habe ich mit getesteten Agenten belegt.
Wer etwas beisteuern kann ... bitte sehr.

Könnte mir vorstellen, dass dieses Verfehren sehr zur Stabilisierung beiträgt.  ;)
Außerdem habe ich aus Sicherheitsgründen das interval auf Minimum 180 Sek. festgelegt um die Diskreminierung des verwendeten Users möglichst auszuschalten. Das ist bei mir wie schon geschrieben seit inzwischen Monaten nicht mehr vorgekommen (mit interval 180).

Zum Download in der FHEMWEB Kommandozeile inklusive der Ausführungszeichen angeben und danach FHEM restarten:


"wget -qO ./FHEM/76_SMAPortal.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/76_SMAPortal.pm"
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

jual

Zitat von: reticon am 11 November 2020, 16:22:59
ich habe ein wenig rumprobiert, es scheint es lag bei mir doch wieder am UserAgent .. ich hatte das letzte Mal geändert auf:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0

Jetzt habe ich einfach mit dem Agent probiert mit dem ich gerade ins Portal komme .. und seit dem klappt es wieder:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.195 Safari/537.36

Irgendwie komisch .. vielleicht hängt es auch nicht ursächlich zusammen.

Sehr schön, läuft bei mir auch ersteinmal wieder.

DS_Starter

Habe die neue Version mit dem random user agent eingecheckt und ist morgen früh im Update.
Drückt die Daumen das die Maßnahme wirkt  :)
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Guten Morgen,

die eingebauten User Agent Zufallswahl scheint ihre Dienste gut zu erledigen.
Ich nehme an, dass SMA immer mal wieder je nach technischen Fortschritt die Validität der User Agents prüft (auch um die Kompatibilität zur Portalapplikation zu gewährleisten).
Dadurch bin ich auf die Idee gekommen regelmäßig die aktuellsten diversen User Agents aus dem Netz zu ziehen.
Ich habe auch eine Seite gefunden die über eine API einen solchen Dienst anbietet (WhatIsMyBrowser.com). Allerdings ist die relevante Info nur mit einem kostenpflichtigen ABO abrufbar, also für uns nicht zu gebrauchen.

Würde mich freuen, wenn ihr eine Idee habt wie/wo es eine solche Information sonst noch gibt. Vllt. stolpert ihr mal drüber.

schönen Sonntag,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

assi05

Bei mir leider keine Änderung. Ich habe den UserAgent gelöscht, Upgrade gefahren und neu gestartet.

Immer noch Login failed. Bin bereits auf einem Ersatzuser.

Mich kotzt SMA mittlerweile wirklich an! Es sind MEINE ! Daten und ich würde schon gern selbst entscheiden, was ich damit mache! (z.B. echtes Geld sparen durch intelligente Gerätesteuerung!)
Eine API ist State-of-the-Art; aber SMA bekommt es ja nicht mal gebacken, eine Alexa-Integration zu bauen!

So, ich nehme jetzt meine Tropfen und werde mich dann auch wieder beruhigen - trotz Login failed.

DS_Starter

ZitatMich kotzt SMA mittlerweile wirklich an! Es sind MEINE ! Daten
Ja, mit diesen Unzulänglichkeiten müssen wir leider leben. Ruhig Blut, die Gesundheit ist wichtiger.  :D

Allerdings gibt es die unterschiedlichsten Ursachen für "login failed".
Wichtige Checks sind:

* aktuellstes Modul ? -> Update
* kann man sich mit dem hinterlegten User mit einem normalen Browser anmelden oder gibt es da auch einen Fehler
* evtl. prüfen ob man im SMA Portal eine Standard Startseite hinterlegt hat, ein guter "Landeplatz" ist "Anlagenübersicht" (Konfiguration->Anlagenpräsentation)
* hat man keinen Homemanager installiert dann das Attribut noHomeManager = 1 setzen
* wenn man die automatische Zufallsauswahl des User Agent nutzen möchte, dann das Attribut userAgent löschen falls gesetzt
* verbose 5 einschalten + verbose5Data = loginData, den Logauszug anschauen bzw. posten. Oftmals sieht man hier den Grund für den Fehler


An irgendwas muß es ja liegen, denn bei so ziemlich allen Usern klappt der Datenabruf wohl mittlerweile sehr gut.

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

crusader85

Bei mir klappt es auch seit Tagen. Nur, und das ist komisch, jeden morgen nach dem Awoken, obwohl Solarmäßig nichts getriggert wird, kommt Login Failed. Dann ein shutdown restart und es geht wieder... Keine Ahnung warum. Aber damit kann ich momentan leben.

Danke erstmal!

assi05

Zitat von: DS_Starter am 15 November 2020, 12:36:19
* verbose 5 einschalten + verbose5Data = loginData, den Logauszug anschauen bzw. posten. Oftmals sieht man hier den Grund für den Fehler

Hallo Heiko, alle Voraussetzungen sind erfüllt, es lief ja auch bis zu, 11.11. morgens um 8h.


ctl00%24ContentPlaceHolder1%24Logincontrol1%24txtUserName=xxxxx@gmail.com&ctl00%24ContentPlaceHolder1%24Logincontrol1%24txtPassword=XXXXXXX&ctl00%24ContentPlaceHolder1%24Logincontrol1%24MemorizePassword=on&__EVENTTARGET=ctl00%24ContentPlaceHolder1%24Logincontrol1%24LoginBtn
HTTP/1.1 200 OK
Cache-Control: no-cache
Date: Sun, 15 Nov 2020 13:XX:XX GMT
Pragma: no-cache
Server: Microsoft-IIS/10.0
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 10793
Content-Type: text/html; charset=utf-8
Expires: -1
Client-Date: Sun, 15 Nov 2020 13:XX:XX GMT
Client-Peer: 171.XX.XX.XX:443
Client-Response-Num: 1
Client-SSL-Cert-Issuer: /C=GB/ST=Greater Manchester/L=Salford/O=Sectigo Limited/CN=Sectigo RSA Domain Validation Secure Server CA
Client-SSL-Cert-Subject: /CN=*.sunnyportal.com
Client-SSL-Cipher: ECDHE-RSA-AES256-GCM-SHA384
Client-SSL-Socket-Class: IO::Socket::SSL
Content-Security-Policy: frame-ancestors 'none'
Set-Cookie: .SunnyPortalFormsLogin=; expires=Mon, 11-Oct-1999 22:00:00 GMT; path=/; HttpOnly
X-AspNet-Version: 4.0.30319
X-Frame-Options: DENY

\37\x8B\10\0\0\0\0\0\4\0\xED\xBD\7`\34I\x96%&/m\xCA{\x7FJ\xF5J\xD7\xE0t\xA1\10\x80`\23$\xD8\x90@\20\xEC\xC1\x88\xCD\xE6\x92\xEC\35iG#)\xAB*\x81\xCAeVe]f\26@\xCC\xED\x9D\xBC\xF7\xDE{\xEF\xBD\xF7\xDE{\xEF\xBD\xF7\xBA;\x9DN'\xF7\xDF\xFF?\\fd\1l\xF6\xCEJ\xDA\xC9\x9E!\x80\xAA\xC8\37?~|\37?"~\xE3\xE47N\36\xFF\xAEO\xBF<y\xF3\xFB\xBC<M\xE7\xED\xA2<\xC2\7\xDB\xDB\xDF+\xCE\xD3\xB3\xD3\xF4\xE0\xFBG\x8F\xF1i:-\xB3\xA6\xF9\xEC\xA3"?H\xABrV\xE4\37\35=\xFE]\xBF\x97/g\xC5\xF9\xF7\xB7\xB7\xC3w\36\xA6\xBD\x97\36\x0E5\xBFh\xF9\rz\x81>\x90\xB7\xF8\xD7\xB0uJ\xCF\xE3y\x9E\xCD\xD2b\xF6\xD9G\xD3\xB6\xDC\xD9\xF9\xFD\xBFM\x7F\22\xD4E\xDEf\xE9\xBCmW\xDB\xF9/Z\27\x97\x9F}\xF4{o\x7Fu\xBC}R-VY[L\xCA\xFC\xA3tZ-\xDB|\xD9~\xF6\xD1\xD9\xE9g\xF9\xEC\x82>\xB9\xAB\xAFM\xE7Y\xDD\xE4\xF4\xCD\xBA=\xDF>p\x9F\x7FMp\xCBl\x91\x7F\xF6\xD1e\x91_\xAD\xAA\xBA\xF5Z^\25\xB3v\xFE\xD9,\xBF,\xA6\xF96\xFF1J\x8Be\xD1\26Y\xB9\xDDL\xB32\xFFl\x97\xA1\xB4E[\xE64\xDC\37{\xFD\xC5q\xFA\xBA*\xB3:}\x93O\xE7\xCB\xAA\xAC.\xAE\xD3\xE3\xCF\xD3\xED\xF4\xF5z\xB9\xBCN_\22\xFC\xAC$*\xDE\x95W\36\x97\xC5\xF2mZ\xE7\xE5g\x1F5s\xFAn\xBAn\xD3\x82\xBA\xFF(m\xAFW\x84S\xB1\xC8.\xF2\xBB\xEF\xB6\xE5\xB3y\x9D\x9F\x7F\xF6\xD1x|\xF7<#\x8C\xAA\xE5\x98\xFE\xE1\xFE\35\x94l\xB5*\xF3\xED\xB6ZO\xE7\xDD\x97\xBA_\x8DW\xCB\13\xBC\xAD\xB3\xE4`4\xEDu\x997\xF3<'R\xC8\xDBwgE\xD3\xDE\x9D6\xCD\xDDf\x91\x8D\xDBy\xBE\xC8\xC7\xF4\xD7\xEFq\xF9\xD9\xC1\xF8\xD3\xF1\xCEx\xEF\xD3\x8F\0\xE7\xBD!]\xE5\x93\xF3\xAA^4q`D&b(0\33...
(+ 10281 more bytes not shown)
2020.11.15 14:25:54 5: SMA - Status Redirect Page : 200
2020.11.15 14:25:54 5: SMA - Header Redirect Location:
2020.11.15 14:25:54 5: SMA - Header Set-Cookie: .SunnyPortalFormsLogin=; expires=Mon, 11-Oct-1999 22:00:00 GMT; path=/; HttpOnly
2020.11.15 14:25:54 2: SMA - ERROR - Login into SMA-Portal failed !
2020.11.15 14:25:54 4: SMA - Refresh - caller: "n.a.", callerroom: "n.a.", detail: "n.a.", pload: 0, forcePageRefresh: 0, event_Spgdev: 1


Kann es das Cookie-Datum sein? (System hat wie man sieht ja richtiges Datum&Uhrzeit)

Das ist mir eben erst aufgefallen!?

DS_Starter

@crusader85

ZitatBei mir klappt es auch seit Tagen. Nur, und das ist komisch, jeden morgen nach dem Awoken, obwohl Solarmäßig nichts getriggert wird, kommt Login Failed.
Das ist echt ungewöhnlich und mir fällt gerade kein plausibler Grund dafür ein. Möglicherweise hilft in diesem Fall das Attribut:

              cookieDelete = afterAttempt&Run

@assi05
Dein Fehlerbild sieht mir sehr nach dem mittlerweile bekannten Bild mit den problematischen User Agent aus.
Schau doch mal ob das Reading usedUserAgent immer den gleichen Agent enthält und wenn ja welchen.
Welches Betriebssystem ist unter deinem FHEM ?
Das oben angegebene Attribut kannst du auch mal setzen.

Das Cookie sieht immer so aus wenn das Login nicht funktioniert hat.
Bei Erfolg findet man einen solchen Eintrag:


....
Set-Cookie: .SunnyPortalFormsLogin=; expires=Mon, 11-Oct-1999 22:00:00 GMT; path=/; HttpOnly
Set-Cookie: .SunnyPortalFormsLogin=4CE5AFA018B79695A9256F51F021DAED493E4F146D30CE0068DF23E5F2B8722D83C1F38705684AA58B32176A2D8130CFBBE553CA9C9052B436B750AE885EF34F17FB76D3B9C376F196CC9DE18D2B718B8C7D4A1015E85DECA3B66F4F0D56D56778CC203162656DFDF045F2BD2D8C880EA01FE85C28F6DD0706E73D2D2EF6932BED6544E03F7A02A2752E688C549D920C208B7936B797F0D857B01FF609B7704324216EA977082E4AC93CC7658455125DF15A4D49816B21D40747F3152212C1790F50C80E135D1E2BFEAFC1CA6C5D3DA8416859D49DF4F21BD3B2A139458D3C9A209C0E272502800A1BDB5F0845CC51815415CA18CDB13E5CD11235224E375369A21819A128DCE30C712CEAEAD1F64C04FF8FABEA2009E94932508D9F254C06767E89E9CE98929F470A95B26116B70E17F8952F7B71AC34A82974084D0E551CA1D49C7200F334B58E602F86D5EA6F1C4D1EC6DADEDCAD0469E5BCA09DA33CB3F1366CD006B7D3BF817EEF82A18C111EC6CF4D805B071C3F34954882A08C58E8DEA423E24FC806BE6D21EEB3E5049EA42DF2EFD2A432F733094695D4DB6641C568E21EB9AC9646C2ED9202A5936667DBA62779C996871C09CDC8B92AA06811437778953DC0C55DCF1D96890806E3FCCE77A9C78290968ADF4EE7BB8DC679DB1FE0E5A808AE51F9F3AB4C4958A4F51589A9A98E5B7A127B06DECE55D8F9B6DEC989A0956C4AA159CF4BBB14DD44B4E663379FC161FE17F9DA5175928F1EE60DFF41C7C3F3B4C4D54013DF12A27B27488A2FC6F4827B676A3EBC12F229316059F9A7407CDEC5;
....

Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

assi05

Hallo Heiko,

ich hatte den User-Agent vor ca. 2 Wochen geändert (wie hier im Forum diskutiert) - dann ging es wieder einige Tage.

An den Cookies hatte ich auch schon rumgespielt.

Nachdem es dann jetzt wieder nicht mehr ging, habe ich auf die letzte Version upgedatet und den User-Agent gelöscht damit Deine Zufallslogik greift.

Du hast Recht: Die 41 letzten Einträge im Protokoll sind:   Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)

Ich bin dem jetzt mal nachgegangen: Die von Dir genannte Website mit den UserAgents hat in den "developers.whatismybrowser.com/useragents/....." zig-Einträge für Windows - davon habe ich zum testen mal den hier genommen:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36

...und siehe da: es hat auf Anhieb funktioniert. :) :) :) :)

Betriebssystem auf meinem Raspi:

pi@pi:~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian



Danke für die wichtige "Spur", wo ich suchen muss - aber ich befürchte, das wird wieder nur ein paar Tage funktionieren?!


Grüße!

crusader85

Zitat von: DS_Starter am 15 November 2020, 16:40:14
@crusader85
Das ist echt ungewöhnlich und mir fällt gerade kein plausibler Grund dafür ein. Möglicherweise hilft in diesem Fall das Attribut:

              cookieDelete = afterAttempt&Run


Hi,
das habe ich bereits drin. Es ist immer, wenn das Awoken getriggert wurde der nächste Lauf, der fehlschlägt.

DS_Starter

ZitatDu hast Recht: Die 41 letzten Einträge im Protokoll sind:

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
Das ist jetzt bisschen merkwürdig, denn es stehen momentan nur diese vier UA für die Zufallsauswahl zur Verfügung:


my %hua = (                                                                                            # mögliche UserAgents für eine Round-Robin-Liste
  1  => "Mozilla/5.0 (Windows NT 10.0; rv:81.0) Gecko/20100101 Firefox/81.0",
  2  => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.195 Safari/537.36",
  3  => "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36",   
  4  => "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36 Edg/86.0.622.38",
);


Ich will diese Auswahl noch ergänzen, der Webseite will ich noch ein paar entnehmen.
Kann mir aber nicht erklären woher dein zitierter Agent kommt.  ??? Irgendwo muss er noch fest verdrahtet sein weil er sich auch nicht ändert bei dir. In meinem Modul ist er nicht enthalten, habe gerade mal die Suche drüber gejagt.

Du hast jedenfalls Linux. Passt, ich hatte jetzt die Vermutung du setzt evtl. etwas "exotisches" ein.

ZitatDanke für die wichtige "Spur", wo ich suchen muss - aber ich befürchte, das wird wieder nur ein paar Tage funktionieren?!
Das wollen wir auf jeden Fall vermeiden und ich bin bemüht einen Mechanismus einzubauen der in Abständen die aktuellen Agenten aus dem Netz zieht und ich dann alternierend verwenden kann. Die zitierte Seite war ein hoffnungsvoller Anfang, aber leider wie dargestellt durch einen ABO-Preis nicht für einen Automatismus brauchbar.

Wir bleiben dran  ;)
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

@crusader85

ZitatEs ist immer, wenn das Awoken getriggert wurde der nächste Lauf, der fehlschlägt.
Hilf mir mal ... welches "Awoken" getriggert ?
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

assi05

Zitat
Ich will diese Auswahl noch ergänzen, der Webseite will ich noch ein paar entnehmen.
Kann mir aber nicht erklären woher dein zitierter Agent kommt.  ??? Irgendwo muss er noch fest verdrahtet sein weil er sich auch nicht ändert bei dir. In meinem Modul ist er nicht enthalten, habe gerade mal die Suche drüber gejagt.

Du hast jedenfalls Linux. Passt, ich hatte jetzt die Vermutung du setzt evtl. etwas "exotisches" ein.
Das wollen wir auf jeden Fall vermeiden und ich bin bemüht einen Mechanismus einzubauen der in Abständen die aktuellen Agenten aus dem Netz zieht und ich dann alternierend verwenden kann. Die zitierte Seite war ein hoffnungsvoller Anfang, aber leider wie dargestellt durch einen ABO-Preis nicht für einen Automatismus brauchbar.

Wir bleiben dran  ;)

Kann man nicht diese Seite periodisch aufrufen und alles was mit MOZILLA startet parsen? Müsste auch ohne ABO gehen :)

https://developers.whatismybrowser.com/useragents/explore/operating_system_name/windows/

Windows, weil das vermutlich noch am tolerantesten behandelt wird von SMA?!