Ratgeber | Gadgets | 11 Min. Lesezeit
Deine BTClock bei jedem Zap und jeder Einzahlung ins Lightning Piggy leuchten lassen
Oktober 2026Von Mario
Bekomme ich einen Zap auf Nostr, blinkt meine BTClock lila und orange.
Steckt jemand Sats in das Lightning Piggy, wird sie pink und orange und zeigt den Betrag auf dem Display.
Den Rest des Tages leuchtet sie grün oder rot, je nachdem, was der Kurs macht.
Gleichzeitig piept mein Handy und der Lautsprecher in der Küche sagt, wer Sats geschickt hat.
Ich habe das so noch nirgends gesehen, also schreibe ich auf, wie du es selbst baust. Auch wenn du kein Programmierer bist.
Bist du ein bisschen technisch, ist das die Struktur, die du als Erstes sehen willst:

Was es macht

| Das passiert | Die BTClock | Dein Handy | Der Lautsprecher |
|---|---|---|---|
| Jemand zappt dich auf Nostr | Blinkt 10 Mal lila und orange, 20 Sekunden lila und orange, Betrag auf dem Display | Benachrichtigung mit Betrag und Absender | "Du hast einen Zap über 21 Sats bekommen" |
| Jemand steckt Sats in das Lightning Piggy | Blinkt 10 Mal pink und orange, 20 Sekunden pink und orange, Betrag auf dem Display | Benachrichtigung mit Betrag | "Es wurden 1000 Sats ins Sparschwein eingezahlt" |
| Den Rest der Zeit | Links der Euro, rechts der Dollar: grün, wenn der Kurs höher ist als gestern, rot, wenn er niedriger ist. Je größer die Bewegung, desto kräftiger die Farbe |
Danach zeigt die Uhr den Kurs und wechselt wieder alle 30 Sekunden zwischen Blockhöhe, Kurs, Gebühren und dem Rest.
Die Uhr leuchtet auch nachts. Der Lautsprecher bleibt zwischen Mitternacht und sechs Uhr still.
Was du brauchst
- Eine BTClock, die E-Paper-Bitcoin-Uhr mit sieben kleinen Displays und vier LEDs.
- Eine Lightning Piggy, ein Sparschwein, das den Saldo einer Lightning-Wallet anzeigt. Ideal für Kinder.
- Home Assistant, die kostenlose Software, die dein Zuhause steuert. Läuft auf einem Mini-PC, einem Raspberry Pi oder einer fertigen Box.
- Eine LNbits-Wallet für das Piggy. Willst du sie selbst betreiben, geht das zum Beispiel auf einem Start9 Server Eins.
- Ein Nostr-Konto mit einer Lightning-Adresse in deinem Profil, für die Zaps.
Optional: ein NerdQaxe++. Die BTClock zeigt dann auch deine Hashrate und deine beste Difficulty.

Wie alles zusammenhängt
Die Idee ist einfach. Home Assistant ist die Schaltzentrale.
- Kommt eine Zahlung herein, schickt LNbits (Piggy) oder ein kleines Skript (Nostr) ein Signal an Home Assistant.
- Home Assistant schickt eine Benachrichtigung an dein Handy und lässt den Lautsprecher sprechen.
- Home Assistant sagt der BTClock, welche Farbe sie zeigen soll und welcher Betrag aufs Display kommt.
Die BTClock hat dafür eine eigene API. Du kannst ihr über dein Netzwerk Befehle geben, etwa "stell die LEDs auf lila" oder "zeig diesen Text".
Gebaut von der Community
Allein hätte ich das nie geschafft. Alles, worauf es läuft, wurde von Leuten gebaut, die ihre Arbeit teilen.
- BTClock: Die Firmware ist öffentlich auf git.btclock.dev. So konnte ich genau sehen, was die Uhr macht, und habe entdeckt, dass eine Farbe über die API auch nachts funktioniert.
- Lightning Piggy: Open Source, gemacht, damit Kinder mit echten Sats sparen lernen.
- LNbits, Home Assistant und phoenixd (der Lightning-Node hinter LNbits): alles Open Source. Und Nostr ist ein offenes Protokoll. Niemand hat dort das Sagen.
Darum war das möglich. Jemand baut etwas und teilt es, und jemand anderes baut darauf weiter.
Baust du das nach oder machst du es besser? Teil es, nenn die Macher und zap ihnen ein paar Sats. So wächst diese Community weiter.
Schritt 1: die BTClock auf Firmware v4 bringen
Die neueste Firmware findest du auf git.btclock.dev. Du brauchst zwei Dateien, die zu deiner Uhr passen: die Firmware und die Weboberfläche. Bei der Rev B mit 2,13-Zoll-Display sind das btclock_rev_b_ota.bin und storage_8mb.bin.
Lade sie in der Weboberfläche der Uhr unter Firmware updatehoch. Erst die Firmware, dann die Weboberfläche. Die Uhr startet von selbst neu.
Schau dann die IP-Adresse deiner Uhr nach (steht in der Weboberfläche unter Systeminfo). Die brauchst du gleich.

In der Weboberfläche siehst du sofort, was die Uhr alles kann: mehr als zehn Displays, von Blockhöhe und Kurs bis Halving, Gebühren, Supply und die Hashrate deines Miners. Du wählst selbst, welche an sind, in welcher Währung und wie lange jedes Display stehen bleibt.
Zwei Dinge, die du wissen solltest:
- Siehst du nach dem Update "Lost connection", zeigt dein Browser die alte Seite aus dem Cache. Drück Cmd+Shift+R (Mac) oder Strg+Shift+R (Windows).
- "Zeit pro Display" ist in Minuten, nicht in Sekunden.
Schritt 2: Home Assistant mit der Uhr sprechen lassen
Von Haus aus kann Home Assistant keine Befehle an ein Gerät schicken. Dafür gibt es rest_command . Setz das ans Ende deiner configuration.yaml (über das Add-on File editor) und ersetze die IP-Adresse durch die deiner Uhr:
rest_command:
btclock_leds:
url: "http://192.168.1.50/api/lights/set"
method: POST
content_type: "application/json"
payload: "{{ kleuren }}"
btclock_api:
url: "http://192.168.1.50{{ pad }}"
method: POST
content_type: "application/json"
payload: "{{ data | default('{}') }}"
Starte Home Assistant neu.
Erstelle dann ein Skript (Einstellungen → Automatisierungen & Szenen → Skripte → Neues Skript → YAML-Modus) und füge das ein. Ändere im letzten LED-Schritt die vier Farben auf die, die deine Uhr normalerweise hat:
alias: BTClock signaal
mode: queued
fields:
kleur:
default: "#FF1493"
kleur2:
default: "#F7931A"
knipper:
default: 10
houd:
default: 20
bedrag:
default: 0
sequence:
- if: "{{ bedrag | int(0) > 0 }}"
then:
- action: rest_command.btclock_api
data:
pad: /api/action/pause
- action: rest_command.btclock_api
data:
pad: /api/show/text
data: "{{ {'t': '+' ~ (bedrag | int(0))} | to_json }}"
- repeat:
count: "{{ knipper }}"
sequence:
- action: rest_command.btclock_leds
data:
kleuren: "{{ ([{'hex': kleur}] * 4) | to_json }}"
- delay:
milliseconds: 400
- action: rest_command.btclock_leds
data:
kleuren: "{{ ([{'hex': kleur2}] * 4) | to_json }}"
- delay:
milliseconds: 400
- action: rest_command.btclock_leds
data:
kleuren: "{{ [{'hex': kleur}, {'hex': kleur2}, {'hex': kleur}, {'hex': kleur2}] | to_json }}"
- delay:
seconds: "{{ houd }}"
- action: rest_command.btclock_leds
data:
kleuren: >
{% set ns = namespace(k=[]) %}
{% for s in ['sensor.bitcoin_24u_verandering', 'sensor.bitcoin_24u_verandering_usd'] %}
{% set c = '#00C853' if states(s) | float(0) >= 0 else '#FF1A1A' %}
{% set ns.k = ns.k + [{'hex': c}, {'hex': c}] %}
{% endfor %}
{{ ns.k | to_json }}
- if: "{{ bedrag | int(0) > 0 }}"
then:
- action: rest_command.btclock_api
data:
pad: /api/show/screen
data: '{"s": 20}'
- action: rest_command.btclock_api
data:
pad: /api/action/timer_restart
Teste es gleich: Klick beim Skript auf Ausführen. Deine Uhr sollte 10 Mal pink und orange blinken. Danach springt sie zum Kurs-Display (Display 20) und der Wechsel läuft weiter.
Der letzte LED-Schritt stellt die Uhr auf grün oder rot. Dafür brauchst du den Kurssensor aus Schritt 5. Lässt du den weg, ersetze diese Zeile durch deine eigenen festen Farben.
Warum über die API und nicht über die Einstellungen der Uhr? Die BTClock hat einen "Nicht stören"-Modus für die Nacht. Der blockiert die normalen Blinkeffekte, aber keine Farbe, die du über die API setzt. So leuchtet sie auch um drei Uhr nachts, wenn Sats reinkommen.
Schritt 3: das Lightning Piggy verbinden
Das Lightning Piggy läuft auf einer LNbits-Wallet. In LNbits erstellst du mit der Erweiterung Pay Links einen Zahlungslink. Der hat ein Feld Webhook URL: Bei jeder Zahlung schickt LNbits dorthin ein Signal.
Erstelle in Home Assistant eine neue Automatisierung mit dem Auslöser Webhook. Home Assistant gibt dir dann eine Adresse, und die fügst du in LNbits bei Webhook URL ein.
Das sind die Aktionen der Automatisierung (YAML-Modus):
- variables:
sats: "{{ ((trigger.json.amount | default(0)) | int / 1000) | round | int }}"
- action: notify.mobile_app_jouw_telefoon
data:
title: Spaarpot
message: "Er zijn {{ sats }} sats in de spaarpot gestort!"
- action: script.turn_on
target:
entity_id: script.btclock_signaal
data:
variables:
kleur: "#FF1493"
kleur2: "#F7931A"
bedrag: "{{ sats }}"
Soll der Lautsprecher mitmachen, füg eine Aktion tts.speak mit demselben Satz hinzu, eventuell mit einer Zeitbedingung davor.
Schritt 4: deine Nostr-Zaps verbinden
Zuerst das Wichtigste: Trag eine Lightning-Adresse in dein Nostr-Profilein. In Primal geht das über Profil bearbeiten. Ohne diese Adresse kann dich niemand zappen. Ich habe das selbst vergessen und einen Abend gesucht, warum nichts ankam.
Dann lässt du ein kleines Skript auf Nostr mithören, auf einem Rechner, der immer läuft. Ein Raspberry Pi reicht. Sieht das Skript einen Zap für dein Konto, schickt es ein Signal an einen zweiten Webhook in Home Assistant. Diese Automatisierung macht dasselbe wie beim Piggy, ruft das Skript aber mit kleur: "#8E30EB" (lila) und kleur2: "#F7931A" (orange) auf.
Das Schöne: Das funktioniert mit jeder Wallet. Deine Zaps kommen weiter dort an, wo sie jetzt ankommen.
So ein Skript lässt du dir ganz einfach von einer KI schreiben, siehe den Prompt unten.
Schritt 5: grün oder rot mit dem Kurs
Setz auch das ans Ende deiner configuration.yaml. Home Assistant holt dann alle 5 Minuten, wie stark sich der Kurs in 24 Stunden verändert hat, in Euro und in Dollar:
rest:
- resource: "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=eur,usd&include_24hr_change=true"
scan_interval: 300
sensor:
- name: "Bitcoin 24u verandering"
unique_id: bitcoin_24u_verandering
unit_of_measurement: "%"
value_template: "{{ value_json.bitcoin.eur_24h_change | round(2) }}"
- name: "Bitcoin 24u verandering USD"
unique_id: bitcoin_24u_verandering_usd
unit_of_measurement: "%"
value_template: "{{ value_json.bitcoin.usd_24h_change | round(2) }}"
Erstelle dann eine Automatisierung, die bei jeder Änderung die LEDs setzt. Die zwei linken LEDs folgen dem Euro, die zwei rechten dem Dollar. So siehst du auf einen Blick, ob Bitcoin in beiden Währungen steigt oder nur in einer. Ich nutze vier Farbtöne pro Seite: unter 1%, 1 bis 5%, 5 bis 10% und darüber, jeweils kräftiger grün oder rot:
triggers:
- trigger: state
entity_id:
- sensor.bitcoin_24u_verandering
- sensor.bitcoin_24u_verandering_usd
- trigger: time_pattern
minutes: "/15"
conditions:
- condition: state
entity_id: script.btclock_signaal
state: "off"
actions:
- action: rest_command.btclock_leds
data:
kleuren: >
{% set ns = namespace(k=[]) %}
{% for s in ['sensor.bitcoin_24u_verandering', 'sensor.bitcoin_24u_verandering_usd'] %}
{% set p = states(s) | float(0) %}{% set a = p | abs %}
{% if p >= 0 %}{% set c = '#B9F6CA' if a < 1 else ('#4CE07A' if a < 5 else ('#00B33C' if a < 10 else '#00661F')) %}
{% else %}{% set c = '#FFB3B3' if a < 1 else ('#FF5C5C' if a < 5 else ('#E00000' if a < 10 else '#7A0000')) %}{% endif %}
{% set ns.k = ns.k + [{'hex': c}, {'hex': c}] %}
{% endfor %}
{{ ns.k | to_json }}
Schritt 6: testen
Schick dir selbst ein paar Sats über das Lightning Piggy und lass jemanden eine Notiz von dir zappen. Geht etwas schief, schau in Home Assistant bei der Automatisierung unter Traces. Dort siehst du Schritt für Schritt, was passiert ist.
Probier es selbst
Schick ein paar Sats an:
zap@piggy.bitcoinstuffstore.com
Dann blinkt meine Uhr pink und ich höre in der Küche, dass Sats angekommen sind. Du kannst eine kurze Nachricht dazuschreiben, die lese ich auf meinem Handy. Jeder Sat landet im Sparschwein.
FAQ
Muss ich programmieren können?
Nein. Du kopierst ein paar Textblöcke in Home Assistant und passt die IP-Adresse und deine Farben an. Für das Nostr-Skript nimmst du den Prompt unten.
Funktioniert das auch nachts?
Die Uhr schon, auch wenn "Nicht stören" an ist. Den Lautsprecher kannst du mit einer Zeitbedingung still halten.
Kann ich andere Farben wählen?
Ja. Jede Hex-Farbe funktioniert. Auch wie oft es blinkt und wie lange die Farbe bleibt, stellst du in der Automatisierung ein.
Brauche ich einen NerdQAxe++?
Nein, der ist optional. Hast du einen, zeigt die BTClock auch deine Hashrate.
Warum zeigt das Display den Betrag und nicht den Saldo?
Der Betrag kommt mit jeder Zahlung mit. Der Saldo liegt in deiner Wallet. Die BTClock kann den Saldo einer Wallet über Nostr Wallet Connect anzeigen (Display NWC Balance). Verbindest du dort die Wallet des Piggy, siehst du auch den Saldo.
Kann ich das von einer KI bauen lassen?
Ja. Füg den Prompt unten in Claude oder einen anderen KI-Assistenten ein, der in deinem Terminal arbeiten kann. Trag zuerst die vier Angaben oben ein.
Ich möchte, dass meine BTClock (Firmware v4) aufleuchtet, wenn ich Sats bekomme. Hilf mir, das Schritt für Schritt in Home Assistant zu bauen. Erklär jeden Schritt einfach und lass mich Passwörter und Schlüssel selbst eintragen.
Meine Angaben:
- IP-Adresse meiner BTClock: [eintragen]
- Adresse meines Home Assistant: [eintragen]
- Meine Nostr npub: [eintragen]
- Mein Lightning Piggy läuft auf LNbits unter: [eintragen]
Was ich möchte:
1. Ein rest_command in configuration.yaml für /api/lights/set und ein allgemeines rest_command für andere BTClock-API-Pfade.
2. Ein Skript "BTClock Signal" mit den Feldern Farbe, Blinken, Halten und Betrag: zuerst den Betrag über /api/show/text zeigen (mit /api/action/pause davor), dann 10 Mal in der Farbe blinken, 20 Sekunden halten, danach meine eigenen LED-Farben wiederherstellen und über /api/show/screen und /api/action/timer_restart den Display-Wechsel fortsetzen.
3. Eine Automatisierung mit Webhook-Auslöser für den Zahlungslink meines Lightning Piggy in LNbits: eine Benachrichtigung auf meinem Handy und das Skript in pink (#FF1493) mit dem Betrag in Sats (amount im Webhook ist in Millisats).
4. Ein kleines Python-Skript, das als Dienst auf einem Rechner läuft, der immer an ist, auf Nostr-Relays nach Zap-Bestätigungen (kind 9735) für meine npub lauscht, den Betrag aus der bolt11 holt und einen zweiten Webhook in Home Assistant aufruft. Diese Automatisierung ruft das Skript in lila (#8E30EB) auf.
5. Teste jeden Schritt, bevor du weitermachst, und sag mir, was ich auf der Uhr sehen sollte.
Aus dem Shop
Selbst loslegen?
Alles aus diesem Ratgeber gibt es im Shop.



