Aller au contenu

Rechercher dans la communauté

Affichage des résultats pour les étiquettes 'module virtuel'.



Plus d’options de recherche

  • Rechercher par étiquettes

    Saisir les étiquettes en les séparant par une virgule.
  • Rechercher par auteur

Type du contenu


Forums

  • Bienvenue
    • Nouveau ? Présentez-vous
    • Le bistrot
    • Mon installation domotique
    • Annonces et suggestions
  • La Home Center et ses périphériques
    • La Home Center pour les nuls
    • HC 2 & Lite
    • HC 3
    • Modules Fibaro
    • Modules Z-wave
    • Périphériques et matériels autres
    • Plugins
    • Quick App
    • Multimédia (audio, vidéo ...)
    • Chauffage et Energie
    • Actionneurs & Ouvrants (Portail, volets, piscines, ...)
    • Eclairage
    • Applications Smartphones et Tablettes
  • Autres solutions domotiques
    • Box / Logiciel
    • Modules Nice (433 & 866 MHz)
    • Modules Zigbee
    • GCE Electronics
    • Modules Bluetooth Low Energy
  • Objets connectés
    • Les Assistants Vocaux
    • Netatmo
    • Philips Hue
    • DIY (Do It Yoursel)
  • Sécurité
    • Alarmes
    • Caméras
    • Portiers
    • Serrures
  • Informatique / Réseau
    • Tutoriels
    • Matériels Réseaux
    • Matériels Informatique
    • NAS
    • Virtualisation
  • Les bonnes affaires
    • Sites internet
    • Petites annonces

Rechercher les résultats dans…

Rechercher les résultats qui…


Date de création

  • Début

    Fin


Dernière mise à jour

  • Début

    Fin


Filtrer par nombre de…

Inscription

  • Début

    Fin


Groupe


Jabber


Skype


Ville :


Intéret :


Version

