Teil 3 - Mining und HA
PV-Überschuss-Mining 2.0: Von Bash-Skripten zu Home Assistant & Automationen
Blogserie: Mein Smart Home mit Home Assistant – Teil 3
Einleitung: Weiterentwicklung meines PV-Mining-Setups
In meinem ersten Beitrag zum Thema PV-Mining ( „Ich will meinen PV-Strom nicht vergeuden – also nutze ich ihn fürs CPU-Mining“ ) habe ich beschrieben, wie ich meinen PV-Überschuss mit CPU-Mining (Monero/XMR über XMRig) nutze, anstatt ihn einfach für ein paar Cent ins Netz einzuspeisen.
Die Grundidee ist unverändert:
Ich will meinen eigenen PV-Strom nicht verschenken, sondern ihn arbeiten lassen – aber nur dann, wenn wirklich Überschuss da ist.
Damals war die Steuerzentrale ein Bash-Skript plus Cronjob, das auf Basis von PV-Erzeugung und Hausverbrauch entschieden hat, ob XMRig starten oder stoppen soll. Die technischen Grundlagen dazu habe ich im Beitrag „PV-Skript & Wechselrichter-Integration“ erklärt.
Inzwischen ist mein Setup deutlich weiter:
- Die Daten kommen über meine Django-Wechselrichter-App in Home Assistant.
- Ein Qcells-Wechselrichter liefert die PV- und Hausverbrauchsdaten (Qcells).
- Ich messe die Miningleistung über einen Smart Plug.
- Ich berechne einen „Mining vs. Einspeisen“-Faktor, der zeigt, ob sich das Minen überhaupt lohnt.
- Das Mining läuft nur, wenn PV-Überschuss & Faktor > 1 sind.
1. Rückblick: Das ursprüngliche Bash-Skript
In meinem ersten PV-Mining-Setup habe ich alle 5 Minuten ein Bash-Skript laufen lassen. Es hat die Werte PV_OUTPUT (Erzeugung) und HOUSE_USAGE (Hausverbrauch) vom Wechselrichter abgefragt und verglichen:
PV_OUTPUT > HOUSE_USAGE + THRESHOLD
Wenn die Bedingung erfüllt war, wurde xmrig gestartet, sonst beendet. Die Steuerung lief über Cron:
*/5 * * * * /usr/local/bin/pv_mine.sh >> /var/log/pv_mine.log 2>&1
Das war robust und simpel – aber auch limitiert:
- Keine schöne Visualisierung.
- Keine zentrale Übersicht über PV, WP, Hauslast und Mining.
- Keine tieferen Regeln (z. B. nur minen, wenn es sich wirtschaftlich lohnt).
Genau diese Punkte habe ich im nächsten Schritt mit Home Assistant und meiner Wechselrichter-App sauber zusammengeführt.
2. Datenbasis: Qcells-Wechselrichter + Wechselrichter-App + Home Assistant
Die technische Grundlage für das Mining 2.0 habe ich in Teil 2 dieser Serie gelegt:
- Mein Qcells-Wechselrichter liefert live Daten zur PV-Erzeugung, zum Hausverbrauch, zum Netzfluss und zur Batterie (Qcells Wechselrichter).
- Meine Django-Wechselrichter-App (Django) holt diese Werte regelmäßig ab und stellt sie über eine JSON-API bereit.
- Home Assistant ruft diese API über die REST-Integration ab.
In Home Assistant habe ich dadurch u. a. folgende Sensoren:
sensor.pv_power_w– aktuelle PV-Leistung in Wattsensor.house_consumption_w– Hausverbrauch gesamtsensor.grid_power_w– Einspeisung/Bezug (+ Einspeisung, – Netzbezug)sensor.battery_soc_pct– Batterieladestand
Zusätzlich kenne ich über Modbus den aktuellen Verbrauch der Wärmepumpe und kann den Hausstrom ohne WP berechnen (siehe Teil 2). Das ist wichtig, um zu beurteilen, wie “frei” die Leitung für zusätzliche Lasten wie Mining ist.
3. PV-Überschuss berechnen: Die Grundlage für jede Mining-Entscheidung
Damit Home Assistant automatisch entscheiden kann, ob Mining erlaubt ist, brauche ich den aktuellen PV-Überschuss. Der ergibt sich aus:
PV_Überschuss = PV-Leistung – Hausverbrauch
In Home Assistant habe ich mir dafür einen Template-Sensor gebaut:
sensor:
- platform: template
sensors:
pv_ueberschuss_w:
friendly_name: "PV-Überschuss"
unit_of_measurement: "W"
value_template: >
{% set pv = states('sensor.pv_power_w') | float %}
{% set haus = states('sensor.house_consumption_w') | float %}
{{ (pv - haus) | round(0) }}
Dieser Wert ist die zentrale Steuergröße für das Mining.
4. Mining vs. Einspeisen: Mein Faktor für Wirtschaftlichkeit
Für mich ist nicht nur wichtig, dass Überschuss da ist – sondern auch, ob Mining mehr einbringt als die Einspeisevergütung.
Dazu betrachte ich zwei Größen:
- Was würde ich für 1 kWh bekommen, wenn ich sie einspeise?
- Was bekomme ich für 1 kWh, wenn ich damit minen lasse?
Aus diesen beiden Größen bilde ich einen Faktor:
Mining-Faktor = Ertrag pro kWh Mining / Einspeisevergütung pro kWh
Liegt dieser Faktor z. B. bei 1,36, heißt das:
- 1 kWh eingespeist: X Cent
- 1 kWh ins Mining: 1,36 × X Cent
Also lasse ich das Mining nur dann laufen, wenn:
- PV-Überschuss > Schwellwert (z. B. 300 W) und
- Mining-Faktor > 1
Die Einspeisevergütung ist fix, der Mining-Ertrag schwankt. Darum ist der Faktor dynamisch.
Die Monero-Erlöse bekomme ich aus meinem Mining-Pool (z. B. über eine API oder manuell gepflegt). Eine grobe Einführung in Monero: getmonero.org.
5. Messung: Wie viel Leistung zieht das Mining wirklich?
Damit ich weiß, was das Mining energetisch macht, habe ich den Miner-PC über einen Smart Plug (Tuya/Tapo/Shelly o. Ä.) eingebunden. In Home Assistant taucht dieser als Leistungssensor auf:
sensor.minerpc_power_w– aktuelle Leistungsaufnahme des Minersswitch.minerpc_steckdose– schaltbare Steckdose für den Miner
Damit kann ich in Diagrammen sehen:
- Wann Mining aktiv ist
- Wie viel W das Setup wirklich braucht
- Wie sich der Verbrauch im Tagesverlauf verteilt
Zusammen mit dem Pool-Ertrag kann ich daraus einen effektiven Ertrag pro kWh ableiten.
6. Mining-Steuerung mit Home Assistant: „Nur wenn die Sonne lacht“
Die eigentliche Steuerung läuft bei mir inzwischen nicht mehr nur über Bash+Cron, sondern über Automationen in Home Assistant.
6.1 Automation: Miner an bei genügend PV-Überschuss
alias: "Miner an bei PV-Überschuss"
trigger:
- platform: numeric_state
entity_id: sensor.pv_ueberschuss_w
above: 300
for:
minutes: 5
condition:
- condition: numeric_state
entity_id: sensor.mining_faktor
above: 1.0
action:
- service: switch.turn_on
target:
entity_id: switch.minerpc_steckdose
mode: single
Was hier passiert:
- PV-Überschuss > 300 W (für 5 Minuten stabil)
- Mining-Faktor > 1
- → Steckdose des Miners wird eingeschaltet
Der PC ist so konfiguriert, dass er bei Strom automatisch startet (BIOS: „Power on after AC loss“) und XMRig beim Booten über systemd oder einen Autostart-Skript aktiviert wird.
6.2 Automation: Miner aus bei zu wenig PV
alias: "Miner aus bei zu wenig PV"
trigger:
- platform: numeric_state
entity_id: sensor.pv_ueberschuss_w
below: 100
for:
minutes: 5
action:
- service: switch.turn_off
target:
entity_id: switch.minerpc_steckdose
mode: single
Fällt der Überschuss nachhaltig, geht der Miner vom Netz. So verhindere ich, dass plötzlich Netzstrom fürs Mining verbraucht wird – genau das wäre das Gegenteil dessen, was ich erreichen will.
7. Dashboard: Mining im Kontext des ganzen Energiesystems
In meinem Home-Assistant-Mining-Dashboard sehe ich u. a.:
- PV-Leistung, Hausverbrauch und Netzfluss (Qcells-Daten)
- Wärmepumpenverbrauch (aus NIBE/SMO S40 via Modbus/MyUplink)
- Hausstrom ohne WP
- Miningleistung (über Smart Plug)
- Mining-Faktor (Mining vs. Einspeisevergütung)
- Status: Miner an/aus
Mein Live-Dashboard mit PV-Output, Hausverbrauch und Mining-Status findest du hier:
https://thinkkreativ.de/wechselrichter
8. Fazit: Stromveredelung statt Verschwendung – Version 2.0
Mein PV-Mining-Projekt ist kein Versuch, „schnell reich“ zu werden. Es ist eine Mischung aus:
- Energie-Autarkie,
- technischer Neugier,
- und dem Wunsch, meinen eigenen Strom bewusst zu nutzen.
Im Vergleich zur ersten Version aus meinem Beitrag „Ich will meinen PV-Strom nicht vergeuden…“ hat sich einiges verändert:
- Die Datenbasis ist sauberer (Qcells + Wechselrichter-App + Home Assistant).
- Ich kenne den echten Hausstrom ohne Wärmepumpe.
- Das Mining ist vollständig in mein Smart-Home-Ökosystem integriert.
- Ich entscheide nicht nur nach Überschuss, sondern auch nach Wirtschaftlichkeit (Mining-Faktor).
Am Ende steht genau das, was ich mir gewünscht habe:
Meine PV-Anlage produziert – und mein System entscheidet selbst, ob es gerade sinnvoll ist zu minen oder nicht.
Wenn du tiefer in die technischen Grundlagen einsteigen möchtest, findest du hier die Vorgängerbeiträge: