Solar Auswertung - Proxy

Begonnen von maxx8888, 03 Dezember 2016, 10:02:16

Vorheriges Thema - Nächstes Thema

ollibaba

#30
Ach so noch was.
Wenn jemand nicht weiss, wie man an die eigene Station Id kommt:
Im Envertech Portal mit seinen Credentials anmelden, dann html Code der Hauptseite anzeigen lassen und nach var stationId suchen. Die (bei mir) 4stellige Zahl dahinter ist die gesuchte ID.
Oliver

ollibaba

Und damit die Werte dann in fhem angezeigt werden, muss man sich dann noch die dummy Variablen definieren. Danke dafür an Uwe.
Also z.B. define allPVPower dummy  und die anderen auch. Dann Aufhübschen nach Laune
:) Oliver

ollibaba

#32
Moin zusammen,
also ich habe das Python Programm von Uwe genommen und um diverse Variablen die ausgelesen werden erweitert, um Euch die Arbeit abzunehmen. :-)
Ihr müsst es jetzt nur noch nehmen und folgende Anpassungen individuell auf Euch anpassen:
stationId=xxxx
dein web username
dein web PWD
fwcsrf=DEIN csrfToken

Wie Ihr die station ID bekommt hab ich weiter oben geschrieben und den csrfToken passt ihr in FHEM am besten aktuell so an, dass er bei einem reboot sich nicht ändert (was er sonst normalerweise macht. Und dann läuft das py Prg. nicht mehr)
Benennt das Python Programm nach Anpassung wieder um auf getPV.py und verfahrt nach der Anleitung von Uwe weiter oben (also auf pi kopieren, 1x testen...)
Bitte nicht vergessen in FHEM jede einzelne dummy Variable anzulegen, die im Python Programm übergeben wird. Sonst seht ihr nämlich da nix  ::)
Und auch dran denken in der crontab im pi den cronjob anzulegen (s. Uwe), damit die Daten auch fortlaufend erzeugt und übergeben werden. Ich habe das ein wenig variiert durch:
*/2   6-20 * * *   python  /opt/fhem/scripts/getPV.py
Da meine Anlage nachts leider noch keinen Solarstrom erzeugt (  :-[ sehr schade ) und ich die Log Datei nicht so aufblähen wollte. Muss aber jeder selbst wissen.
Viel Spaß
Oliver
P.S. nochmals vielen Dank an Uwe. Eine wirklich gute Lösung 

ollibaba

#33
Ich habe gerade noch mal das Python Programm aktualisiert, weil ich beim Testlauf bemerkt habe, dass das Eurozeichen im Kommentar dazu führte, dass das Prg nicht läuft. Jetzt passt es aber und gibt folgende Ausgabe beim Test:
myPVstation: mein_Solar
NowPower: 0.0 W
DayPower: 3.37 kWh
MonthPower: 28.57 kWh
YearPower: 53.29 kWh
AllPower: 804.65 kWh
CO2: 0.802 t
Baeume: 2.198
Ersparnis: 241.40 Eur
Spitzenleistung: 708.09 W

Ich bin erst mal zufrieden  8)

Uwe_Eta20

Hallo Olliver,

bei mir klappt das leider noch nicht.
Eigentlich wollte ich schon den Schritt 2 gehen und die Werte ins fhem zu integrieren.
Aber bereits in der Kommandozeile wird das Ergebniss unten angezeigt.
Die ID ist okay, ein Token habe ich generiert, nur das WebName und Passwort habe ich so stehenlassen, da habe ich nichts
also
top_level_url = "http://192.168.2.105:8083"
password_mgr.add_password(None, top_level_url, "dein web username", "dein web PWD"
).-> wenn das zwingend sein muß, dann tue ich das.
Es erscheinen ja bereits Werte,aber eben auch Fehlermeldungen...

lowe@lowe-desktop:~/Schreibtisch$ sudo python getPV.py
myPVstation: xxxx
NowPower: 387.76 W
DayPower: 0.63 kWh
MonthPower: 36.08 kWh
YearPower: 90.66 kWh
AllPower: 787.45 kWh
CO2: 0.785 t
Baeume: 2.151
Ersparnis: 228.36 Eur
Spitzenleistung: 491.57 W
Traceback (most recent call last):
  File "getPV.py", line 91, in <module>
    opener.open("http://192.168.2.105:8083/fhem?cmd=set%20nowPVPower%20"+str(nowPower)+"%20W"+"&fwcsrf=P5pp5r&T1ffy")
  File "/usr/lib/python2.7/urllib2.py", line 435, in open
    response = meth(req, response)
  File "/usr/lib/python2.7/urllib2.py", line 548, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.7/urllib2.py", line 473, in error
    return self._call_chain(*args)
  File "/usr/lib/python2.7/urllib2.py", line 407, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 556, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 400: Bad Request


Siehst Du auf einem Blick, woran das liegen könnte, ich habe hier deine Version vom 18 Februar 2019 genommen(getPV_anonymisiert.py ).

vielen Dank
Uwe

ollibaba

Moin Uwe,
ich denke Du bist kurz vorm Ziel, da ja schon Werte ausgelesen werden.
Einen Fehler kann ich in der Zeile 91 bei Dir so erst mal nicht erkennen.
Die Zeile: password_mgr.add_password(None, top_level_url, "dein web username", "dein web PWD") wird benötigt.
Hier trägt Du die login Daten ein, wie Du dich auch im Web Browser bei FHEM immer anmeldest.
Versuch das erst einmal und gib bitte ne Rückmeldung. Eigentlich kann es nur noch ne Kleinigkeit sein, irgendwo ein Leerzeichen vergessen, oder zu viel o.ä.
Die Lösung läuft übrigens bei mir sehr stabil und ohne irgendwelche Zicken.
Viele Grüße
Oliver

