Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Keine Verbindung seit neuem Einspeisepunkt #232

Open
gerhardL70 opened this issue May 20, 2024 · 14 comments · May be fixed by #236
Open

Keine Verbindung seit neuem Einspeisepunkt #232

gerhardL70 opened this issue May 20, 2024 · 14 comments · May be fixed by #236

Comments

@gerhardL70
Copy link

Hallo liebe Community und danke für die bisherige Entwicklung der Integration!

Nachdem die Integration bei mir seit Februar recht gut funktioniert hat (manchmal kam an einem Tag gar nix, dann am nächsten Tag der Verbrauch von 2 Tagen), ging seit Freischaltung des Smartmeters für die Einspeisung der PV gar nichts mehr. Nur ein Rufzeichen bei beiden Entitäten. Ich hab dann manuell versucht die Skripts zu ändern, wie das hier beschrieben wurde.
#227 (comment)
Die Rufzeichen waren weg, Werte kamen aber trotzdem keine.
Ich hab die Integration nun entfernt, neu gestartet, neu bei HACS geladen, neu installiert.
Ergebnis: Ich kann mich nicht mal mehr anmelden, er meint "Username/Pass invalid".

Kann das auch daran liegen, dass der Smartmeter selbst ein Problem hat? So funktioniert zb das IR-Auslesetool nicht (noch nie) und die 1/4-Stunden Ansicht im Webportal nur einige Tage, nachdem ich den Support bemüht habe. Dann wurde einige Tage nix im Tages- und 1/4Stunden-Modus angezeigt, bis es heute wieder ging.

Irgendwelche Ideen was ich noch ausprobieren kann?

@tschoerk
Copy link

Es kann gut sein, dass es Wartungsarbeiten beim Portal selbst gab am Wochenende, vor allem wenn Username/Pass nicht mal mehr funktioniert hat. Mit dem zweiten Zählerpunkt gibt es wohl noch einige Probleme, bei mir selbst sind auch einige aufgetreten, die ich versucht habe zu fixen (siehe #228 und #233).

Ein guter Startpunkt um Probleme herauszufinden, ist es die Debug-Protokollierung in der Integration einzuschalten:

  1. Lösche die Entitäten in der Integration
  2. Aktiviere die Debug-Protokollierung
  3. Füge mittels Eintrag hinzufügen, die Entitäten wieder hinzu
  4. Deaktiviere die Debug-Protokollierung - es sollte ein Log automatisch heruntergeladen werden
  5. Poste die relevanten Stellen, also Fehlermeldungen etc. hier rein bzw. eröffne konkrete issues mit den Fehlermeldungen.
    wnsm_integration

@gerhardL70
Copy link
Author

Danke für die schnelle Antwort! Das Login Problem war mein Fehler, wenn man keypass verwendet ist es keine Garantie, dass man nicht nach dem normalen Login zum Wien Login wechseln muss ;-)
jedenfalls konnte ich die Integration wieder installieren, jetzt siehts so aus:
image
2 Smartmeter mit einmal 2 Entitäten und einmal einer.
Beim SM mit 2 Entitäten haben beide Entitäten ein Rufzeichen
image
bei dem mit einer Entität nicht
image

Der Anfangsteil des Logs ab wo wnsm beginnt liest sich so:

