je viens d'installer le Fork pour un MCP sur HC3 c'est pas mal !
Dépôt GitHub (le lien à partager) :
https://github.com/northernRough/HC3_mcp
Paquet npm : @northernrough/hc3-mcp-server
https://www.npmjs.com/package/@northernrough/hc3-mcp-server
Demande 1 :
Crée-moi une scène Lua nommée « Bloug-test MCP » dans la pièce Salon, qui allume la lumière lorsque j'ouvre la fenêtre du bureau.
Résultat — scène créée, id 365, type Lua, pièce Salon, activée en mode automatique.
Le MCP a résolu seul les modules concernés : aucun device ne s'appelle « fenêtre » chez moi, il est donc parti de la pièce Bureau, a écarté le volet roulant, et a identifié le capteur d'ouverture 307 « DO - Bureau » (rôle OpeningSensor, rangé dans une autre pièce que le Bureau). Pour la lumière, il a retenu le 23 « Lumière », le seul endpoint du FGD212 à la fois visible et calibré, en écartant les 21 et 24 qui sont masqués.
-- conditions
{ conditions = { { id = 307, isTrigger = true, operator = "==",
property = "value", type = "device", value = true } },
operator = "any" }
-- actions
fibaro.call(23, "turnOn")
Demande 2
Pas mal. Modifie-la pour que la lumière s'éteigne quand je referme. Et si tu peux ajouter une annonce vocale « fenêtre bureau ouverte » et « fenêtre bureau refermée » via le QA Voice Monkey, ce serait top.
Résultat — scène mise à jour, sans aucune modification du QuickApp.
Le MCP a lu les sources du QA VoiceMonkey (id 1204) et y a trouvé une méthode générique annonce(texte, echo) dans le main. Il l'a utilisée plutôt que le fichier Fenetre_Bureau existant, dont le texte est figé et qui est probablement déjà appelé ailleurs.
-- conditions : deux triggers sur le même capteur
{ conditions = {
{ id = 307, isTrigger = true, operator = "==", property = "value", type = "device", value = true },
{ id = 307, isTrigger = true, operator = "==", property = "value", type = "device", value = false }
}, operator = "any" }
-- actions
local v = sourceTrigger and sourceTrigger.value
if v == nil then v = fibaro.getValue(307, "value") end
local ouverte = (v == true or v == "true" or v == 1 or v == "1")
if ouverte then
fibaro.call(23, "turnOn")
fibaro.call(1204, "annonce", "Fenetre bureau ouverte")
else
fibaro.call(23, "turnOff")
fibaro.call(1204, "annonce", "Fenetre bureau refermee")
end
Le repli sur fibaro.getValue sert au lancement manuel : dans ce cas sourceTrigger.value est nil, la scène lit l'état réel du capteur et agit en conséquence. Pratique pour tester sans aller ouvrir la fenêtre.
Tout a fonctionné du premier coup. La scène et la variable globale ( crée pour un test ) ont ensuite été supprimées. par simple demande ....