SFML: Feedback und Problemberichte zum aktuellen Release

Hmm… wonsehe ich jetzt ob TFS Einfluss hatte oder nicht? Das ist das Einzige was ich Grade vermisse, sonst ist das Update schon lansehr geil.

Auf Mobilgeräten gibt’s nur bei den Jahresprognosen einen Anzeigefehler, sonst sieht es auch aufm Handy sehr gut aus.

Ach ich bin sehr begeistert vom neuen Design. Deutlich übersichtlicher, innovativer und strukturierter für Notebook, Tablet und Handy.

Ganz großen Dank Tom für Deine Zeit und Mühe - Chapeau

Edit: Lastwechsel u.a. Wasserkocher on/off, werden jedoch mit deutlicher Verzögerung in STATS angezeigt. Vor V20.0.2 fast immer zeitgleich, aber jetzt teilweise nun 7-10 Sekunden Verzögerung. Dabei ist es Egal mit welchem Endgerät ich mir das ansehe.

1 „Gefällt mir“

Wie kann ich von 3D-Ansicht auf 2D umstellen?

Wenn ich „advanced“ in der Integration aufrufe kann ich den Haken bei 2D setzen. Leider merkt SFML sich das nicht. Muss ich dann einen gelben Neustart machen? Ich probiere es mal :grin:

Edit: Ne, funktioniert nicht.

Toll, sehr übersichtlich und selbsterklärend! Danke @Tom-HA , für Deine Arbeit und Deinen wissenschaftlichen Ansatz!

Natürlich. Das Prinzip ist klar. Aber es muss vernünftige Grenzen geben. Wenn man 3 kW statt 17,5 kW bekommt, ist das jenseits aller vernünftigen Grenzen. Warum nicht die Vorhersage 2-3 Mal täglich überprüfen und sie bei einer deutlichen Abweichung neu berechnen? Gestern lag ich mit über 80 % daneben, und heute wiederholt sich das Ganze. Was bedeutet das konkret? Ganz einfach: Ich verschwende meinen Akku und habe im Falle eines Stromausfalls, der heutzutage sehr häufig vorkommt, keine Notstromversorgung.

Hallo @Vladd1980

SFML ist und wird immer eine statische Prognose bleiben! Deine Abweichung klingt sehr nach einem Sensor Eingabefehler. Bitte schicke mir mal dein LOG (das von SFML ) ich schau mir das mal an.

@Joachim-xo
vielen Dank! .. die 2D Ansicht hat einen BUG, das habe ich schon notiert

@harix
Vielen Dank! Ich musste den Poll etwas zurücknehmen, damit Raspberry, Yellow, Green.. Stats auch nuten können. Es ist aber nur der Refresh der Anzeige, im Hintergrund werden Live-Werte geschrieben.

@Astrofreak85
Der TFS-Einfluss ist schon auf 2.0 umgebaut.. bitte einfach ein paar Tage abwarten. Alternativ kannst Du es im LOG von SFML sehen.

@Erol82
Vielen Dank!

@Rainman67
Ich musste mich für eine Sache entscheiden Zahlen und Animation oder Animation und WP.. aber es soll noch eine Extra-Karte für WP / Heizung / EV /Heizstäbe in 2D kommen…

2 „Gefällt mir“

@Tom-HA heute erneut um 6 uhr auf x86/x64 der Fehler. 2026.04.02

SFML

2026-04-20 06:00:01 - custom_components.solar_forecast_ml.data.data_weather_pipeline_manager - INFO - Pipeline: Weather update SUCCESS
2026-04-20 06:00:30 - custom_components.solar_forecast_ml.forecast.forecast_tfs_client - DEBUG - TFS fetch failed
Traceback (most recent call last):
  File "/usr/local/lib/python3.14/site-packages/aiohttp/client_reqrep.py", line 539, in start
    message, payload = await protocol.read()  # type: ignore[union-attr]
                       ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/aiohttp/streams.py", line 707, in read
    await self._waiter
asyncio.exceptions.CancelledError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<frozen forecast_tfs_client>", line 44, in fetch_forecast
  File "/usr/local/lib/python3.14/site-packages/aiohttp/client.py", line 1521, in __aenter__
    self._resp: _RetType = await self._coro
                           ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/aiohttp/client.py", line 788, in _request
    resp = await handler(req)
           ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/aiohttp/client_middlewares.py", line 36, in single_middleware_handler
    return await middleware(req, handler)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/aiohttp_client.py", line 72, in _ssrf_redirect_middleware
    resp = await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/aiohttp/client.py", line 766, in _connect_and_send_request
    await resp.start(conn)
  File "/usr/local/lib/python3.14/site-packages/aiohttp/client_reqrep.py", line 534, in start
    with self._timer:
         ^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/aiohttp/helpers.py", line 713, in __exit__
    raise asyncio.TimeoutError from exc_val
TimeoutError
2026-04-20 06:00:30 - custom_components.solar_forecast_ml.forecast.forecast_rule_based_strategy - DEBUG - Physics+LSTM blend active

TFS

INFO:     172.30.32.1:56452 - "GET /health HTTP/1.1" 200 OK
2026-04-20T04:00:31.598897Z [error    ] multi_model_fetch_failed       error=
INFO:     172.30.32.1:41154 - "GET /health HTTP/1.1" 200 OK

Auf Pi 2026.04.03

gestern um 23:25 dieser Fehler.

SFML

2026-04-19 23:25:08 - custom_components.solar_forecast_ml.forecast.forecast_tfs_client - DEBUG - TFS fetch failed
Traceback (most recent call last):
  File "/usr/local/lib/python3.14/site-packages/aiohttp/client_reqrep.py", line 539, in start
    message, payload = await protocol.read()  # type: ignore[union-attr]
                       ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/aiohttp/streams.py", line 707, in read
    await self._waiter
asyncio.exceptions.CancelledError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<frozen forecast_tfs_client>", line 44, in fetch_forecast
  File "/usr/local/lib/python3.14/site-packages/aiohttp/client.py", line 1521, in __aenter__
    self._resp: _RetType = await self._coro
                           ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/aiohttp/client.py", line 788, in _request
    resp = await handler(req)
           ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/aiohttp/client_middlewares.py", line 36, in single_middleware_handler
    return await middleware(req, handler)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/aiohttp_client.py", line 72, in _ssrf_redirect_middleware
    resp = await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/aiohttp/client.py", line 766, in _connect_and_send_request
    await resp.start(conn)
  File "/usr/local/lib/python3.14/site-packages/aiohttp/client_reqrep.py", line 534, in start
    with self._timer:
         ^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/aiohttp/helpers.py", line 713, in __exit__
    raise asyncio.TimeoutError from exc_val
TimeoutError
2026-04-19 23:25:08 - custom_components.solar_forecast_ml.forecast.forecast_rule_based_strategy - DEBUG - Physics+LSTM blend active

TFS

INFO:     172.30.32.1:44244 - "POST /api/forecast/run?forecast_type=sfml HTTP/1.1" 200 OK
INFO:     172.30.32.1:36364 - "GET /health HTTP/1.1" 200 OK
2026-04-19T21:24:45.267672Z [error    ] multi_model_fetch_failed       error='[Errno -3] Temporary failure in name resolution'
2026-04-19T21:24:53.321140Z [error    ] single_model_fetch_failed      error='[Errno -3] Temporary failure in name resolution' source=icon_seamless
2026-04-19T21:25:01.375100Z [error    ] single_model_fetch_failed      error='[Errno -3] Temporary failure in name resolution' source=gfs_seamless
2026-04-19T21:25:09.432782Z [error    ] single_model_fetch_failed      error='[Errno -3] Temporary failure in name resolution' source=ecmwf_ifs025
2026-04-19T21:25:09.433032Z [info     ] weather_fetch_complete         sources=[] total_hours=0
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/usr/local/lib/python3.14/site-packages/uvicorn/protocols/http/httptools_impl.py", line 420, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        self.scope, self.receive, self.send
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.14/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
    return await self.app(scope, receive, send)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/fastapi/applications.py", line 1163, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.14/site-packages/starlette/applications.py", line 90, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.14/site-packages/starlette/middleware/errors.py", line 186, in __call__
    raise exc
  File "/usr/local/lib/python3.14/site-packages/starlette/middleware/errors.py", line 164, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.14/site-packages/starlette/middleware/cors.py", line 88, in __call__
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.14/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.14/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.14/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.14/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.14/site-packages/starlette/routing.py", line 660, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.14/site-packages/starlette/routing.py", line 680, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.14/site-packages/starlette/routing.py", line 276, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.14/site-packages/fastapi/routing.py", line 134, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.14/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.14/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.14/site-packages/fastapi/routing.py", line 120, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/fastapi/routing.py", line 674, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<3 lines>...
    )
    ^
  File "/usr/local/lib/python3.14/site-packages/fastapi/routing.py", line 328, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen serve_forecast>", line 1298, in run_forecast
  File "<frozen serve_forecast>", line 500, in generate_forecast
ValueError: min() iterable argument is empty
2026-04-19T21:54:12.461406Z [debug    ] weather_pipeline_next_refresh  hour=6 wait_s=22247

hier schein ein Internet Problem beim Pi vorzuliegen?

Ich sehe den Fehler, aber es macht keinen Sinn den nun noch zu fixen. V2 hat eine komplett andere Architektur.. einfach ignorieren.. ist nur unschön, aber es wird nichts brechen

1 „Gefällt mir“

Ich stelle Ihnen gerne alle Informationen zur Verfügung. Ich weiß nur nicht, wo ich das Integrationsprotokoll finde. Genauer gesagt, ich glaube, ich habe das Protokoll gefunden, aber wie füge ich es hier ein?

Schau mal unter Config → Solar Forecast ML → logs.

Und das Logfile NIEMALS hier öffentlich posten, sondern Tom nur als privater Nachricht schicken, da das deinen Standort enthält!

3 „Gefällt mir“

Und das .log durch .txt ersetzen, sonst kann das nicht eingefügt werden.

4 „Gefällt mir“

Installation SFML 20.2.0 und STATS 20.2.0: Vorgang lief ohne Fehlermeldungen durch.

Installation TFS 1.2.3: War bereits installiert.

HACS: Keine Probleme beim Download via HACS.

Schwierigkeiten: Keine spezifischen Probleme.

1 „Gefällt mir“

Bei mir alles bestens.

Nur Taupunkt wird nicht angezeigt.

Kommt das Transformer Update separat noch (App)? Aktuell läuft Version 1.2.3

Wir noch kommen, siehe Info von Tom

HaCS bietet 20.2.2 an. Nach dem Update erscheint aber 20.2.0 bei der Integration


Das ist nur der bekannte Missmatch zwischen HACS und Version Wahrheit. Das kannst du getrost ignorieren… sobald ich mal Zeit habe.. oder langeweile räume ich das mal auf :slight_smile:

1 „Gefällt mir“

Moin, ich habe gerade mal das in HA angebotene Update ausgeführt, das unter dem Namen sfml gelistet wurde. Danach bekam ich gleich ein 2. Update dazu angeboten, dass ich auch ausgeführt habe. Danach sah 3d-Grafik in Solar Forcast STATS so aus:

Die konfigurierten Verbraucher WP und Wallbox sind verschwunden, die Leistung, die vom Deflektorschild ins Haus fließt, ist nun auch falsch, und es wird angeblich nichts mehr produziert. Es gab dann auch eine Fehlermeldung, hinsichtlich sfml sensoren, die nun leider verschwunden ist. Ich meine, es ging darum, dass etwas im Verzeichnis sfml_stats fehlen würde.

