Aller au contenu

Rechercher dans la communauté

Affichage des résultats pour les étiquettes 'variables'.



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

Calendriers

Aucun résultat à afficher.


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

8 résultats trouvés

  1. 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
  2. jojo

    Virtual Devices - Variables

    De nombreuses personnes de la communauté continuent de se poser des questions par rapport aux variables, Virtual Devices, … Berale24 a écrit un tuto récapitulatif très instructif à ce sujet : Mode Block - Un Peu De Tout. Je propose ici une variante, qui permet d'utiliser les scènes avec Google Calendar : cfr tuto de Pinou : Google Calendar Vers Hc2/hcl Pour plus d'info concernant les commandes GET dans les Virtual Device : Requêtes Http /get Sur Hcl Description du besoin / de la fonctionnalité On a une variable avec (deux) valeurs possibles. Exple : Vacances = Oui/Non On affiche dans une Virtual Device la valeur actuelle de la variable On peut modifier la valeur de la variable via la Virtual Device OU via le calendrier Google Tout ceci fonctionne pour HCL et HC2, ainsi que depuis des smartphone (testé avec Androà¯d, je suppose que iOS le peut également) Création de la variable Panels -> Variables Panel Créer la variable Vacances avec deux valeurs possibles Oui et Non Création de la Virtual Device Toutes les Virtual Devices que j'ai créées pour afficher / modifier la valeur de mes variables, je les ai associées à une pièce Variables dans la section Section Virtuelle J'ai commencé toutes mes Virtual Devices associées à des variables par Var_ Champ IP Address : entrez l'IP de votre box adorée. Le port est 80. Laissez l'icône par défaut des Virtual Devices. Elle sera remplacée automatiquement (voir la suite) par l'icône représentative de la valeur de la variable. Ainsi, si vous voyez cette icône, c'est que la box n'a pas complètement terminé son redémarrage. Dans les paramètres avancés, créez autant de boutons que de valeurs possibles de la variable. Pour chaque bouton, donnez-lui un ID représentatif de la fonction du bouton / de la valeur de la variable associée. (l'ID ne peut pas avoir d'espace ou de _) La commande pour chaque bouton est : GET<space>/api/sceneControl?id=<id>&action=start HTTP/1.10x0D0x0AHost:<IP><space>0x0D0x0AAuthorization:<space>Basic<space><user:pwd inBase64><space>0x0D0x0A0x0D0x0A NB1 : remplacer <space> par 1 espace,<id> par l'ID de la scène qui mettra à jour la variable (voir la suite), <IP> par l'IP de votre Box NB2 : la syntaxe doit être SCRUPULEUSEMENT respectée, sous peine de non fonctionnement NB3 : cette syntaxe a été validée pour HCL v 3.593, elle peut différer pour les autres versions du firmware de la HCL ou pour la HC2. NB4: Base64 encoder : https://www.base64encode.org/ A chaque boutons, nous avons associé une icône représentative de la valeur de la variable. Donc ici, lorsqu'on appuiera sur le bouton Oui, la scène (id = 153, chez moi) démarrera, scène qui mettra la variable Vacances à Oui et la Virtual Device affichera l'icône associée. Scènes de mise à jour de la variable Il faut créer 1 scène par valeur possible de la variable (ou par bouton de la Virtual Device). Mes scènes commencent par le nom de la variable, puis sa valeur. Elles sont assignées à la pièce représentative de la variable (ici une pièce virtuelle Vacances). C'est l'ID de ces scènes qui est référencé dans la Virtual Device. C'est ici que mon approche est différente de celle de Berale24, car les scènes créées pourraient également être appelées par le script de Pinou en fonction du Calendrier Google. Scènes de mise à jour de la Virtual Device Il faut créer 1 scène par valeur possible de la variable (ou par bouton de la Virtual Device). Mes scènes commencent par Var_ puis le nom de la variable, puis sa valeur. Elles sont assignées à la pièce virtuelle Variables. Il faut cocher "Active Scene" et "Start when Home Center 2 starts" Cette scène tourne "en continu" pour vérifier la valeur de la variable et mettre à jour la Virtual Device en conséquence. (indispensable que cela se fasse automatiquement après un restart de la Box ou une sauvegarde de a Virtual Device) Et je vous jure que tout cela est très WAF : même mon épouse l'utilise, et n'a rien trouvé à redire …
  3. Pour la HCL, j'avais en son temps fait un tuto pour afficher une icône dans un virtual device une icône en fonction de la valeur d'une variable globale, et de pouvoir modifier sa valeur (également depuis son smartphone), quelle se mette à jour lors d'un restart de la box, etc pour une HCL En passant sous HC2, j'avais gardé le même principe, et pour chaque VD (et donc chaque variable), la main loop tournait en continu pour vérifier que l'icône correspond bien à la valeur de la variable. Ce n'est vraiment pas optimal. Je vais vous expliquer ici la solution que j'ai mise en place pour que la charge sur la box soit moins importante. Merci à Steven, i-magin et mprinfo qui m'ont aidé pour débugger Création des variables Je prendrai dans mon exemple 2 variables globales : Auth_PS3 avec 2 valeurs possibles : "Autorisé" et "Interdit" Auth_TV avec 2 valeurs possibles : "Autorisé" et "Interdit" (mais les valeurs pourraient être différentes que pour la 1° variable, ou avoir plus que 2 valeurs) Modules virtuels Chaque variable a son module virtuel. Il a pour objectif d'afficher une icône différente en fonction de la valeur de la variable. Pour facilement les retrouver, j'ai créé une section "Section Virtuelle" et dedans une pièce "Variables". Chaque VD a le nom suivant : "Var_xxxx" où xxxx est le nom de la variable globale. Dans notre exemple : "Var_Auth_PS3" et "Var_Auth_TV". L'icône par défaut du VD est et doit rester l'horrible cube bleu (facile ainsi de repérer si la VD est à jour) J'ai créé les boutons suivants : Bouton 1 : Autorisé / Interdit Il permet simplement de faire le switch de la valeur de la variable. C'est le bouton par défaut du VD. Il n'y a pas d'icône associée. -- nom de la variable à modifier local variable = "Auth_PS3" if fibaro:getGlobal(variable) == "Interdit" then fibaro:call(fibaro:getSelfId(), "pressButton", "3") else fibaro:call(fibaro:getSelfId(), "pressButton", "4") end Label : Statut afficher en texte la valeur de la variable Bouton3 : Autorisé c'est le bouton qui est appelé pour mettre la variable à "Autorisé" Il contient l'icône qu'on veut voir affichée (comme ça on ne doit pas chercher son ID) fibaro:setGlobal('Auth_PS3', 'Autorisé') fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Statut.value", 'Autorisé') Bouton4 : Interdit c'est le bouton qui est appelé pour mettre la variable à "Interdit" Il contient l'icône qu'on veut voir affichée (comme ça on ne doit pas chercher son ID) fibaro:setGlobal('Auth_PS3', 'Interdit') fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Statut.value", 'Interdit') N.B. l'ID de ce bouton ne peut pas être appelée par le bouton Switch, mais seulement son numéro QUI CHANGE si vous changez l'ordre. C'est débile, mais c'est comme ça … Utilisation On clique sur le bouton principal, et il switch la valeur de la variable On peut utiliser Google Calendar pour lui dire d'appuyer directement sur le bouton "Autorisé" ou "Interdit" Vous devez modifier les scènes qui modifiaient directement la variable, en la faisant appuyer sur le bouton de la VD qui modifie la variable et met à jour l'icône de la VD (car il n'y a plus le mainloop qui contrôle en continu la valeur de la variable) Limitations et solution : Lors du redémarage de la box, ou Lors de la sauvegarde du VD (parce que vous avez fait une petite modif, ou …) L'icône qui est affichée pour le VD, est l'icône par défaut du VD. Le cube bleu, pas cool … Donc pour pallier à ce problème, j'ai créé un VD supplémentaire "Var_Update" Dont voici le code : un GRAND merci à mprinfo qui m'a beaucoup aider pour faire qqch de plus sympa et générique ---------------------------------- -- User Settings ---------------------------------- -- la Table doit avoir la structure suivante : -- 1/ nom de la variable globale entre " -- 2/ ID du VD qui affiche la valeur de la VG -- 3/ n° du premier bouton qui doit être appuyé -- (qui correspond à la première valeur de la variable) -- 4/ n° du dernier bouton qui doit être appuyé -- (qui correspond à la dernière valeur de la variable -- on suppose que tous les boutons se suivent de 1 en 1) -- 5/ valeurs possibles de la variable entre " -- (elles doivent être listées dans l'ordre des boutons de la VD) local Table = {"Auth_PS3", 23, 3, 4, "Autorisé", "Interdit", "Auth_TV", 289, 3, 4, "Autorisé", "Interdit", "Auth_VMCEtage", 290, 3, 4, "Autorisé", "Interdit", "Auth_TerrPar", 291, 3, 4, "Autorisé", "Interdit", "Auth_LumHallNuit", 362, 3, 4, "Autorisé", "Interdit", "ECS", 292, 3, 4, "Oui", "Non", "DayPart", 130, 3, 4, "After SunRise", "After SunSet", "Noel", 363, 3, 4, "Oui", "Non", "Saison", 133, 3, 6, "Printemps", "Eté", "Automne", "Hiver", "Chauffage", 351, 3, 5, "0", "1", "2", "Vacances", 293, 3, 4, "Oui", "Non" } ---------------------------------- -- DO not change bellow this line ---------------------------------- local i = 1 while Table[i] ~= nil do local VG_Nom = tostring(Table[i]) fibaro:debug("----------------------------") fibaro:debug("Nom de la variable Globale = " ..VG_Nom) local VD_id = tostring(Table[i+1]) local Btn_Deb = tonumber(Table[i+2]) local Btn_Fin = tonumber(Table[i+3]) local NbrVal = (Btn_Fin - Btn_Deb) + 1 --Nbr de valeur possibles de la variable fibaro:debug('NbrVal = ' ..NbrVal) i = i + 4 local VG_Val = fibaro:getGlobalValue(VG_Nom) fibaro:debug('Valeur de la variable Globale = ' ..VG_Val) for j = 1,NbrVal do if VG_Val == Table[i+j-1] then fibaro:debug(VG_Nom.. ' = ' ..VG_Val) fibaro:debug("Il faut appuyer sur le bouton : " ..Btn_Deb.. " de la VD_id " ..VD_id) fibaro:call(VD_id, "pressButton", Btn_Deb) end Btn_Deb = Btn_Deb + 1 end -- for i = i + NbrVal end -- while Pour retrouver l'ID du VD, vous avez plusieurs solutions : Le toolkit de Krikroff l'API : http://<IP Box>:<Port Box>/api/virtualDevices vous exportez le VD, et dans l'URL vous voyez ?id=xxx vous éditez le VD, et dans l'URL vous voyez ?vid=xxx Il vérifie la valeur de la variable et appuie sur le bouton correspondant à l'icône. D/Variable. Donc maintenant, quand je vois qu'une des icônes associée à mes variables est l'icone standard, je clique sur le bouton, et tout est remis au carré. Cela évite d'avoir un main loop qui tourne pour chaque variable 99% du temps pour rien. On a donc trouvé une parade à la deuxième limitation ;-) Pour la première limitation (mise à jour après un restart de la box) la solution est facile : Créer une scène qui appelle la VD "Var_Update" / bouton 1 au démarrage de la box. --[[ %% autostart --]] fibaro:sleep (10*1000) fibaro:call(361, "pressButton", "1") où 361 est l'ID du Vd "Var_Update" Merci à Steven qui finalement à trouvé la solution du sleep au début de la scène, ainsi qu'à i-magin et mprinfo pour leurs bonnes idées
  4. VD - Visualisation Detection Ouverture , Detection de mouvements, Variable Globale Ce VD ou virtual devices a pour but de regrouper plusieurs VD dont celui de @STEVEN Virtual Device : Variables Globales Je remercie STEVEN pour son code qui ma inspiré pour les autres affichage http://www.domotique-fibaro.fr/index.php/topic/4205-virtual-device-variables-globales/ Cette visionneuse affichera : La dernière détection d'un capteur d'ouverture avec le temps écoulé (Max 10 modules) La dernière détection d'un capteur de détection de mouvement avec le temps écoulé (Max 10 modules) Les 10 dernières variable globales (Ce code appartient a STEVEN) Toute ces données seront triés par ordre chronologique Visualisation des Capteurs d'ouverture code lua : local id = fibaro:getSelfId() fibaro:call(id,"setProperty","ui.LabType.value", "Capteur Ouverture") HC2 = Net.FHttp("127.0.0.1",11111) response = HC2:GET("/api/devices") local Ouverture = {} local t = json.decode(response) local j = 0 for i = 1, #t do if t[i].visible == true and t[i].type == "com.fibaro.doorSensor" then local HeureModif = t[i].properties.lastBreached local heure = os.time() local TempEcoule = os.difftime(heure, HeureModif)-3600 table.insert(Ouverture, {t[i].name, t[i].id, TempEcoule}) --fibaro:debug(t[i].name.." id : "..t[i].id..t[i].properties.lastBreached) end end table.sort(Ouverture, function(a, return a[3]<b[3] end) -- Display results local id = fibaro:getSelfId() local cpte = 0 for i = 1, 10 do pcall(function() fibaro:debug(i.." - "..Ouverture[i][2]) cpte = i if Ouverture[i][3] > 3600*24 then fibaro:debug(i .. " id=" .. Ouverture[i][1] .. " - Value=" .. os.date("%j jours %X", Ouverture[i][3]) ) fibaro:call(id, "setProperty", "ui.Label"..i..".value", Ouverture[i][1] .. " = " .. " ".. os.date("%j jours %X", Ouverture[i][3])) else fibaro:call(id, "setProperty", "ui.Label"..i..".value", Ouverture[i][1] .. " = " .. " ".. os.date("%X", Ouverture[i][3])) end end) end for i = cpte+1, 10 do fibaro:debug("i= "..i) fibaro:call(id, "setProperty", "ui.Label"..i..".value", "") end Visualisation des Capteurs de mouvement code lua : local id = fibaro:getSelfId() fibaro:call(id,"setProperty","ui.LabType.value", "Detection Mouvements") HC2 = Net.FHttp("127.0.0.1",11111) response = HC2:GET("/api/devices") local Ouverture = {} local t = json.decode(response) local j = 0 for i = 1, #t do if t[i].visible == true and t[i].type == "com.fibaro.motionSensor" or t[i].type == "com.fibaro.FGMS001" then local HeureModif = t[i].properties.lastBreached local heure = os.time() local TempEcoule = os.difftime(heure, HeureModif)-3600 local RoomName = fibaro:getRoomName(fibaro:getRoomID(t[i].id)) fibaro:debug(RoomName) table.insert(Ouverture, {t[i].name, t[i].id, TempEcoule, RoomName}) --fibaro:debug(t[i].name.." id : "..t[i].id..t[i].properties.lastBreached) end end table.sort(Ouverture, function(a, return a[3]<b[3] end) -- Display results local cpte = 0 for i = 1, 10 do pcall(function() fibaro:debug(i.." - "..Ouverture[i][4]) cpte = i if Ouverture[i][3] > 3600*24 then fibaro:debug(i .. " id=" .. Ouverture[i][1] .. " - Value=" .. os.date("%j jours %X", Ouverture[i][3]) ) fibaro:call(id, "setProperty", "ui.Label"..i..".value", Ouverture[i][1] .. " = " .. " ".. os.date("%j jours %X", Ouverture[i][3])) else fibaro:call(id, "setProperty", "ui.Label"..i..".value", Ouverture[i][4] .. " - ".. Ouverture[i][1] .. " = " .. " ".. os.date("%X", Ouverture[i][3])) end end) end for i = cpte+1, 10 do fibaro:debug("i= "..i) fibaro:call(id, "setProperty", "ui.Label"..i..".value", "") end Visualisation des Capteurs de mouvement de @steven Visualisation Libre ce bouton est reservé pour votre imagination si il reste vide ....... tanpis pour vous La mainloop ou boucle principale Sorry local NumBouton = { ["Capteur Ouverture"] = 12, ["Detection Mouvements"] = 13, ["Variables Globale"] = 15 } local SelfId = fibaro:getSelfId() local Nom = fibaro:getValue(SelfId, "ui.LabType.value") local bouton = NumBouton[Nom] fibaro:debug(bouton) fibaro:call(SelfId, "pressButton", bouton) La visualisation ce fera toute les 3s on peut augmenter ce parametre en ajoutant un sleep Fichier a télécharger : Visionneuse_v01b.vfib Liens vers mes autres tutos : Classer Les Jours Du Mois Par Nom (Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche) ICI Visualisation Des Températures ICI Surveillance Free Memory Hc2 ICI Visualisation Iosdevice Smartphone, Iphone Etc... ICI Visualiser Les 10 Dernières Ouverture De Porte ICI Faire Une Copie De La Clef Usb Recovery Sous Windows ICI Tout Sur Le Déclenchement D'une Scéne En Lua (By Steven) ICI Paramétrage D'un Module (Fonctions Générales) ICI Module Virtuel - Le Slider De A À Z (Image + Codes Lua) ICI Universel Pour Volets Roulant ICI Ouverture, Fermeture, Allumer, Éteindre (Volets, Lumiére En Une Scéme) ICI Crée Une Variable Globale Ou Une Variable Globale Predefinie En Lua ICI Sceneactivation Et Module Compatible (Déclenchement D'une Scéne Avec Un Bouton) ICI Les Variables - Complément D'information By Steven ICI/ Lua - Programmation La Règle De 3 By Steven ICI Module Virtuel - Utilisation D'un Label ( Étiquette ) ICI Module Virtuel - Numérotation Des Boutons ICI Lua - Connaitre Le Dernier Id Et Le Nombres De Modules ICI Clé Usb Recovery Explication En Image De La Fat32 ICI Wol Avec Xpenoboot Dsm 5.1 ( Nas Synology ) ICI Module Virtuel - Crée Automatiquement Des Variables Globales ICI
  5. C'est un complément à ceci : Précis Sur Les Variables Locales/globales Je remercie STEVEN de me laisser le choix des couleurs pour ses tutos Pour la variable avec une portée globale et les passages de paramètres, voici une explication et un petit script pour bien comprendre son fonctionnement. Notion de base sur le passage de paramètre : Les paramètres d'une fonction peuvent être de 2 manières différentes (par référence ou par valeur) : - référence : la fonction reçoit l'adresse mémoire du paramètre. Un changement de valeur affectera TOUT le script - valeur : on reçoit la valeur du paramètre Ce dernier est copié dans une nouvelle référence propre à la fonction. Un changement de valeur n'affectera que la fonction. en LUA, chaque passage de paramètre ce fait en "valeur" SAUF pour les tables (c'est comme en français, il y a toujours une exception). Donc si je fais : function maFonction(var) print(var) end maFonction("Coucou") J'envoi à ma fonction la valeur, soit une copie de "Coucou". Si a l'intérieur de maFonction je modifie la valeur, cela n'aura un impact QU'AU sein de maFonction. maFonction va donc créer une nouvelle variable "var" dans laquelle il va copier la valeur "Coucou" Si je fais : local coucou = "Coucou" function maFonction() print(coucou) end et que dans maFonction je modifie coucou, alors coucou va être modifié pour tout le script puisque la modification aura eu lieu sur sa référence. En bref, Si on est au sein d'un script ou d'une fonction, nous travaillons sur les références. Si nous passons les informations en tant que paramètre, nous travaillons sur une valeur. local coucou = "Coucou" function maFonction(variable) print(coucou) print(variable) end maFonction("Coucou") Plus compliqué car la référence coucou est envoyée en paramètre et devient donc une copie de valeur. local coucou = "Coucou" function maFonction(variable1, variable2) print(variable1) print(variable2) end maFonction("Coucou", coucou Allez un bon script vaut mieux qu'un long discours : function scope1() -- la variable var n'existe pas print(var) --- nil (variable inexistante) end function scope2(var) -- la variable est passée en paramètres donc visible -- bien que déclarée après -- En sortant de cette méthode, var aura repris ça valeur -- initial car elle a été passée en paramètre soit par -- valeur print(var .. " dans scope2()") -- ______ var = "Scope2" print(var) -- Scope2 end local var = "-=init=-" function scope3() -- la variable est connue car déclarée avant. Elle est assignable -- par contre, si on déclare une variable du même nom au sein -- de cette même function, en sortant la variable aura repris sa valeur "Scope3" print(var .. " dans scope3()") var = "Scope3" print(var) local var = "Byebye" print(var) end function exception(unTableau) -- Les tableaux sont toujours traité comme une référence unTableau[1] = "Et voilà " end print(var .. " avant tout") scope1() print(var .. " après scope1()") scope2(var) print(var .. " après scope2()") scope3() print(var .. " après scope3()") -- Exception avec les table qui sont toujours envoyé en tant que référence. local table = {[1]="Humm"} print(table[1]) exception(table) print(table[1]) Debug : [DEBUG] 11:39:22: -=init=- avant tout [DEBUG] 11:39:22: nil [DEBUG] 11:39:22: --init=- après scope1() [DEBUG] 11:39:22: --init=- dans scope2() [DEBUG] 11:39:22: Scope2 [DEBUG] 11:39:22: -=init=- après scope2() [DEBUG] 11:39:22: -=init=- dans scope3() [DEBUG] 11:39:22: Scope3 [DEBUG] 11:39:22: Byebye [DEBUG] 11:39:22: Scope3 après scope3() [DEBUG] 11:39:22: Humm [DEBUG] 11:39:22: Et voilà
  6. Bonsoir à tous, Je vous expose la méthode retenue pour gérer le chauffage avec des scènes et des variables. J'ai tout paramètré et était certain que ça allait fonctionner jusqu'à ce matin où en fait, ça ne fonctionnait pas ! Je pense avoir compris mais je voudrai votre validation car j'aime bien comprendre, je suis assez curieux ! J'ai créé deux variables globales : mode_presence qui peut prendre les valeurs : présence, travail, mercredi (pour un type de présence spécifique) et absence mode_chauffage qui peut prendre les valeurs : confort, eco, nuit, HG J'ai un thermostat dans le salon et deux Qubino fil pilote dans la chambre 1 et dans la chambre 2 (d'autres seront mis en place dans la salle de bain et dans la chambre 3) L'objectif est de chauffer de la façon suivante : - Si on est là ou les grands parents, le mode de présence est défini à Présence - Si on est au travail, le mode de présence est défini à Travail - Si on est mercredi, le mode de présence est défini à mercredi - Si on est absent, le mode de présence est défini à absent Jusque là j'ai compris : j'ai créé un MV qui passe la variable globale mode_presence à présence, travail, mercredi ou absent. Ensuite, j'ai créé x scènes pour gérer les plages horaires : par exemple pour le mode de présence = présence: Presen_1 (pour mettre le chauffage en mode confort entre 5h et 22h30) J'ai fixé deux conditions : 1) si la variable mode_presence = presence 2) pendant l'intervalle 5h - 22h30 toutes les 15 minutes Alors passer la variable mode_chauffage en Confort La seconde scène Presen_2 passe la variable mode_chauffage en Nuit Jusque là , ça fonctionne, je comprends, les variables se mettent à jour. Par contre, voila comment j'ai défini le chauffage et ce que je ne comprends pas (ou peut être du moins jusqu'à ce matin et ce qui nécessite votre confirmation ;-) ) La scène "Chauffage Confort" est définie comme suit : Si variable mode_chauffage = confort, alors thermostat = 20,5 et radiateur 1 confort, et radiateur 2 confort. Voici ce qui n'a pas fonctionné : ce matin, la variable mode_chauffage était bien passée à "Confort" mais la scène "Chauffage confort" n'avait pas fonctionné. J'ai donc ajouté à la scène "Chauffage confort" la condition de temps "intervalle" entre 0h00 et 23h59. Car sinon, le simple fait que la variable mode_chauffage passe en mode confort, le scène "Chauffage_confort" ne s'exécutait pas. Je ne sais pas si c'est très clair... Pour synthétiser, ce que je ne comprends pas c'est pourquoi la scène ne s'exécute pas au seul changement de la variable. Et du coup, il faut mettre un critère d'exécution de temps, c'est bien ça ? Je mets une copie d'écran ! Merci d'avance pour votre éclairage ! [EDIT du 3/12] En fait, pas besoin d'intégrer dans les scènes Chauffage_confort, Chauffage_Eco, ... une notion de timer, le simple changement de la variable fonctionne. J'ai re-testé en ayant fait un reboot de la box au préalable et tout fonctionne :-) Le fait d'avoir peut être trop bidouiller dans l'éditeur de blocs avec les "Scène active?" et/ou "Lancer au démarrage" a peut être joué !
  7. Chers amis, Je suis vraiment dans le pétrin, et j'ai besoin d'aide. Cela fait 3 semaines que je cherche, en vain … Le contexte : Je suis sur HCL, v 3.593. J'ai un module Fibaro 2x1,5 kW pour commander 2 circulateurs (Circulateur Rez et Circulateur Etage) (gérés par des linked devices & le Heating Panel) J'ai un autre module Fibaro 2x1,5 kW pour commander ma chaudière (en fait le circulateur qui va de ma chaudière au ballon d'eau chaude). J'ai également créé une variable EauChaude avec deux valeurs possibles Oui et Non. Ma chaudière doit démarrer si Eauchaude=Oui ou un des deux Circulateurs (Rez ou Etage) est en fonction. Scène Chaudière_On : Ma chaudière doit s'arrêter si EauChaude=Non et les deux Circulateurs sont arrêtés. Scène Chaudière_Off : La gestion de la chaudière fonctionne ;-) Le problème : J'ai défini 6 scènes pour changer la valeur de la variable EauChaude en fonction de l'horaire de la semaine : ECS_Sem_Matin_Oui : ECS_Sem_Matin_Non : ECS_WE_Matin_Oui : ECS_WE_Matin_Non : ECS_Soir_Oui : ECS_Soir_Non : Et le panneau général pour ces 6 scènes : Et elles fonctionnent de manière aléatoires (plus souvent non que oui …) : la variable (EauChaude) ne change pas de valeur quand elle devrait. Le reste, qui fonctionne correctement : Scènes ECS_Oui et ECS_Non qui sont appelées par les autres scènes. Une variable virtuelle qui m'affiche la valeur de la variable, et me permet de la modifie : Une scène ECS_SdbRez qui a pour objectif de mettre EauChaude à Oui si on est dans la salle de bains. Ce que j'ai déjà essayé sans succès : Les 6 scènes timer, modifient directement la variable, dans passer par une autre scène Désactiver la variable virtuelle Changer le nom de la variable (avant elle s'appelait ECS) Utilisation du toolkit de Krikfoff, pour voir s'il y avait des incohérences : mais toutes les scènes semble ok (avec la traduction en LUA) Please help, je ne sais plus quoi essayer. Merci pour vos idées. Cela DOIT être une bêtise, mais laquelle ???? Vincent
  8. biboun

    variables nouvelle alarme fibaro

    Bonsoir, j'essaye de migrer mes scripts d'alarme en utilisant un maximum de ce que fibaro nous propose integré dans leur nouveau panel alarme. Savez-vous s'il existe des variables accessibles qui définissent notamment l'état de l'alarme ( armé/désarmé/breached) et s'il est possible d'activer/désactiver l'alarme en lua ? Merci !
×