Ícones de dispositivo HC3
Responda no idioma do usuário. Gere ícones com scripts/icon_kit.py (Python, pip install cairosvg pillow):
ele contém os auxiliares de estilo (gradientes, sombra suave, emblema, ~35 glifos de emblema), um desenho de dispositivo de exemplo
(janela de telhado com persiana, 11 posições) e o gerador de pré-visualização.
Estilo (o que torna esses ícones adequados à interface do HC3)
- Desenho realista do dispositivo real (forma, cores, materiais, ângulo de visão). Peça ao usuário uma foto do modelo exato e reproduza-a; nunca trace uma foto ou copie um logotipo/marca registrada do fabricante (também mantém os ícones compartilháveis). Se o usuário quiser explicitamente um logotipo de marca para uso privado, mantenha esse ícone fora de qualquer coisa publicada.
- Fundo transparente, um arquivo por estado — sem variantes claro/escuro. Para permanecer legível em ambos os temas, dê
a dispositivos escuros uma borda clara (
stroke="#FFFFFF"1–2 px ou um bisel mais claro) e nunca pinte uma placa de fundo. - Pequeno emblema redondo, canto inferior direito (centro 100,100, raio ~22, anel branco): o estado (verde ligado, cinza inativo / desligado, vermelho alarme, laranja aviso, azul aberto/nível, roxo automático…) ou a grandeza medida (termômetro, gota, CO₂, vento…). O desenho do dispositivo mantém esse canto livre.
- 128 × 128 viewBox, desenho dentro de ~10–118 px, sombra elíptica suave sob dispositivos de chão.
- Verifique a pré-visualização (
preview.png: cada ícone uma vez em um fundo diagonal claro/escuro) antes de entregar.
Quantas imagens por dispositivo (regras do HC3)
| Tipo de dispositivo | Imagens em um conjunto de ícones | Campos de upload |
|---|---|---|
| Binário (switch, binarySensor, door/window, motion, smoke…) | 2: inativo / ativo | icon0, icon100 |
| Multinível (dimmer, persiana, válvula de nível) | 11: 0, 10 … 100 | icon0 … icon100 |
| deviceController, a maioria dos pais QuickApp, multilevelSensor / temperatura… | 1 | icon0 |
| Um tipo de imagem única não pode mudar sua figura sozinho. Para um ícone de QA dependente de estado (OK / aviso / alarme, ou um modo), | ||
faça upload de um conjunto por estado e alterne via Lua: self:updateProperty("deviceIcon", tonumber(self:optionalVariable("iconAlarm"))) | ||
(ids colados em variáveis; padrão na habilidade hc3-quickapp, references/patterns.md §5). | ||
| Faça um ícone por estado útil e ícones para cada dispositivo que um QuickApp cria (pai e filhos). |
Fluxo de trabalho
- Liste os dispositivos (pai, cada filho, cada sub-dispositivo Z-Wave) e seus
typeexatos (api.get("/devices/<id>"), ex.:com.fibaro.FGR224para um módulo de persiana Fibaro,com.fibaro.rollerShutterpara um filho de QA). - Peça fotos dos modelos reais; concorde com os estados e significados dos emblemas.
- Copie
scripts/icon_kit.py, escreva uma função de desenho por dispositivo (fragmento SVG na caixa 128, vejaroof_window(pct)), adicione linhas(name, title, body)aICONS— uma por estado — e executepython3 icon_kit.py --out icons/. Nomenclatura:<device>-<state>(shutter-000…shutter-100,boiler-on,boiler-off), para que uma tabela README possa dizer qual ícone vai para onde. - Mostre
preview.png; itere sobre as observações do usuário (forma, cor, clareza do emblema tipo emoji). - Upload: liste os conjuntos na seção
iconsdoqa.jsondo QA e deixebuild_fqa.py(habilidadehc3-packaging) gerar<qa>-icons.sh, ou faça upload manualmente: Configurações → Dispositivos → dispositivo → ícone → Adicionar.
API de upload (observada na 5.2xx)
POST /api/icons, multipart/form-data: type=device, deviceTemplate=<tipo de dispositivo exato>, um arquivo por estado
(icon0, icon100 ou icon0…icon100), fileExtension=png (svg aceito). Resposta 201
{"id": 1055, "iconSetName": "User1055", "fileExtension": "png"}. Aplicar: PUT /api/devices/<id>
{"properties": {"deviceIcon": 1055}} (de fora — nunca no próprio id de um QA de dentro do QA, isso reinicia; use
self:updateProperty). Excluir: DELETE /api/icons?id=&type=device&name=&fileExtension=png. Ids de ícone de usuário começam
em torno de 1000. GET /api/icons lista-os (duas formas de resposta existem entre firmwares: aceite ambas).
Ícones de sala e cena também existem (type=room / type=scene provável [V]).
references/badges.md lista as cores de emblema e glifos disponíveis no kit.