Shad Posté(e) le 24 mars 2014 Signaler Posté(e) le 24 mars 2014 Voici un petit tuto pour les fonctionnalité possible avec la minimote. Avant touche chose la scène de base pour faire fonctionner la minimote. Remplacez l'id des lignes 3 et 7 par celui de votre télécommande. --[[ %% properties 156 sceneActivation %% globals --]] local Minimotesalon = fibaro:getValue(156, "sceneActivation"); if (tonumber(Minimotesalon) == 1) then elseif (tonumber(Minimotesalon) == 2) then elseif (tonumber(Minimotesalon) == 3) then elseif (tonumber(Minimotesalon) == 4) then elseif (tonumber(Minimotesalon) == 5) then elseif (tonumber(Minimotesalon) == 6) then elseif (tonumber(Minimotesalon) == 7) then elseif (tonumber(Minimotesalon) == 8) then end Maintenant entrons dans le vif du sujet. Gestion d'une alarme: Il est tout à fait possible d'armer des modules spécifiques pour votre alarme mais le problème si un module est "breached" votre alarme va s'activer. Grâce au code suivant vos modules ne s'armeront pas et vous recevrez une notification push sur les modules breached. Le code a mettre avant celui de la minimote. Remplacez les id des sensors et le nom des pièces ou ils se trouvent et ligne 27 mettez l'id de votre téléphone ou autre. local windowSensor = {14, 47, 32, 124, 111, 114, 115, 116}; local placeSensor = {"salon","Chambre Bleu","Entrée","Chambre de Marion","bureau","Salon","Salon","Garage"}; local startSource = fibaro:getSourceTrigger(); function statutWindows () local statut = "close"; for i=1, #windowSensor do if (tonumber(fibaro:getValue(windowSensor[i], "value")) > 0) then statut = "open"; end end return statut; end function alertWindows () local place = nil; for i=1, #windowSensor do if (tonumber(fibaro:getValue(windowSensor[i], "value")) > 0) then if (place == nil) then place = placeSensor[i]; elseif (place ~= nil) then place = place .. ", " .. placeSensor[i]; end end end fibaro:debug("Fenetre(s) ouverte(s): " .. place); fibaro:call(53, "sendPush", "Fenetre(s) ouverte(s): " .. place); end function armedSensor (value) for i=1, #windowSensor do fibaro:call(windowSensor[i], "setArmed", value); end end Pour la partie minimote remplacez ligne 12 pas l'id de voter téléphone if ( tonumber(ButtonPressed) == 1) then statut = statutWindows(); if (statut == "close") then armedSensor(1); fibaro:debug("button 1 pressed Alarme Activé"); elseif (statut == "open") then alertWindows(); end elseif ( tonumber(ButtonPressed) == 2) then armedSensor(0); fibaro:call(53, "sendPush", "Alarme désactivé)); fibaro:debug("button 2 Pressed Alarme Désactivé"); Gestion des ambiances: Pour commencé voici des exemples possibles. Créez une variable globale prédéfinie avec les valeurs (vous pouvez en ajoutez autant que vous voulez: - Normal - Cinema - Musique - Romantique Vous devez créez deux scènes. Dans la scène de la minimote collez avant le code des boutons: Vous devez réécrire les ambiances avec de la même façon que dans la globale et dans cette exemple je pars sur le principe qu'il s'agit du salon sinon éditez ligne 6. local AmbianceSalon = {"Normal", "Cinema", "Musique", "Romantique"}; function Ambiance (place,global,value) local Global = tostring(fibaro:getGlobalValue(global)); local item = 0; if (place == "Salon" ) then repeat item = item + 1; if (item == 20) then fibaro:killScenes(31); end until Global == AmbianceSalon[item]; finalItem = nextItem(value, item, table.getn(AmbianceSalon)); fibaro:setGlobal(global, AmbianceSalon[finalItem]); end end function nextItem (value, item, size) if (value == "nextone") then item = item + 1; if ( size < item ) then item = 1; end elseif (value == "previous") then item = item - 1; if ( 0 >= item ) then item = size; end end return item; end Pour la partie miimote: pour la fonction Ambiance ligne 2 et 5, la première fonction Salon est la pièce, ensuie SalonAmbiance est la variable global et nextone ou previous est dans le sens ou vous naviguez dans le "menu". Il faut également éditer le numéro de la scène. if (tonumber(Minimotesalon) == 1) then Ambiance("Salon","SalonAmbiance","nextone"); fibaro:startScene(25); elseif (tonumber(Minimotesalon) == 2) then Ambiance("Salon","SalonAmbiance","previous"); fibaro:startScene(25); Ensuite il faut une scène d'ambiance pour le salon. Voici un exemple de ma scène: --[[ %% properties %% globals --]] local startSource = fibaro:getSourceTrigger(); local ambiance = fibaro:getGlobalValue("SalonAmbiance"); local night = fibaro:getGlobalValue("Nightime"); if (startSource["type"] == "other") then if (ambiance == "Normal") then if (fibaro:getValue(64, "value") == 0) then fibaro:call(64, "turnOn"); fibaro:sleep(2000); end if (fibaro:getValue(89, "value") == 1) then fibaro:call(89, "turnOff") end if (night == "Off") then fibaro:call(4, "setValue", "99"); end fibaro:call(83, "pressButton", "2") fibaro:call(7, "setValue", "99"); fibaro:call(7, "setValue", "99"); fibaro:call(11, "setValue", "99"); fibaro:call(12, "setValue", "99"); fibaro:call(91, "setColor", "243", "68", "0", "0"); elseif (ambiance == "Cinema") then if (fibaro:getValue(64, "value") == 0) then fibaro:call(64, "turnOn"); fibaro:sleep(2000); end if (fibaro:getValue(89, "value") == 0) then fibaro:call(89, "turnOn") end fibaro:call(4, "setValue", "0"); fibaro:call(83, "pressButton", "1") fibaro:call(7, "setValue", "0"); fibaro:call(7, "setValue", "0"); fibaro:call(11, "setValue", "0"); fibaro:call(12, "setValue", "0"); fibaro:call(91, "setColor", "10", "8", "33", "0"); elseif (ambiance == "Musique") then if (fibaro:getValue(64, "value") == 0) then fibaro:call(64, "turnOn"); fibaro:sleep(2000); end if (fibaro:getValue(89, "value") == 0) then fibaro:call(89, "turnOn") end fibaro:call(83, "pressButton", "3") fibaro:call(7, "setValue", "30"); fibaro:call(7, "setValue", "30"); fibaro:call(11, "setValue", "30"); fibaro:call(12, "setValue", "30"); fibaro:call(91, "setColor", "50", "0", "175", "0"); elseif (ambiance == "Romantique") then if (fibaro:getValue(64, "value") == 0) then fibaro:call(64, "turnOn"); fibaro:sleep(2000); end if (fibaro:getValue(89, "value") == 0) then fibaro:call(89, "turnOn") end fibaro:call(83, "pressButton", "7") fibaro:call(7, "setValue", "0"); fibaro:call(7, "setValue", "0"); fibaro:call(11, "setValue", "0"); fibaro:call(12, "setValue", "0"); fibaro:call(91, "setColor", "255", "0", "108", "0"); end end Gestion des volets, virtuals device (chaîne de radion pour sonos..) Avec ce code vous pouvez mettre vos volets dans 4 position (ouvert,fermé, 50% et 75%). Donc le code toujours à insérez entre le début et le code de la minimote. local idBlind = 4; function Blind (value) if (value == 1) then if (tonumber(fibaro:getValue(idBlind, "value")) == 75) then fibaro:call(idBlind, "setValue", "50"); fibaro:debug("Volet réglé à 50%"); elseif (tonumber(fibaro:getValue(idBlind, "value")) ~= 75) then fibaro:call(idBlind, "setValue", "75"); fibaro:debug("Volet réglé à 75%"); end elseif (value == 2) then if (tonumber(fibaro:getValue(idBlind, "value")) ~= 99) then fibaro:call(idBlind, "open"); fibaro:debug("Volet Ouvert"); elseif (tonumber(fibaro:getValue(idBlind, "value")) == 99) then fibaro:call(idBlind, "close"); fibaro:debug("Volet Close"); end end end Placez ensuite ce code dans votre minimote: elseif (tonumber(Minimotesalon) == 3) then Blind(1) elseif (tonumber(Minimotesalon) == 4) then Blind(2) Désolé si c'est pas très clair mais je suis crevé ce soir. J'éditerais le code lorsque je l'aurais améliorer voir mis sous plugin si la v4 arrive 3
Shad Posté(e) le 24 mars 2014 Auteur Signaler Posté(e) le 24 mars 2014 Derient je vais éditez car j'ai oubliez les volets Edit: Je pense que quand la v4 sortira, je regarderais pour un faire un script qui gère les scènes d'xbmc avec les ambiances pour bien tout intégré ensemble.
Domodial Posté(e) le 1 avril 2014 Signaler Posté(e) le 1 avril 2014 Salut, J'aimerais savoir si il est possible de passer 2 ID de minimotes dans une scène normalement prévue pour une minimote ? Ex : 166 et 167 sont les minimotes. --[[ %% properties 166 sceneActivation 167 sceneActivation %% globals --]] local ButtonPressed = fibaro:getValue(166, 167, "sceneActivation") La scène de base est prévue pour une seul minimote comme ceci : --[[ %% properties 166 sceneActivation %% globals --]] local ButtonPressed = fibaro:getValue(166, "sceneActivation") Merci
Shad Posté(e) le 1 avril 2014 Auteur Signaler Posté(e) le 1 avril 2014 Comment sa, tu veux dire inclure deux minimotes pour gérer une scène ??? Je pense pas que sa va être possible, Il va falloir creer une autre local, et dans la 'id que tu veux créer une condition or
Moicphil Posté(e) le 1 avril 2014 Signaler Posté(e) le 1 avril 2014 J'ai déjà essayé avec une condition "or" et ça marche pas avec une seule scène (du moins j'ai pas trouvé comment faire)...pour le moment autant de scènes que de minimotes... Pour l'instant, j'ai ca --[[ %% properties 94 sceneActivation %% globals --]] ----------------------------------------- ----gestion des boutons des minimotes---- ----------------------------------------- local Minimotesalon = fibaro:getValue(94, "sceneActivation"); if (tonumber(Minimotesalon) == 1) then fibaro:call(7, "pressButton", "2")--Alarme nuit ON end if (tonumber(Minimotesalon) == 3) then fibaro:call(7, "pressButton", "4")--Alarme nuit OFF end if (tonumber(Minimotesalon) == 5) then fibaro:call(174, "pressButton", "7");--virage radio sdb on end if (tonumber(Minimotesalon) == 7) then fibaro:call(174, "pressButton", "9");--virage radio sdb off end Mais si je fait ca, ca ne fonctionne pas : --[[ %% properties 94 sceneActivation 62 sceneActivation %% globals --]] ----------------------------------------- ----gestion des boutons des minimotes---- ----------------------------------------- local Minimotesalon = fibaro:getValue(94, "sceneActivation"); local Minimotechambre = fibaro:getValue(62, "sceneActivation"); if (tonumber(Minimotesalon) == 1) or (tonumber(Minimotechambre) == 1) then fibaro:call(7, "pressButton", "2")--Alarme nuit ON end if (tonumber(Minimotesalon) == 3) or (tonumber(Minimotechambre) == 3) then fibaro:call(7, "pressButton", "4")--Alarme nuit OFF end if (tonumber(Minimotesalon) == 5) or (tonumber(Minimotechambre) == 5) then fibaro:call(174, "pressButton", "7");--virage radio sdb on end if (tonumber(Minimotesalon) == 7) or (tonumber(Minimotechambre) == 7) then fibaro:call(174, "pressButton", "9");--virage radio sdb off end :
Shad Posté(e) le 1 avril 2014 Auteur Signaler Posté(e) le 1 avril 2014 Essaye avec sa: if ( (tonumber(Minimotesalon) == 1) or (tonumber(Minimotechambre) == 1) ) then
Krikroff Posté(e) le 1 avril 2014 Signaler Posté(e) le 1 avril 2014 Phil tu peux faire un debug sur tes variables histoire de ... local Minimotesalon = fibaro:getValue(94, "sceneActivation"); local Minimotechambre = fibaro:getValue(62, "sceneActivation"); parce-qu’il est bien possible que l'utilisation de plusieurs sceneActivation dans la même scène ne soit pas faisable !
Domodial Posté(e) le 1 avril 2014 Signaler Posté(e) le 1 avril 2014 bon, En fait j'ai une scène comme tous le monde, dans laquelle une minimote est en ID. Sur la scène plusieurs action correspondant aux boutons. Ma question était : Dans le cas ou j'ai deux télécommande qui nécessite les memes scènes, est-il possible de déclarer 2 minimotes dans le script comme j'avais mis plus haut. Le but était de ne pas faire un copier / coller de la meme scène juste en changeant l'ID. Ca fait 2 scènes identique. Mais bon, si ce n'est pas possible ce n'est pas bien grave.
Shad Posté(e) le 1 avril 2014 Auteur Signaler Posté(e) le 1 avril 2014 C'est étrange que sa ne fonctionne pas.
Moicphil Posté(e) le 1 avril 2014 Signaler Posté(e) le 1 avril 2014 @Domodial...J'ai bien compris, c'est pour ça que j'ai posté "derrière toi" car je veux faire la même chose que toi. Une scène pour les 2 telco. J'ai pas encore mis de "debug" mais ce que je vois c'est que les numéros de scènes ne sont plus associées ( un appui sur num 5 active la 1 )
Shad Posté(e) le 1 avril 2014 Auteur Signaler Posté(e) le 1 avril 2014 La franchement je ne sais, je regarderais pour la deuxième télécommande des que j'aurais finie de me créer une scène pour gérer toute les ambiances de la maison (marre d'en avoir 36 entre les xmbc etc ...).
Moicphil Posté(e) le 1 avril 2014 Signaler Posté(e) le 1 avril 2014 Voila, j'ai mis un debug : --[[ %% properties 94 sceneActivation 62 sceneActivation %% globals --]] ----------------------------------------- ----gestion des boutons des minimotes---- ----------------------------------------- local NumScenesalon = fibaro:getValue(94, "sceneActivation") local NumScenechambre = fibaro:getValue(62, "sceneActivation") fibaro:debug("Numéro telco salon: " ..NumScenesalon) fibaro:debug("Numéro telco chambre: " ..NumScenechambre) local Minimotesalon = fibaro:getValue(94, "sceneActivation"); local Minimotechambre = fibaro:getValue(62, "sceneActivation"); if (tonumber(Minimotesalon) == 1) or (tonumber(Minimotechambre) == 1) then -- fibaro:call(7, "pressButton", "2")--Alarme nuit ON end if (tonumber(Minimotesalon) == 3) or (tonumber(Minimotechambre) == 3) then -- fibaro:call(7, "pressButton", "4")--Alarme nuit OFF end if (tonumber(Minimotesalon) == 5) or (tonumber(Minimotechambre) == 5) then -- fibaro:call(174, "pressButton", "7");--virage radio sdb on end if (tonumber(Minimotesalon) == 7) or (tonumber(Minimotechambre) == 7) then -- fibaro:call(174, "pressButton", "9");--virage radio sdb off end Et chose bizare, a savoir que je n'utilise pour ce test QUE la telco salon...en appuyant successivement sur les 4 boutons, voila que ça active automatiquement la 7 sur l'autre telco !... [DEBUG] 22:13:45: Numéro telco salon: 1 [DEBUG] 22:13:45: Numéro telco chambre: 7 [DEBUG] 22:13:51: Numéro telco salon: 3 [DEBUG] 22:13:51: Numéro telco chambre: 7 [DEBUG] 22:13:53: Numéro telco salon: 5 [DEBUG] 22:13:53: Numéro telco chambre: 7 [DEBUG] 22:13:55: Numéro telco salon: 7 [DEBUG] 22:13:55: Numéro telco chambre: 7
Shad Posté(e) le 1 avril 2014 Auteur Signaler Posté(e) le 1 avril 2014 Réessaye en mettant devant tout le code: local NumScenesalon = nil; local NumScenechambre = nil; local Minimotesalon = nil; local Minimotechambre = nil;
Moicphil Posté(e) le 1 avril 2014 Signaler Posté(e) le 1 avril 2014 Pareil Shad... J'ai essayé avec la telco chambre, et là , j'ai l'inverse: [DEBUG] 22:26:39: Numéro telco salon: 7 [DEBUG] 22:26:39: Numéro telco chambre: 1 [DEBUG] 22:26:42: Numéro telco salon: 7 [DEBUG] 22:26:42: Numéro telco chambre: 3 [DEBUG] 22:26:44: Numéro telco salon: 7 [DEBUG] 22:26:44: Numéro telco chambre: 5 [DEBUG] 22:26:46: Numéro telco salon: 7 [DEBUG] 22:26:46: Numéro telco chambre: 7
Shad Posté(e) le 1 avril 2014 Auteur Signaler Posté(e) le 1 avril 2014 Il garde dans le cache le dernier bouton appuyé de chaque télécommande. A mon avis la seule solution est de mettre des trigger je pense. Essaye ce code (je l'ai pas testé): local startSource = fibaro:getSourceTrigger(); local salon = 94; local chambre = 62; local NumScenesalon = fibaro:getValue(94, "sceneActivation") local NumScenechambre = fibaro:getValue(62, "sceneActivation") if (startSource['type']=='property') then if (startSource['deviceID']==tostring(salon)) then fibaro:debug("Numéro telco salon: " ..NumScenesalon) elseif (startSource['deviceID']==tostring(chambre)) then fibaro:debug("Numéro telco salon: " ..NumScenechambre) end end
Moicphil Posté(e) le 1 avril 2014 Signaler Posté(e) le 1 avril 2014 Oui, là c'est bon ! Et hop! une scène en moins grâce à toi Shad ! merci --[[ %% properties 94 sceneActivation 62 sceneActivation %% globals --]] local startSource = fibaro:getSourceTrigger(); local salon = 94; local chambre = 62; local NumScenesalon = fibaro:getValue(94, "sceneActivation") local NumScenechambre = fibaro:getValue(62, "sceneActivation") if (startSource['type']=='property') then if (startSource['deviceID']==tostring(salon)) then fibaro:debug("Numéro telco salon: " ..NumScenesalon) elseif (startSource['deviceID']==tostring(chambre)) then fibaro:debug("Numéro telco chambre: " ..NumScenechambre) end end if (tonumber(NumScenesalon) == 1) or (tonumber(NumScenechambre) == 1) then -- fibaro:call(7, "pressButton", "2")--Alarme nuit ON end if (tonumber(NumScenesalon) == 3) or (tonumber(NumScenechambre) == 3) then -- fibaro:call(7, "pressButton", "4")--Alarme nuit OFF end if (tonumber(NumScenesalon) == 5) or (tonumber(NumScenechambre) == 5) then -- fibaro:call(174, "pressButton", "7");--virage radio sdb on end if (tonumber(NumScenesalon) == 7) or (tonumber(NumScenechambre) == 7) then -- fibaro:call(174, "pressButton", "9");--virage radio sdb off end
Shad Posté(e) le 1 avril 2014 Auteur Signaler Posté(e) le 1 avril 2014 En faite je crois que le mieux pour gérer sa va être de présenter sa de cette façon: Et pour les commandes que tu veux utiliser sur les deux minimotes tu créer une fonction que tu appelles depuis chaque minimote, au moins tu ne gères qu'un seul code. --[[ %% properties 62 sceneActivation 94 sceneActivation %% globals --]] local salon = 94; local chambre = 62; local Minimotesalon = fibaro:getValue(94, "sceneActivation") local Minimotechambre = fibaro:getValue(62, "sceneActivation") local startSource = fibaro:getSourceTrigger(); if (startSource['type']=='property') then if (startSource['deviceID']==tostring(salon)) then if (tonumber(Minimotesalon) == 1) then elseif (tonumber(Minimotesalon) == 2) then elseif (tonumber(Minimotesalon) == 3) then elseif (tonumber(Minimotesalon) == 4) then elseif (tonumber(Minimotesalon) == 5) then elseif (tonumber(Minimotesalon) == 6) then elseif (tonumber(Minimotesalon) == 7) then elseif (tonumber(Minimotesalon) == 8) then end elseif (startSource['deviceID']==tostring(chambre)) then if (tonumber(Minimotechambre ) == 1) then elseif (tonumber(Minimotechambre ) == 2) then elseif (tonumber(Minimotechambre ) == 3) then elseif (tonumber(Minimotechambre ) == 4) then elseif (tonumber(Minimotechambre ) == 5) then elseif (tonumber(Minimotechambre ) == 6) then elseif (tonumber(Minimotechambre ) == 7) then elseif (tonumber(Minimotechambre ) == 8) then end end end
Krikroff Posté(e) le 1 avril 2014 Signaler Posté(e) le 1 avril 2014 @Shad: très instructif tout cela, merci
Shad Posté(e) le 1 avril 2014 Auteur Signaler Posté(e) le 1 avril 2014 pas de problème: D'ailleurs il manque encore une local ^^. Mais je fais comme sa pour gérer toutes mes associations de la maison en une seule scène. Pas besoins de chercher partout.
Moicphil Posté(e) le 1 avril 2014 Signaler Posté(e) le 1 avril 2014 Shad, je croyais que dans les codes, il fallait éviter au maximum les "elsif" non ?
Shad Posté(e) le 2 avril 2014 Auteur Signaler Posté(e) le 2 avril 2014 Perso je te dirais qu'il faut évité dans avoir trop pour pas s'embrouiller. Mais après si ton code est bien fais je ne vois pas trop le soucis.
Messages recommandés