2024-05-21 23:32:29.106 WARNING (ImportExecutor_0) [homeassistant.helpers.typing] HomeAssistantType was used from wnsm, this is a deprecated alias which will be removed in HA Core 2025.5. Use homeassistant.core.HomeAssistant instead, please report it to the author of the 'wnsm' custom integration
2024-05-21 23:32:29.165 DEBUG (MainThread) [custom_components.wnsm.statistics_sensor] Last inserted stat: {}
2024-05-21 23:32:29.201 DEBUG (MainThread) [custom_components.wnsm.statistics_sensor] Last inserted stat: defaultdict(<class 'list'>, {'sensor.at0010000000000000001000005875907_statistics': [{'start': 1710936000.0, 'end': 1710939600.0, 'state': 0.0, 'sum': 0.0}]})
2024-05-21 23:32:30.345 DEBUG (SyncWorker_2) [custom_components.wnsm.api.client] Access Token valid until 2024-05-21 23:37:30.345401
2024-05-21 23:32:31.172 ERROR (MainThread) [homeassistant.components.sensor] wnsm: Error on device update!
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 707, in _async_add_entity
await entity.async_device_update(warning=False)
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1293, in async_device_update
await self.async_update()
File "/config/custom_components/wnsm/live_sensor.py", line 28, in async_update
await self.hass.async_add_executor_job(smartmeter.login)
File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/wnsm/api/client.py", line 127, in login
code = self.credentials_login(url)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/wnsm/api/client.py", line 77, in credentials_login
raise SmartmeterLoginError("Login failed. Check username/password.")
custom_components.wnsm.api.errors.SmartmeterLoginError: Login failed. Check username/password.
2024-05-21 23:32:31.594 DEBUG (SyncWorker_1) [custom_components.wnsm.api.client] Access Token valid until 2024-05-21 23:37:31.594000
2024-05-21 23:32:31.769 ERROR (MainThread) [homeassistant.components.sensor] wnsm: Error on device update!
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 707, in _async_add_entity
await entity.async_device_update(warning=False)
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1293, in async_device_update
await self.async_update()
File "/config/custom_components/wnsm/statistics_sensor.py", line 109, in async_update
await self.hass.async_add_executor_job(smartmeter.login)
File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/wnsm/api/client.py", line 127, in login
code = self.credentials_login(url)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/wnsm/api/client.py", line 77, in credentials_login
raise SmartmeterLoginError("Login failed. Check username/password.")
custom_components.wnsm.api.errors.SmartmeterLoginError: Login failed. Check username/password.
2024-05-21 23:32:34.017 DEBUG (SyncWorker_6) [custom_components.wnsm.api.client]
API Request: https://api.wstw.at/gateway/WN_SMART_METER_PORTAL_API_B2C/1.0/zaehlpunkte

Danach folgen meine persönlichen Daten mit dem Vertragsdatum des Starts der Einspeisung.
Dann - mit anderer Kundennummer - die Daten des Strombezugvertrages

Das ganze wiederholt sich 4 mal.

Mir ist aufgefallen: Webhook not registered - https and port 443 is required to register the webhook
das hab ich mal probiert, bin aber gescheitert. ist das wichtig?

Ich werde mich morgen noch etwas rumspielen und berichten.

@tschoerk
Copy link

Mhh er schreit ständig Error Login Failed (SmartmeterLoginError("Login failed. Check username/password.")). Welchen Login verwendest du? Anmeldung über Google, Apple oder ID-Austria ist aktuell nicht möglich.

Siehe auch FAQ #19:
Why does my login not work?

Please use the login credentials you're usually using at https://smartmeter-web.wienernetze.at/ (which should be the same as for your log.wien login)
Other oauth providers are not supported yet (e.g. google, etc.)

@gerhardL70
Copy link
Author

Danke fürs Durchschauen des Logs!!
Ich verwende das Wien Login, also nix exotisches. Vielleicht habe ich aber das debugging auch schon bei den Login-versuchen laufen lassen, wo ich die alten credentials eingegeben hatte, die dann zu Fehlermeldungen geführt haben.
Ich werde es daher bald nochmals probieren und dann gleich die richtigen Zugangsdaten verwenden.

Im Ergebnis hat sich aber nix geändert, im Energiedashboard sind auch seit gestern abend keine Daten gekommen. bei der Konfiguration des Energiedashboards steht "Entität nicht verfügbar" sensor.at001....907_statistics (unavailable)"

@gerhardL70

This comment was marked as outdated.

@tschoerk
Copy link

tschoerk commented May 23, 2024

Du kannst die Datei hier direkt hochladen beim Button unten (Paste, drop, or click to add files), dann musst du nicht den ganzen Inhalt hier reinkopieren. Schau den Log kurz durch, ob deine Adresse, etc. irgendwo angeführt ist und ersetze die durch ein X oder sowas.

@W-M-B
Copy link

W-M-B commented May 23, 2024

Hallo,
ich hatte eine funktionerende Version laufen, seit Freitag kommen keine Daten mehr an (1 Verbrauchs zp)..
Im Logfile steht jetzt
custom_components.wnsm.api.errors.SmartmeterLoginError: Login failed. Check username/password.
Ich habe gleichzeitig Energielieferant gewechselt, da solle aber keine Rolle spielen, oder?
Login funktioniert über das bestehende End user Portal mit unverändertem Benutzer/Passwort.
bin etwas ratlos was ich außer löschen und neuinstallation machen könnte.
lg Wolfram

@tschoerk
Copy link