Öffne ich die Karteikarte Flow, erscheint dies Bild:

Dort sind die Werte vorhanden.

Außerdem fehlten plötzlich die Verbraucher WP und Wallbox in STATS, so dass ich sie nachtragen musste. Zusätzlich gibt es dort nun das Feld hp_pv_daily. Was enau ist da einzutragen? Ich habe da die gesamte kumulierte PV-Energy eingetragen, das scheint mir aber falsch zu sein. Das gleiche PRoblem habe ich mit sensor_hp_jaz. Gibt es eine Doku für die Bedeutung der Sensoren?

Aktuell habe ich die Versionen

Solar Forecast STATS 20.2.0 und Solar.Forecast ML 20.2.0 installiert. Bis zum Update heute lief das sehr gut, die Vorhersage war sogar schon im AI-Hybrid-Modus.

Den einzigen “error”, den ich im solar_forecast_ml.log immer wiederkehrend finde, ist dieser hier:

2026-04-23 12:49:36 - custom_components.solar_forecast_ml.data.data_weather_expert_blender - WARNING - WttrIn fetch error: 200, message='Attempt to decode JSON with unexpected mimetype: application/text', url='https://wttr.in/52.2857943,9.286504749999999?format=j1'

Es wäre schön, wenn mir jemand Hinweise geben könnte, wo mein Problem liegen könnte und was ich überprüfen sollte.

Danke schon mal!

Hallo Thomasz
kannst Du mir bitte sagen, von welcher Version du das Update gemacht hast, also welche Version hattest Du vor dem Update?

Zu dem Thema WP und Co hatte ich bereits einiges geschrieben, die sind schon seit dem letzten Update nicht mehr in der 3D Ansicht vorhanden - aus Platzgründen. Die entsprechenden Karten sind in Energie gewandert. Das “neue” 2D ist eine Beta. und muss noch feinjustiert werden.

Mich irritiert, dass Die Sensorren bei dir nicht klar benannt sind.. das klingt nach einem Fehler in den Übersetzungsdateien. Grundsätzlich werden diese immer nur von HA gelanden bei einem Neustart (roter Knopf) ich würde dich bitte das einmal auszuprobieren und mir auch kurz zu sagen welche Sprache dein HA insgesamt läuft, damit ich den Fehler eingrenzen kann.

HP_xxx = Heat Pump / Wärmepumpe

Hallo Tom-HA,

herzlichen Dank für deine schnelle Reaktion. Welche Version ich vorher hatte, kann ich ad hoc nicht sagen. Die erste Installation des Forecasts erfolgte am 18.04., STATS ein oder 2 Tage später.

Um deine weiteren Frage zu beantworten, brauche ich noch etwas Zeit, weil ich gleich erstmal anderweitig beschäftigt bin, sorry. Ich denke, es wird erst morgen etwas werden.

Bis dahin und bei der Gelegenheit herzlichen Dank für deine coole Integration!

Live long and prosper …

1 „Gefällt mir“

Moin, da bin ich doch schon wieder :slight_smile: .

Was meinst du mit “nicht klar benannt”? Ein Beispiel ergänzt um das, was du da als Namen erwarten würdest, würde mir helfen.

Und mit “der Sprache, in der HA läuft”, meinst du vermutlich das GUI von HA. Das ist bei mir in Deutsch.

Ein Ei auf der Schiene, das ich da selber hingenagelt habe, habe ich inzwischen selber gefunden. Ich hatte mir per Editor in der configuration.yaml einen Integral-Sensor zerschossen, ohne es zu merken. Und beim Neustart wurde der wirksam, so dass die Einheit plötzlich von kW auf W geändert wurde, mit dem Problem, dass die Zahl von “täglicher Verbrauch des Hauses” in kWh plötzlich “sehr hohe Werte” annahm. Das habe ich gefixed und das utility meter wieder auf den korrekten Wert “kalibriert”.

