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.

Zugriff
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)
FlagBeschreibung
--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.

FlagBeschreibung
--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.

SubbefehlBeschreibung
vehicle lockRoller abschließen (Wechsel in stand-by)
vehicle unlockRoller aufsperren (Wechsel in parked/ready)
vehicle hibernateKoordinierten Winterschlaf aus Parkmodus oder Standby anfordern
vehicle force-lockstand-by erzwingen, ohne auf physische Schlösser zu warten
vehicle openHelmfach-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.

SubbefehlBeschreibung
alarm statusAlarmstatus und -einstellungen anzeigen
alarm armAlarm aktivieren; schärft sich, sobald das Fahrzeug in stand-by geht. --no-block, um die Bestätigung zu überspringen.
alarm disarmAlarm bis zur erneuten Aktivierung deaktivieren. --no-block überspringt die Bestätigung.
alarm silenceVorü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.

SubbefehlBeschreibung
ota statusUpdate-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).

SubbefehlBeschreibung
settings listAlle 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:

KeyBeschreibungWerte
Alarm
alarm.enabledAlarmanlage an-/ausschaltentrue / false
alarm.honkHupe während des Alarms aktivierentrue / false
alarm.durationAlarmdauerSekunden
alarm.seatbox-triggerAlarm auslösen, wenn unautorisiert das Helmfach geöffnet wirdtrue / false
alarm.hairtriggerKurzer Sofort-Alarm bei erster Bewegungtrue / false
alarm.hairtrigger-durationDauer des Hair-Trigger-AlarmsSekunden
OTA-Updates
updates.mdb.methodUpdate-Methode für das MDBdelta / full
updates.mdb.channelRelease-Kanal für das MDBstable / testing / nightly
updates.mdb.check-intervalAbstand zwischen Update-Prüfungen für das MDBStunden (0 = aus)
updates.dbc.methodUpdate-Methode für das DBCdelta / full
updates.dbc.channelRelease-Kanal für das DBCstable / testing / nightly
updates.dbc.check-intervalAbstand zwischen Update-Prüfungen für das DBCStunden (0 = aus)
Dashboard
dashboard.themeUI-Themelight / dark / auto
dashboard.backlight-modeDisplay-Helligkeit (auto = Umgebungslichtsensor)auto / low / medium / high
dashboard.modeStandard-Bildschirmmodusspeedometer / navigation / debug
dashboard.show-raw-speedUnkorrigierte Rohgeschwindigkeit der ECU anzeigentrue / false
dashboard.show-clockUhr-Format in der Statusleiste. always zeigt nur die Uhrzeit und behält seinen alten Namenalways / date-time / alternate / never
dashboard.show-gpsGPS-Indikator-Sichtbarkeitalways / active-or-error / error / never
dashboard.show-bluetoothBluetooth-Indikator-Sichtbarkeitalways / active-or-error / error / never
dashboard.show-cloudCloud-Indikator-Sichtbarkeitalways / active-or-error / error / never
dashboard.show-internetInternet-Indikator-Sichtbarkeitalways / active-or-error / error / never
dashboard.show-temperatureSichtbarkeit der Außentemperatur-Anzeige (warning = nur im Frostbereich, erscheint unter 5 °C und verschwindet ab 7 °C)always / warning / never
dashboard.show-aux-batterySichtbarkeit des 12-V-Akku-Symbols (warning = nur unter 11700 mV)always / warning / never
dashboard.show-cb-batterySichtbarkeit des CBB-Ladesymbols (warning = nur unter 50 % Ladung)always / warning / never
dashboard.battery-display-modeAkkuanzeige-Moduspercentage / range / icon
dashboard.power-display-modeLeistungsanzeige-Einheitkw / amps
dashboard.map.typeKachelquelleonline / offline
dashboard.map.render-modeKarten-Rendering-Modusvector / raster
dashboard.map.view-modeKartenkamera: 3D mit gekippter Perspektive oder 2D als flache Draufsicht3d / 2d
dashboard.map.north-orientedIn 2D die Karte nach Norden ausrichten statt nach der Fahrtrichtungtrue / false
dashboard.map.traffic-overlayVerkehrslage auf der Karte einblenden (erfordert Online-Kacheln)true / false
dashboard.maps.check-for-updatesNach Karten-Updates suchen (höchstens wöchentlich, sobald das Modem verbunden ist)true / false
dashboard.maps.auto-downloadKarten-Updates automatisch laden (verbraucht Mobilfunkdaten)true / false
dashboard.valhalla-urlEndpunkt des Valhalla-Routing-ServiceURL
dashboard.route-preferenceRouten-Gewichtung. „Kürzeste“ rechnet nach reiner Distanz und ignoriert alle anderen Vorgaben, auch das Meiden von Kopfsteinpflasterfastest / shortest
dashboard.avoid-cobblestoneUmwegbudget, 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 kennzeichnenoff / low / medium / high
dashboard.blinker-styleDarstellungsstil für den Blinker-Indikatoricon / overlay
dashboard.milestones.modeMeilensteine bei 10 km und danach alle 100 km, optional mit einmaligen Easter Eggs (standardmäßig aus)off / regular / all
dashboard.milestones.presentationKurzer Hinweis, optional Ticket und Konfetti beim Parkennotice / banner / banner-and-confetti
dashboard.languageSprache des Dashboard-UISprachcode
Motor
engine-ecu.boostMotor-Boost-Modus aktivierentrue / false
engine-ecu.kersRekuperation (KERS)enabled / disabled
engine-ecu.kers-powerKERS-RegenerationsstromAmpere
Sonstiges
cellular.apnAPN-String für Mobilfunkstring
scooter.battery-keep-active-on-seatbox-openLaufenden Akku beim Öffnen des Helmfachs aktiv lassen, statt ihn zu deaktivierentrue / false
scooter.dual-batteryZweitbatterie-Modus aktivierentrue / false
scooter.auto-standby-secondsTimeout für automatisches Abschließen im StandSekunden (0 = aus)
scooter.enable-hornHupen-Modustrue / false / in-drive
scooter.dbc-blinker-ledDBC-Boot-LED im Takt der Blinker blinken lassen (grün einzeln, rot Warnblinker)enabled / disabled
scooter.horn-when-seatbox-openHupentaste auch bei offenem Helmfach und entsperrtem Roller zulassen (standardmäßig aus, damit die aufliegende Sitzbank nicht hupt)true / false
pm.hibernation-timerVerzögerungsbasierter Hibernate-Timeout (0 = aus, Minimum 300 s — Werte 1–299 werden auf 300 s angehoben; Standard 259200 = 3 Tage)Sekunden
pm.default-stateZielzustand im Leerlaufrun / suspend
pm.scheduled-hibernate-enabledCron-basierten Hibernate-Zeitplan aktivierentrue / false
pm.scheduled-hibernate-cron5-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-durationWie lange der geplante Hibernate dauert (Aufwachen zu Auslösezeit + Dauer)Go-Duration (z. B. 8h)
pm.wake-timer-max-secondsSicherheitsobergrenze für jede hibernate-for-Wake-Timer-Anforderung (Min 60, Max 604800)Sekunden
pm.wake-timer-ack-timeoutWartezeit auf nRF52-Wake-Timer-ACK, bevor der Hibernate abgebrochen wirdGo-Duration (Standard 10s)

gps

GPS-Tracking und Positionsinformationen.

SubbefehlBeschreibung
gps statusGPS-Zustand und aktuellen Fix anzeigen
gps watchGPS-Updates in Echtzeit streamen. --compact für einzeiliges Format.

keycard

NFC-Keycard-Authentifizierung verwalten.

SubbefehlBeschreibung
keycard listAutorisierte 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.

SubbefehlBeschreibung
power statusPower-Management-Zustand anzeigen
power runPower-State auf „run“ setzen
power suspendSuspend anfordern
power hibernateHibernate anfordern. --manual oder --timer, um den Modus zu wählen.
power rebootSystem neu starten

service (Alias: svc)

Librescoot-systemd-Services inspizieren und verwalten.

SubbefehlBeschreibung
service listLibrescoot-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).

SubbefehlBeschreibung
usb statusAktuellen USB-Modus anzeigen
usb umsIn den Updatemodus wechseln (USB-Mass-Storage)
usb normalZurück in den Netzwerkmodus

locations (Alias: loc)

Gespeicherte Orte für die Navigation verwalten.

SubbefehlBeschreibung
locations listGespeicherte 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.

SubbefehlBeschreibung
nav statusAktueller Navigationszustand und Ziel
nav set <lat,lon | lat lon | saved-location>Ein einzelnes Ziel setzen
nav clearNavigation beenden und die Route verwerfen
nav plan listAktuelle 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 skipDen 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
FlagBeschreibung
--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.

SubbefehlBeschreibung
diag battery [id...]Detaillierter Akkustatus (Ladung, Spannung, Temperatur, Gesundheit)
diag versionFirmware-Versionen von MDB, DBC, ECU und nRF52
diag faultsAlle aktiven Fehler anzeigen
diag eventsFehler-Event-Stream anzeigen (Flags siehe unten)
diag dashboard [on|off]DBC-Strom steuern. -f erzwingt Off während Updates.
diag dashboard statusDBC-Ready-Zustand und -Stromversorgung anzeigen
diag dashboard pingDas DBC anpingen, um die Verbindung zu prüfen
diag dashboard on-waitDBC einschalten und warten, bis es bereit ist. -t <sec> für Timeout (Standard 60).
diag dashboard off-waitDBC 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

FlagBeschreibung
--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, --reverseNeueste Events zuerst
-f, --followEvents 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ürzungEntspricht
lsc locklsc vehicle lock
lsc unlocklsc vehicle unlock
lsc openlsc 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 / batlsc diag battery
lsc version / verlsc diag version
lsc faultslsc diag faults
lsc eventslsc diag events
lsc dashboard / dbc / dashlsc diag dashboard
lsc enginelsc diag engine
lsc blinkers / blinklsc 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

github.com/librescoot/lsc →

← Services Mitmachen →

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.

SubbefehlBeschreibung
ext listGewü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 valueEine einstufige Regel hinzufügen
ext enable <name> / ext disable <name>Eine Regel aktivieren oder deaktivieren
ext test <name> --event JSONBedingungen und Aktionen probeweise auswerten; führt nichts aus und veröffentlicht nichts
ext statusLive-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.