====== Wetterstation ======
===== Konfiguration: Victron MPPT & JBD BMS =====
Vergleich der Einstellungen für den aktuellen **3S Li-Ion** Akku und den geplanten **4S LiFePO4** Akku.
Ziel ist eine maximale Lebensdauer durch konservative Ladespannungen im Victron und harte Sicherheitsgrenzen im BMS.
^ Parameter ^ Li-Ion (3S) \\ (aktuell) ^ LiFePO4 (4S) \\ (geplant) ^ Bemerkung / Logik ^
^ **Victron MPPT 75|10** ^^^^
| Batterie-Voreinstellung | Benutzerdefiniert | LiFePO4 (oder Benutzerdef.) | Basis für die Spannungen. |
| **Absorptionsspannung** \\ (Ladeschluss) | **12,45 V** | **14,20 V** | **Li-Ion:** 4,15V/Zelle (schont die Chemie). \\ **LiFePo:** 3,55V/Zelle (vermeidet BMS-Abschaltung). |
| **Erhaltungsspannung** \\ (Float) | **12,15 V** | **13,50 V** | Spannung halten, wenn Akku voll. |
| Ausgleichsspannung \\ (Equalization) | **AUS** | **AUS** | **Wichtig!** Niemals bei Lithium-Akkus aktivieren. |
| **Last-Ausgang** Modus | Benutzerdefiniert | BatteryLife oder Benutzerdef. | Steuert die Wetterstation. |
| Last trennen bei \\ (Low Voltage Cut-off) | **9,60 V** \\ (3,2V/Zelle) | **12,00 V** \\ (3,0V/Zelle) | Schaltet Verbraucher ab, bevor Akku tiefentladen ist. |
| Last wieder verbinden \\ (Reconnect) | **11,10 V** \\ (3,7V/Zelle) | **12,80 V** \\ (3,2V/Zelle) | Verbraucher erst zuschalten, wenn Solar etwas nachgeladen hat. |
^ **JBD BMS Einstellungen** ^^^^
| Zell-Chemie (Type) | **Li-Ion** / NMC | **LiFePO4** | Grundlegende Einstellung in der App ändern! |
| Anzahl Zellen (Count) | **3** | **4** | Muss zwingend stimmen. |
| **Cell Over Voltage** \\ (Schutzabschaltung) | **4,25 V** | **3,65 V** | BMS greift ein, falls Victron die Absorptionsspannung überschießt. |
| Cell Over Voltage Release | 4,15 V | 3,45 V | Hysterese zum Wiedereinschalten. |
| **Cell Under Voltage** \\ (Not-Aus) | **2,80 V** | **2,50 V** | BMS greift ein, falls Victron-Lastabschaltung versagt. |
| Cell Under Voltage Release | 3,00 V | 2,80 V | Hysterese. |
| **Balancer Start Voltage** | 4,00 V | 3,40 V | Balancing erst kurz vor "Akku voll" starten. |
| Balance only charging | ON | ON | Verhindert De-Balancing bei Nacht. |
| Charge Under Temp. | **0 °C** | **0 °C** | **Wichtig:** Lithium niemals bei Frost laden (Zerstörungsgefahr). |
| Discharge Under Temp. | -20 °C | -20 °C | Entladen ist bei Kälte unproblematisch. |
===== Org Konfig LiFePo =====
{{.:pasted:20251212-085840.png}}
===== Konvertierung Pi > ESP32 =====
* Anschluss Pi \\ {{.:pasted:20251106-122127.png?500}}
* Anschluss ESP32
^ Pi Pin ^ ESP32 Pin ^ Funktion ^
| GPIO 5 | GPIO21 | I2C SDA |
| GPIO 3 | GPIO22 | I2C SCL |
| GPIO 7 | GPIO17 | OneWire |
| GPIO21 | GPIO25 | Regenmesser |
| GPIO20 | GPIO27 | Windgeschwindigkeit |
| GPIO17 | GPIO26 | LED Wlan |
| GPIO27 | GPIO18 | LED Akku |
| GPIO22 | GPIO19 | LED Regen |
| GPIO23 | GPIO23 | LED Reserve |
| | | |
| 5V | Vin ?? | 5V Versorgung |
| 3,3V | | 3,3V Kommen vom Pi ! |
| 6, 20, 25, 34, 39 | | **GND** |
* Dallas Adressen
^ Sensor Nr ^ Dallas MAC ^ Dallas MAC (Pi) ^ Funktion ^
| 1 | 0xae01184286d5ff28 | 28-01184286d5ff | Bodentemperatur +5cm (Luft) |
| 2 | 0x270318408bf1ff28 | 28-0318408bf1ff | Bodentemperatur -5cm (Oberflaeche) |
| 3 | 0xd30118428444ff28 | 28-0118428444ff | Bodentemperatur -30cm |
| 4 | 0x370118428919ff28 | 28-0118428919ff | Bodentemperatur -100cm |
===== Anschluss Windsensoren =====
^ Kabel ^ Funktion ^ Notes ^
| **Schwarz** | Wind Richtung | Widerstandsskala (siehe Doku) |
| **Grün** | Wind Richtung | Auslesen über AD |
| **Gelb** | Wind Geschwindigkeit | Read Kontakt ! |
| **Rot** | Wind Geschwindigkeit | **löst 2x aus pro Umdrehung** |
https://www.dwd.de/DE/fachnutzer/landwirtschaft/dokumentationen/allgemein/basis_windgeschwindigkeit_doku.html
===== Regenmesser =====
* Sensor Size : 153.94
* ml per Change : 4.590 ml
===== Lipo Zellen Kalibrierung =====
{{.:pasted:20251108-095452.png}}
* Alle Zellen hängen an gleich aufgebauten Spannungsteilern \\ 150.000 Ohm & 27.000 Ohm \\ -> https://www.peacesoftware.de/einigewerte/spannungsteiler.html
* Die Kalibrierung erfolgt dann so, dass man eine Referenz Spannung auf alle Pins gibt (12.0V z.B.)
* Dann muss man die Spannung am AD messen und auf 12 V hoch rechnen \\ ''dataC = Cell.value * (150000 + 27000) / 27000) ''
* Jetzt kann man den Faktor berechnen der eben die Korrektur bildet \\ cellok = dataC * self.calibCellReference / self.calibCellVolt \\ calibCellReference -> Referenzspannung \\ calibCellVolt -> gemessene Spannung
**Beispiel**
* Referenz = 12.596
* Gemessen über AD Pin = 12.777
* Spannung zu hoch am AD -> muss also der Faktor <1 sein ...
* 12.596 : 12.777 -> 0.985834
* Ergebnis -> 12.777 * 0.985834 -> **12.596001**
===== Extra Berechnungen U/I =====
^ Bereich/Sensor ^ Gemessene Werte ^ Abgeleiteter Wert ^ Formel ^ Beschreibung | | |
| **µController (5V)** | Spannung (V_µC)
Strom (I_µC) | Leistung (P_µC) | P_µC = V_µC * I_µC | Zeigt den aktuellen Leistungsverbrauch des Mikrocontrollers und aller angeschlossenen Peripheriegeräte in Watt; hilfreich zur Überwachung des Energiebedarfs und zur Erkennung von Anomalien wie Überlastungen. | | |
| | | Energie verbraucht (Wh_µC) | Wh_µC = ∫ P_µC dt (Integration über Zeit) | Kumulierte Energie, die der µController und seine Komponenten über einen bestimmten Zeitraum verbraucht haben; ideal für langfristige Analysen, z. B. tägliche oder monatliche Verbrauchsbilanzen und Optimierungen. | | |
| **Akku (12V)** | Spannung (V_Akku)
Strom (I_Akku)
(positiv: Entladung; negativ: Ladung) | Leistung (P_Akku) | P_Akku = V_Akku * I_Akku | Gibt die aktuelle Leistung an, die der Akku abgibt (bei Entladung) oder aufnimmt (bei Ladung) in Watt; ermöglicht die Echtzeit-Überwachung des Akku-Zustands und der Lade-/Entladeprozesse. | | |
| | | SOC (State of Charge) in % (genau) | SOC = [(Kapazität_Ah - ∫ I_Akku dt * Effizienz) / Kapazität_Ah] * 100
(Effizienz ~0.95; Initial aus V-LUT) | Berechnet den genauen Füllstand des Akkus in Prozent unter Berücksichtigung von Coulomb-Zählung und Lade-/Entladeeffizienz; verbessert die Genauigkeit im Vergleich zu reiner Spannungsmessung und hilft bei der Vorhersage der Restkapazität. | | |
| | | Restlaufzeit (h) | Restlaufzeit = (SOC/100 * Kapazität_Ah) / I_µC_eq
(I_µC_eq = I_µC * (V_µC / V_Akku) angepasst) | Schätzt die verbleibende Betriebszeit in Stunden basierend auf dem aktuellen Füllstand und dem angepassten Verbrauchsstrom; nützlich für Alarme bei niedrigem Ladestand und Planung von Ladezyklen (nur relevant bei Entladung). | | |
| | | Energie entnommen/geladen (Wh_Akku) | Wh_Akku = ∫ P_Akku dt | Kumulierte Energiebilanz des Akkus, die entnommen oder geladen wurde; ermöglicht die Analyse von Zyklen, Degradation und Gesamteffizienz über längere Perioden. | | |
| **Solarpanel** | Spannung (V_Solar)
Strom (I_Solar) | Leistung (P_Solar) | P_Solar = V_Solar * I_Solar | Zeigt den aktuellen Energieertrag des Solarpanels in Watt; hilft bei der Bewertung der Sonneneinstrahlung und der Panel-Leistung in Echtzeit. | | |
| | | Energie erzeugt (Wh_Solar) | Wh_Solar = ∫ P_Solar dt | Kumulierter Energieertrag des Solarpanels über Zeit; eignet sich für Statistiken wie täglichen Ertrag, Saisonalvergleiche und Systemoptimierung. | | |
| **Systemweit (kombiniert)** | - | Effizienz Laderegler (Solar → Akku) | Eff_Laden = (\ | P_Akku\ | / P_Solar) * 100
(nur bei Ladung, I_Akku < 0) | Misst den Wirkungsgrad des Ladereglers, d. h. welcher Anteil der Solarleistung effektiv im Akku gespeichert wird; niedrige Werte können auf Verluste durch Wärme, falsche MPPT-Einstellungen oder Defekte hinweisen. |
| | | Effizienz DC-DC-Wandler (Akku → µC) | Eff_Wandler = (P_µC / P_Akku) * 100
(nur bei Entladung, I_Akku > 0) | Berechnet den Wirkungsgrad des Spannungswandlers von 12V auf 5V; zeigt Verluste und hilft bei der Diagnose von Ineffizienzen oder Hardwareproblemen. | | |
| | | Gesamteffizienz (Solar → µC) | Eff_Gesamt = (P_µC / P_Solar) * 100
(bei direkter Solarversorgung) | Gibt den Gesamtwirkungsgrad des Systems von Solarerzeugung bis zum Verbrauch am µController an; nützlich für die Bewertung der Systemeffizienz und Identifikation von Optimierungspotenzialen. | | |
| | | Autarkie-Grad (%) | Autarkie = [min(P_Solar, P_µC) / P_µC] * 100 | Prozentsatz, zu dem der µController-Verbrauch direkt durch Solarenergie gedeckt wird, ohne den Akku zu belasten; fördert die Analyse der Systemunabhängigkeit von externen Quellen. | | |
===== Sensoren =====
^ Sensor ^ Typ ^ Adresse ^ Notes ^ IO / NIO ^
| AHT20 | I2C | 0x38 | Variante AHT20 angeben! | IO |
| SHT 3x | I2C | 0x44 | Kein SHT2x wie bei Thomas | IO |
| INA 3221 | I2C | 0x40 | Thomas -> 0x41 ! | IO |
| ADS1115 | I2C | 0x48 | | IO |
| BME280 | I2C | 0x76 | BME und **nicht BMP** ! | IO |
==== AHT20 ====
# AHT10/AHT20 Sensor
- platform: aht10
variant: AHT20
i2c_id: wetter_i2c_bus
address: 0x38
update_interval: 60s
temperature:
name: "AHT20 Aussentemperatur"
icon: 'mdi:thermometer'
id: aht_temp
humidity:
name: "AHT20 Aussenluftfeuchtigkeit"
icon: 'mdi:water-percent'
id: aht_hum
==== BME280 ====
# --- ATMOSPHÄRISCHE SENSOREN ---
- platform: bme280_i2c
i2c_id: wetter_i2c_bus
address: 0x76
update_interval: 60s
temperature:
name: "BME280 Temperatur"
icon: 'mdi:thermometer-alert'
oversampling: 1x
filters:
- or:
- heartbeat: 900s
- delta: 0.25
pressure:
name: "BME280 Luftdruck (hPa)"
icon: 'mdi:gauge'
oversampling: 16x
filters:
- or:
- heartbeat: 900s
- delta: 0.35
humidity:
name: "BME280 Luftfeuchte"
oversampling: 1x
filters:
- or:
- heartbeat: 900s
- delta: 0.25
- platform: wifi_signal
name: "BME280 WiFi Signal"
update_interval: 900s
==== SHT3x ====
- platform: sht3xd
temperature:
name: "SHT3x Temperature"
humidity:
name: "SHT3x Humidity"
address: 0x44
update_interval: 60s
==== INA3221 ====
# INA3221 Sensor (Solar-Ladekontrolle)
- platform: ina3221
i2c_id: wetter_i2c_bus
address: 0x40
update_interval: 5min
channel_1: # Meist Batterie
shunt_resistance: 0.022
bus_voltage:
name: "INA3221 Batterie-Spannung Gesamt (V)"
icon: 'mdi:battery-charging-100'
current:
name: "INA3221 Batterie-Strom (A)"
icon: 'mdi:battery-charging-100'
power:
name: "INA3221 Batterie-Leistung (W)"
icon: 'mdi:battery-charging-100'
channel_2: # Meist Solarpanel
shunt_resistance: 0.022
bus_voltage:
name: "INA3221 Panel-Spannung (V)"
icon: 'mdi:solar-panel-large'
current:
name: "INA3221 Panel-Strom (A)"
icon: 'mdi:solar-panel-large'
power:
name: "INA3221 Panel-Leistung (W)"
icon: 'mdi:solar-panel-large'
channel_3: # Meist Last/Verbraucher
shunt_resistance: 0.022
current:
name: "INA3221 Verbrauch (mA)"
unit_of_measurement: "mA"
icon: 'mdi:battery-minus-variant'
filters:
- multiply: 1000
bus_voltage:
name: "INA3221 Verbraucher-Spannung (V)"
unit_of_measurement: "V"
icon: 'mdi:battery-minus-variant'
power:
name: "INA3221 Verbraucher-Leistung (W)"
unit_of_measurement: "W"
icon: 'mdi:battery-minus-variant'