solax xHybrid Wechselrichter

Begonnen von stefan.apetz, 15 August 2017, 20:42:49

Vorheriges Thema - Nächstes Thema

stefan.apetz

#15
Hallo döner123,

schau bitte mal hier: https://github.com/GitHobi/solax/wiki/74_SolaxDirect.pm-module-description

Das steht da so nicht in der Doku, dass man eine andere URL / Host / IP eintragen kann, das hat Hobi aber im August 2018 hinzugefügt, siehe: https://github.com/GitHobi/solax/commit/9a3fe2ec6987007bbd1eb785830c4665199b8cb1

Meine Definition sieht bspw. so aus:

define solax SolaxDirect 192.168.178.55 80
attr solax DbLogExclude .*
attr solax alias Solax Wechselrichter LiveData
attr solax event-on-change-reading .*
attr solax host 192.168.178.55
attr solax interval 15
attr solax port 80
attr solax room hidden
attr solax userReadings pv_MoneyEarnings {sprintf("%.2f",ReadingsVal("solax","inverter_yield_month", 0)*0.26)}, pv_percentPower  {sprintf("%.2f",ReadingsVal("solax","pv_total_power", 0)/5415*100)}


Damit spreche ich die URL http://192.168.178.55/api/realTimeData.htm an. Das ist die (feste) IP, die mein Solax in meinem Netzwerk hat.

Über diese kommt das JSON Objekt für das Modul zurück.

{"method":"uploadsn","version":"Solax_SI_CH_2nd_20160912_DE02","type":"AL_SE","SN":"CD2360D3","Data":[3.7,5.5,215.8,206.9,3.6,235.9,823,33,5.5,10799.5,-58,798,1137,55.70,19.74,1100,23,79,0.0,2669.5,,,,,,,,,,,,,,,,,,,,,,4387.80,4827.30,,,,,,,,49.97,,,0.0,0.0,0,0.00,0,0,0,0.00,0,9,0,0,0.00,0,9],"Status":"2"}

Ich habe auch mal einen Screenshot von meiner Visualisierung angefügt, die ich mit ftui gebaut habe (auf Basis der HTMLs von Hobi)

Ich habe das so gebaut, dass das PopUp mit den Detailinformationen aufgeht, wenn ich auf den Prozentkreis (im Bild die 32,5 %) zur aktuellen Produktion klicke.

döner123

Vielen Dank für deine Mühe aber wie gesagt, das Modul wurde auf einem Hybrid Wechselrichter aufgebaut, den du auch hast, oder?
Bei Anwahl meiner IP im Netzwerk mit  http://192.168.69.38/api/realTimeData.htm kommt kein Ergebnis. Bedeutet also, dass bei meinem Gerät kein Aufruf über API möglich zu sein scheint :(

döner123


stefan.apetz

#18
Danke (für das Lob an die Umsetzung)

Was kommt, wenn du im Browser nur die IP aufrufst? Ein Login Fenster?

Welchen Wechselrichter hast du?

Edit: x1, steht ja oben. Da hab ich nicht richtig geschaut.
Wenn du dich mit dem lokalen wifi vom Solax verbindest und dann die url unter der entsprechenden IP aufrufst kommt das json Objekt? Ich habe in anderen Foren gelesen, dass Solax wohl auf neueren Geräten die api im nicht lokalen Netz dicht gemacht hat.
Dann mögliche kompliziertere Lösungen: einen Raspi mit dem Solax wifi verbinden und mit dem anderen Hausnetz (lan oder zweites wlan) und dann den raspi als router mit reverse proxy konfigurieren.

döner123

#19
Ja genau, das ist das Problem. Offenbar ist sogar der Api Zugriff im lokalen Netz des Wlan Moduls gesperrt. Also selbst intern bekomme ich bei http://5.8.8.8/api/realTimeData.htm ein "The requested URL was not found on this server" und in meinem Heimnetz einzig die Einwahlseite wenn ich die lokale ID nutze.