11 résultats trouvés

  1. Moicphil

    Module Virtuel Alarme Avancée

    Module Virtuel Alarme Avancée Voici un module virtuel qui va vous permettre de gérer une " alarme " avec sélection de la zone à contrôler. Ce module est couplé à une seule et unique scène. Avant d'activer la zone choisie, vous aurez préalablement renseigné les sensors à contrôler. Possibilité, pour chaque zone, d'exclure temporairement un ou plusieurs sensors de la zone. Possibilité de lancer un test de l'ensemble des sensors déclarés dans la HC2. Ceci pour vérifier leur état ( ouvert ou fermé ) Un mode "Panic" fonctionnant sur un double-clic (paramétrable) Principe de fonctionnement : Appui sur la zone souhaitée...si les sensors déclarés sont dans l'état "fermé", on active le mode choisi (via une variable) puis push pour confirmer la mise en route. Si un ou des sensors sont ouverts, on reste en mode "arrêt", puis push pour nous signaler quel(s) sensor est ouvert(s). La scène contrôle en continu l'état des variables et des sensors. si passage en "ouvert" pendant qu'une zone est active, les actions se feront selon votre choix selon si votre sensor est "ouvert" ou "ouvert et armé" Nous avons donc 7 scènes en une . Dans ce module, pour "regrouper", j'ai intégré le pilotage de mes automatismes, mais vous pouvez bien évidement supprimer les boutons et labels dédiés. Avant toute chose, créer 3 variables : PA_Sensors (stocke les ID a contrôler) PA_Mode (stocke le mode en cours) PA_Exclus (stocke les ID a exclure) Sur les 3 premiers boutons (dans mon cas, c'est Jour, Nuit, Silence), il faut remplacer la ligne local sensors = {21, 28, 91, 82} par les détecteurs que vous souhaitez vérifier selon le mode : . Si vous souhaitez "armer" les sensor dans un mode vous pouvez saisir le code ci-dessous pour chaque sensor à armer : . local sensors = {133, 25, 232, 103, 28, 31, 132, 229, 228, 29, 30, 131} --"Porte escalier","Porte salon 1","Porte entrée","Porte salon 2","Fenetre garage","Fenetre buanderie","Fenetre cuisine","Porte de garage","Chambre grise","Fenetre chambre","velux","Fenetre salon 3"} -- --------------------------------------- -- Ne pas toucher -- --------------------------------------- local mode = "Jour" fibaro:setGlobal("PA_Sensors", json.encode(sensors)) fibaro:setGlobal("PA_Mode", mode) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblMode.value", mode) --pour armer un ou des sensors : --fibaro:call(25, "setArmed", "1") armer un sensor --fibaro:call(232, "setArmed", "1") armer un sensor . Les boutons d'exclusion sensor: Derrière chaque bouton, renommer le Label ( dans mon cas "Fen.1" ... "Fen.2" ), puis copier le code ci-dessous et changer l'ID de l'ouvrant concernée ..ID 25 dans mon cas car 25 est l'ID de mon détecteur de fenêtre 1 local sensor = 25 . Code à insérer sur chaque bouton : local sensor = 25 -- --------------------------------------- -- Ne pas toucher -- --------------------------------------- function exist(t, s) for i,k in ipairs(t) do if (k == s) then return i end end return nil end local exclus = fibaro:getGlobal("PA_Exclus") if (exclus and exclus ~= "") then exclus = json.decode(exclus) else exclus = {} end local index = exist(exclus, sensor) if (index) then table.remove(exclus, index) else table.insert(exclus, sensor) end local jExclus = "" local nExclus = "" if (#exclus > 0) then jExclus = json.encode(exclus) for i = 1, #exclus do nExclus = nExclus .. fibaro:getName(exclus[i]) .. ", " end nExclus = nExclus:sub(1, nExclus:len()-2) end fibaro:setGlobal("PA_Exclus", jExclus) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblExclus.value", nExclus) Vous pouvez, si vous souhaitez, supprimer ou ajouter des boutons supplémentaires. Bouton "test des ouvrants" : Pour le bouton "test des ouvrants", spécifier le ou les Id des smartphones qui recevront une notification : (Dans mon cas : 239 ) . Voici la scène qui gère tout ça : Ce que vous avez à faire : Au début du code... - Renseigner l'ensemble des id des sensors associé à la HC2 sous l'entète "properties" - Renseigner l'Id du ou des smartphones - Renseigner l'Id du module virtuel précédemment créé. - Renseigner les actions selon le mode choisi et si le(s) sensor(s) et armé ou non : . --[[ %% properties %% globals PA_Mode PA_Sensors --]] local portables = {xx, xx} local id_module_virtuel = xxx function doIt(mode, armed, id) fibaro:debug(mode) if (armed) then fibaro:debug("armé") else fibaro:debug("désarmé") end ----------------------------------------------------------------- if (mode == "Jour" and armed) then ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Jour" and not armed) then ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Nuit" and armed) then ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Nuit" and not armed) then ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Silence" and armed) then ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Silence" and not armed) then ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Manuel" and armed) then ----------------------------------------------------------------- elseif (mode == "Manuel" and not armed) then ----------------------------------------------------------------- elseif (mode == "Arret" and armed) then ----------------------------------------------------------------- elseif (mode == "Arret" and not armed) then ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Panic") then ----------------------------------------------------------------- ----------------------------------------------------------------- end end -- ----------------------------------------------------- -- Envoi le message PUSH -- ----------------------------------------------------- function sendMessage(message) for i = 1, #portables do fibaro:call(portables[i], "sendPush", message) end fibaro:debug(message .. " [envoyé]") end -- ----------------------------------------------------- -- Vérifie si les portes sont bien fermées -- ----------------------------------------------------- function check(doors) local stillopen = {} -- On vérifie l'état des portes -- for i = 1, #doors do if (doors[i]~=nil) then local id = tonumber(doors[i]) local name = fibaro:getName(id) or "unknown" if (tonumber(fibaro:getValue(id, "value")) == 1) then table.insert(stillopen, id) fibaro:debug(name .. " est ouverte") else fibaro:debug(name .. " est fermée") end else fibaro:debug("ID #"..i.." n'existe plus") end end if (stillopen and #stillopen > 0) then -- au moins une porte n'est pas fermée local msg = "" if (#stillopen == 1) then msg = msg .. "Attention : " else msg = msg .. "Attention : " end for i = 1, #stillopen do msg = msg .. " " .. fibaro:getName(tonumber(stillopen[i])) end if (#stillopen == 1) then msg = msg .. " est toujours ouverte." else msg = msg .. " sont toujours ouvertes." end -- -------------------------------------------- -- Actions si sensor(s) ouvert(s) ----------------------------------------------- -- on averti par push sendMessage(msg) -- Passage en mode Arret local mode = "Arret" fibaro:setGlobal("PA_Mode", mode) fibaro:call(id_module_virtuel, "setProperty", "ui.lblMode.value", mode) return false end return true end -- ----------------------------------------------------- -- Transforme une châine en tableau en utilisant -- un délimiteur -- ----------------------------------------------------- function split(text, sep) local sep, fields = sep or ":", {} local pattern = string.format("([^%s]+)", sep) text:gsub(pattern, function(c) fields[#fields+1] = c end) return fields end local source = fibaro:getSourceTrigger() local id_declencheur = nil local isOpen = "1" fibaro:debug(source["type"]) if (source["type"] == "property") then id_declencheur = tonumber(source["deviceID"]) elseif (source["type"] == "global") then fibaro:debug( source["name"]) local gName = fibaro:getGlobal(source["name"]) if ( gName == "Panic") then doIt( "Panic", false, 0 ) elseif (source["name"] == "PA_Sensors") then fibaro:debug(gName) local doors = fibaro:getGlobal("PA_Sensors") local exclus = fibaro:getGlobal("PA_Exclus") doors = split(string.gsub(doors, "[%[%]]", ""), ",") if (exclus and exclus ~= "") then exclus = split(string.gsub(exclus, "[%[%]]", ""), ",") else exclus = {} end todo = {} for i = 1, #doors do local found = false for j = 1, #exclus do if (doors[i] == exclus[j]) then found = true end; end if (not found) then table.insert(todo, doors[i]) fibaro:debug(doors[i] .. " doit être vérifiée") end end fibaro:debug("Checking doors") if (not check(todo)) then else ------------------------------------------- -- Actions lorsque l'alarme est activée ------------------------------------------- --Vos actions ici ---------------------------------------------- end end elseif (source["type"] == "other") then id_declencheur = nil isOpen = "0" end if (not id_declencheur) then return end fibaro:debug("Déclencheur " .. id_declencheur) local actif = fibaro:getGlobal("PA_Sensors") local exclus = fibaro:getGlobal("PA_Exclus") if (actif and actif ~= "") then fibaro:debug(actif) actif = string.gsub(actif, "[%[%]]", ",") local exist = string.find(actif, ","..id_declencheur) if (exist) then fibaro:debug("exist") end local todo = exist if (exclus and exclus ~= "") then fibaro:debug(exclus) exclus = string.gsub(exclus, "[%[%]]", ",") if (string.find(exclus, ","..id_declencheur)) then fibaro:debug("ID Excluded") todo = false end else fibaro:debug("Exclus empty") end if (todo and fibaro:getValue(id_declencheur, "value")==isOpen ) then doIt( fibaro:getGlobal("PA_Mode"), fibaro:get(id_declencheur, 'armed')=="1", id_declencheur ) end end -- J'ai testé ce module pendant 15 jours, sans aucuns soucis, très fiable et réactif. Pour télécharger le Vfid, c'est ici : >> Alarme_Avancée.vfib J’espère ne rien avoir oublié et que c'est assez clair... Un grand merci à Steven pour son aide si précieuse . .
  2. Steven

    Double-Clique Pour Confirmer

    CODER UN BOUTON FONCTIONNANT UNIQUEMENT SUR DOUBLE-CLIQUE Les boutons des modules virtuels ne permettent malheureusement pas grand chose d'autre que de cliquer dessus. Il arrive même parfois que nous cliquions sur un bouton par inadvertance. Dans la plus part des cas cela n'est pas grave mais pour certaines opérations sensibles, il serait judicieux de pouvoir valider notre clique. L'idée (soumise par @Moicphil) est de déclencher l'action uniquement lors d'un double-clique sur le bouton. Pour réaliser cela, il nous faut : Un bouton Un label Le label va nous servir à avertir l'utilisateur qu'un double-clique est nécessaire, mais il va surtout nous servir à savoir si un clique précédent a été effectuer. Au premier clique, le système affiche le message pendant un temps limité. Si pendant ce temps, l'utilisateur ré appuie sur le bouton, l'action est confirmée, sinon on retire le message et la confirmation est annulée. Voici donc le code a implémenter derrière votre bouton : -- ---------------------------- -- Ne pas toucher -- -- ---------------------------- function confirm(msg, labelId, secondes) local current = fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value") if (current == msg) then fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", " ") return true else fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", msg) fibaro:sleep(secondes*1000) fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value","") return fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value") == " " end end -- ---------------------------- -- A vous de jouer --- -- ---------------------------- local message = "Ré-appuyer pour confirmer" -- le message de confirmation local label_id = "lblMessage" -- l'ID du label qui recevra le message local duree = 1 -- la durée max entre 2 clique (en seconde) if ( confirm(message, label_id, duree) ) then fibaro:log("Confirmé") -- votre code ici en cas de confirmation else fibaro:log("Annulé") -- votre code ici en cas d'annulation end Le code n'est pas si compliqué et la partie qui vous intéresse début à la ligne 21. Voilà , j'espère que cela puisse vous éviter quelque catastrophe P.S. Il y a aussi moyen d'utiliser une variable global à la place du label mais l'insertion d'une valeur dans une variable globale est trop lente pour être viable.
  3. Ce module virtuel va crée automatiquement les variables si elles n'existent pas. Comment utiliser la table : "Nom de la variable", "1" (si prédéfinie) ou "0" (Variable Globale), "Valeur par défault", '"Valeur Prédéfinie"' -- Table variable Globale local VG_Table = { "Mode", "1", "Absent", '"Maison", "Vacances"', -- Variable Prédéfinie Mode "MPRInfo", "0", "100", -- Variable MPRInfo "Jour", "1", "Oui", '"Non"' -- Variable Prédéfinie Jour } Création des Variables Globales et Prédéfinies --************************ --Creation de Variable --- --************************ function VG_Creation(VG_Nom, VG_isEnum, VG_Value, VG_enumValues) if (fibaro:getGlobal(VG_Nom) == "") then fibaro:debug(VG_Nom.." "..VG_isEnum.." "..VG_Value) newVar = {} newVar.name = VG_Nom newVar.isEnum = tonumber(VG_isEnum) if tonumber(VG_isEnum) == 0 then newVar.value = VG_Value end HC2 = Net.FHttp("127.0.0.1", 11111) HC2:POST("/api/globalVariables", json.encode(newVar)) --------------------------------------------- -- création des valeurs prédéfinies si Besoin --------------------------------------------- if tonumber(VG_isEnum) == 1 then VG_Predefinie = '{"value":"'..VG_Value ..'","isEnum":true,"enumValues":'..'["'..VG_Value..'", '..VG_enumValues..']' ..'}' HC2:PUT("/api/globalVariables/"..VG_Nom, VG_Predefinie) end end end Lecture du tableaux et création si besoin des variables ---------------------------------------------------- -- Execution du programme ---------------------------------------------------- local j = 1 local NbreVG = 0 while VG_Table[j] ~= nil do if tonumber(VG_Table[j+1]) == 0 then fibaro:debug((NbreVG+1).." - Variable Globale") VG_Creation(VG_Table[j], VG_Table[j+1], VG_Table[j+2]) j=j+3 elseif tonumber(VG_Table[j+1]) == 1 then fibaro:debug((NbreVG+1).." - Variable prédéfinie") VG_Creation(VG_Table[j], VG_Table[j+1], VG_Table[j+2], VG_Table[j+3]) j=j+4 else fibaro:debug("Erreur dans la table VG") end NbreVG = NbreVG + 1 end fibaro:debug("Nombres de variable dans le tableau : " ..NbreVG) J'ai simplement ajouter un bouton aux VD Variables Globales de STEVEN comme cela on voit de suite si la variable n'est pas crée Petit Exercice : Optimiser ce code qui et fonctionnel mais pas très académique, il permet de crée les valeurs de la variable prédéfinie : if tonumber(VG_isEnum) == 1 then VG_Predefinie = '{"value":"'..VG_Value ..'","isEnum":true,"enumValues":'..'["'..VG_Value..'", '..VG_enumValues..']' ..'}' fibaro:debug(VG_Predefinie) HC2:PUT("/api/globalVariables/"..VG_Nom, VG_Predefinie) end Variables_Globales.vfib
  4. Sur une idée originale de razowski et dans la continuité du sujet de Steven ici (http://www.domotique-fibaro.fr/index.php/topic/1303-double-clique-pour-confirmer/) voici un module virtuel permettant de déclencher une action sur validation d'un code PIN au préalable renseigné dans le code du Main Loop. Version 1.0.1 L'action peut-être le déclenchement d'une scène, l'allumage ou l’extinction d'un périphérique ou bien encore l’exécution d'un script LUA afin de laisser cours à votre imagination . Le clavier est simple avec juste 12 touches: 10 boutons de 0 à 9, un bouton "clear" et un "Enter". La validation est automatique lorsqu' un code à 4 chiffre est renseigné, sinon il faut utiliser la touche correspondant à "Enter". J' ai fait ça vite fait entre midi et deux et juste pour poser les bases, je ferais évoluer la chose si le code suscite de l’intérêt. Pour la mise en place il faut commencer par créer un variable globale PINCode000, puis d'importer le fichier vfib en téléchargement sur cette page. Ensuite vous devez modifier le code dans le MainLoop pour l'adapter à vos besoins. Explications succinctes: - ["1010"] : correspond au code qui est formaté sur 4 chiffres (de 1 à 4 chiffres). - caption : une légende pour l'action associée au code - task.object : Peut prendre les valeurs suivantes: scene, device, lua, virtual, globalv - task.id : Identifiant de la scène, du device, de la varible ou du vd utilisé [option] - task.value: pour une scène [start, stop], un périphérique [on, off, dim], lua [function], valeur de la variable globale etc. - task targetId: l'id d'un bouton ou d'un slider dans le cas d'un vd. Les options de l'objet task: -- object: device - actions: [on, off, dim] - id: [num] - value: [0-100] (option) -- object: scene - actions: [start, stop] - id: [num] -- object: virtual - actions: [pressButton, setSlider] - id: [num] - value: [0-100] - targetId: [num] -- object: lua - value: [lua function] (ex: function() -- lua code here end) -- object: globalv - id: [name] - value: [xxx] cf. code extrait du Main Loop: local codeTable = { ["1010"] = { caption = "Disarm perimeter with scene", task = { object = "scene", id = 999, action = "start" } }, ["2020"] = { caption = "lua sample", task = { object = "lua", value = (function() fibaro:debug("Custom lua action!"); end) } }, ["3030"] = { caption = "turn on device", task = { object = "device", id = 999, action = "off" } }, ["4040"] = { caption = "dim device", task = { object = "device", id = 999, action = "dim", value = 25 } }, ["5050"] = { caption = "set global variable 'myvar' to 8989", task = { object = "globalv", id = "myvar", value = 8989 } }, ["6060"] = { caption = "set slider id#8 to 75 in virtual device #999", task = { object = "virtual", id = 999, targetId = 8, action = "setSlider", value = 75 } } }; Modifications: Version 1.0.1 - 08/07/2014 1. Renommage du module en "Security Virtual Keybaord" (ça sert à rien mais je préfère) 2. Ajout du support pour: scène, vd, variable globale VirtualDevice-Security-Keyboard-V1.0.1.vfib
  5. Voici un module virtuel tout simple composé de 2 boutons, permettant de naviguer entre les pièces et les modules virtuels, afin de lister les ID de chaque bouton et slider. Ces ID sont utilisés pour "cliquer" virtuellement sur les boutons depuis du code LUA (VD, Scène, API, etc) : fibaro:call(id_vd, "pressButton", "id_bouton") fibaro:call(id_vd, "setSlider", "id_slider", "value") Rappel du tutoriel de @mprinfo sur la méthode d'identification manuelle des ID des boutons : Module Virtuel - Numérotation Des Boutons Ce module virtuel permet donc d'automatiser le comptage. Importer le fichier vfib ci-joint, rien à paramétrer, utiliser directement. Téléchargement : VD_Buttons_ID.vfib Icône (merci @fredokl) :
  6. BSD

    Désactiver un bouton dans un VD

    Bonjour le forum. Une petite question sur les modules virtuels : Pensez-vous qu'il soit possible, en LUA, de désactiver ponctuellement un bouton ou un slider de module virtuel pendant qu'une boucle 'while true do' ou un 'fibaro:sleep' ou même un autre delai quelconque ne soit atteint ? Je m'explique : J'ai créé un VD avec deux boutons (Avant - Arrière), et un Slider. Un clic sur 'Avant' ou sur 'Arrière' lance une action pendant un temps déterminé. Je souhaite interdire toute nouvelle action tant que le delai n'est pas terminé. Pour cela, j'aimerai pouvoir 'griser' et interdire les actions des deux boutons et du slider jusqu'à la fin du delai. Qu'en pensez-vous ? Je ne trouve rien sur ce sujet. Par avance, merci de vos retours et reflexions en espérant vivement que celà soit possible.
  7. Voici ma modeste première contribution. Je sais qu'il existe déjà des scènes, modules Jour/Nuit mais j'ai voulu aller un peu plus loin en créant un module décomposant la journée en 6 phase (+ une en cas d'erreur). 0 - Erreur 1 - Aube 2 - Aurore 3 - Matin 4 - Apres-Midi 5 - Crepuscule 6 - Soir 7 - Nuit J'ai créé pour cela un module virtuel délivrant 2 variables : Day_Phase : la Phase de la journée, explicite, en texte (Créée dans le panneau de variables, en tant que variable prédéfinie contenant les 7 états ci-dessus) Day_Phase_Num : le numéro de la Phase, en entier, facilitant son utilisation dans des scènes (Créée dans le panneau de variables, en tant que variable recevant le numéro de la phase) Pour fonctionner, une variable supplémentaire doit être créée : Day_Phase_Nuit : Permet de fixer l'heure de basculement de l'état '6 - Soir' à l'état '7 - Nuit'. Format HHmm. Le code gère si cette heure est avant ou après minuit.... Il faut donc créer ces 3 variables dans un premier temps, puis importer le module virtuel A l'intérieur de ce dernier, dans le code LUA, il faut corriger l'ID du module virtuel (48 dans la version proposée) et modifier l'ID du détecteur de luminosité de référence (43 ans la version proposée). C'est un premier jet, et des améliorations vont venir (exemple, ID du module virtuel géré en interne du code, corriger le franglais..., ajout d'une icone par phase de la journée, etc...). Je voulais quelque chose de rapidement opérationnel... Je l'utilise actuellement avec deux petites scènes Allumage des éclairages extérieurs si Day_Phase_Num = 6 Extinction dans le cas contraire Day_Phase.vfib
  8. Ce tuto est très simple il va vous permettre de lire ou d'écrire dans une étiquette Pour vous donnez un cas concret on va crée un VD qui va nous donner l'Heure de Lever et Coucher du soleil On crée 2 étiquettes + un bouton Étiquette 1 Etiquette : Lever Soleil (Ce texte apparait a Gauche dans l'étiquette) ID : LabLever Étiquette 2 Etiquette : Lever Coucher (Ce texte apparait a Gauche dans l'étiquette) ID : LabCoucher On copie ce code dans le bouton local Jour = fibaro:getValue(1, "sunriseHour"); --Heure de lever du soleil local Nuit = fibaro:getValue(1, "sunsetHour"); -- Heure de coucher du soleil fibaro:call(fibaro:getSelfId(), "setProperty", "ui.LabLever.value", Jour); -- Ecriture de l'heure de lever dans le label fibaro:call(fibaro:getSelfId(), "setProperty", "ui.LabCoucher.value", Nuit); -- Ecriture de l'heure du coucher dans le label fibaro:log("Mise a jour en cours...") On s' aperçoit donc que : fibaro:getSelfId() ou local IdModule = fibaro:getSelfId() Ce code récupère l'id du module fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label1.value", "Bonjour"); ou local Text = "Bonjour" fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label1.value", Text); Ce code va écrire a droite dans le VD. ui.Label1.value -> Label1 et L'ID de l'étiquette ou l'on veut écrire Il n'est pas possible de mettre en page ce texte ni de changer la couleur. Certains on réussi a le faire en utilisant des balises HTML qui trompe le navigateur et juste le navigateur. Ici Le nombre de ligne qui peuvent être afficher est très réduit local toto = fibaro:getValue(fibaro:getSelfId(), "ui.Label1.value") fibaro:debug(toto) --Affichache de la valeur de l'étiquette Ce code permet de lire dans une étiquette ui.Label1.value -> Label1 et L'ID de l'étiquette ou l'on veut écrire Cela peut servir pour stocker des valeurs sans à avoir à passer par une variable globale http://<adresse ip>/api/callAction?deviceID=<id module>&name=setProperty&arg1=<NOMLABEL>&arg2=<texte> <id module> = identifiant du module virtuel <NOMLABEL> = c'est l'ID du label préfixé de "ui." et suffixé de ".value" ... exemple : ui.Label1.value <texte> = le texte à afficher dans le label
  9. Pour faire très simple car j'ai du mal avec ma droite et ma gauche Voici comment sont numérotés les boutons sur un module Virtuel Attention : Si on modifie l'ordre des boutons les numéros changent Voici le nouvel Ordre des Boutons Après avoir descendu les 2, 3, 4 Commandes LUA fibaro:call(fibaro:getSelfId(), "pressButton", "4") -- ou local IdModuleVirtuel = fibaro:getSelfId() fibaro:call(IdModuleVirtuel, "pressButton", "4") Code a mettre dans la boucle principale (MainLoop) pour un appui a 00h01 while true do local Var_Heure = os.date("%H:%M") --fibaro:debug("heure OS : " ..Var_Heure) if Var_Heure == "00:01" then fibaro:call(fibaro:getSelfId(), "pressButton", "4") fibaro:debug("heure OS : " ..Var_Heure .."Le Button 4 a été actionné") end fibaro:sleep(60*1000) end Boucle de Monsieur STEVEN local nbHeure = 12 local i = 0 while true do if (i >= (nbHeure*2) or i == 0) then i = 0 fibaro:call(fibaro:getSelfId(), "pressButton", "5") end fibaro:sleep(30*60*1000) i = i + 1 end A bientôt pour un nouveau tuto Ajout d'octobre 2016 : Script de Berale24 pour appeler un bouton depuis son ID au lieu de son numéro Ajout de janvier 2018 : Module Virtuel de Lazer pour lister les ID des boutons et sliders.
  10. Vu que j'ai eu pas mal de J'aime pour mon dernier tuto (Je suis en manque d'affection ) Cela veux dire que vous êtes demandeur et ça me motive à en faire d'autres http://www.domotique-fibaro.fr/index.php/forum/83-la-home-center-pour-les-nuls/ Nous somme nombreux sur ce forum si 10% des membres font un tuto ça serait super 1er Partie est plutôt simple. 2eme Partie et plus complexe mais facile a comprendre. Je vais vous expliquez comment ce servir du Slider d'un module Virtuel 1er Partie Il faut crée un module virtuel voici comment faire en image Il faut copier ce code dans le slider local ID_VD = fibaro:getSelfId() -- Recupere l'id du module Virtuel local Slider = fibaro:get(ID_VD,"ui.Slider1.value") fibaro:debug(Slider) -- Ecriture de la valeur du slider dans l'etiquette Label1 fibaro:call(ID_VD, "setProperty", "ui.Label1.value", Slider) On sauvegarde et on revient sur le slider Pour Debuger le code on fait comme cela fibaro:debug() affiche des messages dans le debug ex : fibaro:debug("Coucou") ou fibaro:debug("Valeur du slider : " ..Slider) On appui sur Démarrer et on bouge le slider grace a fibaro:debug() on peut voir la valeur de la variable local Slider 2eme Partie Nous venons de voir comment utiliser le slider On aperçois que les valeurs vont de 0 à 100 Je vais donc vous montrer comment on peut avoir d'autre valeur que 0 à 100 il est impossible pour le moment de modifier le slider au niveau de l'affichage 0 -100 C'est pour cela que nous allons utiliser une étiquette pour afficher la valeur Il faut savoir que le slider à 101 position de 0 à 100 si on veut de 0 à 50 on va avoir (0 - 0,5 - 1 - 1,5 etc..) Si vous voulez un nombre entier il faut utilisez math.floor() Voici l'explication donner par Gregory à Moicphil -- Il te faut une fonction de mapping. function map_range( a1, a2, b1, b2, s ) return b1 + (s-a1)*(b2-b1)/(a2-a1) end -- à‡a permet de mapper une valeur s du range a1, a2 dans le range b1, b2. -- Ici s est la valeur de ton curseur, a1=0, a2=100 -- et à toi de définir les températures min et Max (b1 et b2) que tu souhaites. -- à‡a permet de mapper une valeur s du range a1, a2 dans le range b1, b2. Ici s est la valeur -- de ton curseur, a1=0, a2=100 et à toi de définir les températures min et Max (b1 et b2) -- que tu souhaites. la formule mathématique a été trouver sur le Site Rosetta Code : http://rosettacode.org/wiki/Map_range C'est l'un des sites préféré de notre amis KriKroff Je vais vous donnez un exemple pour un slider de 30 à 80 -- Permet de récuperer la valeur slider function map_range( a1, a2, b1, b2, s ) return b1 + (s-a1)*(b2-b1)/(a2-a1) end local V_Slider = map_range(0, 100, 30, 80, _sliderValue_ ); -- Permet d'avoir un nombres entier math.floor() local Slider = math.floor(V_Slider) Pour modifier la valeur d'un slider directement depuis une URL, voici la syntaxe : (By Steven) http://<URL_HC2>/api/callAction?deviceID=<ID_Module_virtuel>&name=setSlider&arg1=<Position_du_slider>&arg2=<Valeur> URL_HC2 = L'url de votre HC2 ... soit son adresses IP, soit www.mondomaine.com ID_Module_virtuel = L'identifiant du module virtuel Position_du_slider = La position du slider dans le module virtuel. en comptant de haut en bas et de gauche à droite le nombre de label, bouton, slider dans le module virtuel Valeur = la valeur souhaitée .. depuis la v 4.x la valeur DOIT être un chiffre entier. Exemple http://192.168.1.1:8...&arg1=4&arg2=10
  11. Domotique-Home

    Télécommande De Couleurs Wallplug

    Aujourd’hui je vous propose un nouveau module virtuel qui permet d’allumer ou éteindre les anneaux de WallPlug de Fibaro. Vous pouvez utiliser ce module avec sa télécommande ou dans vos différentes scènes en fonction des vos besoins. Installation: 1) Création de variables globales: Créez trois variable dans le panneau « variables » -> IdWallPlug -> LoginHC2 -> MdpHC2 2) Téléchargez le module et installer le via importation de modules Module disponible ici: http://domotique-home.fr/download/module_virtuel_hc2/Colors_Wallplug.vfib 3) Ouvrez le module et renseigniez l’adresse IP de votre Home Center 4) Dans la partie « Settings », renseigniez les trois données: (voir capture) deviceID = XXX <–ID de Wallplug a gérer LoginHC2 = « admin » <– Votre login MdpHC2 = « admin » <– Votre mot de passe Laissez les valeurs des variables crées a 0 ou vide. Enregistrez 5) Appuyiez sur le bouton « Settings » de module 6) Votre module est maintenant fonctionnel, amusez vous bien. Soyez patient la Homme Center prend environs 5 secondes pour enregistrement de nouveaux paramètres. La couleurs de votre WallPlug change une fois que la Home Center a fini de mettre à jours les paramètres
×