LNPoS
Ein Bitcoin & Lightning ⚡ Point of Sale
Vollkommen autarker Point of Sale Terminal (Kassensystem). Sowohl online als auch offline Lightning ⚡ Zahlungen. Für offline Onchain Zahlungen und ein offline Lightning ATM für Auszahlungen. Free and open source Software, frei von Intermediäre, mit integrierten Akku, Wlan, zum Selbstbau, low Budget, nicht einmal 50 Euro.
Die LNPoS Funktionen:
- LNPoS Online Lightning Zahlungen mit aktiver Interaktion
- LNURLPoS Offline Lightning Zahlungen. Passive Interaktion, Austausch eines Geheimnisses als Nachweis
- OnChain Für Onchain Zahlungen. Generiert eine Adresse und zeigt einen Link zur Überprüfung
- LNURLATM Offline Lightning Auszahlungen. Generiert LNURLw Link mit dem man eine Abhebung vornehmen kann
1. Der LNPoS kurz erkärt
Der LNPoS ist ein Lightning ⚡ Point of Sale und besteht aus einem Mikrocontroller Board mit Display (Bezeichnung: TTGO T-Display ESP32), einer Tastatur und einem Gehäuse. Das Board verfügt über WiFi und Bluetooth. Das WiFi kann aktiv als Access Point betrieben werden, es kann aber auch eine Verbindung mit einem anderen WiFi herstellen, um sich damit mit dem Internet zu verbinden. Es hat eine USB-Schnittstelle zur Spannungsversorgung und zur seriellen Datenübertragung. Damit kann man das Programm auf den internen Speicher schreiben (flashen). Die Konfiguration des LNPoS erfolgt komfortabel über ein Web Interface.
Das LNPoS kann als reines offline Gerät betrieben werden. Für die offline Funktionen (LNURLw / LNURLp / OnChain) muss man nur einmal die Daten aus dem LNbits Wallet und den xPub für die OnChain Adressen zum LNPoS übertragen. Zusätzlich hat der LNPoS auch die Möglichkeit sich per WiFi mit dem Internet zu verbinden und klassische online Lightning ⚡ Zahlungen durchzuführen. Das hat den Vorteil einer aktiven Rückmeldung über den Zahlungseingang. Damit der LNPoS sich auch mit dem Internet verbinden kann, muss man zusätzlich noch die Zugangsdaten für das Netzwerk (SSID / Passwort) hinterlegen. Das kann ein Heimnetz oder ein mobiler Hotspot sein.
Das Backend ist ein LNbits Server. LNbits ist ein Wallet und Account System das ein Lightning ⚡ Finanzierungsquelle verwendet. Ihr könnt für den Anfang den freien und kostenlosen Demo Server demo.lnbits.com verwenden. Dort legt ihr ein Wallet an bekommt alle Daten die ihr für den Betrieb des LNPoS braucht. Da alles “free and open source” ist könnt ihr LNbits später auch selbst hosten und mit eurer eigenen Lightning ⚡ Node als Finanzierungsquelle verbinden. Das macht euch souverän und unabhängig. 🔥 Genau dafür wurde Bitcoin und Lightning ⚡ gebaut! 🧡
2. Die Hardware
Es gibt in Europa zwei Shops wo ihr das LNPoS als Set bestellen könnt. Da ist einmal shop.lnbits.com in England und in Deutschland fulmo.shop.org. Bei beiden könnt ihr mir Lightning ⚡ bezahlen. Den Akku müsst ihr euch separat bestellen. Der Akku wird für den stationären Betrieb aber auch nicht benötigt. Ihr könnt euch die Komponenten auch bei Alternativen oder in Einzelteile beschaffen:
- LILYGO® TTGO T-Display Keyboard Kit ESP32 Google
- TTGO T-Display ESP32 Google
- Mögliche Gehäuse für den LNPoS shop.lnbits.com
- Vorlagen zum Selbstbauen der Gehäuse GitHub
- Schalter Beispiel
- Akku 3,7V LiPo, nicht größer als 1100 mA und evtl. mit einem JST (2 Pin / 1,25mm) für das ESP32 Board. Der Stecker wird sonst aber auch beim Set mitgeliefert.
Noch ein Hinweis zur Montage, coincharge.io hat dazu eine gute Anleitung geschrieben.
3. Das Einrichten des LNPoS
Das Einrichtung des LNPoS ist mittlerweile recht einfacher geworden. Man kann das Programm über einen Webbrowser installieren. Dafür wird keine zusätzliche Software benötigt. Die dafür notwendige Webseite nennt sich Web Installer. Sie funktioniert mit den Desktop Browser Chrome oder Edge. Die einzige Hürde die man zu Anfang nehmen muss, ist das Einrichten eines passenden Treiber für die Verbindung zwischen Computer und Mikrocontroller. Bei einigen Betriebssystemen wird der passende Treiber beim Anschließen des Mikrocontroller selbständig erkannt und installiert.
Aber nicht immer klappt das und manchmal braucht man auch ein Treiberupdate, damit es korrekt funktioniert. Aber keine Panik, die Webseite bietet auch gleich Hilfe. Wenn ihr keinen Verbindungsport festlegen könnt und dann auf abbrechen geht, bekommt ihr folgendes Meldungsfenster angezeigt. Dort wird euch auch gleich der Link zum passenden Treiber angeboten. Der TTGO hat den Chip CH9102. Also müsst ihr nur auf die Hersteller den aktuellen Treiber runter laden und euer System damit aktualisieren.
Hinweis:
Mac Systeme hatten teilweise Treiberprobleme, was dazu führte, dass die Installation nicht funktionierte. Ein Update des CH9102 Treibers hat geholfen.
Und noch ein Hinweis:
Die Installation des LNPoS erfolgt ähnlich wie die des bitcoinSwitch über den Web Installer. Deshalb gibt es auch ähnliche Fehlermeldungen. Wenn ihr mal Probleme habt, schaut einfach mal hier nach, vielleicht gibt es da ja schon eine Hinweis.
Jetzt aber zur Einrichtung. Nachfolgend werde ich jeden Schritt den ihr benötigt erklären und zum besseren Verständnis auch mit Bildern versehen. 📖🤓
3.1 Vorbereitung: Das LNbits Wallet
Der bitcoinSwitch kommuniziert mit einem LNbits Wallet. Hier zeige ich euch wie ihr ein Wallet bei dem freien und kostenlosen LNbits Demo Server anlegen könnt und wie ihr die notwendigen Schnittstellendaten erzeugt, damit ein Verbindung zwischen LNPoS und Wallet besteht.
- Besucht die Webseite demo.lnbits.com und legt euch ein Wallet an
- Ihr seht jetzt links oben das Wallet und könnt unter
Manage extentions
Erweiterungen hinzufügen - Dort wählt ihr
LNURLDevice
und mitENABLE
aktiviert ihr die Erweiterung - Jetzt findet ihr unter Extentions den Punkt Extentions LNURLDevice. Wählt es an und erzeugt eine neue
LNURLDevice Instance
. Damit werden die Parameter festgelegt und eine Schnittstelle generiert. - Füllt alle Felder für
PoS
aus und wählt Create LNURLDevice. Wiederholt das ganze fürATM
. - Klickt von
PoS
den ersten kleinen Button LNURLDevice Settings an und kopiert den angezeigten Link in die Zwischenablage und dann sofort in eine digitale Notiz für später. Wiederholt das ganze fürATM
. Diese “Strings” fügt ihr später in das Konfigurationsmenü des Web Installer ein. - Jetzt braucht ihr noch den
Invoice/read key
. Klickt einmal auf das Wallet und danach rechts aufAPI Info
auf. Dort findet ihr den Schlüssel. Auch den kopiert ihr wieder eine eure digitale Notiz. Den braucht ihr später zum konfigurieren.
3.2 Installation des LNPoS
Starten wir jetzt mit der Installation. Dazu bitte nochmal die Seite des Web Installer aufrufen. Ihr findet sie unter dem Link: https://lnpos.lnbits.com/
Oder ihr geht über die bitcoinSwitch GitHub Seite: https://github.com/lnbits/LNPoS Und sucht dort im Text nach dem Link zum Web Installer.
- Schließt den Mikrocontroller per USB Kabel an euren Computer an. Wartet einen Moment bis euer Computer das neue Gerät erkannt hat, wählt die Version 0.1. und dann geht einmal auf
Flash
.Hinweis:
Bei der Version 0.2 hat bei mir das WiFi nicht funktioniert. Sobald das geht, werde ich die Dokumentation updaten. - Wählt die richtige Verbindung aus und drückt Connect.
- Jetzt im “Device Dashboard”
INSTALL LNBITS LNPOS
anwählen Erase Device
auswählen undNext
drücken. Hinweis: Wenn ihr alte Konfigurationsdaten wie die WiFi und Schnittstellendaten behalten wollt, dann lasst es abgewählt.- Jetzt wird das Programm installiert (geflasht). Wenn die Installation komplett ist, geht ihr auf
NEXT
und schaut euch das nächste Kapitel für die Konfiguration an.
3.4 Konfigurieren des LNPoS
Konfigurieren kann man den LNPoS am besten über das WiFi. Dazu müsst ihr den LNPoS in den “WiFi Access Point” Modus bringen. Das macht ihr, in dem ihr den LNPoS einmal von der Spannung nehmt, eine Taste gedrückt haltet und die Spannung wieder anlegt. Dann nehmt ihr euer Handy und schaut ob ihr ein neues WiFi gefunden habt. Damit könnt ihr euch quasi auf den Mikrocontroller einloggen und dort den LNPoS konfigurieren.
- Nehmt den LNPoS einmal von der Spannung, haltet z.B. die * Taste gedrückt und schließt ihn wieder an. Dann bekommt ihr “AP Launched” im Display angezeigt. AP steht für Access Point.
- Sucht in eurem WiFi nach einem neuen Teilnehmer der mit
LNPoS-...
beginnt. Verbindet euch damit und wenn ihr nach einem Passwort gefragt werdet dann ist dasToTheMoon1
. Klickt ein weiteres mal auf die Verbindung, damit ihr euch auf den LNPoS Access Point einloggt. Dann dort oben rechts einmal den Hamburger anklicken um in das Menü zu kommen. - Wählt
Configure new AP
um ein neues WiFi hinzuzufügen. Wählt euer Heimnetz oder Hotspot aus und drücktApply
. Jetzt sollte sich der Mikrocontroller mit dem Netz verbinden und es durchEstablished connection
anzeigen. Geht jetzt nochmal oben rechts in das Menü. - Im Menü geht ihr auf PoS Options. Jetzt gebt ihr, wenn ihr habt, einen
Master Public Key
für OnChain Transaktionen an. Füllt denLNbits Server
aus den ihr verwendet. Und dann noch alle Daten wieWallet Invoice Key
,LNURLPoS String
undLNURLATM String
. Die Daten solltet ihr ja aus dem im Kapitel 3.1 bekommen haben und bestenfalls einfach nur aus der digitalen Notiz kopieren. DasPassword
, denmempool.space server
und denLNURLATM pin String
(Standard: 878787) könnt ihr so lassen. Die Pin braucht ihr für ATM Auszahlungen. Jetzt das ganze einmal mitSave
bestätigen und auf der Folgeseite einmal mitOK
.
Das war es eigentlich soweit, der LNPoS ist fertig eingerichtet. 🎉 Viel Spaß beim testen! 🔥
3.5 Die Funktionen des LNPoS
Hier mal ein paar Beispiel Bilder zu den LNPoS Funktionen und ein Buchungsbeispiel wie es im Mobil Wallet angezeigt wird.
- LNPoS, online Zahlung
- LNURLPoS, offline Zahlung
- OnChain Zahlung (offline)
- LNURLPoS, offline Auszahlung
- Die Buchungen im LNbits Web Wallet
4. Ergänzungen
LNbits ist ein Wallet und Account System. Schaut mal hier. Ich habe dazu schon vor einiger Zeit mal ein Video gemacht. Wichtig zu verstehen ist, dass LNbits nichts anderes als eine Datenbank ist. Und somit kommuniziert das LNPoS Terminal mit einer Datenbank. Die echten Werte in Form von Satoshis liegen auf dem darunterliegenden Lightning Node. Der Node ist auch für die eigentlichen online Transaktionen im Hintergrund zuständig. Der LNPoS, mit dem Lnbits Wallet, ist nur ein Interface. Sollte der LNPoS kaputt oder verloren gehen, oder LNbits selber abstürzen, sind eure Funds trotzdem sicher, da sie von dem darunter liegenden Lightning Node verwaltet werden. Dort müssen auch gut verbundene Lightning Kanäle mit genügen Inbound Liquidität vorhanden sein. Legt ihr also ein Wallet bei LNbits an und verliert die Keys, bzw. den Links zum Wallet, sind die Sataoshis nicht weg, es ist nur ein Spende an den Betreiber des da drunter liegenden Lightning Nodes.
Das online LNbits Wallet “demo.lnbits.com” ist toll und funktioniert super. Die Nutzung ist erlaubnisfrei und kostenlos, aber der Server ist unter Gewahrsam eines anderen und nicht dafür gedacht große Werte auf Dauer zu speichern. Es ist mehr eine experimentelle Umgebung, um es Menschen einfach zu machen, mit LNbits zu experimentieren. Es gibt keine Garantie, dass der LNbits Server auch auf Dauer funktioniert und es ist unwahrscheinlich, dass die Entwickler und altruistischen Betreiber für Verluste auf Grund von technischen Probleme oder Hacks aufkommen. Also, sichert eure Funds immer schnellstmöglich auf ein Wallet eurer Wahl und prüft, ob ihr LNbits nicht selber hosten könnt. Auf dem RaspiBlitz ist das möglich und über eine IP2Tor Verbindung funktionieren auch die offline Funktionen LNURLPoS und LNURLATM, und die Generierung der OnChain Adressen. Was aber noch nicht funktioniert, ist die online Lightning Zahlung mit LNPoS. Dann bekommt man die Fehler Meldung “fetching fiat rate failed”, was so viel heißt, es konnte keine Verbindung zum LNbits Server hergestellt werden.
Wer möchte, kann auf das LNbits Wallet des LNPoS auch über die Erweiterung LndHub für BlueWallet und Zeus zugreifen. Man kann es als (Notfall-) Alternative zum LNPoS mit voller Kontrolle (LNDHUB ADMIN) verwenden, oder als “read only / nur Invoices” (LNDHUB INVOICE). Damit kann zum Beispiel der Angestellte die Transaktionen überprüfen, falls es mal zu Unstimmigkeiten kommt. Auch kann es ja mal passieren, dass der Kunde oder Angestellte aus versehen das “Geheimnis” (die vierstellige PIN) einer LNURLPoS offline Zahlung weg gedrückt hat. Ein weiterer Vorteil zu dem LNbits Web Wallet selber ist, dass man mit diesen LndHub Wallets in BlueWallet oder Zeus einerseits ein read only Wallet einrichten kann, anderseits aber auch keinen Zugriff auf die Einstellungen und Erweiterungen hat. Damit kann also keiner etwas kaputt machen. Das LNbits Web Wallet sollte deswegen nur vom Admin des Kontos verwendet werden.
BareBones Keypad Falls sich jemand die BareBones Version zusammen steckt, hier eine Hilfe für Anschlüsse:
5. Quellen und weiterführende Information
- Das LNPoS-GitHub-Projekt: LNPoS
- Video-Tutorial: MakerBits – LNPoS 2
- Deutsches Video Tutorial: LNPoS auf EINUNDZWANZIG
- Youtube-Kanal von MarkerBits: MakerBits
- Telegram Gruppe: MakerBits
- Telegram Gruppe: LNbits
- Das LNbits GitHub Projekt: LNbits
- Die LNbits Telegram Gruppe: LNbits
- Deutsche LNPoS Telegram Gruppe: LNPoS Kassenterminal
- Der LNbits Shop: shop.lnbits.com
- Eine sehr gute und ergänzende Anleitung zum LNPoS mit Videos findet ihr aiuch auf coincharge.io.
Falls dir der Artikel gefallen hat, freue ich ich über eine Nachricht. 📨
Meine⚡️Lightning Adresse: axelhamburch@ereignishorizont.xyz
Tipp: Mit dem Sats.mobi Wallet in Telegram geht das übrigens auch.
Syntax: /send <Betrag> <LightningAdresse> <Nachricht>
Erstellt mit Liebe 🧡 Seit 735952 / 858356
– Lightning ⚡ (er)leben –