retr0 and Claude Sonnet 4.6
ec6a0e8514
UI: Pfeil-Icons aus Export/Import-Buttons entfernt (v1.8.7)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-29 13:00:22 +02:00
retr0 and Claude Sonnet 4.6
4713473754
UI: Abstand zwischen Settings-Boxen (gap 16px, v1.8.6)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-29 12:59:54 +02:00
retr0 and Claude Sonnet 4.6
448de29cd9
UI: Settings-Felder Abstände vergrößert (v1.8.5)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-29 12:56:43 +02:00
retr0 and Claude Sonnet 4.6
4242ca01f6
Feature: EMS Aktiv-Checkbox pro Kathrein-Wallbox-Gerät (v1.8.4)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-29 08:53:39 +02:00
retr0 and Claude Sonnet 4.6
3ab74a8c21
Fix: Eigenverbrauch = PV_gesamt − Einspeisung statt nur Batterie-Entladung (v1.8.3)
...
Vollständige Formel: total_energy_total - grid_export_kwh deckt
Direktverbrauch (PV→Haus) + Batterie-Umweg (PV→Bat→Haus) ab.
Fallback auf bat_discharge_total wenn kein PV-Zähler verfügbar.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-29 08:48:02 +02:00
retr0 and Claude Sonnet 4.6
3762abd632
Feature: Eigenversorgungs-Ersparnis in Perioden-Karten (v1.8.2)
...
- bat_discharge_total + bat_charge_total werden jetzt als Perioden-Starts getrackt
- savings_kwh = Batterie-Entladung der Periode (→ Haus + Auto)
- savings_eur = savings_kwh × effektiver Importpreis (Festpreis oder Börsendurchschnitt)
- Neue Karte "Eigenversorgung" (lila) neben Netzbezug/Einspeisung
- Preis-Refaktor: eff_price für Import, Export, Ersparnis aus einer Berechnung
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-29 08:38:56 +02:00
retr0 and Claude Sonnet 4.6
ec26782765
Feature: Flexibler Stromtarif (Börsenstrom) in Einstellungen + Periodenabrechnung (v1.8.1)
...
- Tarifart: Festpreis / Flexibel (Börsenstrom) — Radio-Toggle in Einstellungen
- Flexibel: Aufschlag (ct/kWh) + Land (DE/AT) konfigurierbar
- /api/period-energy: bei tariff_type=spot → historische aWATTar-Preise, 1h Cache
- Kostenrechnung Monat/Jahr: Ø Börsenpreis + Aufschlag statt Festpreis
- Periodenkarte zeigt "Ø X.X + Y.Y ct/kWh" bei Börsentarif
- Spot-Chart-Toggle in Einstellungen (spot_chart true/false)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-29 08:27:55 +02:00
retr0 and Claude Sonnet 4.6
526e802c74
Feature: Börsenstrompreis-Chart (EPEX SPOT via aWATTar) im Energie-Dashboard (v1.8.0)
...
- /api/spot-price: Proxy zu api.awattar.de/v1/marketdata, 15-min Cache
- EUR/MWh → ct/kWh Konvertierung
- SVG-Balkenchart 24h-Prognose, gleiche Breite wie Flussdiagramm (viewBox 520)
- Farbe nach Preistertil: grün/gelb/rot; aktuelle Stunde hervorgehoben
- Aktuellen Preis als ct/kWh-Label in der Kopfzeile
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-29 08:15:52 +02:00
retr0 and Claude Sonnet 4.6
f96d798274
Revert: SPH Energiebilanz-Ableitung entfernt — Problem war Goodwe pbattery1 (v1.7.7)
...
Die Growatt SPH Register 1009/1011 liefern korrekte Werte.
Die Ableitung via ac_power_total war unnötig und fehleranfällig.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-29 08:02:59 +02:00
retr0 and Claude Sonnet 4.6
65a19047d5
Fix: Goodwe pbattery1 Vorzeichen — + = Entladen, - = Laden (v1.7.6)
...
bat_charge und bat_discharge waren vertauscht, Hausverbrauch daher falsch.
Goodwe ET Library Konvention: pbattery1 positiv = Entladen, negativ = Laden.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-29 08:01:23 +02:00
retr0 and Claude Sonnet 4.6
9ff0b2e971
Fix: SPH Batterie-Leistung aus Energiebilanz statt Register 1009/1011 (v1.7.5)
...
Register 1009 (bat_discharge) liefert beim SPH im Lademodus falsche Werte.
Neue Ableitung: bat_net = pv1+pv2 + power_to_user - power_to_grid - ac_power_total
Alle vier Quellen sind direkt gemessene, verlässliche Register.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-29 07:58:51 +02:00
retr0 and Claude Sonnet 4.6
3ccf11771d
Fix: Growatt SPH bat_charge/discharge Messartefakt — nur dominanter Wert bleibt (v1.7.4)
...
Growatt SPH rapportiert beide Register gleichzeitig als > 0 (physikalisch unmöglich).
Fix: bat_discharge_power = 0 wenn bat_charge_power >= bat_discharge_power, sonst umgekehrt.
Verhindert falschen Hausverbrauch durch doppelt gezählte Batterieleistung.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-29 07:50:07 +02:00
retr0 and Claude Sonnet 4.6
0d29739fc8
Fix: Batterie-Flussrichtung via Nettoleistung (v1.7.3)
...
Vorher: rev:dchOn — bei gleichzeitig aktiven bat_charge/discharge (Messrauschen)
zeigte die Richtung Entladen obwohl Laden aktiv war.
Jetzt: rev:!(batChW >= batDchW) — Richtung folgt dem Nettostrom.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-29 07:46:46 +02:00
retr0 and Claude Sonnet 4.6
2464c304c4
Fix: Energie-Dashboard Nodes größer R=62, Icon 28px (v1.7.2)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-29 07:41:01 +02:00
retr0 and Claude Sonnet 4.6
13de5ff976
Fix: Energie-Dashboard Nodes größer (R=56), Labels aus API, Abrechnungsperiode konfig. (v1.7.1)
...
- SVG-Nodes: Radius 44 → 56, Icon 22 → 26px, Abstände neu berechnet
- Segment-Pfade an neue Positionen angepasst (40px Abstand Kante→Kante)
- period.monthly.label / yearly.label statt hardcoded "Diesen Monat" / "Dieses Jahr"
- billing_day/billing_month: history.period_key(), /api/period-energy, Settings-UI
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-29 07:35:48 +02:00
retr0 and Claude Sonnet 4.6
e9ca2fcc7d
Feature: Abrechnungsperiode + Strompreise im Energie-Dashboard (v1.7.0)
...
- history.py: Tabelle period_starts — speichert kWh-Zählerstand zu Monats-/Jahresbeginn
- main.py: price_import/price_export in Config; /api/period-energy Endpoint
- Web UI: Preisfelder in Einstellungen (€/kWh Bezug + Vergütung)
- Energie-Dashboard: Cards zeigen Monat/Jahr kWh + Kosten statt All-Time-Total
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 22:37:09 +02:00
retr0 and Claude Sonnet 4.6
5972ef2c35
Feature: Wallbox-Node nur wenn KATHREIN_WALLBOX konfiguriert (v1.6.6)
...
- hasEV-Flag aus invertersList: nur KATHREIN_WALLBOX zeigt EV-Node
- Ohne Wallbox: flacheres Layout (viewBox 520x278 statt 410)
- SEG-Array und SVG-Node konditionell
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 22:31:06 +02:00
retr0 and Claude Sonnet 4.6
220a16c13d
Redesign: Kreuz-Layout — Solar oben, Grid links, Haus Mitte, Batterie rechts, EV unten (v1.6.5)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 22:27:35 +02:00
retr0 and Claude Sonnet 4.6
9eef66812b
Fix: Alle 5 Nodes immer sichtbar, mehr vertikaler Abstand (v1.6.4)
...
- Batterie-Node immer gerendert (nicht mehr hasBat-conditional)
- Vertikaler Abstand erhöht: Solar/Grid y=84, Haus y=202, Bat/EV y=320
- ViewBox 520×400 statt 520×360
- Bezier-Pfade an neue Positionen angepasst
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 22:24:41 +02:00
retr0 and Claude Sonnet 4.6
f37efb6ad1
Fix: Grid-Icon (Sinuswelle statt A), Batterie-Node immer sichtbar (v1.6.3)
...
- Grid-Icon: Sinuswelle (AC-Symbol) statt A-förmiger Übertragungsturm
- Batterie-Node: wird angezeigt sobald bat_* Aggregate vorhanden, nicht erst wenn bat_soc != null
- batSub: SOC-Prozent nur wenn bat_soc nicht null
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 22:20:40 +02:00
retr0 and Claude Sonnet 4.6
11050687d0
Redesign: Energie-Dashboard HA-Style — animateMotion Dots + Kreis-Nodes (v1.6.2)
...
- Kreisförmige Nodes wie im HA Energie-Dashboard (r=44, farbiger Rand)
- Bezier-Kurven mit wandernden Punkten via animateMotion (3 Dots/Pfad)
- Flussrichtung korrekt: reverse für Export, Entladen
- Inaktive Pfade gedimmt, keine Dots
- CSS flowFwd/flowBwd entfernt (nicht mehr benötigt)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 21:49:45 +02:00
retr0 and Claude Sonnet 4.6
ef9f96e5d2
Fix+Redesign: Energie-Dashboard SVG-Icons + SDM-630 Aggregation (v1.6.1)
...
- SVG-Pfad-Icons statt Emoji (Solar, Netz, Haus, Batterie, Wallbox)
- Bezier-Kurven statt gerader Linien für Flussverbindungen
- Rounded-Rect Knoten mit farbigem Top-Border bei kWh-Karten
- SDM-630 grid_power Proxy: total_power -> grid_power (erkannt via import_kwh)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 21:42:12 +02:00
retr0 and Claude Sonnet 4.6
052b674d51
Release: v1.6.0 — Energie-Dashboard
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 18:59:03 +02:00
retr0 and Claude Sonnet 4.6
919919d5d8
Feature: Energie-Dashboard Tab mit SVG-Flussdiagramm (v1.6.0)
...
Neuer erster Tab „Energie" mit animiertem Energiefluss-Diagramm:
- SVG-Knoten: Solar, Netz, Haus, Batterie, Wallbox
- Animierte gestrichelte Linien zeigen Flussrichtung + Leistung
- Farben: PV=gelb, Bezug=rot, Einspeisung=grün, Batterie=lila, EV=blau
- kWh-Karten: PV Heute, Netzbezug/Einspeisung, Batterie Laden/Entladen
- Batterie-Knoten nur sichtbar wenn bat_soc vorhanden
- Wallbox-Leistung via invertersList (KATHREIN_WALLBOX model)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 16:41:57 +02:00
retr0
07b476fffa
Docs: ROADMAP auf v1.5.3 aktualisiert
2026-04-28 13:43:11 +02:00
retr0
13638d3826
Docs: README auf v1.5.3 aktualisiert (Goodwe, Kathrein, EMS, grid_power)
2026-04-28 13:40:26 +02:00
retr0
ffc6dfa6f7
Release: v1.5.3 — EMS Oszillations-Fix
2026-04-28 13:36:20 +02:00
retr0 and Claude Sonnet 4.6
609793c25f
Fix: EMS Oszillation — has_pv prüft Gesamt-PV (Überschuss + Ladeleistung)
...
Vorher: has_pv = surplus >= min → fiel auf False sobald Auto zu laden begann
Jetzt: has_pv = (surplus + wallbox_power) >= min → stabil während Laden
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 13:35:47 +02:00
retr0
929dba7cd9
Release: v1.5.2 — EMS + Wallbox + Grid-Power Fixes
2026-04-28 13:30:39 +02:00
retr0 and Claude Sonnet 4.6
cc4777b22f
Fix: grid_power Aggregat korrekt für Multi-Wechselrichter-Anlagen
...
- AGG_FIRST: grid_power wird nicht summiert sondern erste Messung genommen
(Goodwe CT-Klemme misst bereits Gesamt-Netzleistung inkl. Growatt)
- Growatt-Proxy: grid_power = -power_to_grid wenn kein Grid-Meter vorhanden
(Growatt-only: Einspeisung korrekt, Netzbezug nicht messbar)
- Goodwe + Growatt: Goodwe-Wert hat Vorrang durch Gerätereihenfolge
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 13:28:24 +02:00
retr0 and Claude Sonnet 4.6
5765f54ebd
Fix: Aggregat grid_power nur aus Goodwe grid_power (nicht Wallbox total_power)
...
- AGG_SENSOR_IDS: grid_power → ["grid_power"] statt ["total_power","active_power"]
Kathrein total_power = Ladeleistung, nicht Netzleistung
- _compute_aggregates: break nach erstem Match pro Gerät (kein Doppelzählen)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 13:24:15 +02:00
retr0 and Claude Sonnet 4.6
ff428145f4
Fix: EMS Ladestrom = PV-Überschuss + aktuelle Wallbox-Leistung
...
Goodwe misst Überschuss NACH Wallbox-Verbrauch. EMS muss deshalb
bestehende Ladeleistung (total_power) addieren um Gesamtbudget zu kennen:
new_current = (surplus + wallbox_power) / (230V × phases)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 13:22:57 +02:00
retr0 and Claude Sonnet 4.6
20d935bd73
Feature: grid_power Sensor für intuitive Anzeige (positiv = Netzbezug)
...
goodwe_client: grid_power = -active_power für Visualisierung
inverters.py: grid_power Sensor ergänzt, active_power als "roh" markiert
EMS _get_pv_surplus() bleibt unverändert (nutzt active_power direkt)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 13:20:25 +02:00
retr0 and Claude Sonnet 4.6
ad89e1bc56
Fix: active_power Vorzeichen final korrekt (positiv = Einspeisung)
...
Goodwe ET Bibliothek: house_consumption = ppv + pbattery1 - active_power
→ active_power > 0 = Einspeisung (Überschuss), < 0 = Netzbezug.
Falsches Vorzeichen erzeugte Rückkopplungsschleife: mehr Bezug → mehr
scheinbarer Überschuss → noch mehr Laden.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 13:08:12 +02:00
retr0 and Claude Sonnet 4.6
511cd30182
Revert: active_power Vorzeichen zurück (positiv = Netzbezug)
...
Goodwe ET: active_power > 0 = Netzbezug, < 0 = Einspeisung.
Original-Logik war korrekt — EMS-Problem lag am charging_state Default.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 13:03:46 +02:00
retr0 and Claude Sonnet 4.6
3519a02370
Fix: Goodwe ET active_power Vorzeichen für PV-Überschuss korrigiert
...
Goodwe ET liefert active_power > 0 bei Einspeisung (nicht negativ).
Falsche Negierung führte zu PV-Überschuss = 0 → EMS lud nie.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 12:53:12 +02:00
retr0 and Claude Sonnet 4.6
d1f47177fc
Fix: EMS aktiviert sich auch ohne lesbare charging_state (0x0060)
...
- charging_state Default 0→1 (EV Connected) wenn Register nicht lesbar
- EMS-Status auf INFO hochgestuft inkl. PV-Überschuss
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 12:26:15 +02:00
retr0 and Claude Sonnet 4.6
30f2667589
Fix: Wallbox-Read resilient gegen IllegalAddress, Relais-Matrix ergänzt
...
- wallbox_client: Bei Reg-Fehler Range überspringen statt komplett abbrechen
→ Meter-Daten kommen weiter wenn EVSE-Block (0x0060) nicht verfügbar
- wallbox_client: set_current() schreibt jetzt auch EMS_RELAIS_REG (0x00A1)
mit korrekter Phasen-Bitmaske (1→0x0001, 2→0x0003, 3→0x0007)
- ems_controller: phases wird an set_current() und Zwangsladen übergeben
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 12:17:52 +02:00
retr0 and Claude Sonnet 4.6
a09bbdd25d
Feature: EMS-Konfiguration im Web-UI (v1.5.1)
...
- Modal zeigt EMS-Felder nur bei KATHREIN_WALLBOX (toggleEmsSection)
- openModal lädt ems_min_pv/timeout/target_hour/phases aus Gerätekonfig
- saveInverter speichert EMS-Parameter in inverters.json
- main.py übergibt EMS-Konfig aus inv_cfg an EmsController()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 12:11:13 +02:00
retr0 and Claude Sonnet 4.6
ac965dcfa6
Feature: Kathrein Wallbox + EMS-Controller (v1.5.0)
...
- wallbox_client.py: WallboxReader FC03, EMS enable/set_current
- ems_controller.py: PV-Überschussladen + 4h-Timeout Zwangsladen bis 06:00
- inverters.py: KATHREIN_WALLBOX mit 18 Sensoren (Meter + EVSE + EMS)
- main.py: kathrein-Protokollzweig, _get_pv_surplus() aus laufenden Geräten
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 12:02:59 +02:00
retr0 and Claude Sonnet 4.6
8b65666e80
Fix: Goodwe SOC-Key battery_soc + battery_soh/temperature ergänzt
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 11:42:42 +02:00
retr0 and Claude Sonnet 4.6
dc6ca176ff
Fix: GoodweReader.read() Signatur an ModbusReader angleichen
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 11:37:20 +02:00
retr0 and Claude Sonnet 4.6
9a71d097db
Fix: goodwe in Dockerfile ergänzt (war nur in requirements.txt)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 11:26:34 +02:00
retr0 and Claude Sonnet 4.6
0d5618ec5c
Release: v1.4.0 — Goodwe GW10KN-ET Support
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 11:23:01 +02:00
retr0 and Claude Sonnet 4.6
bc92db6c18
Feature: Goodwe GW10KN-ET Support via goodwe UDP/8899
...
- goodwe_client.py: GoodweReader wraps goodwe library (asyncio → sync)
- inverters.py: GW10KN_ET mit 37 ET-Sensoren, protocol=goodwe_udp
- main.py: poll-loop verzweigt auf GoodweReader bei goodwe_udp-Geräten;
AGG_SENSOR_IDS um Goodwe-Keys erweitert (ppv, soc, e_total, e_total_imp/exp, …)
- requirements.txt: goodwe==0.4.10 hinzugefügt
Goodwe-Stick (WIFILAN_2.0 v2.4.41) hat eFuse-gesperrten ROM-Download;
Kommunikation erfolgt über WiFi-Stick-IP + UDP-Port 8899.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 10:36:51 +02:00
retr0 and Claude Sonnet 4.6
6ae2cbf2b2
Feature: Konfig-Export/Import im Web UI (Einstellungen-Tab)
...
- GET /api/export-config → JSON-Download mit allen Geräten + MQTT (ohne Passwort)
- POST /api/import-config → Validierung + Übernahme + automatischer Neustart
- Einstellungen-Tab: Exportieren-Button + Importieren-Dateiauswahl
- btn-secondary CSS-Klasse hinzugefügt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-27 13:06:54 +02:00
retr0 and Claude Sonnet 4.6
fe1bdb057d
Feature: ShineDiag mobiles Dashboard mit Canvas-Charts und SQLite-History (v2.0)
...
- Auto-Polling alle 30s im Hintergrund (Thread + Event)
- SQLite-Persistenz in /var/lib/shinediag/history.db, 7-Tage-Retention
- 4 Tabs: Dashboard, Diagramme, Sensoren, Rohdaten
- Große Metrikkarten für Spannung (L1/L2/L3), Frequenz, Leistung
- Canvas-Liniendiagramme (kein externes JS) mit 1h/6h/24h/7d-Auswahl
- localStorage für Verbindungskonfig, Auto-Reconnect beim Seitenaufruf
- Retina-fähiges Canvas (DPR-aware)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-27 12:15:05 +02:00
retr0 and Claude Sonnet 4.6
7f890f8105
Legal: Attributionspflicht für mwalle NuttX-Firmware ergänzt
...
Binary nuttx-mbusd-shinelanx-dfu.bin unterliegt Apache 2.0 / BSD 3-Clause /
BSD 2-Clause — Urheber Martin Walle (github.com/mwalle/shinelanx-modbus)
wird nun korrekt im README genannt.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-27 12:04:18 +02:00
retr0 and Claude Sonnet 4.6
ffcf5ca7b1
Docs: README komplett aktualisiert
...
Spiegelt aktuellen Stand: ShineBridge v1.3.0, SDM-630, Aggregat-Gerät,
persistente History, ShineDiag, neuer Repo-Name.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-27 12:00:37 +02:00
retr0 and Claude Sonnet 4.6
aac95c2eef
Rename: Repository → shinebridge
...
URLs auf https://gitea.bitfire.work/retr0/shinebridge aktualisiert.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-27 11:55:24 +02:00