Frage
Es geht um die Verbindung solax / realtime_json. Ein Kunde hatte diese lange am Laufen. Nun hat er ein Solax-Update machen lassen und bekommt:
Code: Alles auswählen
00:00:14.112 11996: <I/O>: devices.grid.solax.json_realtime.Connection: ---> POST http://192.168.178.110
headers:
Content-Type:
text/plain; charset=US-ASCII
Connection:
keep-alive
message:
optType=ReadRealTimeData&pwd=XXXXXXXXXX
00:00:14.157 11996: <I/O>: devices.grid.solax.json_realtime.Connection: <--- 405 Method Not Allowed
headers:
X-Android-Sent-Millis:
1786053614134
Content-Type:
text/html
X-Android-Selected-Protocol:
http/1.1
Content-Length:
52
X-Android-Response-Source:
NETWORK 405
X-Android-Received-Millis:
1786053614152
message:
Request method for this URI is not handled by server
-------------------------------------
Antwort
Kurzfassung
Ja, das ist bekannt – und es ist kein Fehler in der App. Solax hat die lokale HTTP-Schnittstelle in neueren Dongle-Firmwares dichtgemacht. Einen Schalter zum Wiederfreischalten gibt es (dokumentiert) nicht.
Was genau passiert
Das 405 passt exakt zum bekannten Muster: Der Webserver im Dongle antwortet noch auf der LAN-Seite (deshalb kein Timeout, sondern ein sauberes HTTP-405), er bedient dort aber nur noch die Konfigurationsseiten. Der POST / mit optType=ReadRealTimeData ist auf dem LAN-Interface schlicht nicht mehr implementiert.
Aus der Home-Assistant-Doku und den Community-Threads: Geräte mit neuerer Firmware "no longer expose an API when connected to your wireless network" – die API bleibt nur noch über den eigenen Accesspoint des Dongles erreichbar (SSID Wifi_SXxxxxxxx, IP 5.8.8.8).
Der ioBroker-Solax-Adapter warnt seit Jahren explizit davor, Firmware > 2.30.20 (Pocket WiFi V1/V2) bzw. >= 3.001 (V3) einzuspielen, "da Solax in höheren Versionen den lokalen Zugriff blockiert".
Bei den ganz neuen Ständen kommt teilweise noch Basic-Auth mit Benutzername dazu (siehe HA-Issue #145182, von Home Assistant als "waiting-for-upstream" geschlossen).
Was man testen kann (5 Minuten, in dieser Reihenfolge)
- Gegenprobe ohne App – bestätigt, dass es nicht am HTTP-Client liegt:
Code: Alles auswählen
curl -v -d "optType=ReadRealTimeData&pwd=DEINPASSWORT" -X POST http://192.168.178.110/ - Host-Header-Trick – der Webserver prüft offenbar den Host-Header, nicht die Quelle. Funktionierte nachweislich auf FW 2.034.06; ob es bei neueren noch geht, ist unbekannt, aber billig zu testen:
Code: Alles auswählen
curl -v -d "optType=ReadRealTimeData&pwd=DEINPASSWORT" -X POST http://192.168.178.110/ -H "Host: 5.8.8.8" - Über den Dongle-AP: Laptop/Handy ins WLAN des Dongles hängen, dann POST http://5.8.8.8/. Klappt das, ist die AP-only-Sperre bestätigt.
Optionen, falls sich das Bild bestätigt
- Empfehlung: Umstellen auf Modbus TCP (Port 502). Das gibt es in der App bereits als eigenen Verbindungstyp ("solax" statt "solax_realtime"). Modbus über den Pocket WiFi 3.0 ist von Solax offiziell unterstützt (die HA-Integration solax-modbus empfiehlt FW V3.004.03+) und ist der einzige Weg, der auch nach künftigen Firmware-Updates trägt.
- Firmware-Downgrade über den Solax-Service (lokales Update via Dongle-AP, Systemseite). Bekommt man nicht immer, und Solax kann per Cloud erneut updaten – daher keine verlässliche Lösung.
- Reverse Proxy (z. B. Raspberry Pi mit zwei Interfaces, eines am Dongle-AP, NGINX davor). Funktioniert, ist für einen Endkunden aber unzumutbar.
- Solax Cloud – ebenfalls in der App vorhanden, aber nur ca. 5-Minuten-Takt und damit für eine Überschussregelung untauglich.
- So long, Solax local API – Neil Turner
- squishykid/solax #151 – Possible method to access API on LAN
- home-assistant/core #145182 – new solax dongle firmware requires username + password
- ioBroker.solax – Dokumentation
- Home Assistant solax-modbus – FAQ
- Solax: Firmware Pocket WiFi 3.0 lokal aktualisieren