Ich denke, das wurde komplett dicht gemacht, möglich wäre wahrscheinlich nur noch der HTML-Zugriff auf die Cloud. Aber da hab ich auch nicht wirklich einen Plan von.
Egal, wäre ein nice-to-have gewesen aber hängt nix von ab. Vielleicht ergibt sich später ja noch eine Möglichkeit.

edit:
Quark, Einwahlseite mit admin bekomme ich nur im lokalen Netz des Wechselrichters. Im Heimnetz funktioniert weder Api noch login

döner123

Ich habe in folgenden Thread in einem anderen Forum eine Anleitung zur Einbindung der Daten aus der Cloud für Node-Red gefunden.

https://community.home-assistant.io/t/solax-solar-inverter-setup-guide/48008/3

hier ist folgende Konfigurationsdatei solax.yaml hinterlegt mit folgendem Inhalt:

[
    {
        "id": "e116cffd.09d8",
        "type": "http request",
        "z": "24df37fe.8d32f8",
        "name": "Get Token",
        "method": "POST",
        "ret": "obj",
        "url": "47.254.152.24:6080/proxy/login/login?password=PASSWORD&userName=USERNAME&userType=5",
        "tls": "",
        "x": 410,
        "y": 100,
        "wires": [
            [
                "65cfcd70.07b70c",
                "cceebdee.ed2d58"
            ]
        ]
    },
    {
        "id": "ea4af243.648128",
        "type": "inject",
        "z": "24df37fe.8d32f8",
        "name": "",
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "repeat": "300",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "x": 150,
        "y": 100,
        "wires": [
            [
                "e116cffd.09d8"
            ]
        ]
    },
    {
        "id": "65cfcd70.07b70c",
        "type": "debug",
        "z": "24df37fe.8d32f8",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "x": 670,
        "y": 100,
        "wires": []
    },
    {
        "id": "3ea8f259.003716",
        "type": "http request",
        "z": "24df37fe.8d32f8",
        "name": "Get dailyInfo",
        "method": "POST",
        "ret": "obj",
        "url": "47.254.152.24:6080/proxy//inverter/getDailyInfo?inverterSn=SERIALNUMBER&today=2018-08-25&tokenId={{{tokenId}}}&wifiSn=WIFISERIALNUMBER",
        "tls": "",
        "x": 410,
        "y": 220,
        "wires": [
            [
                "8a32497e.90ac78"
            ]
        ]
    },
    {
        "id": "8a32497e.90ac78",
        "type": "debug",
        "z": "24df37fe.8d32f8",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 680,
        "y": 220,
        "wires": []
    },
    {
        "id": "cceebdee.ed2d58",
        "type": "function",
        "z": "24df37fe.8d32f8",
        "name": "",
        "func": "msg.tokenId = msg.payload.result.tokenId;\nmsg.userId = msg.payload.result.userId;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 170,
        "y": 160,
        "wires": [
            [
                "3ea8f259.003716",
                "161a41e7.d0a926",
                "784ccb02.f10aac"
            ]
        ]
    },
    {
        "id": "161a41e7.d0a926",
        "type": "http request",
        "z": "24df37fe.8d32f8",
        "name": "Get inverterInfo",
        "method": "POST",
        "ret": "obj",
        "url": "47.254.152.24:6080/proxy//mysite/getInverterInfo?siteId=MYSITEID&tokenId={{{tokenId}}}",
        "tls": "",
        "x": 420,
        "y": 280,
        "wires": [
            [
                "28d9a3f1.7ffa34",
                "709e7142.9818f8"
            ]
        ]
    },
    {
        "id": "28d9a3f1.7ffa34",
        "type": "debug",
        "z": "24df37fe.8d32f8",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 680,
        "y": 280,
        "wires": []
    },
    {
        "id": "784ccb02.f10aac",
        "type": "http request",
        "z": "24df37fe.8d32f8",
        "name": "Get siteId",
        "method": "POST",
        "ret": "obj",
        "url": "47.254.152.24:6080/proxy//mysite/mySite?tokenId={{{tokenId}}}&userId={{{userId}}}",
        "tls": "",
        "x": 400,
        "y": 160,
        "wires": [
            [
                "cd814d82.5bb45"
            ]
        ]
    },
    {
        "id": "cd814d82.5bb45",
        "type": "debug",
        "z": "24df37fe.8d32f8",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 680,
        "y": 160,
        "wires": []
    },
    {
        "id": "645bfd93.2413bc",
        "type": "influxdb out",
        "z": "24df37fe.8d32f8",
        "influxdb": "90887afa.31e428",
        "name": "GridPower",
        "measurement": "GridPower",
        "precision": "",
        "retentionPolicy": "",
        "x": 810,
        "y": 520,
        "wires": []
    },
    {
        "id": "629f6371.66c11c",
        "type": "influxdb out",
        "z": "24df37fe.8d32f8",
        "influxdb": "90887afa.31e428",
        "name": "SolaxTemp",
        "measurement": "SolaxTemp",
        "precision": "",
        "retentionPolicy": "",
        "x": 810,
        "y": 560,
        "wires": []
    },
    {
        "id": "b5877413.78aa88",
        "type": "influxdb out",
        "z": "24df37fe.8d32f8",
        "influxdb": "90887afa.31e428",
        "name": "KwHToday",
        "measurement": "KwHToday",
        "precision": "",
        "retentionPolicy": "",
        "x": 810,
        "y": 600,
        "wires": []
    },
    {
        "id": "2de5110b.514f9e",
        "type": "influxdb out",
        "z": "24df37fe.8d32f8",
        "influxdb": "90887afa.31e428",
        "name": "KwHTotal",
        "measurement": "KwHTotal",
        "precision": "",
        "retentionPolicy": "",
        "x": 800,
        "y": 640,
        "wires": []
    },
    {
        "id": "709e7142.9818f8",
        "type": "function",
        "z": "24df37fe.8d32f8",
        "name": "Check request success",
        "func": "if(msg.payload.success === true){\n    return [msg, null];\n}else{\n    return [null, msg]\n}",
        "outputs": 2,
        "noerr": 0,
        "x": 230,
        "y": 340,
        "wires": [
            [
                "1b3ee1f0.6ea156"
            ],
            [
                "3124b3ac.574004",
                "bfa8eb8c.f2c08"
            ]
        ]
    },
    {
        "id": "3124b3ac.574004",
        "type": "debug",
        "z": "24df37fe.8d32f8",
        "name": "Error",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "x": 990,
        "y": 360,
        "wires": []
    },
    {
        "id": "20251465.4b9d24",
        "type": "debug",
        "z": "24df37fe.8d32f8",
        "name": "Error <5 minuten",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "x": 1030,
        "y": 300,
        "wires": []
    },
    {
        "id": "bfa8eb8c.f2c08",
        "type": "api-call-service",
        "z": "24df37fe.8d32f8",
        "name": "Geen solaxCloud bericht",
        "server": "584183bf.4f42dc",
        "service_domain": "notify",
        "service": "ios_iphone_richard",
        "data": "{\"title\": \"SolaxCloud\", \"message\": \"Helaas, geen succesvolle response ontvangen\"}",
        "mergecontext": "ok",
        "x": 1050,
        "y": 400,
        "wires": [
            []
        ]
    },
    {
        "id": "a7a8cf53.08116",
        "type": "function",
        "z": "24df37fe.8d32f8",
        "name": "",
        "func": "//msg.payload = msg.payload.result[0];\nvar gridPower, todayYield, totalYield, temperatrure;\ngridPower= {payload: msg.payload.gridPower};\ntodayYield= {payload: msg.payload.todayYield};\ntotalYield={payload: msg.payload.totalYield};\ntemperature={payload: msg.payload.temperature};\nlastUpdateTimes={payload: msg.payload.lastUpdateTimes};\nreturn [[gridPower], [todayYield], [totalYield], [temperature], [lastUpdateTimes]];",
        "outputs": 5,
        "noerr": 0,
        "x": 170,
        "y": 540,
        "wires": [
            [
                "e5f9cdf.776afb",
                "645bfd93.2413bc",
                "2ac60dfb.ba2bca"
            ],
            [
                "1ad5d856.5d6ef8",
                "b5877413.78aa88"
            ],
            [
                "59b7a4dc.4e700c",
                "2de5110b.514f9e"
            ],
            [
                "cbf1ca54.d4baf8",
                "629f6371.66c11c"
            ],
            [
                "b8a2949b.852778"
            ]
        ]
    },
    {
        "id": "e5f9cdf.776afb",
        "type": "debug",
        "z": "24df37fe.8d32f8",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 390,
        "y": 480,
        "wires": []
    },
    {
        "id": "1ad5d856.5d6ef8",
        "type": "debug",
        "z": "24df37fe.8d32f8",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 390,
        "y": 540,
        "wires": []
    },
    {
        "id": "59b7a4dc.4e700c",
        "type": "debug",
        "z": "24df37fe.8d32f8",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 390,
        "y": 580,
        "wires": []
    },
    {
        "id": "cbf1ca54.d4baf8",
        "type": "debug",
        "z": "24df37fe.8d32f8",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 370,
        "y": 620,
        "wires": []
    },
    {
        "id": "b8a2949b.852778",
        "type": "debug",
        "z": "24df37fe.8d32f8",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 180,
        "y": 660,
        "wires": []
    },
    {
        "id": "2ac60dfb.ba2bca",
        "type": "mqtt out",
        "z": "24df37fe.8d32f8",
        "name": "MQTT publish",
        "topic": "power/current/solar",
        "qos": "",
        "retain": "",
        "broker": "80d9bcf2.ce518",
        "x": 820,
        "y": 480,
        "wires": []
    },
    {
        "id": "1b3ee1f0.6ea156",
        "type": "function",
        "z": "24df37fe.8d32f8",
        "name": "",
        "func": "// we checken of het tijdsverschil tussen solax last update en nu <= 10 minuten.\n\nmsg.payload = msg.payload.result[0];\nvar last = new Date(msg.payload.lastUpdateTime)\nvar current = new Date();\nvar difference = (current - last) / 1000  - (60*60*7);\n\nif(difference >= (10*60)){\n    // Alleeen error (push bericht sturen)\n    var msg1 = {};\n    msg1.payload = difference;\n    return[null, msg1];\n}else{\n    // Geen error, alleen data sturen.\n    return [msg ,null];\n}",
        "outputs": 2,
        "noerr": 0,
        "x": 590,
        "y": 320,
        "wires": [
            [
                "a7a8cf53.08116"
            ],
            [
                "20251465.4b9d24",
                "da1d798d.62f5e"
            ]
        ]
    },
    {
        "id": "da1d798d.62f5e",
        "type": "api-call-service",
        "z": "24df37fe.8d32f8",
        "name": "Solax cloud niet up to date",
        "server": "584183bf.4f42dc",
        "service_domain": "notify",
        "service": "ios_iphone_richard",
        "data": "{\"title\": \"SolaxCloud\", \"message\": \"Helaas, de SolaxCloud heeft geen recente meting binnengekregen\"}",
        "mergecontext": "ok",
        "x": 1060,
        "y": 260,
        "wires": [
            []
        ]
    },
    {
        "id": "90887afa.31e428",
        "type": "influxdb",
        "z": "",
        "hostname": "127.0.0.1",
        "port": "8086",
        "protocol": "http",
        "database": "homeassistant",
        "name": "Ha",
        "usetls": false,
        "tls": ""
    },
    {
        "id": "584183bf.4f42dc",
        "type": "server",
        "z": "",
        "name": "Home Assistant",
        "legacy": false
    },
    {
        "id": "80d9bcf2.ce518",
        "type": "mqtt-broker",
        "z": "",
        "name": "",
        "broker": "192.168.1.40",
        "port": "1883",
        "clientid": "NodeRed",
        "usetls": false,
        "compatmode": true,
        "keepalive": "60",
        "cleansession": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthRetain": "false",
        "birthPayload": "",
        "closeTopic": "",
        "closePayload": "",
        "willTopic": "",
        "willQos": "0",
        "willRetain": "false",
        "willPayload": ""
    }
]


die Einrichtung scheint dort dann ziemlich einfach:

"The following items have to be customized in order to make it work.
USERNAME : the username (case sensitive) for the solax cloud site
PASSWORD: the password for the solax cloud site
SITEID: The ID of the site, you can find this ID by enabling the second debug switch.
InverterSN: you can find this serial number on the solax cloud site
WifiSN: the serial number of the WiFi dongle (printed on sticker)"

Ist hier jemand, der mir das für Fhem adaptieren kann ^^


abc2006

Moin,
ich überlege einen X-Hybrid anzuschaffen (10kWp).
https://greenakku.de/Wechselrichter/Hybridwechselrichter/solaX-X-HYBRID-HV-Wechselrichter-3-PHASEN-X3-Hybrid-8-0T::1522.html
Gibt es jemanden, der diesen bereits erfolgreich ausliest?

Habe diesen Wechselrichter nirgends explizit erwähnt gefunden.

Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

stefan.apetz

#22
Zitat von: archinaut220379 am 25 April 2019, 13:43:25
anbei das abgeänderte modbus Modul vom SDM630m für den Solax. Ist aber nur ein Arbeitsstand. Bitte ggf. selber noch ergänzen und individuell anpassen.

Moin Archinaut,
magst Du bitte kurz aufskizzieren, was man genau in ehem machen muss um da eine Verbindung mit hinzubekommen?

Es reicht ja nicht die Modul-Datei auf dem Server abzulegen.

Ich habe bislang die Modus Datei im FHEM Verzeichnis abgelegt und dann die Module neu eingelesen und dann entsprechend ein def durchgeführt:



DEF 1 60
FUUID 5f073136-f33f-0227-8d4f-279130af7cc08eb3
INTERVAL 60
MODBUSID 1
MODE master
MODULEVERSION Modbus 4.1.5 - 17.9.2019
NAME Solax
NOTIFYDEV global
NR 403
NTFY_ORDER 50-Solax
PROTOCOL RTU
STATE disconnected
TRIGGERTIME 1594307665.51238
TRIGGERTIME_FMT 2020-07-09 17:14:25
TYPE ModbusSolax
lastUpdate 1594307605.51238


Es baut sich keine Verbindung auf. Ich musste ja auch nirgends irgendwelche Daten zum Solax eintragen (IP oder sonstwas).

Wie findet dein Modul den Solax und wie kann ich dann mit deinem Modul arbeiten?

Wenn ich mit dem get Parameter auslesen möchte erhalte ich nur

no IO Device to communicate through

Wie sehen die defs in der config aus?

Danke! :-)

stefan.apetz

So, ich habe es jetzt gefunden. Ging leider so aus der Doku nicht hervor.

