Solax Wechselrichter Integration

atrost

Member
Hallo Forum,
ich habe einen seit 6 Wochen einen Solax X3. Anfangs hatte ich mir Template-Sensoren über die API angelegt. Seit dem neuen Updaten funktionieren diese nicht mehr.
Da ich auch ein Fan von Integrationen bin, habe ich mir die Solax Integration aus dem HACS installiert.
Die Konfiguration scheitert nun allerdings an der Verbindung zum LAN-Dongle. Ich habe die Zugangsdaten und das Kennwort. Der Port soll wohl 502 sein (lt. Doku der Integration), jedoch klappt weder eine IP innerhalb der Fritzbox, noch die IP 5.8.8.8.
Die Solax App zeigt alle Daten, also steht die Verbindung.
Ist es richtig, die interne Fritzbox IP zu verwenden und ist der Port tatsächlich 502? Was kann sonst noch falsch gemacht werden?
 
Zuletzt bearbeitet:
Hey Forum,
ich bin einen kleinen Schritt weiter.
Wie im Internet zu lesen ist, behält der Wechselrichter seine IP-Adresse 5.8.8.8, nachdem er Internetzugang bekommen hat.
Somit ergibt es sich, daß, wenn man die Integration nutzen möchte, ein Gateway oder Proxy erstellt werden muß, um den Übergang von der Fritzbox zum Weschselrichter zu erreichen. Sehe ich das richtig?
Ich kenne das sonst nur von VPN-Routern, die direkt eine Verbindung mit dem Firmenserver herstellen.
Es stellt sich dann die Frage, da mein Mini-PC sowohl Wlan als auch Lan hat, ob man da nicht den Lan-Anschluß mit z. B. 5.8.8.7 einrichten kann.
Bei meinem Laptop konnte ich jedenfalls einen Ping absetzen auf 5.8.8.8.
 
Wieso funktionieren seit dem Update die Sensoren nicht mehr? Vorher war das kein Problem!
Was hat sich geändert?

YAML:
sensor:
  - platform: rest
    name: "Solax total"
    resource: https://www.solaxcloud.com/proxyApp/proxy/api/getRealtimeInfo.do?tokenId=xxxxxxxxxxx&sn=XXXXXXXX
    value_template: '{{ ( value_json.result.yieldtotal | round(0) ) }}'
    unit_of_measurement: "KWh"
 
Wie im Internet zu lesen ist, behält der Wechselrichter seine IP-Adresse 5.8.8.8, nachdem er Internetzugang bekommen hat.
Sorry, aber das scheint mir doch eher ausgemachter Blödsinn zu sein. Die IP "5.8.8.8" ist eine "öffentliche" IP und zeigt auf "stcatering.ru" und dahin willst Du sicherlich "nicht" (schon garnicht mit Authentifizierungsdaten). Wenn das Ding Netzwerkkonnektivität hat, schau im Router nach, welche IP das Ding bekommen hat und die gibst Du an (also die "interne"). Falls es das nicht ist, sendet das Ding Daten an den Hersteller, welcher dann seinerseits über eine API (oder sonstwie) die Daten wieder zur Verfügung stellt, dann musst Du dort einen entsprechenden Ansprechpunkt haben, aber das es irgendwas mit Catering aus Russland zu tun hat, möchte ich an dieser Stelle doch mal "ganz" stark bezweifeln 😁

Ich hab grade mal kurz geschaut und folgendes gefunden:
resource: http://###.###.###.####/ # IP of solax module
Also wäre es bei Dir vermutlich etwas in die Richtung "http://192.168.x.x", die IP der Fritzbox hat damit mal so "garnichts" zu tun (die ist nur Router). Einfach mal nachschauen, welche IP das Gerät selbst bekommen hat und die trägst Du dann mal ein. Dann ist das auch eine lokale Verbindung (zwischen HA und dem Gerät), braucht kein Internet und nix und dann "sollte" es theoretisch funktionieren. Alternativ geht man eben den Weg über die API, da könnte ich mir dann aber vorstellen, dass man ggf. auch direkt eine andere Integration braucht.

Fakt ist aber auch, dass laut API-Beschreibung (https://www.eu.solaxcloud.com/phoebus/resource/files/userGuide/Solax_API_for_End-user_V1.0.pdf) noch ein "Port" angegeben werden muss - hast Du wohl nicht getan. Kannst also mal statt...
...folgendes versuchen:
https://www.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?tokenId=xxxxxxxxxxx&sn=XXXXXXXX
Zumindestens liest sich das so in der API-Doku... die ist aber evtl. auch veraltet, keine Ahnung, kenne weder die API noch das Produkt, also von daher... 😅
 
Wieso funktionieren seit dem Update die Sensoren nicht mehr? Vorher war das kein Problem!
Was hat sich geändert?

YAML:
sensor:
  - platform: rest
    name: "Solax total"
    resource: https://www.solaxcloud.com/proxyApp/proxy/api/getRealtimeInfo.do?tokenId=xxxxxxxxxxx&sn=XXXXXXXX
    value_template: '{{ ( value_json.result.yieldtotal | round(0) ) }}'
    unit_of_measurement: "KWh"
Das „k“ bei kWh muss klein sein.

YAML:
    unit_of_measurement: "kWh"
 
Hallo Leute,
nach vielen erfolglosen Versuchen mit der Solax Integration bin ich wieder hierher zurück gekommen und habe den Beitrag von Barry gesehen.
Ich habe unit_of_measurement geändert und die Konfiguration neu gestartet. Danach wurden mir für einige Minuten wieder Werte angezeigt, dann standen sie wieder auf unbekannt. Wenn man die Werte im Browser direkt abruft, kommt ein Fehler:
{"exception":"The overrun has been disabled for 1 hour!","success":false}
Es liegt also an den Servern von Solax denke ich. Ich bleibe dran.
 
Zuletzt bearbeitet:
Hallo Forum,
nachdem weiter recherchiert habe bin ich noch mal auf den Beitrag von blurrr zurückgekommen.
Es gibt tatsächlich 2 Anleitungen zur API. Die erste im persönlichen Bereich bei Solax, in dem man seine Anlage sieht und die zweite findet man über Google, so wie es blurrr gemacht hat.
Hier der Link zur korrekten Anleitung:
https://www.eu.solaxcloud.com/phoebus/resource/files/userGuide/Solax_API_for_End-user_V1.0.pdf
In dieser steht dann auch die Verwendung des Port 9443. Ich hatte bei der ersten Verwendung jedoch eine Fehler im Link, weswegen es nicht gleich funktionierte. Die Seriennummer ist nicht die des Wechselrichters sondern die des Lan- bzw. Wlan-Dongles.
Hier nun die Lösung, die auch blurrr weiter oben so beschrieben hat. Vielen Dank dafür......
Wenn man übrigens den Link hinter "resource" direkt im Browser eingibt, sollte es so zurückkommen:

{"success":true,"exception":"Query success!","result":{"inverterSN":"xxxxxxxxxxxx","sn":"XXXXXXXXXX","acpower":0.0,"yieldtoday":17.4,"yieldtotal":552.7,"feedinpower":0.0,"feedinenergy":0.0,"consumeenergy":0.0,"feedinpowerM2":null,"soc":null,"peps1":null,"peps2":null,"peps3":null,"inverterType":"16","inverterStatus":"100","uploadTime":"2023-03-08 22:37:06","batPower":null,"powerdc1":0.0,"powerdc2":0.0,"powerdc3":0.0,"powerdc4":null,"batStatus":null}}

YAML:
sensor:

  - platform: rest
    name: "Solax now"
    resource: https://www.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?tokenId=xxxxxxxxxx&sn=XXXXXXXXXX
    value_template: '{{ value_json.result.acpower }}'
    unit_of_measurement: "W"

  - platform: rest
    name: "Solax today"
    resource: https://www.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?tokenId=xxxxxxxxxx&sn=XXXXXXXXXX
    value_template: '{{  ( value_json.result.yieldtoday  | round(1) )  }}'
    unit_of_measurement: "kWh"
 
  - platform: rest
    name: "Solax total"
    resource: https://www.solaxcloud.com/proxyApp/proxy/api/getRealtimeInfo.do?tokenId=xxxxxxxxxx&sn=XXXXXXXXXX
    value_template: '{{ value_json.result.yieldtotal }}'
    unit_of_measurement: "kWh"
 
  - platform: rest
    name: "Solax today"
    resource: https://www.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?tokenId=xxxxxxxxxx&sn=XXXXXXXXXX
    value_template: '{{ value_json.result.feedinpower }}'
    unit_of_measurement: "W"
 
  - platform: rest
    name: "Solax today"
    resource: https://www.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?tokenId=xxxxxxxxxx&sn=XXXXXXXXXX
    value_template: '{{ value_json.result.feedinenergy }}'
    unit_of_measurement: "kWh"

  - platform: rest
    name: "Solax upload time"
    resource: https://www.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?tokenId=xxxxxxxxxx&sn=XXXXXXXXXX
    value_template: "{{ value_json.result.uploadTime }}"
 
  - platform: rest
    name: "Solax status"
    resource: https://www.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?tokenId=xxxxxxxxxx&sn=XXXXXXXXXX
    value_template: >
          {% if value_json.result.inverterStatus == '100' %}Wait
          {% elif value_json.result.inverterStatus == '101' %}Check
          {% elif value_json.result.inverterStatus == '102' %}Normal
          {% elif value_json.result.inverterStatus == '103' %}Fault
          {% elif value_json.result.inverterStatus == '104' %}Permanent Fault
          {% elif value_json.result.inverterStatus == '105' %}Update
          {% elif value_json.result.inverterStatus == '106' %}EPS Check
          {% elif value_json.result.inverterStatus == '107' %}EPS
          {% elif value_json.result.inverterStatus == '108' %}Self-test
          {% elif value_json.result.inverterStatus == '109' %}Idle
          {% elif value_json.result.inverterStatus == '110' %}Standby
          {% elif value_json.result.inverterStatus == '111' %}Pv Wake Up Bat
          {% elif value_json.result.inverterStatus == '112' %}Gen Check
          {% elif value_json.result.inverterStatus == '113' %}Gen Run
          {% else %}I dont know{% endif %}
 
Zuletzt bearbeitet:

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
4.380
Beiträge
45.238
Mitglieder
3.982
Neuestes Mitglied
ThomasW
Zurück
Oben