Icônes d'appareils HC3
Répondez dans la langue de l'utilisateur. Générez les icônes avec scripts/icon_kit.py (Python, pip install cairosvg pillow) :
il contient les aides de style (dégradés, ombre douce, badge, ~35 glyphes de badge), un exemple de dessin d'appareil (fenêtre de toit avec volet roulant, 11 positions) et le générateur d'aperçu.
Style (ce qui rend ces icônes adaptées à l'interface HC3)
- Dessin réaliste du périphérique réel (forme, couleurs, matériaux, angle de vue). Demandez à l'utilisateur une photo du modèle exact et reproduisez-la ; ne tracez jamais une photo et ne copiez pas un logo de fabricant / marque déposée (cela permet aussi de partager les icônes). Si l'utilisateur souhaite explicitement un logo de marque pour un usage privé, conservez cette icône hors de toute publication.
- Fond transparent, un fichier par état — pas de variantes claires / sombres. Pour rester lisible sur les deux thèmes, donnez aux appareils sombres un bord clair (
stroke="#FFFFFF"1–2 px ou un biseau plus clair) et ne peignez jamais de plaque de fond. - Petit badge rond, en bas à droite (centre 100,100, rayon ~22, anneau blanc) : l'état (vert allumé, gris inactif / éteint, rouge alarme, orange avertissement, bleu ouvert / niveau, violet automatique…) ou la quantité mesurée (thermomètre, goutte, CO₂, vent…). Le dessin de l'appareil garde ce coin libre.
- 128 × 128 viewBox, dessin dans ~10–118 px, ombre elliptique douce sous les appareils au sol.
- Vérifiez l'aperçu (
preview.png: chaque icône une fois sur un fond diagonal clair / sombre) avant de livrer.
Combien d'images par appareil (règles HC3)
| Type d'appareil | Images dans un jeu d'icônes | Champs de téléversement |
|---|---|---|
| Binaire (switch, binarySensor, door/window, motion, smoke…) | 2 : inactif / actif | icon0, icon100 |
| Multiniveau (dimmer, roller shutter, valve level) | 11 : 0, 10 … 100 | icon0 … icon100 |
| deviceController, la plupart des parents QuickApp, multilevelSensor / température… | 1 | icon0 |
Un type à une image ne peut pas changer son image tout seul. Pour une icône QA dépendante de l'état (OK / avertissement / alarme, ou un mode), téléversez un jeu par état et basculez depuis Lua : self:updateProperty("deviceIcon", tonumber(self:optionalVariable("iconAlarm"))) (ids collés dans des variables ; motif dans la compétence hc3-quickapp, references/patterns.md §5). | ||
| Faites une icône par état utile et des icônes pour chaque appareil qu'un QuickApp crée (parent et enfants). |
Flux de travail
- Listez les appareils (parent, chaque enfant, chaque sous-périphérique Z-Wave) et leur
typeexact (api.get("/devices/<id>"), par ex.com.fibaro.FGR224pour un module de volet roulant Fibaro,com.fibaro.rollerShutterpour un enfant QA). - Demandez des photos des modèles réels ; convenez des états et de la signification des badges.
- Copiez
scripts/icon_kit.py, écrivez une fonction de dessin par appareil (fragment SVG dans la boîte 128, voirroof_window(pct)), ajoutez des lignes(name, title, body)àICONS— une par état — et exécutezpython3 icon_kit.py --out icons/. Nommage :<appareil>-<état>(shutter-000…shutter-100,boiler-on,boiler-off), afin qu'un tableau README puisse indiquer quelle icône va où. - Montrez
preview.png; itérez sur les remarques de l'utilisateur (forme, couleur, clarté du badge de type emoji). - Téléversez : listez les jeux dans la section
iconsduqa.jsondu QA et laissezbuild_fqa.py(compétencehc3-packaging) générer<qa>-icons.sh, ou téléversez manuellement : Paramètres → Périphériques → appareil → icône → Ajouter.
API de téléversement (observée sur 5.2xx)
POST /api/icons, multipart/form-data : type=device, deviceTemplate=<type d'appareil exact>, un fichier par état (icon0, icon100 ou icon0…icon100), fileExtension=png (svg accepté). Réponse 201 {"id": 1055, "iconSetName": "User1055", "fileExtension": "png"}. Appliquez : PUT /api/devices/<id> {"properties": {"deviceIcon": 1055}} (depuis l'extérieur — jamais sur l'id propre d'un QA depuis l'intérieur du QA, cela le redémarre ; utilisez self:updateProperty). Supprimez : DELETE /api/icons?id=&type=device&name=&fileExtension=png. Les ids d'icônes utilisateur commencent vers 1000. GET /api/icons les liste (deux formes de réponse existent selon les firmwares : acceptez les deux).
Les icônes de pièces et de scènes existent aussi (type=room / type=scene probable [V]).
references/badges.md liste les couleurs des badges et les glyphes disponibles dans le kit.