Ich habe archinauts Modul genommen und mir dann mit folgender definition eingerichtet:

define Solax2 ModbusSolax 3 60 192.168.178.66:502 TCP

Läuft prima. Jetzt forsche ich gerade mit einem Modbus Tool etwas herum und versuche so viele Register wie möglich zu identifizieren.

Also: Einstellung direkt am Solax etwas ändern und dann die Werte auf Modbus betrachten.

@archinaut: ich hoffe dadurch passende Register zu finden für die Ladebegrenzung etc., damit man dann die Werte auch schreiben kann. Da ich von Programmierung aber kaum bis keine Ahnung hat müsste dann vielleicht jemand übernehmen und das umsetzen ;-)

archinaut220379

Hallo,

hier einige Register zum Setzen von Werten:

input_register:

    - service: modbus.write_register # Battery Charge Amps

        address: '36'
        value: "{{ (trigger.to_state.state | float * 10) | int }}"

  - alias: House Battery Disharge Rate
    trigger:
    - service: modbus.write_register # Battery Discharge 0

        address: '37'
        value: "{{ (trigger.to_state.state | float * 10) | int }}"

  - alias: "House Battery Min Energy %"
    - service: modbus.write_register # Min Discharge %
        address: '32'
        value: "{{ trigger.to_state.state | int }}"

  - alias: Solax Backup
      entity_id: input_boolean.solax_forcetime
      to: 'on'
    action:
    - service: modbus.write_register # Auto Mode
        address: '31'
        value: '2'

  - alias: Solax Backup Off
      entity_id: input_boolean.solax_backup
      to: 'off'
    action:
    - service: modbus.write_register # Auto Mode
        address: '31'
        value: '0'

  - alias: Solax ForceTime
      entity_id: input_boolean.solax_backup
      to: 'on'
    action:
    - service: modbus.write_register # Auto Mode
        address: '31'
        value: '1'

  - alias: Solax ForceTime Off
    - service: modbus.write_register # Auto Mode
        address: '31'
        value: '0'