Der Wert für auf der Seite “Energie” für “Gesamtverbrauch Haushalt” ist nun auch wieder korrekt. Seit Beginn der Aufzeichnung irgendwann ab dem 18.04. sind es nun 102 kWh, und nicht mehr 51000 …

Die Energieflüsse auf dem 3d-Bild scheinen auch wieder zu passen. Im Augenblick stimmen sie mit der Page Flow und meiner Darstellung im SMA Sunny-Portal überein.

Mit den Sensoren bzw. deren Bezeichnungen stehe ich aber immer noch auf Kriegsfuss :slight_smile: .

Da gibt es die “Batterie Leistung”, da habe ich noch nichts eingetragen, und “Batterie →Haus”, da ist ich des Sensor für die aktuelle Batterie-Entladeleistung eingetragen (wurde so übernommen beim Update). Und es gibt “Battery to Grid”. Was bedeutet was? Bedeutet “Batterie Leistung” sozusagen die aktuelle Geamtleistung der Batterie, und die beiden anderen Sensoren sozusagen die Aufteilung in die Anteile, die direkt ins Haus und direkt ins Netz fließen? Also z. B . 1000 W Batterieleistung, davon 750 W ins Haus und 250 W ins Netz?

Ich bitte um Entschuldigung, aber für mich sind die Kurznamen der Sensoren ohne beschreibenden Text nicht eindeutig zu verstehen. Dafür sind sie “zu kurz”. Daher meine Frage nach einer Dokumentation. Paradebeispiel ist für mich “zusätzlicher Netzbezug kWh/Tag”. Zusätzlich zu was? Mein Smartmeter (SMA-EM 1.0) zeigt mir den vollständigen Bezug aus dem Netz an. Wo sollte da noch etwas zusätzlich herkommen können? Außer vielleicht aus der Gartensteckdose vom Nachbarn :grin: . Wenn ich die hinter dem Zähler mit dem selben Außenleiter in meiner Hütte verbinde, sollte das sogar funktionieren, wenn bei ihm die Spannung auf der Phase höher ist, als bei mir …

Bitte verstehe das nicht als Meckerei, es soll definitiv keine sein. Es sollte nur den Grad meines Nicht-Verstehens deutlich machen.

Das gleiche gilt auch für meine Frage nach “WP: PV-Energie heute (kWh, kumuliert pro Tag)”. Und auch “WP: Netz-Energie heute (kWh, kumuliert pro Tag)”. Spontan erscheint es mir unmöglich, diese Werte zu ermitteln, wenn sie das bedeuten würden, was ich annehme: das jeweilige Anteil gemeint ist, wenn z. B. PV fürs Haus nicht reicht und daher das Netz helfen muss. Ist meine Annahme korrekt?

Fragen über Fragen …

Ansonsten scheint mir aber die Hubble AI gut mit Daten versorgt zu sein. Das hier ist der aktuelle Status nach 5 Tagen Datenaufnahme:

Ist das aus deiner Sicht o. k.?

Heute war übrigens so ein Tag, der Hubble zur Verzweiflung bringen könnte. Die Prognose war bei 101 kWh, tatsächlich sind es 140 geworden. Die Ursache ist ein lokaler, orographischer Einfluss auf Wetter und Wolken. Ich lebe hier an einem 15 km langen Höhenzug von max. 370 m Höhe in Niedersachsen. Hier bildete sich lokal sehr früh im leichten Nebel/Hochnebel ein Sonnenloch, wohl durch einen leichten Fön-Effekt. Das hat natürlich keine Wetterprognose auf dem Schirm. Diesen Sonnenloch-Effekt haben wir natürlich nicht immer, aber er ist schon auffällig und häufiger mal zu sehen. Was macht Hubble bzw. die Prognose daraus?

Wichtig ist die PV Gesamtleistung in DC zu verwenden.

Diese Sensoren werden erstellt bei der Verwendung der Integration

1 „Gefällt mir“