NEWS
Traking von Pylontech Batterien
-
Da bei mir es über http://www.multisibcontrol.net/ und RS485 funktioniert, dachte ich man kann die Daten irgend wie abgreifen, die man sieht.
Dabei habe ich an irgend welche Sniffings von Netzwerk gedacht....
bei http://www.multisibcontrol.net/ kann man auch an 2 externe Seiten EMONCMS und https://pvoutput.org/ gewisse daten hochladen.
Der Entwickler schein in Osteuropa zu wohnen. Ich habe ihn auch schon angefragt, ob er die SW so konfigurieren kann, daß dies eDaten als MQTT abgerufen werden können...
Mein Konfiguration
Win 10 HP Probook mit I5Gen11 und darauf VM Ware Workstation (Laptop ist noch zu neu um proxmox laufen zu lassen.) --> in der VMware laufen dann 2 x Debian; (IoBroker und Pihole).
Das ganze System benötigt ca. 4-5W
Und im dem Windows läuft das multisibkontrol.net und gerade da wäre ich schon froh, wenn ich den SOC Wert in den iO Broker bekommen würde.
Einen physischen Raspi würde ich nicht machen wollen (braucht auch wieder 3-6W) dann lieber noch eine VM.... Wenn ich am Schluss an die Daten vom Pylontech komme, wäre mein Ziel erreicht.
https://solaranzeige.de/phpBB3/solaranzeige.php, hier hat man es auch geschafft, aber ich möchte wirklich nicht mit einem physischen Raspi anfangen. (als VM ist es interessant, nur weiß ich nicht in wie weit es sich beißst mit X86 und ARM-Architektur des Raspis.
-
@marco-3 Ich arbeite auch mit einem Win10 Notebook. Allerdings ein refurbished, womit mein Umweltgewissen beruhiht ist und mir den Raspi 2 genehmige. Das Notebook Teil hat einen i5-6300U und braucht 7 bis 12W.
Von VMs und Proxmox verstehe ich nichts und spare mir die Zeit. Dadurch kann ich mir die Stromkosten für den Raspi leisten. So meine Art es schön zu rechnen.
Wenn Du aber die Klaviatur der VMs beherrschst, wäre Venus für Linux distributions vielleicht was für Dich zusammen mit einem CAN-USB Stick? -
Klingt gut, nur leider habe ich keinen Victron WR an der Batterie dran.
Bei mir macht's ein GTIL SUN 2000....
Und den Pylontech US3000C würde ich gern nach seinen SOC Level benutzen, eventuell zusätzliche Verbraucher aktivieren/deaktivieren. -
@marco-3 Ein Versuch wäre es vielleicht wert. Bei mir ist CAN Pylontech an die CAN-Karte des venustragenden Raspi angeschlossen, nicht an den Inverter. Habe ja nur einen kleinen 800er Multiplus, der gar keinen CAN hat.
Es können wohl auch CAN-USB Sticks eingebunden werden, Victron Venus CAN
Aber vielleicht redet Pylontech auch mit Deinem Sun 2000? -
O.k. da muss ich glatt mal schauen, und mit der SW bekomm ich dann die Pylon Daten und kann diese als MQTT oder anders an den iobroker liefern. Ist die Venus VW dann über eine Http als Weboberfläche erreichbar?
Der SUN 2000 wird nicht mit der Batterie reden, .... Was will man für 280€ erwarten....
-
@marco-3 Ja, 280 EUR ist günstig; da war mein 800er Victron ca. 200EUR teurer und kann nur 800VA Dauer.
Bei mir funktioniert das wie oben beschrieben: Pylontech redet mit Venus über CAN.
Und der ioBroker redet mit Modbus/TCP und MQTT mit Venus.
Wie gesagt, war etwas Gefrickel und Gefummel, bis das alles lief, aber jetzt läuft es.
Modbus ist etwas eigen und Victron MQTT ist etwas eigen und man braucht ein Script, welches Venus ständig erinnert, die Daten über MQTT zur Verfügung zu stellen...
Aber jetzt funktioniert es.
Die Screenshots in meinem Post oben sind vom Web-Interface der Venus. -
@klassisch
Danke für diese Infos, eventuell werde ich dies noch mal probieren.Was ich gerade noch multisibcontrol gelesen habe.... Man kann HTML basierende Befehle ausführen.
Kam erst mit Version 1.6 mit.Damit kann ich den Shelly steuern.
http://192.168.178.xx/relay/0?turn=on
http://192.168.178.xx/relay/0?turn=OffDas ist so zu sagen der Shelly, der den WR bei Batt Leer abschaltet und ab 52% SOC wieder ins Rennen nimmt. Wenn das morgen klappt, dann komm ich erst Mal entspannt über den Winter.
Natürlich wäre eine iobroker Lösung noch besser.
-
@marco-3 kann dieses Programm in den html string auch den SoC stecken und kann man den String auch beeinflussen? Dann könnte man den Wert an simpleApi des ioBrokers schicken
-
Das müsste ich mal prüfen.
-
@marco-3
Scheinbar geht da was zu machen.Added functionality to send actual inverter/pylontech values with the URLs in Device control. This can be achieved by using one of the following placeholders in the URLs:
{INV_ERR} {PYL_ERR} {INV_MODE} {INV_SOC} {INV_LOAD_W} {INV_LOAD_%} {INV_GRID_W} {INV_PV_W} {INV_BATTERY_W} {INV_BATTERY_A} {PYLON_SOC} {PYLON_W} {PYLON_A} {PYLON_V} {PYLON_TEMP} {PYLON_REMAIN_AH} {PYLON_REMAIN_KWH}Jetzt muss ich mich noch deiner genannten simpleAPI Funktion einlesen.
-
@marco-3 https://github.com/ioBroker/ioBroker.simple-api
Adapter installieren.
http://ipaddress:8087/help
bringt dann die Erklärung
Einen Wert übertragen
"set": "http://ipaddress:8087/set/stateID?value=1&prettyPrint",
Mehrere Werte
"setBulk": "http://ipaddress:8087/setBulk?stateID1=0.7&stateID2=0&prettyPrint"Anführungszeichen weg und &prettyPrint kann man auch weglassen.
stateID ist die Adresse in den ioBroker Objekten
Also Adapter einrichten, iregendwo, zB. unter 0_userdata .. einen Datenpunkt anlegen und dann mal probehalber so eine Zeile manuell zusammenstellen und per Browserzeile an den ioBroker schicken.
Dann muß die Zahl im Datenpunkt sein.
Erst mal keine Blanks und Sonderzeichen in den Namen verwenden, sonst braucht es UTF8 Umschreibung -
@klassisch
Danke für die fixe Erklärung, damit werd ich mich demnächst beschäftigen. Klingt einfach.... -
@klassisch said in Traking von Pylontech Batterien:
@marco-3 https://github.com/ioBroker/ioBroker.simple-api
Adapter installieren.
http://ipaddress:8087/help
bringt dann die Erklärung
Einen Wert übertragen
"set": "http://ipaddress:8087/set/stateID?value=1&prettyPrint",
Mehrere Werte
"setBulk": "http://ipaddress:8087/setBulk?stateID1=0.7&stateID2=0&prettyPrint"Anführungszeichen weg und &prettyPrint kann man auch weglassen.
stateID ist die Adresse in den ioBroker Objekten
Also Adapter einrichten, iregendwo, zB. unter 0_userdata .. einen Datenpunkt anlegen und dann mal probehalber so eine Zeile manuell zusammenstellen und per Browserzeile an den ioBroker schicken.
Dann muß die Zahl im Datenpunkt sein.
Erst mal keine Blanks und Sonderzeichen in den Namen verwenden, sonst braucht es UTF8 UmschreibungEs geht! Werte landen im iObroker
Kleine Zusammenfassung:
*Ich benutze eine Pylontech US3000C mit RS485 Auslesung über ein Windows 10 Rechner.
*iObroker in VM Debian laufend --> dort simple API unter den Adaptern eingerichtet und die Datenpunkte unter "Objekte" --> 0_userdata..... als stateSoftware unter Windows. http://www.multisibcontrol.net/ Version 1.6
--> unter "Device Control"
Da es keinen direkten Punkt gibt, um die Befehlssendung zu initiieren, habe ich unter Conditions den "Mode" --> Grid genommen und die Übermittlung aller 5min eingestellt.Diesen Befehl nutze ich zur Zeit, Fett gedruckte Zeichen, sind für mein System zutreffende Anpassungen.
http://192.168.178.83:8087/set/Aktueller_SOC?value={PYLON_SOC}
Ein Problem besteht noch.
Der übertragene Wert wird mit Komma und % übertragen, kann oder muss man dies im ioBroker zurecht filtern, damit es als Auslöser für andere Sachen im iobroker genutzt werden kann? Bsp.: 51,9% kommen im iobroker an. -
@marco-3 klasse, daß es klappt! Wo trägst Du den Sendestring in dem Multisibcontrol ein?
Wahrscheinlich wird da einfach ASCII übertragen, incl. Einheit.
Wirst Du mit JS oder Blockly auseinander frickeln und in einen neuen Datenwert als Zahl richtig reinschreiben müssen.
Stehen da irgendwelche geschweifte Klammern {}? -
http://192.168.178.83:8087/set/Aktueller_SOC?value={PYLON_SOC}
ja geschweifte Klammern.
ich dachte man könnte eventuell bei den ankommenden Daten im iobroker gleich eine Art Filter setzen können....
damit das % wegfällt. -
@marco-3 Mit den geschweiften Klammern meinte ich im Eingangsfeld des ioBrokers. Dann hätte das ein JSON sein können.
Mit dem Wegfall des % ist es nicht getan. Dann ist es immer noch ein String.
Und dann gibt es noch ein Komma?? statt des Dezimalpunkts. Was aber sehr seltsam ist. Gefühlt die ganze Welt verwendet den Dezimalpunkt. UNd ich habe meine Systeme auch so eingestellt. -
@marco-3 sagte in Traking von Pylontech Batterien:
ich dachte man könnte eventuell bei den ankommenden Daten im iobroker gleich eine Art Filter setzen können....
damit das % wegfällt.Vielleicht, so genau kenne ich mich damit nicht aus. Habe jedenfalls noch nichts derartiges gefunden. Notfalls halt händisch, in etwa so.
var inputString ='63,5%'; var outputNumber = 0.0; var helperString = ''; helperString = inputString.replace(',','.'); outputNumber = parseFloat(helperString); console.log('outputNumber: ' + outputNumber);
Sicher nicht elegant, geht aber.
Im Log steht dann bei mir(10680) script.js.tests.testStringReplace: outputNumber: 63.5
Scheint also zu funktionieren
-
Aktuell bekomme ich es hin, daß alle Werte mit einer Zeile einflattern.
http://192.168.178.83:8087/setBulk/PYLON_A?PYLON_A={PYLON_A}&PYLON_SOC={PYLON_SOC}&PYLON_REMAIN_AH={PYLON_REMAIN_AH}&PYLON_REMAIN_KWH={PYLON_REMAIN_KWH}&PYLON_TEMP={PYLON_TEMP}&PYLON_V={PYLON_V}&PYLON_W={PYLON_W} -
@klassisch
Meinst du, daß man diese gleich bei den Objektdaten bearbeiten lassen kann? -
@marco-3 Ich bin auch kein JS Spezialist und mache da nur, was ich brauche und fresse mich entsprechend durch, ohne das je richtig durchgeackert zu haben.
Aber ich denke, daß man das bei den Objekten nicht einstellen kann.
Dort wird festgelegt, welche Art von Variable drin zu stehen hat. Wenn eine andere Art kommt gibt es eine Warnung im log und der Datentyp wird verändert, soweit ich weiß.Deshalb ein kleines Progrämmchen oder Blockly(was ich gar nicht kenne), welches bei einem neuen Datum getriggert wird, die Daten einlist, konvertiert und woanders wieder hinschreibt.
Aber vielleicht kennt jemand einen besseren Weg?