#  - alias: Solax Force Grid Charge
#    - service: modbus.write_register # Auto Mode
#        address: '62'
#        value: '1'

#  - alias: Solax Force Grid Charge Off
#        address: '62'
#        value: '0'

Funktionieren auch alle soweit bei einem SK-SU.
Hier zum Nachlesen:
https://github.com/wills106/homeassistant-config/blob/master/packages/solax_hybrid_g3.yaml


Grüsse

archinaut220379

Und noch wichtig.
Register 0 einmal das Passwort für den Zugang am WR setzen. Normalerweise 2014.
Dann habt Ihr über modbus-TCP entsprechende Schreibrechte.

stefan.apetz

danke, archinaut, für die Infos: das sind ja schon mal einige nette Register.

Wäre Klasse, wenn du dein 98_Modbus_Solax um die Schreibfunktionen ergänzen könntest, dergestalt, dass dann auch die notwendige Anmeldung (Passwort) mit berücksichtigt wird.

Klasse wäre auch der lesende und schreibende Wert für die Einspeisebegrenzung ;-)


KnuMu

Hallo archinaut!
Zunächst vielen Dank für Dein Modul!!
Ich habe einen Solax Hybrid 10kw und 2 Triple- Power Akkus von Solax daran.
Habe etwas in Deinem Modul editiert, z.B. die Batteriespannung da wurde nur ein Zehntel angezeigt.
Bezüglich der Register und deren Bedeutung habe ich folgendes gefunden...

https://github.com/wills106/homeassistant-config/blob/master/packages/solax_x3_hybrid_g3_triplepower.yaml

arbeitest Du noch weiter an Deinem Modul?
LG
KnuMu

Kaufe

#28
Hallo zusammen,

bin nun auch stolzer Besitzer eines SolaX X1-Mini (0.7kw) inklusive Wifi dongle und wollte diesen nun ins FHEM integrieren.
Vor dem Wechselrichter läuft schon mal ein Shelly 2.5 um die erzeugte Strommenge zu loggen.

Die obengenannten URLS sind auch für mich nicht erreichbar:
5.8.8.8/api/.... = 404 Seite nicht gefunden
192.x.y.z/api/.... = Connection refused (sieht also aus, als ob kein Webserver da drauf lauscht, vielleicht lauscht dieser auch nur auf einen andern Port? Werde morgen mal ein NMAP durchlaufen lassen )

Da mir der vom Wechselrichter erzeugte WiFi Access Point extrem unsympathisch ist und im umkreis von 5 Häuser das WLAN mit extremer Signalstärke zur Verfügung stellt, würde ich dieses gerne abdrehen.  Dazu ein paar Fragen:
-> weiß jemand, ob man das SolaX interne WLAN AP deaktivieren kann?
-> gibt es vielleicht andere Zugriffs Möglichkeiten auf die oben genannte API?
-> wie verhält es sich mit dem SolaX LAN Dongle, ist hierbei vielleicht ein direkter API zugriff möglich, ist dieser vielleicht nur bei WLAN deaktiviert(was auch sinnmachen würde)?

Hat sich schon jemand mit der API von Solax Cloud Monitoring beschäftigt? Hier laufen ja alle Daten vom Wechselrichter zusammen.
URL wäre wohl: https://www.eu.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do&sn= .......
Fakt von der Doku ist leider, nicht mehr wie 10 Requests / min oder gar 10.000 / Tag was im Schnitt jede 10 Sekunden einen entspricht.

curl "https://www.eu.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?sn={myRegistrationsnummer}&tokenId={myToken}"|jq
{
  "exception": "Query success!",
  "result": {
    "inverterSN": "XMT072XXXXXXXXXXXXXX",
    "sn": "SWYYYYYYYYYYYYY",
    "acpower": 0,
    "yieldtoday": 1.2,
    "yieldtotal": 5.1,
    "feedinpower": 0,
    "feedinenergy": 0,
    "consumeenergy": 0,
    "feedinpowerM2": 0,
    "soc": 0,
    "peps1": 0,
    "peps2": 0,
    "peps3": 0,
    "inverterType": "4",
    "inverterStatus": "100",
    "uploadTime": "2020-10-18 18:03:41"
  },
  "success": true
}


jetzt die Frage, gibt es eine einfache Möglichkeit diesen CURL abzufragen und den JSON Body als Readings im FHEM darzustellen?  Im Anhang habe ich euch noch die Beschreibung vom JSON Body angefügt. Die Abfrage via Cloud gefällt mir zwar auch nicht unbedingt gut, aber anderer Seites ist es somit für alle SolaX Wechselrichter einheitlich... oder?
FHEM 6.0 Raspberry PI-3B-Bullseye| HauptFHEM Server (Graphana,MariaDB)
FHEM 6.0 Raspberry PI-3B-Bullseye| FHEM2FHEM, 1-Wire (Ds9490R  + 50 DS18B20)
FHEM 6.0 Raspberry PI-3B-Bullseye| FHEM2FHEM, 1-Wire (Ds9490R  + 5 DS18B20)
RaspberrMatic 3.61.7.20211218 (ca 65 HM Devices)

Kaufe

Oh wie peinlich, einmal google und schon funktionierts:

defmod SolaxMini1X HTTPMOD https://www.eu.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?sn=SWXXXXXXXXXXX&tokenId=YYYYYYYYYYYYYYYYYYYYY 60
attr SolaxMini1X extractAllJSON 1
attr SolaxMini1X room 08 Strom

setstate SolaxMini1X 2020-10-18 20:07:17 exception Query success!
setstate SolaxMini1X 2020-10-18 20:07:17 result_acpower 0
setstate SolaxMini1X 2020-10-18 20:07:17 result_consumeenergy 0
setstate SolaxMini1X 2020-10-18 20:07:17 result_feedinenergy 0
setstate SolaxMini1X 2020-10-18 20:07:17 result_feedinpower 0
setstate SolaxMini1X 2020-10-18 20:07:17 result_feedinpowerM2 0
setstate SolaxMini1X 2020-10-18 20:07:17 result_inverterSN XMYYYYYYYYYYYYYYYYY
setstate SolaxMini1X 2020-10-18 20:07:17 result_inverterStatus 100
setstate SolaxMini1X 2020-10-18 20:07:17 result_inverterType 4
setstate SolaxMini1X 2020-10-18 20:07:17 result_peps1 0
setstate SolaxMini1X 2020-10-18 20:07:17 result_peps2 0
setstate SolaxMini1X 2020-10-18 20:07:17 result_peps3 0
setstate SolaxMini1X 2020-10-18 20:07:17 result_sn SWYYYYYYYYYY
setstate SolaxMini1X 2020-10-18 20:07:17 result_soc 0
setstate SolaxMini1X 2020-10-18 20:07:17 result_uploadTime 2020-10-18 18:03:41
setstate SolaxMini1X 2020-10-18 20:07:17 result_yieldtoday 1.2
setstate SolaxMini1X 2020-10-18 20:07:17 result_yieldtotal 5.1
setstate SolaxMini1X 2020-10-18 20:07:17 success 1
FHEM 6.0 Raspberry PI-3B-Bullseye| HauptFHEM Server (Graphana,MariaDB)
FHEM 6.0 Raspberry PI-3B-Bullseye| FHEM2FHEM, 1-Wire (Ds9490R  + 50 DS18B20)
FHEM 6.0 Raspberry PI-3B-Bullseye| FHEM2FHEM, 1-Wire (Ds9490R  + 5 DS18B20)
RaspberrMatic 3.61.7.20211218 (ca 65 HM Devices)