Uwe_Eta20

Hallo,

die Werte sieht man, drunter das folgende:

Traceback (most recent call last):
  File "getPV.py", line 84, in <module>
    password_mgr.add_password(None, top_level_url, Hallo, Guenter)
NameError: name 'Loewe' is not defined

In der Datei:
top_level_url = "http://192.168.2.105:8083"
password_mgr.add_password(None, top_level_url, Hallo, Guenter)

gemacht hatte ich das gemäß
attr allowed basicAuth {"$user:$password" eq "fhemuser:secret"}
Abfrage kommt auch beim URL Aufruf, aber warum meldet er nicht definition??

Uwe

Uwe_Eta20

Hallo,

alles passt jetzt, schön!
Hatte noch ein Problem mit dem csrf Token, der dann immer auf ein 400 HTTP Fehler beim speichern führte, so das man die cfg nicht anpassen konnte.
Weiterhin hatte ich zwar immer unter readingList den korrekten Variablennamen eingetragen, jedoch immer einen mir gefälligen Devicenamen eingetragen, bis ich drauf gestoßen bin, den aus dem String zu extrahieren.
Bin drauf gekommen, da es mit deinem allPVPower im Beitrag hier immer klappte.
Muß jetzt noch die SVGs bauen, das dauert wieder, bis die Werte reinkommen, hoffe, das haut trotzdem hin, FileLog ist fertig.
Noch "sieht" das SVG die RegExp nicht.

bis dahin
Uwe

ollibaba

Moin Uwe,
Super. Das freut mich zu hören. 8)
Dann noch viel Spaß und Erfolg mit den weiteren Anpassungen in FHEM.
Ich bin mit der Lösung wirklich zufrieden. Das klappt prima
Grüße
Oliver

db

Hallo MEitelwein,

Ich habe mir das Proxy Script angesehen. Erstmal tausend Dank an dich und alle an der Entwicklung beteiligten.
Kann ich die Weiterleitung an das Portal unterbinden? Das müsste eigentlich gehen, wenn ich die Zeile self.channel[self.s].send(data) auskommentiere?
Danke !

MEitelwein

Zitat von: db am 30 Juli 2019, 12:31:03
Hallo MEitelwein,

Ich habe mir das Proxy Script angesehen. Erstmal tausend Dank an dich und alle an der Entwicklung beteiligten.
Kann ich die Weiterleitung an das Portal unterbinden? Das müsste eigentlich gehen, wenn ich die Zeile self.channel[self.s].send(data) auskommentiere?
Danke !

Hallo db

Entschuldige, ich habe länger nicht mehr ins Forum geschaut. Den aktuellen Code für den Proxy findest Du unter https://gitlab.eitelwein.net/MEitelwein/Enverbridge-Proxy

Um das Senden abzuschalten, musst Du zusätzlich zum Auskommentieren von Zeile 255 in enverproxy.py

self.channel[self.s].send(data)

noch den Handshake simulieren. Dazu einfach den auskommentierten Code in Zeile 242 - 248 aktivieren

"""
# This part is simulating handshake with envertecportal.com
# Keep disabled if working as proxy between Enverbridge and envertecportal.com
self.__log.logMsg('Replying to handshake with data ' + str(reply.hex()), 4)
self.s.send(reply)
self.__log.logMsg('Reply sent to: ' + str(self.s), 3)
"""


Dazu einfach die Anführungszeichen (""") in 242 und 248 löschen.

drakesoft

Hallo zusammen,
ich habe die Firmware einer älteren EVB200 ausgelesen falls die jemand benötigt einfach per PM melden. Ich würde gerne die Daten bereits auf dem PLC auslesen. Weiß jemand ob auf der aktuellen EVB202 noch immer der MI200E PLC Transceiver verwendet wird?

VG

ollibaba

Moin zusammen,
seit heute 26.3.2020 10:54 läuft bei mir das getPV Python Programm nicht mehr, das die SolarDaten vom envertech Portal abfragt.
Hat jemand auch diese Erfahrung gemacht und evtl. eine Ahnung, was der Grund ist?
Danke und Grüße
Oliver

Uwe-Kaditz

#43
Hallo miteinander,
der Fehler ist entstanden, weil Envertech den Aufruf von http://www.envertecportal.com in https://www.envertecportal.com geändert hat.

Anbei der geänderte Script.
Folgende Änderungen sind noch notwendig:
<pvID> ersetzen durch die Envertech-StationsID (ist identisch zur ID, die man im Envertec-Portal v1.x erhalten hat)
<FHEMip> ersetzen durch die IP-Adresse der FHEM-Installation (z.B. http://192.168.1.77:8083/
<FHEMuser> ersetzen durch den LoginNamen des FHEM-User
<FHEMpwd> ersetzen durch das zugehörige FHEM-Passwort

Noch ein Hinweis:
Über 1000kWh ändert Envertech die Ausgabe automatisch in MWh, denn es werden für alle numerischen Daten nur 3 Stellen (vor dem Dezimaltrenner) gesendet.

ollibaba

Moin Uwe,
wow. Topp. Funktioniert wieder. Das mit der Änderung auf https Protokoll war genau der Fehler. Vielen vielen Dank. Ich dachte envertech hätte schon wieder alles komplet geändert. Ich habe jetzt in meiner angepassten getPV.py Datei nur die Zeile mit dem auf https geänderten Protokoll angepasst und flutsch alles läuft wieder.
Nochmals vielen Dank  :D
Grüße und danke noch mal
Oliver