CommunityRédaction et éditiongithub.com

KoBa-beep/ClaudeCode-Skill

Écrire et déboguer des scènes Lua pour le Fibaro Home Center 3 / Yubii Home (HC3, firmware 5.x) — déclarations (déclencheurs et conditions : appareil, cron, lever/coucher du soleil, variables globales, événements personnalisés, boutons de scène centrale), code d'actions, sourceTrigger, variables de scène, option de redémarrage, et le choix entre une scène et une QuickApp.

Qu'est-ce que ClaudeCode-Skill ?

Cette compétence est conçue pour les utilisateurs du Fibaro Home Center 3 / Yubii Home (HC3, firmware 5.x) qui souhaitent créer, déboguer ou convertir des automatismes en Lua. Elle couvre l'ensemble du processus : la partie déclarations (conditions et déclencheurs sous forme de table Lua) et la partie actions (code Lua exécuté à chaque déclenchement). L'utilisateur peut décider si son besoin correspond à une scène (réaction à un événement avec quelques actions) ou à une QuickApp (programme permanent avec mémoire et capacités réseau). La compétence explique les pièges courants (absence de mémoire entre exécutions, option de redémarrage, types de valeurs, boucles involontaires) et fournit des références détaillées pour les types de conditions (appareil, bouton de scène centrale, cron, lever/coucher du soleil, variable globale, événement personnalisé, alarme, localisation, météo, démarrage HC3). Elle est compatible avec les agents comme Claude Code, Cursor ou Codex, et répond dans la langue de l'utilisateur tout en conservant les identifiants en anglais.

Compatible avec✓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 Rédaction et édition skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Scènes Lua HC3

Répondez dans la langue de l'utilisateur ; conservez les identifiants en anglais. Expliquez aux débutants où cliquer.

Scène ou QuickApp ?

BesoinScèneQuickApp
Réagir à un événement (bouton, porte, heure, variable) avec quelques actions✅plus lourde
Garder un état en mémoire, fonctionner en permanence, communiquer avec un appareil (HTTP, TCP, MQTT)❌ démarre de zéro à chaque exécution✅
Boutons / libellés dans l'interface utilisateur❌✅
Règle empirique : les QuickApps sont les pilotes, les scènes enchaînent des actions en appelant des méthodes QA
(fibaro.call(qaId, "setMode", "Away")). Pour les QuickApps, utilisez la compétence hc3-quickapp.

Deux parties

  1. Déclarations (conditions / déclencheurs) : une table Lua, pas de code — quand la scène démarre.
  2. Actions : code Lua exécuté à chaque démarrage. Astuce pour les utilisateurs : construisez la scène en mode blocs, puis « Convertir en Lua » : le HC3 écrit les déclarations exactes (noms de propriétés, numéros de jours de la semaine). La conversion est à sens unique.

Déclarations

{
  operator = "all",               -- "all" (ET) | "any" (OU) ; les groupes peuvent être imbriqués
  conditions = {
    { type = "device", id = 201, property = "value", operator = "==", value = true, isTrigger = true },
    { type = "date", property = "cron", operator = "match", value = {"*", "*", "*", "*", "*", "*"}, isTrigger = false },
  }
}
  • isTrigger = true : un changement de cette condition démarre la scène (ensuite toutes les conditions sont évaluées) ; false : filtre uniquement. Au moins un déclencheur est nécessaire, sinon la scène ne démarre jamais d'elle-même.
  • Opérateurs : ==, !=, >, >=, <, <=, anyValue (tout changement), match (dates).
  • duration = 60 dans une condition d'appareil : doit rester vraie pendant 60 s [V] (visible dans les scènes de blocs converties). Types de conditions et exemples : references/declarations.md (appareil, bouton de scène centrale, cron, lever/coucher du soleil, variable globale, événement personnalisé, alarme, localisation, météo, démarrage HC3).

Actions

fibaro.debug("MaScene", json.encode(sourceTrigger))      -- première ligne pendant le développement : voir ce qui a déclenché
if sourceTrigger.type == "device" then                    -- .id, .property, .value
elseif sourceTrigger.type == "date" then
elseif sourceTrigger.type == "user" then                  -- démarrée manuellement (bouton Exécuter, application)
end

Fonctions : fibaro.call, fibaro.getValue, fibaro.get (valeur + horodatage), fibaro.getGlobalVariable / setGlobalVariable (chaînes), fibaro.getSceneVariable / setSceneVariable (persister entre les exécutions de la même scène), fibaro.alert, fibaro.emitCustomEvent, fibaro.scene("execute"|"kill", {ids}), fibaro.profile, fibaro.alarm, fibaro.setTimeout(ms, fn), api.*, net.HTTPClient, json. Les logs nécessitent une balise : fibaro.debug("Balise", "msg"). Notifications : mêmes règles que les QuickApps (utilisateurs vs IDs de téléphone, pas de push critique) — voir la compétence hc3-quickapp, references/notifications.md.

Pièges (lire avant de répondre « ma scène ne fonctionne pas »)

  1. Pas de mémoire entre les exécutions → variables de scène ou variables globales.
  2. Option « Autoriser le redémarrage d'une scène en cours » : Oui = un nouveau déclencheur tue l'instance en cours (les setTimeout en attente sont perdus) et redémarre — adapté pour « éteindre la lumière 5 min après le dernier mouvement » ; Non = les déclencheurs sont ignorés pendant son exécution (y compris pendant l'attente d'un setTimeout).
  3. Le mode manuel ignore les déclarations.
  4. Les déclencheurs se déclenchent uniquement sur les changements : une même valeur à nouveau → rien.
  5. Types de valeurs : interrupteur true/false, variateur / volet 0–99, nombre de capteur ; les variables globales sont toujours des chaînes (== "1", pas == 1) ; dans les déclarations, écrivez value = true sans guillemets.
  6. Une scène qui modifie son propre appareil déclencheur peut boucler : filtrez avec sourceTrigger.
  7. Seules les propriétés d'appareil déclenchent les scènes ; une variable interne d'une QuickApp ne le fait pas (une variable globale le fait, et les mises à jour de propriété QA comme value le font).
  8. Évitez while true / fibaro.sleep long : utilisez des déclencheurs, setTimeout, ou une QuickApp.
  9. La numérotation des jours de la semaine dans cron et certains noms de propriétés varient : vérifiez une scène de blocs convertie [V].

Livrable

Bloc déclarations + bloc actions (séparément, prêts à coller), les options de scène à définir (redémarrage oui/non, mode automatique, pièce), les IDs à remplacer (ID_DOOR_SENSOR…) ou les IDs réels de l'inventaire de l'utilisateur, et une procédure de test (« ouvrez la porte, la console de la scène affiche … »). Exemples concrets : references/examples.md.

Individual skills in this repo

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

Skills associés