Interessant, vielleicht wird gerade laufend ein Update eingespielt, welcher schrittweise den Loginweg ändert. Bei mir ist es jedenfalls noch der alte, mal schauen ob sich das ändert in den nächsten Tagen.

Wie der Loginweg funktionieren sollte ist, dass die Loginseite aufgerufen wird, die Logindaten übergeben werden und dann anhand des Headers von der Antwort, die entsprechenden Tokens geladen werden. Im Header der Antwort befindet sich eine URL im Attribut "Location". Wenn "Location" nicht vorhanden ist, wirft es die Fehlermeldung, welche ihr beide habt.

Falls ihr Pythonskripte ausführen könnt, könnt ihr mit diesem Skript den Header mal in Ruhe anschauen, ohne beim Home Assistant herumzufummeln, welcher das debuggen doch etwas langwieriger macht. Für die Variablen username und password entsprechend eure Zugangsdaten zwischen die Anführungsstriche setzen.

from urllib import parse
import requests
from lxml import html

username = ''
password = ''

AUTH_URL = "https://log.wien/auth/realms/logwien/protocol/openid-connect/"
REDIRECT_URI = "https://smartmeter-web.wienernetze.at/"
LOGIN_ARGS = {
    "client_id": "wn-smartmeter",
    "redirect_uri": REDIRECT_URI,
    "response_mode": "fragment",
    "response_type": "code",
    "scope": "openid",
    "nonce": "",
}
login_url = AUTH_URL + "auth?" + parse.urlencode(LOGIN_ARGS)
session = requests.Session()
result = session.get(login_url)
tree = html.fromstring(result.content)
action = tree.xpath("(//form/@action)")[0]
result = session.post(
    action,
    data={
        "username": username,
        "password": password,
    },
    allow_redirects=False,
)
print(result.headers)

Wie gesagt es sollte im Header ein URL vorkommen, gesetzt im Attribut "Location", welches folgende Form hat: https://smartmeter-web.wienernetze.at/#session_state=XXX&iss=XXX&code=XXX

Wichtig für das weitere Funktionieren ist der Wert hinter code, ohne dem können die nötigen Token nicht geladen werden. Eventuell befindet sich die URL oder der code woanders im Header. Dann könnte man den Code entsprechend anpassen, dass ihr euch einloggen könnt.

@W-M-B
Copy link

W-M-B commented May 23, 2024

so ich hab mal nochmal ins portal geschaut:
seit 17.5. gibt es im Portal nur mehr Tageswerte und keine stunden oder viertel stunden werte bei meinem ZP.
also da hats was bei den Wiener Netzen. ist ja auch Wartungsfenster angesagt.
und da ist vermutlich ein größeres update geplant inklusive reduced services vor dem Wartungsfenster.
also abwarten und tee trinken

@gerhardL70
Copy link
Author

gerhardL70 commented May 23, 2024

Bei mir geht das Portal wieder, aber erst seit einer Woche. Ich hab davor mit der Smartmeter-Hotline telefoniert. Die Dame wusste, dass das passieren kann und hat das zum neu initialisieren/updaten oder so weitergegeben, 2 Tage später hatte ich dann wieder 1/4 Stunden Werte, die ich heuer überhaupt noch nicht im Portal angezeigt bekam. Es gab dann noch ein kleines hick-up, bei dem 2-3 Tage wieder die Viertelstunden weg waren. Jetzt sehe ich aber aktuell alles, auch die Werte, aus Perioden, wo ich früher nix gesehen hab. Die Werte müssen also irgendwo sein. @W-M-B Vielleicht kann dir also der Smartmeter-Support helfen die Daten wieder zu sehen?

Leider nicht bei mir im HA.

Ich hab versucht 2 Einträge zu bekommen, das hat auch geklappt, allerdings hab ich nur eine Entität bekommen.
image
Diese hatte Status - , ich glaub sie war deaktiviert, habs jetzt aktiviert, Status bleibt -. Energiedashboard schreibt, dass es auf Daten wartet. Mal schauen.

@tschoerk kannst du dir vielleicht das Log ansehen. ich hab meinen Namen und Kundennummer 22x gefunden! Das Log (193 kb) ist viel grösser als beim letzten mal (35 kb), auch schon bevor ichs mit Word bearbeitet hab. Dankeschön!
PS: leider fang ich persönlich nix mit dem phyton skript an, aber ich kenn wen, der kann das, von dem will ich eh HA Nachhilfe und werde ihn bei Gelegenheit fragen wie das geht.
PPS: Kann ich dich irgendwie unterstützen, dass deine update-Vorschläge zu einer neuen Version führen? Bin leider nicht so github kundig und versteh nicht im Detail, wer die wie was an Codevorschlägen reviewen kann/darf.

@tschoerk
Copy link

tschoerk commented May 24, 2024

Danke für die Info, scheint einige Probleme zu geben. Ich schaue mir das noch im Detail an. Entferne das Log aus deinem Post, da doch noch an vielen Stellen deine persönliche Daten zu sehen sind, sowas muss nicht öffentlich im Internet stehen. Oben rechts auf die drei Punkte und auf Edit Post und den Link zum Log entfernen. Zusätzlich solltest du dann noch die alten Versionen deines Beitrages entfernen. Rechts neben deinem Namen steht "edited", da drauf klicken und die alten Versionen, wo der Link vorhanden ist aufrufen. Oben rechts auf Options und Delete Revision from history.
grafik

@gerhardL70
Copy link
Author

Danke, Log gelöscht

@tschoerk
Copy link

So bin jetzt dazugekommen mir das genau anzuschauen. Einerseits existiert der Loginfehler, den ich ohne genauere Daten (siehe Pythonskript oben) nicht genau analysieren kann. Das komische ist nämlich, dass es dann dennoch die Daten versucht zu updaten und auch eine Antwort erhält, also wirst du eigentlich erfolgreich eingeloggt. Eventuell liegt es an den mehreren Einträgen, den man sollte nur einen Eintrag haben mit dann insgesamt 4 Entitäten, wenn alles klappt (jeweils 2 für Einspeisung und 2 für Bezug). Andererseits sind die anderen Fehler verantwortlich, dass keine Daten vorhanden sind. Diese sind bei mir auch aufgetreten und habe entsprechende Fixes rausgebracht.

Ich würde mal folgende Schritte probieren, welches alles vollständig zurücksetzt und neu einholt (vergleiche auch #19 How can I start over with a fresh data import?):

  1. Navigiere zur Energiekonfiguration und entferne die Sensoren bei Netzverbrauch und Netzspeisung
    grafik
  2. Entferne die statistischen Daten der Sensoren
    • Navigiere zu Entwicklerwerkzeuge -> Dienste -> Recorder: Entitäten bereinigen
    • Alle Sensoren auswählen (fangen mit AT001 an)
    • Deaktivere Zu entfernende Domänen und Zu entfernende Entitäts-Globs
    • Wähle Aufzubewahrende Tage und wähle 0
    • Klicke auf Dienst Ausführen
      grafik
  3. Entferne die Integration
    • Navigiere zu Integrationen und zum Eintrag von WienerNetzeSmartmeter
    • Wähle bei ALLEN Einträgen die 3 Punkte aus und klicke Löschen
      grafik
  4. Navigiere zu Entwicklerwerkzeuge -> Statistik ([Statistik]) (https://my.home-assistant.io/redirect/developer_statistics/)
    • Gib in der Suche oben AT001 ein
    • Für jeden Eintrag sollte rechts ein Button auftauchen "Probleme mit dieser Integration"
    • Auf diesen klicken und löschen auswählen
  5. Lade die Integration von meinem Branch develop runter, wo alle aktuellen Fixes zusammengetragen wurden hier
  6. Via SSH navigiere auf deiner HomeAssistant Instanz zu config/custom_components/. Lösche dort den wnsm Ordner und schiebe den neu heruntergeladenen wnsm Ordner ein.
  7. Starte HomeAssistant neu
  8. Füge die Integration WienerNetzeSmartmeter neu hinzu

Nun sollten 4 Entitäten gefunden werden, zwei "normale" und zwei "statistics". Bei der Energiekonfiguration können die statistics Sensoren nun wieder eingefügt werden für Netzverbrauch und Netzeinspeisung, damit am Energiedashboard alles schön zu sehen ist. Falls wieder Probleme auftreten, schreib kurz hier rein, erstelle wieder ein Log und lasse es mir diesmal gerne per Mail zukommen (siehe mein Profil).

@gerhardL70
Copy link
Author

Vielen Dank tschoerk für deine Hilfe!
An alle anderen: Ich habe 2 Kundennummern, je eine für Bezug und eine für Einspeisung. Darauf ist die Integration (noch) nicht ausgelegt. Deshalb hat es bei mir nicht funktioniert.

@tschoerk tschoerk linked a pull request Jun 10, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants