kumiki

Widget-Werkstatt.

Baue eine Seite für deinen Kumiki. Schreibe eigene Programme in Lua oder gestalte eine einfache Seite mit JSON. Lade das Ergebnis als ZIP direkt auf dein Gerät.

Vorschau

Gerätedesign simulieren

Vorlage wird geladen …

Lizenz für eigene InhalteFür übernommene Vorlagenteile wird der MIT-Hinweis mitgeliefert.

Auf den Kumiki laden

Du brauchst Kumiki-Firmware ab 0.9.0 für Lua. Öffne im selben WLAN die Geräteadresse, die Kumiki anzeigt. Unter Widgets lädst du die ZIP-Datei hoch. Öffne bei Lua-Widgets Einstellungen, wähle Ort oder Zugangsdaten, erteile die gewünschten Freigaben und schalte das Widget ein. Wische auf dem Display vertikal über die eingebauten Seiten hinaus, um das Widget zu öffnen. Zum Ein- und Ausschalten halte das Display etwa eine Sekunde gedrückt und tippe auf Widgets.

Offline-Dev-Kit ↓

Widgets entwickeln

Mit Lua anfangen

Wähle „Wetter nach Ort“. In main.lua stehen Funktionen, Schleifen und API-Aufrufe. Das Manifest legt fest, welche Einstellungen die lokale Geräte-Webseite anbietet und welche Hosts oder Audiozugriffe der Nutzer freigeben kann. Geheimnisse gibst du erst auf deinem Gerät ein.

function on_button(i)
  if i == 1 then kumiki.show("Hallo vom ESP32!") end
end

Ein aktiviertes Programm läuft auch bei geschlossenem Browser und auf anderen Bildschirmseiten. Lua-API und Beispiele ansehen · Offline-Dev-Kit.

Das erste eigene JSON-Widget

Wähle „Trinkpause“. Gib ihm eine eigene id, z. B. mira.leseseiten, ändere den Namen und setze im ersten Button value auf 5. Bei jedem Tipp zählt dein Widget fünf Seiten weiter. Mit derselben ID ersetzt ein späterer Upload die bestehende Version. JSON-Widgets starten aktiviert.

Helles und dunkles Gerätedesign

Ohne Angabe im Manifest bleibt die Widget-Seite dunkel, auch wenn der Besitzer für Kumiki „Hell“ wählt. Mit "theme": "system" übernimmt dein Widget ab Firmware 0.11.0 das Gerätedesign. Hintergrund, Text, Kalender, Diagramm und Buttons passen sich automatisch an.

"theme": "system",
"accent": "#99DECA",
"lightAccent": "#17684F"

lightAccent ist optional und setzt die Akzentfarbe des hellen Designs. Ohne diese Angabe verwendet das Gerät accent für beide Designs und passt die Farbe für lesbaren Kontrast an. Wechsle über der Vorschau zwischen „Dunkel“ und „Hell“, um beides zu testen.

Die Vorlagen Trinkpause (JSON) und Displaydesign (Lua) folgen dem Gerätedesign. Lua erhält den aktuellen Modus über kumiki.theme() und Änderungen über on_theme(mode). Lua-Beispiel ansehen

Anzeige und Aktionen

Deklarative Seiten verwenden schema: 1. Lua-Programme verwenden schema: 2, entry: "main.lua" und display: {"source":"script"}. Pflichtfelder sind id, name, version und display. Die Akzentfarbe accent ist ein Hexwert wie #99DECA. subtitle erscheint unter der Anzeige.

counter
Zählt ab initial (Standard 0). add addiert, set setzt einen Wert, reset stellt den Startwert wieder her. Bei add und set ist value eine ganze Zahl.
stopwatch
toggle startet und pausiert die Messung, reset setzt sie zurück.
calendar
Zeigt den ganzen Monat mit Wochenbeginn am Montag. Mit prevMonth und nextMonth blätterst du, thisMonth springt zum aktuellen Monat.
time / date
Zeigt Uhrzeit oder Datum in der eingestellten Zeitzone. Das Gerät braucht zunächst eine synchronisierte Uhr.
text
Zeigt den Inhalt von display.text.
flow
Definiere in display.steps bis zu sechs eigene Schritte. Jeder Schritt enthält text. Seine optionalen next-Buttons springen mit to zu einem anderen Schritt, beginnend bei 0. Die Vorlage „Bewegungspause“ zeigt den ganzen Ablauf.
ZIP-Format, Größen und Updates

Der Editor erstellt eine direkt installierbare ZIP. Für eigene Werkzeuge liegen widget.json und optional README.md und LICENSE.txt im Stammverzeichnis. Für JSON-Seiten sind bis zu 16 KiB ZIP und 2 KiB Manifest möglich. Ein Code-Widget enthält zusätzlich main.lua (bis 12 KiB). Hier sind bis zu 32 KiB ZIP und 4 KiB Manifest möglich. Die optionalen Dateien dürfen je 4 KiB umfassen. Unterstützt sind gespeicherte und Deflate-komprimierte ZIPs ohne Daten-Deskriptor. Acht Widgets passen gleichzeitig auf ein Gerät.

Die ID beginnt mit einem Kleinbuchstaben. Erlaubt sind bis zu 40 Zeichen aus a–z, 0–9, Bindestrich und Punkt. Versionen haben die Form 1.0.0. Bei unverändertem JSON-Paket bleiben Einstellungen erhalten. Bei geändertem Lua-Code oder Manifest überprüfst du die Freigaben erneut und hinterlegst Tokens wieder. Eine neue ID erzeugt eine weitere Seite. Die Installation und Aktivierung überleben Neustarts. Laufende Messungen, Zähler und der aktuelle Ablaufschritt beginnen nach Neustart oder Austausch des Widgets von vorn.

Ohne Browser entwickeln

Entpacke das Offline-Dev-Kit, kopiere einen Beispielordner und bearbeite seine widget.json. Mit Node.js 18 oder neuer genügt node pack.mjs mein-widget mein-widget.zip. Der Packer prüft das Manifest. Eine vollständige Feldreferenz und einsatzbereite Beispiele liegen dem Kit bei.

Eigene Widgets teilen

Du kannst selbst geschriebene Widgets als ZIP weitergeben und ihnen eine eigene Lizenz geben. Für die Beispielvorlagen gilt die mitgelieferte MIT-Lizenz. Die Geräte-Firmware und die Druckmodelle haben eigene Lizenzbedingungen.