Solaranzeige, ein OPEN SOURCE Projekt

Die Solaranzeige (solaranzeige.de) ist ein Open Source Projekt, gestartet 2016 und dient der grafischen Anzeige von PV Daten aller Art sowie Betriebsdaten von Pellet Öfen, Wärmepumpen usw. Es sind Überschusssteuerungen integriert. Alles was man für eine Energiewende so gebrauchen könnte.

Hier ein Beispiel der Anzeige für ein Balkonkraftwerk:

Wie werden da die WR angebunden? Per Kabel oder per API über die externen Herstellerseiten? Die Webseite sagt ja erst mal nicht so viel darüber aus, schade eigentlich, ein Bild sagt mehr als tausend Worte.

Das was der Hersteller anbietet und wie es schlussendlich implementiert wird-- primär ist die Anbindung aber über lokale (API/Modbus/etc.)-Schnittstellen.

@linuxdep

https://solaranzeige.de/phpBB3/viewtopic.php?f=13&t=1069

Hier ist dokumentiert, wie jeder einzelne Wechselrichter angeschlossen wird. Zugegeben, nicht besonders catchy. Informativ aber allemal.

2 „Gefällt mir“

Ich betreibe auch seit ca Anfang Dezember die Solaranzeige insgesammt werden bei mir 6 Geräte schon ausgelesen und Visualisiert ja es ist Arbeit und ja man denkt sich manchesmal warum tu ich mir ds an aber der Lohn ist auch nicht zu verachten wenn mal alles soweit steht.

Ich verneige mich mal vor der Arbeit, die Funkboje da gemacht hat.

Ich hatte das Projekt auch auf einem meiner Raspi's laufen um meinen ersten Inverter aufzuzeichnen. Soweit, so gut. Aber das dauerhafte hämmern der Influx-Datenbank auf die SD-Karte bringt nach ca. 4-6 Monaten einen Crash. Also niemals, wie in der Standart-Konfiguration, die Datenbank auf der SD-Karte ablegen, sondern sonst wo. Sonst freut man sich für ein paar Monate und dann ist alles weg.

1 „Gefällt mir“

Hallo zusammen, ich bin erst gestern auf den Beitrag gestoßen als ich mein Homeassistant ESP Inverter und BMS Monitoring projekt zu grabe getragen habe.

Die halbe Nacht sowie jetzt schon etliche stunden lese ich da Beiträge.

Was es wer von euch laufen? Kann man mit dieser Software auch BMS und Inverter steuern? Und sollte diesen FTDI usb Adaptern gegebenfalls auch sollte ich es noch mal aufgreifen Homeasisstant mit daten füttern?

und zuletzt schafft man es das ohne IT Programmierkenntnissen zum laufen zu bringen der fernzugriff hab ich schon gelesen solls ja nicht so einfach zu bewerkstelligen sein.

dank euch und einen schönen tag noch

@concierge

Woran ist denn dein Homeassistant Projekt gescheitert? Grundsätzlich kann man mit der Solaranzeige ne Menge anfangen und sie eignet sich auch um in die gesamte Materie rein zu kommen. Ich hab daran gelernt mich in Linux zurecht zu finden. Terminal und so war vorher mein größter Albtraum - also ja, ohne Vorkenntnisse ist das machbar, einfach strikt der guten Dokumentation folgen. Es ist wirklich gut zu schaffen.

Ob du deinen Inverter und BMS steuern kannst, kommt aufs Modell an. Idr ist das auch alles dokumentiert. Die Solaranzeige ist eher zum Auslesen der Daten gedacht. Also aktuelle Produktion, Spannung etc... Meinen Inverter konnte ich wenigstens An/Aus schalten. Mehr war nicht drin steuerungstechnisch.

JK-BMS hab ich nicht verbunden bekommen. Hab aber auf dem gleichen Raspberry ein anderes Programm installiert mit dems geklappt hat.

@jan106 , Hallo und danke für deine nachricht.

Woran ist es gescheitert, sagen wir mal besser so was hab ich

Einen Deye Sun 5kSg03LP1

Ein B2A24S15P JK BMS

einen Pi mit 256GB SSD und HA laufen installiert, mit tailscale und (derzeit deaktiviert Duckdns und SSH Anbindung) Installierten und vermutlich auch funktionierenden MQTT. Tailscale hab ich nur deshalb weil ich hinter 3 Routern mit einer Share IP adresse vom Provider bin lieber wäre mir über Https gewesen aber naka vielleicht bekomme ich das noch hin. Und mehrere ESP32 Devkit V1 und Nodemcu

dann hab ich das Dashboard "Solardesktop" nach der Anleitung installiert und auch den Demo ESP Dongle geflasht und mit dem TTL Rs485 Adapter verbunden und auch mit meinem Wlan verbunden. Die TX LED blinkt RX da kam keine Antwort bzw wenn er abgeschlossen ist. Ich hab auch 2 adern eines RJ45 Kabels 1B 2A bzw 7A 8B an einem RJ45 in Bucht 1 verwendet. Hier könnte der fehler aber an mir gelegen sein da ich erst viel später bemerkt habe das die Identitäten im solardesktop andere Namen haben als der Demodongle welcher ja nur dazu dient zu sehen obs läuft. Wenns Läuft gibts für ein Paar euro die vollversion auf Vaters Inverter zugeschnitten. Aber erst muss ma was rauskommen.

Und als zweites möchte ich gerne von Syssi das JK to ESP HA verwenden über ESP und den JST1.25 Stecker. Den ESP Hab ich geflasht mit dem wlan verbunden und mal im logg hatte ich unmengen von bunten zeilen ich füge meinen Code mal als Spoiler ein. Zellen 17-24 hab ich rausgelöscht da nicht vorhanden

#JK-BMS via UART-TTL
#esphome:
#name: jk-bms-mqtt
#friendly_name: JK-BMS-MQTT
#esp32:
#board: esp32dev
#framework:
#type: arduino
substitutions:
name: jk-bms
device_description: "Monitor a JK-BMS via UART-TTL"
external_components_source: github://syssi/esphome-jk-bms@main
tx_pin: GPIO16
rx_pin: GPIO17
esphome:
name: ${name}
comment: ${device_description}
project:
name: "syssi.esphome-jk-bms"
version: 2.0.0
esp32:
#board: wemos_d1_mini32
board: esp32dev
framework:
type: esp-idf
external_components:
- source: ${external_components_source}
refresh: 0s
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ota:
logger:
level: DEBUG
# If you use Home Assistant please remove this `mqtt` section and uncomment the `api` component!
# The native API has many advantages over MQTT: https://esphome.io/components/api.html#advantages-over-mqtt
mqtt:
broker: !secret mqtt_host
username: !secret mqtt_username
password: !secret mqtt_password
id: mqtt_client
# api:
uart:
- id: uart_0
baud_rate: 115200
rx_buffer_size: 384
tx_pin: ${tx_pin}
rx_pin: ${rx_pin}
jk_modbus:
- id: modbus0
uart_id: uart_0
rx_timeout: 50ms
jk_bms:
- id: bms0
jk_modbus_id: modbus0
update_interval: 5s
binary_sensor:
- platform: jk_bms
balancing:
name: "${name} balancing"
balancing_switch:
name: "${name} balancing switch"
charging:
name: "${name} charging"
discharging:
name: "${name} discharging"
dedicated_charger_switch:
name: "${name} dedicated charger switch"
online_status:
name: "${name} online status"
sensor:
- platform: jk_bms
min_cell_voltage:
name: "${name} min cell voltage"
max_cell_voltage:
name: "${name} max cell voltage"
min_voltage_cell:
name: "${name} min voltage cell"
max_voltage_cell:
name: "${name} max voltage cell"
delta_cell_voltage:
name: "${name} delta cell voltage"
average_cell_voltage:
name: "${name} average cell voltage"
cell_voltage_1:
name: "${name} cell voltage 1"
cell_voltage_2:
name: "${name} cell voltage 2"
cell_voltage_3:
name: "${name} cell voltage 3"
cell_voltage_4:
name: "${name} cell voltage 4"
cell_voltage_5:
name: "${name} cell voltage 5"
cell_voltage_6:
name: "${name} cell voltage 6"
cell_voltage_7:
name: "${name} cell voltage 7"
cell_voltage_8:
name: "${name} cell voltage 8"
cell_voltage_9:
name: "${name} cell voltage 9"
cell_voltage_10:
name: "${name} cell voltage 10"
cell_voltage_11:
name: "${name} cell voltage 11"
cell_voltage_12:
name: "${name} cell voltage 12"
cell_voltage_13:
name: "${name} cell voltage 13"
cell_voltage_14:
name: "${name} cell voltage 14"
cell_voltage_15:
name: "${name} cell voltage 15"
cell_voltage_16:
name: "${name} cell voltage 16"
power_tube_temperature:
name: "${name} power tube temperature"
temperature_sensor_1:
name: "${name} temperature sensor 1"
temperature_sensor_2:
name: "${name} temperature sensor 2"
total_voltage:
name: "${name} total voltage"
current:
name: "${name} current"
power:
name: "${name} power"
charging_power:
name: "${name} charging power"
discharging_power:
name: "${name} discharging power"
capacity_remaining:
name: "${name} capacity remaining"
capacity_remaining_derived:
name: "${name} capacity remaining derived"
temperature_sensors:
name: "${name} temperature sensors"
charging_cycles:
name: "${name} charging cycles"
total_charging_cycle_capacity:
name: "${name} total charging cycle capacity"
battery_strings:
name: "${name} battery strings"
errors_bitmask:
name: "${name} errors bitmask"
operation_mode_bitmask:
name: "${name} operation mode bitmask"
total_voltage_overvoltage_protection:
name: "${name} total voltage overvoltage protection"
total_voltage_undervoltage_protection:
name: "${name} total voltage undervoltage protection"
cell_voltage_overvoltage_protection:
name: "${name} cell voltage overvoltage protection"
cell_voltage_overvoltage_recovery:
name: "${name} cell voltage overvoltage recovery"
cell_voltage_overvoltage_delay:
name: "${name} cell voltage overvoltage delay"
cell_voltage_undervoltage_protection:
name: "${name} cell voltage undervoltage protection"
cell_voltage_undervoltage_recovery:
name: "${name} cell voltage undervoltage recovery"
cell_voltage_undervoltage_delay:
name: "${name} cell voltage undervoltage delay"
cell_pressure_difference_protection:
name: "${name} cell pressure difference protection"
discharging_overcurrent_protection:
name: "${name} discharging overcurrent protection"
discharging_overcurrent_delay:
name: "${name} discharging overcurrent delay"
charging_overcurrent_protection:
name: "${name} charging overcurrent protection"
charging_overcurrent_delay:
name: "${name} charging overcurrent delay"
balance_starting_voltage:
name: "${name} balance starting voltage"
balance_opening_pressure_difference:
name: "${name} balance opening pressure difference"
power_tube_temperature_protection:
name: "${name} power tube temperature protection"
power_tube_temperature_recovery:
name: "${name} power tube temperature recovery"
temperature_sensor_temperature_protection:
name: "${name} temperature sensor temperature protection"
temperature_sensor_temperature_recovery:
name: "${name} temperature sensor temperature recovery"
temperature_sensor_temperature_difference_protection:
name: "${name} temperature sensor temperature difference protection"
charging_high_temperature_protection:
name: "${name} charging high temperature protection"
discharging_high_temperature_protection:
name: "${name} discharging high temperature protection"
charging_low_temperature_protection:
name: "${name} charging low temperature protection"
charging_low_temperature_recovery:
name: "${name} charging low temperature recovery"
discharging_low_temperature_protection:
name: "${name} discharging low temperature protection"
discharging_low_temperature_recovery:
name: "${name} discharging low temperature recovery"
total_battery_capacity_setting:
name: "${name} total battery capacity setting"
current_calibration:
name: "${name} current calibration"
device_address:
name: "${name} device address"
sleep_wait_time:
name: "${name} sleep wait time"
alarm_low_volume:
name: "${name} alarm low volume"
manufacturing_date:
name: "${name} manufacturing date"
total_runtime:
name: "${name} total runtime"
# start_current_calibration:
# name: "${name} start current calibration"
actual_battery_capacity:
name: "${name} actual battery capacity"
# protocol_version:
# name: "${name} protocol version"
switch:
- platform: jk_bms
charging:
name: "${name} charging"
discharging:
name: "${name} discharging"
text_sensor:
- platform: jk_bms
errors:
name: "${name} errors"
operation_mode:
name: "${name} operation mode"
battery_type:
name: "${name} battery type"
password:
name: "${name} password"
device_type:
name: "${name} device type"
software_version:
name: "${name} software version"
manufacturer:
name: "${name} manufacturer"
total_runtime_formatted:
name: "${name} total runtime formatted"

dann hab ich zeitgleich das JK Dashboard von dr3amr eingepflegt aber da bekam ich keine anzeigen i dont know why. Bei API das ja angeblich besser sein soll weis ich wirklich nicht was da an zeilen fehlt denn da kommt wenn ich es aktiviere immer nur eine Fehlermeldung. Und bei Solardesktop sollte das Loadshedding raus das braucht man in unseren breiten so gar nicht. aber das sind Feinheiten.

ich hoffe ich konnte mal darstellen was ich schon versucht und gemacht habe. Nächsten Freitag fahre ich wieder um Inverter der hängt leider etwas weiter weg.

also auf dem weg alles gute und danke für die Hilfe, sollte man das entwirren können

Mit welchem Programm hat das JK geklappt ?

@solong

Die Standalone Version von Batmon läuft bei mir auf dem Raspberry und sendet per mqtt die Daten zu Homeassistant.

Wenn die SD-Karte zerschrieben wird, hat das meist einen anderen Grund. Bei den Raspberry Modellen bis 3B wird das Schreiben auf die SD-Karte vom USB Bus gemacht, genau so wie jeglicher Netzwerk Traffic. Das ist der Flaschenhals. Ist sehr viel Nertzwerktraffic vorhanden, kann manchmal die SD-Karte nicht mehr schnell genug beschrieben werden. Natürlich tritt das um so öfter auf, je mehr auf die SD-Karte geschrieben werden muss. Z.B. durch viele Einträge in die LOG Datei oder viel Abspeichern in die Influx Datenbank.

Abhilfe schafft zum Einen, wenn man anstatt einer SD-Karte einen USB Stick nimmt und ein Raspberry 4B oder 5B. (Modell 3B+ ist auch schon besser)

Ein Raspberry 4B mit USB-Stick läuft schon mehrere Jahre ohne Probleme, obwohl das Gerät in einem Schuppen installiert ist, der sich im Sommer auf 40 °C aufheizt.

Neu in der Solaranzeige ist die SGS (Strompreis geführte Steuerung). Dazu gibt es auch ein ausführliches Dokument. Es handelt sich hierbei um eine Steuerung, die WiFi Relais ansteuert, aufgrund der stündlich wechselnden Strompreise der Strompreisbörse. Die Steuerung wird in den nächsten Jahren noch interessant, sobald alle Stromanbieter verpflichtet sind, einen dynamischen Stromtarif anzubieten und die Netzbetreiber endlich in der Lage sind, die nötigen Smarten Zähler zur Verfügung zu stellen. (ab 2025)

Wer einen schnellen Überblick über alle Funktionen der Solaranzeige haben möchte, sollte dieses Dokument einmal lesen. Es gibt einen Überblick über das gesamte Projekt.

@funkboje [quote data-userid="24442" data-postid="204245"]
Wenn die SD-Karte zerschrieben wird, hat das meist einen anderen Grund.

[/quote]

Da gehe ich mit. Betreue hier mehrere Raspberrys für Lärmmessungen. Viel Schreiben alleine ist idR nicht das Problem.

Man beachte beim RasPi speziell, dass über den RasPi angeschlossene und gepowerte USB-Hardware leicht die Leistungsfähigkeit der Platine übersteigen kann. Gerade Seriell-USB Wandler können je nach Ansteuerung und verbautem Chipsatz/Streuung oftmals erstaunlich viel Strom ziehen.

Und wenn das der Fehlermode ist, kann ein zusätzlicher USB Stick zum Daten ablegen sogar zusätzlich destabilisierend wirken ...

Bei Problemen mit der Stabilität von Raspberry Pi SD-Karten rate ich daher immer zuerst, falls vorhanden, USB Hardware über einen gepowerten USB Hub anzuschließen und falls das nicht hilft, das Netzteil zu prüfen und bei Zweifeln gegen ein Qualitätsprodukt austauschen.

Die Solaranzeige habe ich seit gut 3 Jahren in immer neuen configs am laufen.

Kein Billige SD Karte, ich verwende Sandisk extrem und besser.

Gutes Raspberry Pi Netzteil, da ist der anspruchsvoll, kein yingyang ich kann alles.

Zum Auslesen USB FTDI 232 mir echtem FTDI Chip. Preis sagt leider nichts darüber aus welcher Chip drauf ist.

Und am Besten Raspi B3+ oder besser ist meine persönliche Erfahrung und Meinung, sonst fehlt etwas Leistung

Im Forum Solaranzeige.de ist viel erklärt, aber manches nur nach Registrierung und Anmeldung erst sichtbar. Die Downloads und Anleitungen zB.

Wie der Name sagt, vorwiegend Anzeige von Daten kann aber auch steuern. Des weiteren ist es ehr für den Lokalen Anwendungsfall, für Externen Zugriff gibt es ja tausende Websiten und Anbieter. Der Entwickler hilft aber auch gerne mal wenn's mit dem speziellen Wechselrichter hakt.

:joy::joy::joy::joy: Sorry

@concierge Super Beitrag!

@g1cs2009 tja was soll ich sagen das war die warheit über die tolle Unterstützung also darf ich das nicht berichten oky dann nicht

@concierge warum darfst das nicht berichten? Von mir gerne, aber ich selber habe Probleme gehabt und mir wurde bestens geholfen. Er hat sich auch direkt aufgeschaltet etc.

Ich berichte meine Erfahrung, allerdings ist das auch 2 Jahre her. Ansonsten gerne auch Deins, aber der andere Beitrag bringt niemandem etwas, da stimmst mir vielleicht zu.

Ergänzend, einfach sachlich und nicht persönlich oder beleidigend. Ich musste hier auch schon mal nen Beitrag anpassen, weil die Emotionen zu deutlich waren. Ist ok das man das überwacht und ich war auch etwas sehr unsauber.