CommunitySchreiben & Editierengithub.com

KoBa-beep/ClaudeCode-Skill

Lua-Szenen für das Fibaro Home Center 3 / Yubii Home (HC3, Firmware 5.x) schreiben und debuggen – Deklarationen (Trigger und Bedingungen – Gerät, Cron, Sonnenaufgang/-untergang, globale Variablen, benutzerdefinierte Ereignisse, Central-Scene-Buttons), Aktionscode, sourceTrigger, Szenenvariablen, Neustartoption und die Wahl zwischen Szene und QuickApp.

Was ist ClaudeCode-Skill?

Dieses Skill unterstützt Entwickler und fortgeschrittene Benutzer beim Erstellen und Debuggen von Lua-basierten Szenen für das Fibaro Home Center 3 (HC3) bzw. Yubii Home mit Firmware 5.x. Es deckt alle Aspekte der Szenenprogrammierung ab: von der Definition von Triggern und Bedingungen (Geräte, Cron, Sonnenaufgang/-untergang, globale Variablen, benutzerdefinierte Ereignisse, Central-Scene-Buttons) bis hin zur Implementierung des Aktionscodes, der Verwendung von sourceTrigger und Szenenvariablen sowie der Konfiguration der Neustartoption. Zudem hilft das Skill bei der Entscheidung, ob eine Szene oder eine QuickApp die richtige Wahl ist, und bietet detaillierte Anleitungen zur Fehlerbehebung, wenn eine Szene nicht wie erwartet funktioniert. Es erklärt häufige Fallstricke (z. B. fehlender Speicher zwischen Läufen, Unterschiede bei Wertetypen) und liefert vollständige, einsatzbereite Codeblöcke mit Platzhaltern für Geräte-IDs, die der Benutzer durch seine tatsächlichen IDs ersetzen kann. Das Skill ist für die Verwendung mit Claude Code, Cursor, Codex und anderen KI-gestützten Entwicklungswerkzeugen optimiert.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/KoBa-beep/ClaudeCode-Skill/tree/HEAD/fibaro-hc3/hc3-lua-scenes

Installed? Explore more Schreiben & Editieren skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

HC3 Lua-Szenen

Antworten in der Sprache des Benutzers; Bezeichner auf Englisch lassen. Anfängern erklären, wo sie klicken müssen.

Szene oder QuickApp?

BedarfSzeneQuickApp
Auf ein Ereignis reagieren (Taster, Tür, Zeit, Variable) mit wenigen Aktionen✅schwerfälliger
Zustand im Speicher halten, dauerhaft laufen, mit einem Gerät kommunizieren (HTTP, TCP, MQTT)❌ startet jedes Mal von Null✅
Buttons / Beschriftungen in der Benutzeroberfläche❌✅
Faustregel: QuickApps sind die Treiber, Szenen verketten Aktionen durch Aufrufe von QA-Methoden
(fibaro.call(qaId, "setMode", "Away")). Für QuickApps das Skill hc3-quickapp verwenden.

Zwei Teile

  1. Deklarationen (Bedingungen / Trigger): eine Lua Tabelle, kein Code – wann die Szene startet.
  2. Aktionen: Lua-Code, der bei jedem Start ausgeführt wird. Tipp für Benutzer: Die Szene im Blockmodus erstellen, dann „In Lua konvertieren“: Der HC3 schreibt die exakten Deklarationen (Eigenschaftsnamen, Wochentagsnummern). Die Konvertierung ist unidirektional.

Deklarationen

{
  operator = "all",               -- "all" (UND) | "any" (ODER); Gruppen können verschachtelt werden
  conditions = {
    { type = "device", id = 201, property = "value", operator = "==", value = true, isTrigger = true },
    { type = "date", property = "cron", operator = "match", value = {"*", "*", "*", "*", "*", "*"}, isTrigger = false },
  }
}
  • isTrigger = true: eine Änderung dieser Bedingung startet die Szene (dann werden alle Bedingungen ausgewertet); false: dient nur als Filter. Mindestens ein Trigger ist erforderlich, sonst startet die Szene nie von selbst.
  • Operatoren: ==, !=, >, >=, <, <=, anyValue (jede Änderung), match (Daten).
  • duration = 60 in einer Gerätebedingung: muss 60 s lang wahr bleiben [V] (sichtbar in konvertierten Blockszenen). Bedingungstypen und Beispiele: references/declarations.md (Gerät, Central-Scene-Button, Cron, Sonnenaufgang/-untergang, globale Variable, benutzerdefiniertes Ereignis, Alarm, Ort, Wetter, HC3-Start).

Aktionen

fibaro.debug("MyScene", json.encode(sourceTrigger))      -- erste Zeile während der Entwicklung: sehen, was gestartet hat
if sourceTrigger.type == "device" then                    -- .id, .property, .value
elseif sourceTrigger.type == "date" then
elseif sourceTrigger.type == "user" then                  -- manuell gestartet (Run-Button, App)
end

Funktionen: fibaro.call, fibaro.getValue, fibaro.get (Wert + Zeitstempel), fibaro.getGlobalVariable / setGlobalVariable (Zeichenketten), fibaro.getSceneVariable / setSceneVariable (zwischen Läufen derselben Szene erhalten bleiben), fibaro.alert, fibaro.emitCustomEvent, fibaro.scene("execute"|"kill", {ids}), fibaro.profile, fibaro.alarm, fibaro.setTimeout(ms, fn), api.*, net.HTTPClient, json. Logs benötigen ein Tag: fibaro.debug("Tag", "msg"). Benachrichtigungen: gleiche Regeln wie QuickApps (Benutzer vs. Telefon-IDs, keine kritischen Pushs) – siehe das Skill hc3-quickapp, references/notifications.md.

Fallstricke (vor dem Antworten auf „Meine Szene funktioniert nicht“ lesen)

  1. Kein Speicher zwischen Läufen → Szenenvariablen oder globale Variablen.
  2. „Neustart einer laufenden Szene erlauben“-Option: Ja = ein neuer Trigger beendet die laufende Instanz (ausstehende setTimeout gehen verloren) und startet neu – richtig für „Licht 5 min nach der letzten Bewegung aus“; Nein = Trigger werden ignoriert, während sie läuft (auch während ein setTimeout wartet).
  3. Der manuelle Modus ignoriert Deklarationen.
  4. Trigger feuern nur bei Änderungen: derselbe Wert erneut → nichts.
  5. Wertetypen: Schalter true/false, Dimmer / Rollladen 0–99, Sensornummer; globale Variablen sind immer Zeichenketten (== "1", nicht == 1); in Deklarationen value = true ohne Anführungszeichen schreiben.
  6. Eine Szene, die ihr eigenes Trigger-Gerät ändert, kann sich aufschaukeln: mit sourceTrigger filtern.
  7. Nur Geräte-Eigenschaften lösen Szenen aus; eine interne Variable einer QuickApp nicht (eine globale Variable schon, und QA-Eigenschaftsaktualisierungen wie value tun es).
  8. while true / langes fibaro.sleep vermeiden: Trigger, setTimeout oder eine QuickApp verwenden.
  9. Die Wochennummerierung in Cron und manche Eigenschaftsnamen variieren: eine konvertierte Blockszene prüfen [V].

Liefergegenstand

Deklarationsblock + Aktionsblock (getrennt, bereit zum Einfügen), die einzustellenden Szenenoptionen (Neustart ja/nein, Automatikmodus, Raum), die zu ersetzenden IDs (ID_TUERKONTAKT…) oder echte IDs aus dem Gerätebestand des Benutzers sowie eine Testprozedur („Tür öffnen, die Konsole der Szene zeigt …“). Ausgearbeitete Beispiele: references/examples.md.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Verwandte Skills