-
Compteur de contenus
4 434 -
Inscription
-
Dernière visite
-
Jours gagnés
201
Tout ce qui a été posté par Steven
-
Compatible uniquement 4.x (pour la 3.60 ... c'est ICI ... merci DMK2424) L'idée est de générer automatiquement le tableau d'ID utilisé dans GEA ou autres scripts. Ainsi, il sera possibile à chaque mise à jour de votre HC2, de simplement relancer le générateur, copier le résultat dans GEA et vos ID seront donc remis à jour. Voici le tableau dont je parle : local id = { --inconnu LUA_SNIPPETS = 141, --Garage OREGON = 128, SURPRESSEUR = 118, CAMERA = 123, PORTE_GARAGE = 238, DETECTEUR_PORTE = 112, PORTE_GARAGE_GARAGE = 64, --Jardin TEMPERATURE = 69, SEISMOMETRE = 71, HUMIDITE = 261, DETECTEUR = 68, NETATMO = 137, PLUVIOMETRE = 262, LUMINOSITE = 70, LAMPE_OUEST = 234, PLUIE = 139, COIN_REPAS = 14, PRESSION_ATMOSPHERIQ = 258, TERRASSE = 160, METEOALERTE = 150, ARROSAGE = 158, NETATMO_EXTERIEUR = 260, --Local Technique LIVEBOX = 251, IPX800_RELAIS = 106, PORTE_LOCAL = 56, VMC_DOUBLE_FLUX = 114, LAVE_LINGE = 120, PLAFONNIER = 54, PASSERELLE_NETATMO = 135, PASSERELLE_ZIBASE = 126, --Entrée CAMERA_ENTREE = 129, DETECTEUR_ENTREE = 5, LUMINOSITE_ENTREE = 7, SEISMOMETRE_ENTREE = 8, PLAFONNIER_ENTREE = 10, PORTE_ENTREE = 58, TEMPERATURE_ENTREE = 6, --Cuisine SIRENE = 200, BRITA__FILTRE_ = 131, CUISINE = 237, CAPTEUR_FUMEE = 46, ALARME_FUMEE = 48, FRIGO = 52, TEMPERATURE_CUISINE = 47, LAVE_VAISSELLE = 50, TABLETTE = 176, --Chambre parentale SECHE_SERVIETTE = 60, --Salon CHAUFFAGE = 104, HUMIDITE_SALON = 257, CO2 = 256, NETATMO_SALON = 255, SONOMETRE = 259, POELE = 34, OREGON_SALON = 127, TV = 39, HIFI = 42, BLUE_RAY = 41, OPENKAROTZ = 133, ROMBA = 43, LUMIERE_SALON = 107, PRISE_LIBRE = 44, BRISE_SOLEIL = 105, WI = 40, KAROTZ = 134, NETATMO_SALON_SALON = 136, --Chambres PLAFONNIER_KENDRA = 23, PLAFONNIER_NORA = 18, TEMPERATURE_CHAMBRES = 147, FENETRE_NORA = 143, FENETRE_KENDRA = 145, OREGON_CHAMBRES = 138, FENETRE_NOLAN = 149, PLAFONNIER_NOLAN = 21, --Couloir PORTE_TERRASSE = 153, APLIQUE_ESCALIER = 25, TEMPERATURE_AU_SOL = 155, SPOTS = 230, LEDS_ESCALIER = 27, --Divers ANDROID_FILES = 162, IMPERIHOME = 208, TYPE_DE_JOURNEE = 110, EVENEMENTS = 173, NETATMO_DIVERS = 253, CLOCK_SYNC = 252, UPDATE_NOTIFIER_1_0_6 = 206, AGENDA = 178, MY_BATTERIES = 130, VACANCES_SCOLAIRES = 151, } Ce générateur ce base sur les noms des modules et des pièces que vous avez déclarer. Il va donc parcourir tous vos modules, prendre leur nom et le transformer (majuscule, suppression caractères spéciaux, ...). Si le nom existe deux fois, il va le suffixer du nom de la pièces (ex : DETECTEUR_GARAGE). Donc, si comme moi, vous ne changer pas régulièrement le nom de vos modules, ce générateur va vous permettre de gagner quelques précieuses minutes. Usage ... simple, copier le code ci-dessous et lancer le script avec le bouton "start". Une fois le script terminé, il va vous affiché le tableau dans la fenêtre de debug, il ne vous suffira plus que de le copier dans vos scripts. Il est possible de spécifier les ID ou type de module que vous ne voulez pas prendre en compte. Vous pouvez aussi préciser si vous souhaiter prendre en compte les modules caché ou mort. Voici donc le script dans sa globalité : --[[ %% properties %% globals --]] local hidden = false --- true pour exporter les devices cachés local dead = false -- true pour exporter les devices morts local excludeType = {"com.fibaro.zwaveDevice", "weather", "HC_user", "iOS_device", "com.fibaro.voipUser"} local excludeID = {} local devicesJSon = api.get("/devices") local devices = {} local names = {} local rooms = {} function addName(name, roomname) if (type(names[name]) == "nil") then names[name] = true return name else return addName(name.."_"..roomname, roomname) end end function getRooms() local roomsJSon = api.get("/rooms") rooms[0] = "inconnu" for k, v in ipairs(roomsJSon) do rooms[v.id] = v.name end end function rename(name, roomname) local name = name:upper():gsub("[éêèà«]", "E"):gsub("EE", "E"):gsub("[à»à¼ù]", "U"):gsub("UU", "U"):gsub("[à âà¤]", "A"):gsub("AA", "A"):gsub("[à¶ô]", "O"):gsub("OO", "O"):gsub("[îà¯]", "I"):gsub("II", "I"):gsub("%W", "_") local roomname = roomname:upper():gsub("[éêèà«]", "E"):gsub("EE", "E"):gsub("[à»à¼ù]", "U"):gsub("UU", "U"):gsub("[à âà¤]", "A"):gsub("AA", "A"):gsub("[à¶ô]", "O"):gsub("OO", "O"):gsub("[îà¯]", "I"):gsub("II", "I"):gsub("%W", "_") return addName(name, roomname) end getRooms() for k, v in pairs(devicesJSon) do local doit = (hidden or v.visible) and (dead or not v.dead) if (doit) then for h, w in pairs(excludeType) do if (v.type == w) then doit = false end end if (doit) then for h, w in pairs(excludeID) do if (v.id == w) then doit = false end end end end if (doit) then table.insert(devices, v) end end table.sort(devices, function(a, return a.roomID<b.roomID end) local result = "<BR><BR>-- IDs générés le : " .. os.date("%d/%m/%y à %X") local room = -1 local lastinfo = ""; result = result .. "<BR><BR>local id = {" for k, v in ipairs(devices) do if (room ~= v.roomID) then room = v.roomID result = result .. "<BR>--"..rooms[v.roomID].."<BR>" end lastinfo = rename(v.name, rooms[v.roomID]) result = result .. lastinfo .. " = " .. v.id .. ", " end result = result .. "<BR>}" result = result .. "<BR>" result = result .. "<BR>-- usage :" result = result .. "<BR>-- fibaro:getValue(id[\""..lastinfo .."\"], \"value\")" result = result .. "<BR>-- GEA.add(id[\""..lastinfo .."\"], 30, \"\")" print(result) Il ne vous restera plus qu'à utiliser les ID ainsi fibaro:getValue(id["DETECTEUR_GARAGE"], "value") GEA.add(id["DETECTEUR_GARAGE"], -1, "La porte du garage est entrain de s'ouvrir") ATTENTION : Les déclencheurs doivent et devront toujours être changé par vos soins ATTENTION 2 : Si vous ne comprenez pas l'usage de ce script, c'est sà»rement parce que vous n'en avez pas l'utilité Icone by @Did (Merci)
-
L'idée est justement de ne pas mettre d'ID dans GEA afin de pouvoir lire une ligne. Il est plus lisible : GEA.add(id["TV"], -1, "", {{"Value", id["LAMPE"], 50}}) que GEA.add(12, -1, "", {{"Value", 30, 50}}) de plus cela permet de centraliser les ID en un seul point et de ne pas avoir besoin de chercher partout dans GEA l'ID 24 pour le remplacer par 132 s'il a changer. Par contre, je comprends bien ta question ... et ta douleur quand il s'agit de tout remettre en ordre. Je pense qu'il y a des solutions mais rien de magique. Pour le code que tu as fourni, voici ce qui m'a dérangé et pourquoi --Detection mouvement exterieur : allume le relais local lumierecours = GEA.add({{"Global", "Cours", "1"},nuit},-1, "Cours On", {{"VirtualDevice", id["VD_IPX800"], "1"}}) -- Si detection pendant les 3 mins, relance de la tache pour 3 mins GEA.add({{"Global", "Cours", "1"},nuit},-1,"Detection mouvement cours relance tache allumage", {{"RestartTask", lumierecours}}) -- SI pas de detection extinction après 3 mins, on repete tant que la condition est vraie : lampe cours allumée GEA.add({nuit},3*60,"Extinction lumiere cours",{{"VirtualDevice", id["VD_IPX800"], "9"},{"Repeat"}}) La ligne 5 relance la ligne 2 ... mais cela ne sert à rien car la ligne 4 est en déclenchement automatique et elle n'est jamais stoppée. Ce qu'il fallait faire c'est relancer le compteur de l'extinction des lampes afin qu'il reparte à 0 à chaque détection laissant ainsi 3mn supplémentaire. C'est donc la ligne 8 qu'il fallait relancer. Tu y étais presque, d'ailleurs c'est la lecture de ton code qui ma expliquer ce que Arbu-jl voulait faire ... ce qui prouve que tes lignes étaient (presque) correcte. Et il y a aussi que pendant toute la nuit, toutes les 3 mn, la HC2 allait demander à l'IPX d'éteindre la lumière même si cette dernière est déjà éteinte. Ce qui dans l'ensemble n'est pas grave mais si on peux économiser des appels pour rien Voilà voilà
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Le soucis est que, pour l'instant, Skybell ne livre plus en dehors des USA Reste àtrouver une V2 en Europe.
- 16 réponses
-
- visiophone sans fil
- interphone video sans fil
-
(et 1 en plus)
Étiqueté avec :
-
Je plussois la question de chrispec
- 16 réponses
-
- visiophone sans fil
- interphone video sans fil
-
(et 1 en plus)
Étiqueté avec :
-
Par contre, j'ai pas mis en place la gestion des icones pour les risques. Il y en a déjàune pour le niveau d'alerte soit 5 états différents, si on ajoutes les 10 risques ... cela nous fait 50 icones possible ... Glouuuppp Pourtant, ce serait tellement plus joli.
-
@Diuck Tu as vérifier tes ID, comme ils ont tous changer chez Fibaro, il se peux que certain de tes ID ne soit plus les même.
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
@pepite, @Arbu-jl Je vous propose de simplifier ainsi : en ajoutant une variable "LumCours" sur laquelle on va s'appuyer --[[ %% autostart %% properties XXXX <id de la porte entree> %% globals Cours LumCours --]] local nuit = {"Global", "JOUR_NUIT", "NUIT"} local presence = {"Global", "Cours", "1"} local allumerCours = {"Global", "LumCours", "Allumer"} -- Eteindre la cours si elle est allumée plus de 3mn, on repasse la variable LumCours à "Eteint" local eteindreCours = GEA.add( allumerCours, 3*60, "Eteindre la cours si allumer plus de 3mn", {{"VirtualDevice", id["VD_IPX800"], "9"}, {"Global", "LumCours", "Eteint"}}) -- Si une présence est détectée dans la cours on demande d'allumer la cours GEA.add( {presence, nuit}, -1, "Mouvement dans la cours", {allumerCours} ) -- Si la porte s'ouvre on demande d'allumer la cours GEA.add({id["SENSOR_ENTPRIN"], nuit}, -1, "detection porte", {allumerCours} ) -- Allumage effective de la cours et on redémarre le compteur des 3mn avant extinction. GEA.add( allumerCours, -1, "Allumer la cours", {{"VirtualDevice", id["VD_IPX800"], "1"}, {"RestartTask", eteindreCours}})Il faudra donc pas oublier de créer la variable globale LumCours @Yohan Il n'y a pas eu de changement sur SceneActivation cela devrait donc fonctionner si les ID sont corrects.
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Suffisait de demander C'est ICI Je n'avais pas vu qu'ils avaient ajouté cette information. La version 2.00 du module n'affiche que le risque principal comme sur la carte de France. Il n'indique pas tous les risques indiqué sur le tableau indiqué dans ton message. Simplement parce que l'information se trouve dans un autre fichier XML et que par mesure d'optimisation, je pense que le risque principale est suffisant. Lors de l'envoi du message push, le risque est aussi envoyé. Have fun.
-
A mon avis ... Le sleep(6*1000) fait planté ton main loop car cette fonction n'existe pas. Donc ton main loop s'execute une seule fois et ce stoppe. Essaie en copiant ce code : JEEDOM=Net.FHttp("192.168.0.32"); temp=JEEDOM:GET("/core/api/jeeApi.php?apikey=xxx&type=cmd&id=257"); temp=json.decode(temp); fibaro:call(11,"setProperty","ui.lblSejour.value",temp.." °C "); fibaro:sleep(6*1000);
-
Merci de ne pas induire les utilisateurs en erreur. Value fonctionne et à toujours fonctionner, il suffit de savoir à quoi il sert. "Value" sert à changer ou connaitre la valeur principale d'un module et cela a toujours été le cas. "Power" remplace "valueSensor" qui lui, sert à connaître la valeur secondaire d'un module tel que la consommation instantanée d'une prise électrique. Dans le cas d'un wallplug "value" nous permet de savoir si le module est allumé "1" ou éteint "0" et "power" ou "valueSensor" nous permet de connaitre la consommation indiquée par cette prise. Dans GEA 4.xx vous pouvez utiliser "valueSensor" ou "power" cela na pas d'importance. Donc si on sait ce que l'on souhaite faire, tout fonctionne parfaitement.
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Si tu met comme déclencheur, l'identifant du thermostat, cela ne fonctionnera sà»rement pas, je te conseil d'essayer ce code mais sans garantie. -- Chauffage Noe à 20°C la nuit GEA.add(true, 30, "", {{"Time", "20:00", "06:00"}, {"Value", id["ThermostaNoe"], 21}}) . . . EDIT : Oublier ce message @sebcbien a déjà rédpondu avec brio a cette problématique,
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Je suis en 4.032 sans aucun soucis.
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Salut Phil, je pense qu'il faut juste que tu vérifies tes ID, il y en a sà»rement un ou deux qui ont changé suite à la migration et lorsque GEA essaie de trouver les noms du périphérique, il ne trouve rien. Tiens moi au courant, c'est ce n'est pas cela le soucis.
- 12 330 réponses
-
- 1
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Ben chez moi ça marche, suffit d'avoir la bonne version 5.15 ou 5.20.
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Je crois que sur ce sujet, j'ai déjà répondu lorsque j'ai posté la version 5.15 sur laquelle il y a une dédicace spéciale pour toi et ton soucis.
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Heuuu, cela fonctionne déjà GEA.add( {"Slider", 130, "MonSlider", 50}, 30, "") GEA.add( {"Slider+", 130, "MonSlider", 50}, 30, "") GEA.add( {"Slider-", 130, "MonSlider", 50}, 30, "") 130 étant le numéro du module virtuel 50 la valeur testée MonSlider est le nom du slider dans le module virtuel.
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
C'est plus àmoi qu'il faut le demande
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Encore une fois .. j'avais oublié le mot clé "value"
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
@971jmd Reprend mon code (2 post au dessus), je me suis planté dans le français/anglais (Mais j'ai toujours pas pu le testé)
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
GEA ne gère pas ce genre de traitement, le seul moyen est de mixer GEA avec du code LUA : function estLumi() local a = tonumber(fibaro:getGlobalValue("var1")) local lumi = tonumber(fibaro:getValue(deteclumino, "value")) return lumi < a, lumi end GEA.add( { detecteurcour, {"Function", function() return estLumi() end} }, -1, "detection", {{"turnOn", centretable}}) Attention, non testé.Edit : code modifié
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Ah et c'est un travail collaboratif. On est partit de 100 lignes de code et on a ajouté, ajouté et ajouté .. les idées ne sont donc pas de moi et GEA est bien le résultat d'un travail de groupe. Je ne fut que les petites mains.
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Juste pour information, non, le IF n'est pas la condition pour que l'action se lance. Au contraire, c'est la condition pour que l'action ne se lance pas Dans ton exemple : {nuit} est le déclencheur -1 signifie déclenchement instantané, et le tout uniquement si le coursOn (If) est respecté. Attention, avec les déclenchement instantanés, il ne faut pas oublié de les mettre dans l'entête. Voir les exemples, c'est tout en haut du script. Je sais, je suis absolument pas clair
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Juste pour toi Il faut mettre MeteoAlerte.dep = "2B" -- votre départementsoit 2B entre parenthèse et remplacer la ligne 48 par celle-ci if (evs:children()[i]["@dep"] == MeteoAlerte.dep) thenEn effet, le système convertti le numéro de département en valeur numérique ce qui ne peux pas fonctionner avec 2B. En corrigant comme mentionné ci-dessus, cela va fonctionner. Cordialement
-
GEA.add({"Weather","rain"}, ...) Envoyé de mon portable grâce àmes petits doigts.
- 12 330 réponses
-
- 1
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Merci àtoi d'avoir pointé le problème. Barbapapa ... Oui t'es vraiment indigne Envoyé de mon portable grâce àmes petits doigts.
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :