lsc und lsd
lsc steuert und überwacht Librescoot vom MDB aus über Redis. Nutze es für Einrichtung, Diagnose und Automatisierung; die Displaybedienung beschreibt das Handbuch. Führe Fahrzeugbefehle wie lsc unlock und lsc alarm arm nur bei sicher geparktem Roller aus.
lsd-Weboberfläche
Entwicklungs-Images enthalten lsd auf dem MDB. Verbinde bei eingeschaltetem Dashboard deinen Computer mit dem USB-Netzwerk des MDB und öffne http://192.168.7.1:8090. Den USB-Zugang beschreibt die manuelle Installationsanleitung.
- Übersicht: Fahrzeug- und Akkustatus, Fehler, Alarmsteuerung und Servicemodus.
- Einstellungen: Einstellungen suchen und ändern; der erweiterte Modus zeigt zusätzliche Schlüssel.
- Keycards: physische Karten hinzufügen oder entfernen und das Anlernen starten.
- Navigation: Ziele, gespeicherte Orte und Routenplan.
- Dateien und Updates: Dateien übertragen, Update-Kanäle wählen und Firmware installieren.
- System und Dienste: Logs herunterladen, Journale lesen und Dienste verwalten.
- Cloud: den Roller mit Sunshine verbinden oder die Konfiguration eines Cloud-Clients importieren.
Die Einstellungsschlüssel aus den lsc-Beispielen unten kannst du auch in lsd suchen. Nutze lsc per SSH für Kommandozeilenarbeit und Skripte.
Per SSH auf das MDB einloggen und
lsc direkt ausführen, oder von deinem Arbeitsrechner aus Befehle per ssh root@<mdb-ip> voranstellen.
ssh root@<mdb-ip> lsc status
Schnellreferenz
lsc status # Gesamt-Dashboard des Fahrzeugs lsc unlock # Roller aufsperren lsc lock # Roller abschließen lsc open # Helmfach öffnen lsc battery # Akku-Diagnose lsc faults # Aktive Fehler anzeigen lsc ota status # OTA-Update-Status lsc settings list # Alle Einstellungen anzeigen lsc set <key> <val> # Einstellung ändern lsc alarm arm # Bewegungsalarm scharfschalten lsc alarm disarm # Alarm entschärfen lsc service list # Laufende Services auflisten lsc logs # Log-Bundle exportieren
Befehle
status
Zeigt ein Dashboard der wichtigsten Metriken: Fahrzeugzustand, Geschwindigkeit, Kilometerstand, Akkustände, Konnektivität, GPS.
lsc status
watch
Überwacht Redis-Pub/Sub-Channels. Zeigt Zustandsänderungen in Echtzeit.
lsc watch vehicle battery:0 # Ein oder mehrere Channels (mindestens einer nötig)
| Flag | Beschreibung |
|---|---|
--format <fmt> | Ausgabeformat: pretty (Standard), json, raw |
--filter <regex> | Nachrichten per Regex filtern |
monitor
Zeichnet Metriken über die Zeit auf, für ein oder mehrere Subsysteme. Schreibt Zeitstempel-Daten in Dateien und packt ein komprimiertes Archiv.
lsc monitor gps battery # GPS- und Akkudaten aufzeichnen lsc monitor all # Alles aufzeichnen lsc monitor --duration 5m motor # Motordaten 5 Minuten aufzeichnen
Subsysteme: gps, battery, vehicle, motor, power, modem, events, all.
| Flag | Beschreibung |
|---|---|
--duration <time> | Aufzeichnungsdauer (Standard: 1h). Beispiele: 1m, 5m, 1h, 24h |
--interval <time> | Poll-Intervall (Standard: 1s). Beispiele: 100ms, 1s, 5s |
--format <fmt> | Ausgabeformat: jsonl (Standard), csv |
--output <dir> | Ausgabeordner (automatisch generiert, wenn nicht angegeben) |
vehicle
Steuert den Sperr-/Entsperr-Zustand, Hibernate und das Helmfach.
| Subbefehl | Beschreibung |
|---|---|
vehicle lock | Roller abschließen (Wechsel in stand-by) |
vehicle unlock | Roller aufsperren (Wechsel in parked/ready) |
vehicle hibernate | Koordinierten Winterschlaf aus Parkmodus oder Standby anfordern |
vehicle force-lock | stand-by erzwingen, ohne auf physische Schlösser zu warten |
vehicle open | Helmfach-Schloss öffnen |
Alle vehicle-Subbefehle akzeptieren --no-block, um direkt zurückzukehren, ohne auf die Bestätigung der Zustandsänderung zu warten.
Top-Level-Abkürzungen: lsc lock, lsc unlock, lsc open.
alarm
Steuert die bewegungsbasierte Alarmanlage.
| Subbefehl | Beschreibung |
|---|---|
alarm status | Alarmstatus und -einstellungen anzeigen |
alarm arm | Alarm aktivieren; schärft sich, sobald das Fahrzeug in stand-by geht. --no-block, um die Bestätigung zu überspringen. |
alarm disarm | Alarm bis zur erneuten Aktivierung deaktivieren. --no-block überspringt die Bestätigung. |
alarm silence | Vorübergehend entschärfen, ohne alarm.enabled zu ändern. Endet nach erneuter Nutzung und Abschließen, beim Winterschlaf, nach acht Stunden oder bei Neustart des Alarmdiensts (alarm-service v0.13.0+). |
alarm trigger [duration] | Alarm für duration Sekunden manuell auslösen |
ota
OTA-Update-Verwaltung für MDB und DBC.
| Subbefehl | Beschreibung |
|---|---|
ota status | Update-Status für MDB und DBC anzeigen |
ota check [mdb|dbc] | Sofortige Update-Prüfung anstoßen (Standard: beide) |
ota channel [channel] | Aktuelle Kanäle anzeigen oder MDB und DBC auf stable, testing oder nightly setzen |
ota install <file-or-url> | Ein OTA-Update manuell installieren |
settings
Persistente Roller-Einstellungen anzeigen und ändern (in Redis gespeichert).
| Subbefehl | Beschreibung |
|---|---|
settings list | Alle Einstellungen mit aktuellen Werten auflisten |
settings get <key> | Einen oder mehrere Einstellungswerte holen |
settings set <key> <value> | Einstellung setzen und Änderung publizieren. --force überspringt die Validierung. |
settings del <key> | Einstellungs-Key löschen |
Top-Level-Abkürzungen: lsc get <key>, lsc set <key> <value>, lsc del <key>.
Du kannst mehrere Key-Value-Paare in einem Befehl setzen: lsc set alarm.enabled true alarm.honk false.
Häufig genutzte Einstellungen:
| Key | Beschreibung | Werte |
|---|---|---|
| Alarm | ||
alarm.enabled | Alarmanlage an-/ausschalten | true / false |
alarm.honk | Hupe während des Alarms aktivieren | true / false |
alarm.duration | Alarmdauer | Sekunden |
alarm.seatbox-trigger | Alarm auslösen, wenn unautorisiert das Helmfach geöffnet wird | true / false |
alarm.hairtrigger | Kurzer Sofort-Alarm bei erster Bewegung | true / false |
alarm.hairtrigger-duration | Dauer des Hair-Trigger-Alarms | Sekunden |
| OTA-Updates | ||
updates.mdb.method | Update-Methode für das MDB | delta / full |
updates.mdb.channel | Release-Kanal für das MDB | stable / testing / nightly |
updates.mdb.check-interval | Abstand zwischen Update-Prüfungen für das MDB | Stunden (0 = aus) |
updates.dbc.method | Update-Methode für das DBC | delta / full |
updates.dbc.channel | Release-Kanal für das DBC | stable / testing / nightly |
updates.dbc.check-interval | Abstand zwischen Update-Prüfungen für das DBC | Stunden (0 = aus) |
| Dashboard | ||
dashboard.theme | UI-Theme | light / dark / auto |
dashboard.backlight-mode | Display-Helligkeit (auto = Umgebungslichtsensor) | auto / low / medium / high |
dashboard.mode | Standard-Bildschirmmodus | speedometer / navigation / debug |
dashboard.show-raw-speed | Unkorrigierte Rohgeschwindigkeit der ECU anzeigen | true / false |
dashboard.show-clock | Uhr-Format in der Statusleiste. always zeigt nur die Uhrzeit und behält seinen alten Namen | always / date-time / alternate / never |
dashboard.show-gps | GPS-Indikator-Sichtbarkeit | always / active-or-error / error / never |
dashboard.show-bluetooth | Bluetooth-Indikator-Sichtbarkeit | always / active-or-error / error / never |
dashboard.show-cloud | Cloud-Indikator-Sichtbarkeit | always / active-or-error / error / never |
dashboard.show-internet | Internet-Indikator-Sichtbarkeit | always / active-or-error / error / never |
dashboard.show-temperature | Sichtbarkeit der Außentemperatur-Anzeige (warning = nur im Frostbereich, erscheint unter 5 °C und verschwindet ab 7 °C) | always / warning / never |
dashboard.show-aux-battery | Sichtbarkeit des 12-V-Akku-Symbols (warning = nur unter 11700 mV) | always / warning / never |
dashboard.show-cb-battery | Sichtbarkeit des CBB-Ladesymbols (warning = nur unter 50 % Ladung) | always / warning / never |
dashboard.battery-display-mode | Akkuanzeige-Modus | percentage / range / icon |
dashboard.power-display-mode | Leistungsanzeige-Einheit | kw / amps |
dashboard.map.type | Kachelquelle | online / offline |
dashboard.map.render-mode | Karten-Rendering-Modus | vector / raster |
dashboard.map.view-mode | Kartenkamera: 3D mit gekippter Perspektive oder 2D als flache Draufsicht | 3d / 2d |
dashboard.map.north-oriented | In 2D die Karte nach Norden ausrichten statt nach der Fahrtrichtung | true / false |
dashboard.map.traffic-overlay | Verkehrslage auf der Karte einblenden (erfordert Online-Kacheln) | true / false |
dashboard.maps.check-for-updates | Nach Karten-Updates suchen (höchstens wöchentlich, sobald das Modem verbunden ist) | true / false |
dashboard.maps.auto-download | Karten-Updates automatisch laden (verbraucht Mobilfunkdaten) | true / false |
dashboard.valhalla-url | Endpunkt des Valhalla-Routing-Service | URL |
dashboard.route-preference | Routen-Gewichtung. „Kürzeste“ rechnet nach reiner Distanz und ignoriert alle anderen Vorgaben, auch das Meiden von Kopfsteinpflaster | fastest / shortest |
dashboard.avoid-cobblestone | Umwegbudget, um Kopfsteinpflaster zu meiden: „low“ investiert höchstens die Fahrzeit, die der holprige Abschnitt gekostet hätte, „medium“ das Vierfache, „high“ das Achtfache. „off“ sendet ausdrücklich eine Null und schaltet das Meiden vollständig ab. Braucht Routing-Kacheln, die den Belag kennzeichnen | off / low / medium / high |
dashboard.blinker-style | Darstellungsstil für den Blinker-Indikator | icon / overlay |
dashboard.milestones.mode | Meilensteine bei 10 km und danach alle 100 km, optional mit einmaligen Easter Eggs (standardmäßig aus) | off / regular / all |
dashboard.milestones.presentation | Kurzer Hinweis, optional Ticket und Konfetti beim Parken | notice / banner / banner-and-confetti |
dashboard.language | Sprache des Dashboard-UI | Sprachcode |
| Motor | ||
engine-ecu.boost | Motor-Boost-Modus aktivieren | true / false |
engine-ecu.kers | Rekuperation (KERS) | enabled / disabled |
engine-ecu.kers-power | KERS-Regenerationsstrom | Ampere |
| Sonstiges | ||
cellular.apn | APN-String für Mobilfunk | string |
scooter.battery-keep-active-on-seatbox-open | Laufenden Akku beim Öffnen des Helmfachs aktiv lassen, statt ihn zu deaktivieren | true / false |
scooter.dual-battery | Zweitbatterie-Modus aktivieren | true / false |
scooter.auto-standby-seconds | Timeout für automatisches Abschließen im Stand | Sekunden (0 = aus) |
scooter.enable-horn | Hupen-Modus | true / false / in-drive |
scooter.dbc-blinker-led | DBC-Boot-LED im Takt der Blinker blinken lassen (grün einzeln, rot Warnblinker) | enabled / disabled |
scooter.horn-when-seatbox-open | Hupentaste auch bei offenem Helmfach und entsperrtem Roller zulassen (standardmäßig aus, damit die aufliegende Sitzbank nicht hupt) | true / false |
pm.hibernation-timer | Verzögerungsbasierter Hibernate-Timeout (0 = aus, Minimum 300 s — Werte 1–299 werden auf 300 s angehoben; Standard 259200 = 3 Tage) | Sekunden |
pm.default-state | Zielzustand im Leerlauf | run / suspend |
pm.scheduled-hibernate-enabled | Cron-basierten Hibernate-Zeitplan aktivieren | true / false |
pm.scheduled-hibernate-cron | 5-stelliger Cron-Ausdruck (z. B. 0 22 * * *) für geplanten Hibernate. Auslösungen sind auf eine pro 15 Minuten begrenzt. | Cron-String |
pm.scheduled-hibernate-duration | Wie lange der geplante Hibernate dauert (Aufwachen zu Auslösezeit + Dauer) | Go-Duration (z. B. 8h) |
pm.wake-timer-max-seconds | Sicherheitsobergrenze für jede hibernate-for-Wake-Timer-Anforderung (Min 60, Max 604800) | Sekunden |
pm.wake-timer-ack-timeout | Wartezeit auf nRF52-Wake-Timer-ACK, bevor der Hibernate abgebrochen wird | Go-Duration (Standard 10s) |
gps
GPS-Tracking und Positionsinformationen.
| Subbefehl | Beschreibung |
|---|---|
gps status | GPS-Zustand und aktuellen Fix anzeigen |
gps watch | GPS-Updates in Echtzeit streamen. --compact für einzeiliges Format. |
keycard
NFC-Keycard-Authentifizierung verwalten.
| Subbefehl | Beschreibung |
|---|---|
keycard list | Autorisierte Keycard-UIDs auflisten |
keycard add <uid> | Keycard zur Liste hinzufügen |
keycard remove <uid> | Keycard entfernen |
keycard add-master <uid>... | Eine oder mehrere Master-Keycards hinzufügen |
keycard remove-master <uid>... | Eine oder mehrere Master-Keycards entfernen |
keycard export <file> | Keycard-Liste in Datei exportieren |
keycard import <file> | Keycard-Liste aus Datei importieren |
UIDs gehen in jedem Hex-Format: 042A3D6A0D6580, 04:2A:3D:6A:0D:65:80 oder 04 2A 3D 6A 0D 65 80.
power
Power-Management-Befehle.
| Subbefehl | Beschreibung |
|---|---|
power status | Power-Management-Zustand anzeigen |
power run | Power-State auf „run“ setzen |
power suspend | Suspend anfordern |
power hibernate | Hibernate anfordern. --manual oder --timer, um den Modus zu wählen. |
power reboot | System neu starten |
service (Alias: svc)
Librescoot-systemd-Services inspizieren und verwalten.
| Subbefehl | Beschreibung |
|---|---|
service list | Librescoot-Services und ihren Status auflisten |
service status <name> | Detaillierten Status eines Services anzeigen |
service start <name> | Service starten |
service stop <name> | Service stoppen |
service restart <name> | Service neu starten |
service enable <name> | Service beim Boot aktivieren |
service disable <name> | Service beim Boot deaktivieren |
service logs <name> | Aktuelle Logs anzeigen. -f zum Mitverfolgen, -n <N> für Zeilenanzahl (Standard 50). |
usb
USB-Port-Modus steuern (Netzwerk vs. Mass Storage).
| Subbefehl | Beschreibung |
|---|---|
usb status | Aktuellen USB-Modus anzeigen |
usb ums | In den Updatemodus wechseln (USB-Mass-Storage) |
usb normal | Zurück in den Netzwerkmodus |
locations (Alias: loc)
Gespeicherte Orte für die Navigation verwalten.
| Subbefehl | Beschreibung |
|---|---|
locations list | Gespeicherte Orte auflisten |
locations show <id> | Details eines gespeicherten Orts anzeigen |
locations add <lat> <lon> <label> | Neuen Ort speichern |
locations edit <id> <field> <value> | Gespeicherten Ort bearbeiten |
locations delete <id> | Gespeicherten Ort löschen |
locations touch <id> | Zuletzt-Verwendet-Zeitstempel aktualisieren |
nav
Navigationszustand anzeigen und die geordnete Stoppliste bearbeiten, die der Tacho abfährt.
| Subbefehl | Beschreibung |
|---|---|
nav status | Aktueller Navigationszustand und Ziel |
nav set <lat,lon | lat lon | saved-location> | Ein einzelnes Ziel setzen |
nav clear | Navigation beenden und die Route verwerfen |
nav plan list | Aktuelle Route anzeigen |
nav plan add <lat,lon | lat lon | saved-location> | Einen Stopp an die Route anhängen |
nav plan remove <index> | Einen Stopp entfernen |
nav plan skip | Den gerade angesteuerten Stopp überspringen |
led
LED-Indikatoren steuern (für Entwicklung/Tests).
lsc led cue <index|name> # Cue-Sequenz auslösen lsc led fade <channel> <index|name> # Fade-Animation auslösen
Cue-Namen: all-off, standby-to-parked-brake-off, parked-to-drive, brake-off-to-brake-on, brake-on-to-brake-off, drive-to-parked, blink-left, blink-right, blink-both, blink-none.
Channels: headlight, front-ring, brake, blinker-front-left, blinker-front-right, number-plates, blinker-rear-left, blinker-rear-right (oder numerisch 0–7).
logs
Service-Logs und Redis-State-Snapshots als komprimiertes Bundle exportieren (praktisch für Bugreports).
lsc logs # Alle Services, letzte 24h lsc logs vehicle battery # Nur bestimmte Services lsc logs --since 1h # Nur letzte Stunde lsc logs --priority err # Nur Fehler
| Flag | Beschreibung |
|---|---|
--since <time> | Startzeit (Standard: 24h). Beispiele: 1h, 24h, 1d, "2025-10-25 10:00" |
--until <time> | Endzeit (Standard: jetzt) |
--priority <level> | Log-Level-Filter: err, warning, info, debug |
--output <dir> | Ausgabeordner (automatisch generiert, wenn nicht angegeben) |
diag
Diagnosebefehle zur Hardware-Inspektion und -Steuerung.
| Subbefehl | Beschreibung |
|---|---|
diag battery [id...] | Detaillierter Akkustatus (Ladung, Spannung, Temperatur, Gesundheit) |
diag version | Firmware-Versionen von MDB, DBC, ECU und nRF52 |
diag faults | Alle aktiven Fehler anzeigen |
diag events | Fehler-Event-Stream anzeigen (Flags siehe unten) |
diag dashboard [on|off] | DBC-Strom steuern. -f erzwingt Off während Updates. |
diag dashboard status | DBC-Ready-Zustand und -Stromversorgung anzeigen |
diag dashboard ping | Das DBC anpingen, um die Verbindung zu prüfen |
diag dashboard on-wait | DBC einschalten und warten, bis es bereit ist. -t <sec> für Timeout (Standard 60). |
diag dashboard off-wait | DBC ausschalten und warten, bis es nicht mehr erreichbar ist. -t <sec> für Timeout (Standard 60). |
diag engine [on|off] | Motorstrom steuern |
diag blinkers [off|left|right|both] | Blinkerzustand setzen |
diag horn [on|off] | Hupe steuern |
diag handlebar [lock|unlock] | Lenkschloss steuern |
Flags für diag events
| Flag | Beschreibung |
|---|---|
--since <duration> | Events ab der angegebenen Zeitspanne zurück anzeigen (z.B. 1h, 24h, 7d, 1w) |
--until <duration> | Events bis zur angegebenen Zeitspanne zurück anzeigen |
-n, --lines <N> | Maximale Anzahl Events (Standard 50) |
-r, --reverse | Neueste Events zuerst |
-f, --follow | Events in Echtzeit mitverfolgen (wie tail -f) |
--filter <regex> | Events per Regex filtern |
Abkürzungen
Häufige Befehle gibt es als Top-Level-Abkürzungen:
| Abkürzung | Entspricht |
|---|---|
lsc lock | lsc vehicle lock |
lsc unlock | lsc vehicle unlock |
lsc open | lsc vehicle open |
lsc get <key> | lsc settings get <key> |
lsc set <key> <val> | lsc settings set <key> <val> |
lsc del <key> | lsc settings del <key> |
lsc battery / bat | lsc diag battery |
lsc version / ver | lsc diag version |
lsc faults | lsc diag faults |
lsc events | lsc diag events |
lsc dashboard / dbc / dash | lsc diag dashboard |
lsc engine | lsc diag engine |
lsc blinkers / blink | lsc diag blinkers |
CLI für Anbieter-Anmeldung
Auf dem MDB ist auch die separate Administrations-CLI connect enthalten. Sie startet nicht automatisch und aktiviert keine Berichterstattung. Führe die Befehle mit einem kompatiblen installierten Client ausdrücklich aus:
connect register connect code connect wait connect status
Wähle mit Code oder Anmeldelink einen Anbieter und bestätige die Verbindung. Mit connect wait schließt du die Anmeldung ab. Bestehende Eigentümerschaft und Zugangsdaten beim Anbieter bleiben erhalten. Eine bereits funktionierende Sunshine-Verbindung benötigt keine erneute Anmeldung. Der Roller benötigt HTTPS-Zugang zur Vermittlung und zum Anbieter sowie Zugang zum MQTT-Endpunkt des Anbieters mit geprüfter TLS-Verbindung. Die Erreichbarkeit hängt von Netzwerk und APN ab. Details stehen im Anmeldeprotokoll.
Globale Flags
--json Ausgabe als JSON (für Skripte) --redis-addr Redis-Serveradresse (Standard: 192.168.7.1:6379) -v, --verbose Ausführliches Logging
Quellcode
Event-Service-Regeln
ext
Event-Service-Regeln über die RPC-Schnittstelle des event-service am gewählten Redis-Endpunkt verwalten. Die Regeln liegen im Dienst: Es gibt keinen lokalen Datei-Rückfallweg, und die CLI startet den Dienst nicht selbst neu. Eine Änderung greift nach dem nächsten ausdrücklichen Neustart; ext show zeigt die aktuelle Revision und ob ein Neustart aussteht.
| Subbefehl | Beschreibung |
|---|---|
ext list | Gewünschte und geladene Regeln auflisten |
ext show <name> | Zusammenfassung, Definition, Revision und Neustart-Status einer Regel |
ext add <name> --on topic --do redis --list key --push value | Eine einstufige Regel hinzufügen |
ext enable <name> / ext disable <name> | Eine Regel aktivieren oder deaktivieren |
ext test <name> --event JSON | Bedingungen und Aktionen probeweise auswerten; führt nichts aus und veröffentlicht nichts |
ext status | Live-Worker, Warteschlange und Zähler vom Dienst abfragen |
ext tail [topic-glob] | ev:-Ereignisse mitverfolgen (exaktes Topic, * oder prefix.*) |
Winterschlaf und Web-Oberfläche
lsc hibernate und lsc hibernate-for 8h koordinieren im Parkmodus das Herunterfahren und beginnen in Standby direkt mit der Vorbereitung. Andere Fahrzeugzustände lehnen die Anfrage ab, ohne sie für später vorzumerken. Der relative Zeitraum braucht keine synchronisierte Uhr. lsd bietet zusätzlich eine Web-Oberfläche.