NEWS
Bosswerk MI600 Adapter
-
@christian-sandkaulen
Hallo gibt es hier bereits etwas neues?
Siehe auch hierzu https://forum.iobroker.net/topic/33167/gelöst-json-file-parsen/9
https://www.domoticz.com/forum/viewtopic.php?t=7941&start=80Git
https://github.com/jbouwh/omnikdatalogger
https://github.com/mpepping/solarman-mqttbzw.
https://github.com/search?q=solarmanpvIch versuche es jetzt mal per Docker und mqtt
-
Nein leider nicht, wir werden uns wohl doch eine große anlage kaufen deswegen habe ich ich das erstmal verworfen.
-
Hallo,
leider weiterhin ohne Erfolg.
Siehe hierzu auch https://forum.iobroker.net/topic/50047/energymanagement-pv-solar-nulleinspeisung/24
-
@tege0
Also ich habe es mit dem
https://github.com/mpepping/solarman-mqtt
und dem MQTT Broker/Client Adapter zum Laufen bekommen.Hier meine Schritte:
IoBroker:- Im IoBroker den MQTT Broker/Client Adapter installieren
- Unter Instances auf den MQTT Broker/client klicken und konfigurieren.
- Unter Authentication settings einen User mit neuem Passwort anlegen
- Ich verwende kein SSL
Commandline:
- Beim Solarman support service@solarmanpv.com eine Solarman API appid+secret per eMail beantragen. Das hat bei mir 2 Tage gedauert.
- in einem neuen Verzeichnis git clone https://github.com/mpepping/solarman-mqtt.git ausführen
- Dem README von https://github.com/mpepping/solarman-mqtt folgen und das config.sample.json nach config.json kopieren.
- Den mqtt Abschnitt im config.json mit den User Daten von oben (MQTT Broker/Client) füllen.
4.1. Broker ist die IP vom ioBroker (bei mir der Raspberry pi)
4.2 Port bleibt bei 1883 - Die Curl commands aus dem README mit der Solarman appid und secret ausführen.
- Bei der Abfrage nach der inverterID muß man den String "INVERTER" mit "MICRO_INVERTER" ersetzen. Dann geht der call.
6.1 stationId ist im config.json eine Zahl
6.2 inverterId und loggerId sind im config.json Strings und müssen in Anführungszeichen gesetzt sein
6.3. InverterId und loggerId sind nicht die deviceId in der Curl Antwort sondern die deviceSn - Damit das run.py laufen kann, muß man noch 2 Packete nachinstallieren.
7.1 sudo apt-get install python3-jsonschema
7.2 sudo apt-get install python3-paho-mqtt - Dann die Configuration checken
8.1 python3.9 run.py --validate - Testlauf
9.1 python3.9 run.py -s - Dauerlauf
10.1 nohup python3.9 run.py -d -i300 &
10.2 Oder wer sicher gehen will, daß es auch nach einen Neustart des RaspberryPi läuft per cronjob
10.2.1 crontab -e
10.2.2 /5 * * * * python3.9 /opt/solarman-mqtt/run.py -s -f /opt/solarman-mqtt/config.json
Im IoBroker unter Objects gibt es nach erfolgreichem import einen neuen Ordner unterhalb von mqtt. Dieser enthält alle wichtigen Daten.
Der Wert für die aktuell produzierte Menge Strom findet sich unter
mqtt/0/solarmanpv/station/generationPowerNoch Fragen ?
Ich hoffe, daß es mit dieser Anleitung noch andere hinbekommen. Und vielleicht findet sich ja jemand, der daraus einen funktionierenden Adapater baut. -
danke!
-
Hallo und vielen Dank für die Anleitung,
Ich hab mir mittlerweile einen Solax Wechselrichter gekauft und den alten verkauft.
Wie offt logt Ihr über den Solarman? Also wann aktualisieren sich die Daten? -
@tege0 Es werden alle 5 min updates von deinem Wechselrichter an die Solarman Seite geschickt.
Deswegen habe ich 300s als default. -
@silversurfer-0
Danke für den Beitrag.
Ich habe mir den IoBroker gerade zugelegt und möchte den MI 600 einbinden.
Die Zugangsdaten habe ich mir geholt. Ich stolpere über Punkt 2 in der Beschreubung:
"2. in einem neuen Verzeichnis git clone https://github.com/mpepping/solarman-mqtt.git ausführen"
Wo soll das neue Verzeichnis erstellt werden? Im IoBroker unter Dateien oder über das Terminal auf dem Speicher.
Was ist mit ausführen gemeint?Danke im Voraus.
-
Hier gibt es endlich ein einfaches Bash-Tool zum Lesen und für Scripts:
https://github.com/dr-ni/mi600
-
@drn Hab das mal getestet - ist ein bisschen mager. Bei mir wird nur die aktuell erzeugte Leistung angezeigt. Oder kann man da noch mehr rauskitzeln.
Nach dem Muster von @Silversurfer-0 kommt da schon mehr raus. Ich hätte hier aber gerne einen Adapter, der ohne separaten Container auskommt. Ich würds ja versuchen - aber mein Wissen ist noch sehr versteckt -
@barger
Das geht nur über die Kommando Zeile.
Wo man das Verzeichnis anlegt ist egal.
Ich habe es im Home directory von root liegen. -
@rene55 said in Bosswerk MI600 Adapter:
mmt da schon mehr raus. Ich hätte hier aber gerne einen Adapter, der ohne separaten Container auskom
Wie schon von mir angemerkt, hätte ich auch gerne einen separaten Adapter. Ich habe nur Forschungsarbeit geleistet.
-
@rene55 zu der Frage: "Kann man da noch mehr rauskitzeln?" die Gegenfrage, was hättest du denn gerne ?
Und die API findet sich hier: https://forum.iobroker.net/assets/uploads/files/1643107275278-solarmanopenapi-v1.1.7-en.pdfDie sonstigen Informationen befinden sich in den inverter Attributes und logger Attributes.
Diese Attributes kann man nicht schön archiveren. -
@Rene55 @barger
Eure Überlegungen haben haben mich dazu inspiriert noch ein wenig rumzuspielen, damit alle Werte für die Archivierung zur Verfügung stehen.
Folgende Änderungen müssen dazu in 2 Files gemacht werden:root@orangepizero2:~/opt/solarman-mqtt# git diff diff --git a/solarman/__init__.py b/solarman/__init__.py index 009ab65..476caed 100644 --- a/solarman/__init__.py +++ b/solarman/__init__.py @@ -89,21 +89,17 @@ def single_run(file): if inverter_data[i] and i not in discard: Mqtt(config["mqtt"], topic + "/inverter/" + i, inverter_data[i]) if inverter_data_list: - Mqtt( - config["mqtt"], - topic + "/inverter/attributes", - json.dumps(inverter_data_list), - ) + for j in inverter_data_list: + if inverter_data_list[j] and j not in discard: + Mqtt(config["mqtt"], topic + "/inverter/" + j, inverter_data_list[j]) for i in logger_data: if logger_data[i] and i not in discard: Mqtt(config["mqtt"], topic + "/logger/" + i, logger_data[i]) if logger_data_list: - Mqtt( - config["mqtt"], - topic + "/logger/attributes", - json.dumps(logger_data_list), - ) + for j in logger_data_list: + if logger_data_list[j] and j not in discard: + Mqtt(config["mqtt"], topic + "/logger/" + j, logger_data_list[j]) else: Mqtt( config["mqtt"], diff --git a/solarman/api.py b/solarman/api.py index 33a9621..5023688 100644 --- a/solarman/api.py +++ b/solarman/api.py @@ -106,6 +106,7 @@ class ConstructData: # pylint: disable=too-few-public-methods del i["key"] name = i["name"] name = name.replace(" ", "_") + name = name.replace("+", "") del i["name"] new_data_list[name] = i["value"] del self.data["dataList"]
Danach steht ein für mich wichtiger Wert für die Archivierung zur Verfügung den ich bisher nicht hatte:
mqtt.0.solarmanpv.inverter.Daily_Production(Active)
Den Maximalwert davon lohnt es aufzuheben.
-
@silversurfer-0 Naja, ich dachte an soetwas. Hab mal die ersten Schritte gewagt. Übrigens, Danke für die API-Beschreibung.
-
@rene55
Schau dir die Änderungen an, die ich am 19. Mai gepostet habe, dann bekommst du die Werte separat. -
@silversurfer-0 Danke für den Hinweis. Den Datenpunkt hab ich aber auch als 'DeviceData.Daily Production(Active)'. Ich versuch mich weiter in der Erstellung eines Adapters. Der ist aber noch nicht soweit, dass man ihn zum testen in die Welt lassen könnte.
-
@rene55 Gibt es dazu ein Github repo ?
Ich kann da sicherlich was beitragen.Ganz generell gäbe es ja auch noch die Idee mit einem Reverse Proxy die Meldungen an die Solarman Webseite abzufangen ?
-
@silversurfer-0 Nee noch nicht. Muss erst noch schauen, wie ich meinen Kram ins Github beame. Brauch vermutlich noch ein paar Tage.
EDIT: von nem Reverse Proxy hab ich zwar schon gehört - habe aber keine Ahnung wie der funktionieren soll. Ohne China wäre schon reizvoll!
-
@rene55
Unter https://github.com/orgs/ioBroker/repositories sieht man alle Repos. Man kann aber nicht einfach so neue Repos anlegen. Wahrscheinlich muß man das irgendwo requestieren.