Aller au contenu

Rechercher dans la communauté

Affichage des résultats pour les étiquettes 'script lua'.



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

57 résultats trouvés

  1. Rem's

    Récurrence Scène

    Bonsoir à tous, Voici mon bout de code qui me permet de lancer le réveil le matin. Si je lance manuellement cette scène (je me suis levé plus tôt), elle va donc tournée 2 fois à l'heure dite. J'ai rajouté la condition "fibaro:countScenes" ....... Est-elle au bon endroit ?? depuis cette modif, la scène ne se lance plus toute seul. Merci de votre coup d'oeil --[[ %% autostart %% properties %% globals --]] local sourceTrigger = fibaro:getSourceTrigger(); if (sourceTrigger["type"] == "autostart") then while true do if fibaro:countScenes() > 1 then -- si la scène est lancée plus d'une fois alors fibaro:abort() -- arrêt de cette lecture du script end -- fin de la condition local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); if ( ( ((currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "06:45") ) ) then -- 6h45 : Allumage réveil fibaro:call(71, "turnOn");
  2. kabutop

    Device Sabnzbd

    Hello, Pour ceux qui utilisent SABnzbd, voilà un petit module virtuel qui pourrait vous être utile. Ca ressemble à ca : Il est dispo ici https://raw.githubusercontent.com/eremid/hc2_sabnzbd/master/SABnzbd.vfib Vous avez aussi l'icone si vous voulez : https://raw.githubusercontent.com/eremid/hc2_sabnzbd/master/sa.png A+
  3. Romain80

    Alerte Si Porte Ouverte

    Salut, Je viens vous proposer un petit scenario pour vous alerter si une porte reste malencontreusement ouverte. Alors bien sur, c'est pas pour la complexité de la scene que je le poste mais encore une fois pour donner des idées. Etant donnée l' engouement pour le scenario qui gère les lumières extérieure en journée, je me dis que tout est bon a poster et que ça peut servir. Alors le voila --[[ %% properties 28 value 26 value %% globals --]] local startSource = fibaro:getSourceTrigger(); local temp_ouverture = 10*60*1000 -- temps exprimé en ms if ( ( tonumber(fibaro:getValue(28, "value")) > 0) ) then fibaro:sleep(temp_ouverture) if ( ( tonumber(fibaro:getValue(28, "value")) > 0) ) then fibaro:call(4, "sendPush", "Porte Entrée Ouverte depuis 10 minutes !"); end end if ( ( tonumber(fibaro:getValue(26, "value")) > 0) ) then fibaro:sleep(temp_ouverture) if ( ( tonumber(fibaro:getValue(26, "value")) > 0) ) then fibaro:call(4, "sendPush", "Porte Terrasse Ouverte depuis 10 minutes !"); end end Alors, oui bien sur, j' aurais certainement pu faire un truc plus joli/propre/optimisé Mais ça fonctionne dans l' état. Je verrais pour les optimisation plus tard. Mes capteurs d' ouverture sont des FIBARO FGK. Voilou, en esperant que ça serve ou donne des idées ++
  4. Rem's

    Réveil En Lua

    Bonsoir a tous : Version technicolor (c'est super pratique et super clair, merci pour l'explication) je voudrai regrouper mes scènes à travers un script lua, plus complet. Seulement voila, pour moi c'est du "mandarin" que j'essaye de décrypter. Je joint ma scène complète, si quelqu'un pouvait m'en dire plus .... local sourceTrigger = fibaro:getSourceTrigger(); if (sourceTrigger["type"] == "autostart") then while true do local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); if ( ( ((currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "06:45") ) ) then local startSource = fibaro:getSourceTrigger(); if (sourceTrigger["type"] == "autostart") then while true do -- réveil à 6h45 -- fibaro:call(71, "turnOn"); fibaro:call(14, "turnOn"); elseif ( tonumber(fibaro:getValue(49, "valueSensor")) <= 5 then fibaro:call(56, "pressButton", "1"); fibaro:sleep(7*1000); fibaro:call(56, "pressButton", "14"); fibaro:sleep(2*1000); fibaro:call(56, "pressButton", "9"); fibaro:sleep(2*1000); fibaro:call(56, "pressButton", "5"); fibaro:call(41, "turnOn"); fibaro:debug("Lancement du réveil"); -- Allumage TV + BFM -- fibaro:sleep(900*1000); -- Lancement de l'extinction des lumières fibaro:call(11, "turnOn"); fibaro:sleep(900*1000); fibaro:call(11, "turnOff"); fibaro:call(14, "turnOff"); fibaro:call(41, "turnOff"); fibaro:debug("Extinction salon"); fibaro:call(56, "pressButton", "1"); fibaro:debug("Bascule vers Disney channel"); -- Virtuel device pour basculer de BFM vers Disney Channel -- fibaro:sleep(4000*1000); -- Extinction lampe entrée à 8h, 1h 30 plus tard fibaro:call(71, "turnOff); fibaro:debug("Extinction entrée"); end fibaro:sleep(60*1000); end end D'avance merci pour votre aide.
  5. Shad

    Gestion Minimote

    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
  6. À partir du code Krikroffs, j'ai fait un disque virtuel de télécharger les données météo actuelles du wunderground.com. La plupart des crédits doit aller à Krikroff P.s Google translate à tous WU_Weather.vfib
  7. Voici un périphérique virtuel qui a pour utilité de détecter et de notifier un utilisateur lorsqu’une nouvelle mise à jour est disponible en téléchargement pour le HC2 de Fibaro. (Publié sur le blog de Pascal le 21-03-2014) Version 1.0.8 - Mise à jour : 13/01/2015 Vous pouvez télécharger la dernière version ici et sur le blog consulter la notice d'installation et d'utilisation bien que tout soit simplifié au maximum Version 1.0.8 - Mise à jour : 13/01/2015 (Pour HC2 >= V4.031) Aucunes configuration nécessaire dorénavant, il faut importer le vd et c'est tout. Compatible API REST de la V4 L'unique paramétrage restant à faire par l'utilisateur est de préciser dans le code (dans le mainloop) l' ID du smartphone et de l' utilisateur pour les notifications. local userID = 2; local smartphoneID = 844; Version 1.0.6 - Mise à jour : 08/09/2014 (Pour HC2 <= V3.600) L'image principale du Virtual Device réapparaît maintenant automatiquement après l'appui sur un bouton Notification de mise à jour disponible sur la home du périphérique virtual. Remise en forme et révision du code Version 1.0.5 - Mise à jour : 04/09/2014 Amélioration: Récupération automatique de la variable en cas de données corrompues (suggéré par Lazer) Mise à jour des traductions Version 1.0.4 - Mise à jour : 03/09/2014 Nouveau: Affichage du numéro de version dans l'interface utilisateur et ajouté à la notification (mail & push) Nouveau: Icône d'un membre du forum domotique-fibaro.fr, merci Lazer Amélioration: Envoyer une notification si une nouvelle mise à jour est détectée et ne pas répéter les envois. Corrections mineures. Version 1.0.2 - Mise à jour : 21/02/2014 Corrections mineures. Version 1.0.1 - Mise à jour : 14/02/2014 Installation automatisée pour faciliter la mise en place des variables globales et du paramétrage de l’application. Possibilité de choisir le type de notification avec un bouton à trois états depuis l’interface graphique: Email, Push ou les deux. Possibilité de choisir le type de mise à jour devant être notifié avec un bouton à trois états depuis l’interface graphique : Bêta, stable ou les deux. Multilingue : Français, Anglais. Téléchargements: UpdateNotifier_1.0.8.zip pour HC2 en V4.xxx
  8. Domotique-Home

    Notre Hc2 Nous Réveille Le Matin

    Bonjour, Aujourd'hui je partage avec vous une scène simple qui permet nous réveiller le matin. Pour cela nous allons utiliser notre serveur PAW et sa synthèse vocale Si vous ne l'avez pas encore installé et configuré c'est par ici Créez une nouvelle scène puis insérez le code suivant en modifions a votre convenance. Comme d'habitude j’essaye de commenter le code au maximum, si vous avez des questions n’hésitez pas --[[ %% autostart %% properties %% globals --]] -- SETTINGS local HReveil = "06:30"; -- heure du réveille local IdSv = XX -- remplacez XX par ID_de_votre_VD_synthèse_vocale; local sourceTrigger = fibaro:getSourceTrigger(); if (sourceTrigger["type"] == "autostart") then while true do local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); -- currentDate.wday == 1 correspond a Dimanche -- currentDate.wday == 2 correspond a Lundi -- etc... -- currentDate.wday == 7 correspond a Samedi -- ici j'ai programmé le réveil de lundi au vendredi -- modifier a votre convenance if ( ( ((currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == HReveil ) ) ) then -- volume sonore du smartphone fibaro:setGlobal("vol", "10") -- message vocal à envoyer au smartphone fibaro:setGlobal("speech", "Bonjour, il est " .. string.format("%02d", currentDate.hour) .. " heure " .. string.format("%02d", currentDate.min) .. " il faut se réveiller") -- activation du périphérique virtuel et bouton ad hoc fibaro:call(IdSv, "pressButton", "1"); end fibaro:sleep(60*1000); end else local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); if ( startSource["type"] == "other" ) then -- volume sonore du smartphone fibaro:setGlobal("vol", "10") -- message vocal à envoyer au smartphone fibaro:setGlobal("speech", "Bonjour, il est " .. string.format("%02d", currentDate.hour) .. " heure " .. string.format("%02d", currentDate.min) .. " il faut se réveiller") -- activation du périphérique virtuel et bouton ad hoc fibaro:call(IdSv, "pressButton", "1"); end end
  9. Le script de BenjyNet m'a donné un idée pour des rubans leds que j'ai chez moi au niveau de la télé, l'idée est de démarrer les leds quand il fait nuit et quand la télé marche donc tire du jus sur le wallplug ou elle est branchée. J'ai fais le script suivant: --[[ %% autostart %% properties %% globals --]] -- Allumage led fonction conso wallplug v 1.0.0 [03-2014] -- Copyright © 2014 lolomail local sourceTrigger = fibaro:getSourceTrigger(); local current_conso = 0; if ( (sourceTrigger["type"] == "autostart") and ( fibaro:getGlobalValue("Jour_Nuit") == "Jour" ) ) then while true do local current_conso = tonumber(fibaro:getValue(66, "valueSensor")); fibaro:debug("Conso wallplug " ..current_conso); if current_conso > 80 then fibaro:debug(os.date() .. " - Télé allumée"); fibaro:debug(os.date() .. " - LEDs allumées"); if ( tonumber(fibaro:getValue(132, "value")) < 1 ) then fibaro:call(132, "turnOn"); end if ( tonumber(fibaro:getValue(133, "value")) < 1 ) then fibaro:call(133, "turnOn"); end end if current_conso < 80 then fibaro:debug(os.date() .. " - Télévision éteinte"); fibaro:debug(os.date() .. " - LEDs éteintes"); if ( tonumber(fibaro:getValue(132, "value")) > 1 ) then fibaro:call(132, "turnOff"); end if ( tonumber(fibaro:getValue(133, "value")) > 1 ) then fibaro:call(133, "turnOff"); end fibaro:sleep(10*1000) end end end Il me démarre nickel les rubans quand la conso de la télé passe au delà de 80w mais quand j'éteins, il n'éteint pas les rubans. J'ai fais une coquille? Merci Laurent
  10. Salut a tous, Je pense que ça a du au moins vous arriver une fois dans votre vie d'allumer par mégarde une lampe extérieure sans vous en rendre compte et la laisser allumée. J' ai donc fait un petit script rapide qui permet de detecter quand une lampe extérieure est allumée en journée et l'éteindre automatiquement après 20 secondes. voici donc le script : --[[ %% properties 29 value 34 value 33 value %% globals sunsetHour --]] local startSource = fibaro:getSourceTrigger(); if (fibaro:getGlobal("sunsetHour") == "0") then if (fibaro:getValue(29, "value") > "0") or (fibaro:getValue(33, "value") > "0") or (fibaro:getValue(34, "value") > "0") then fibaro:call(4, "sendPush", "Lumière Ext Allumée. Procedure d extinction."); fibaro:sleep(20*1000) fibaro:call(29, "turnOff") fibaro:call(33, "turnOff") fibaro:call(34, "turnOff") end end Dans ce script les IDs 29, 33 et 34 sont les IDs de mes lampes extérieures. Il faudra donc les modifier par les votres. Egalement j' ai 3 lampes ext, si vous avez plus ou moins, il faudra adapter le code en enlevant ou ajoutant des lignes. Et j'utilise comme element de verification une variable Globale "sunsetHour" pour savoir si nous sommes en journée ou de nuit. Voila c'est tout bête, mais ça dépanne.
  11. Bon voila, y a quelque temps j'ai mis en un virtual device dont le but est de me permettre de voir en un coup d'oeil divers point de la maison. Par exemple quel volet est ouvert, l'état d'une variable qui est changée via des scripts (ex video armer....). On peut imaginer bcp de chose: état alarme, état volet, état contacteur porte, état chauffage, état éclairage... Pour cela faire un virtual device avec autant de label que d'etat à reporter. Dans la main loop mettre les codes qu'il faut pour chaque état en se basant sur: Pour un volet: -- Controle volet if ( tonumber(fibaro:getValue(ID_module, "value")) == 0 ) then fibaro:call(ID_Virtualdevice, "setProperty", "ui.labelX.value", "Texte à afficher dans le VD quand le volet est fermé"); end if ( tonumber(fibaro:getValue(ID_module, "value")) > 0 ) then fibaro:call(ID_Virtualdevice, "setProperty", "ui.labelX.value", "Texte à afficher dans le VD quand le volet est ouvert"); end Il faut changer: - ID_Module par le numéro de votre module - ID_Virtualdevice par le numéro de notre virtual device - ui.labelX.value par la désignation de votre label Pour une variable: -- Controle jour/nuit if ( fibaro:getGlobalValue("Jour_Nuit") == "Nuit" ) then fibaro:call(ID_Virtualdevice, "setProperty", "ui.labelX.value", "Texte à afficher dans le VD quand la variable = nuit"); end if ( fibaro:getGlobalValue("Jour_Nuit") == "Jour" ) then fibaro:call(ID_Virtualdevice, "setProperty", "ui.labelX.value", "Texte à afficher dans le VD quand la variable = jour"); end - Jour_Nuit par le non de votre variable à controler - ID_Virtualdevice par le numéro de notre virtual device - ui.labelX.value par la désignation de votre label Penser à ajouter avant le dernier "end" un petit: fibaro:sleep(60*1000)
  12. Moicphil

    Piloter sa Tv Samsung

    Voici un script de Rafal.m en Béta, afin de piloter sa TV Samsung Téléchargement du script : >>> samsung.lua Procédure et fonctionnement au début du script lua Forum et post Officiel : http://forum.fibaro.com/viewtopic.php?p=31455&sid=7be6686ae178ef1a7dc6241863a68945#31455
  13. Bonjour, Vous l'avez peut-être vu ailleurs, j'ai créé un p'tit script qui me permet de lancer ma VMC simple flux selon l'humidité de la maison. Pratique en hivers pour éviter de balancer la chaleur dehors. J'ai mis sur mon bloc VMC un FGS-221 : O1 allume la VMC, O2 mets la grande vitesse. Evidement ceci dépends de votre modèle de VMC. D'autre part, je calcule dans ce script la moyenne d'humidité sur les 4 ST814 que j'ai dans le salon / chambre / sdb / douche et si l'un d'entre eux a +5% d'humidité que la moyenne alors la vitesse lente démarre, si c'est 70% de plus que la moyenne la grande vitesse se lance. Et on attends 10minutes et on voit si on doit changer la solution. Voici le code, il y a encore du debug dedans, les variables suivantes sont a changer : hum_cap : les capteurs d'humidité... vmc_low : VMC low speed vmc_high : VMC high speed Le code est sous licence MPL 1.1, vous pouvez l'utiliser comme vous voulez, mais vous devez laisser mon nom dessus. A noter que je suis preneur de toute idées et ou modifications pour rendre ce code plus intelligent. Changements : Version 1.0.2 : Version initiale Version 1.0.4 : Ajout du support de déclenchement manuel de la scène ou lorsque la sonde d'humidité se déclenche (ne pas oublie de mettre id value en haut du script). Le code est disponible sur mon GIT, si vous avez des bugs il y a aussi un tracker pour cela : https://redmine.oav.net/projects/kiwi/repository/changes/fibaro/lua/vmc/vmc.lua Xavier
  14. Krikroff

    Créer une fonction récursive...

    Il peut arriver lorsqu'un script dépend d'un traitement extérieur comme par exemple l'appel d'un service web qui retourne un json, que le script ne s’exécute pas correctement jusqu'au bout, les raisons peuvent être multiples: timeout, service indisponible etc. C'est pourquoi il peut être utile dans certaines conditions de relancer l’exécution du script jusqu’à obtention du résultat attendu. Voici comment faire: -- Copyright © 2013 Jean-christophe Vermandé local _selfId = fibaro:getSelfId(); -- update Public IP label httpClient = Net.FHttp("checkip.dyndns.com"); -- recursive function to ping device function checkIP(retry) retry = retry or 0; -- call domaine to check response, status, errorCode = httpClient:GET("/"); -- check for error if errorCode == 0 then -- Internet connection is alive :-) fibaro:setGlobal("NetworkStatus", 1); if tonumber(status) == 200 then local ip = response:match("(%d%d?%d?.%d%d?%d?.%d%d?%d?.%d%d?%d?)"); fibaro:call(_selfId, "setProperty", "ui.lblPublicIP.value", ip); else fibaro:call(_selfId, "setProperty", "ui.lblPublicIP.value", "Error!"); end else if retry < 5 then fibaro:debug("Retry #"..retry.."process, please wait..."); fibaro:sleep(1000); return checkIP(tonumber(retry+1)); end -- Internet seems down, check connection... fibaro:setGlobal("NetworkStatus", 0); fibaro:call(_selfId, "setProperty", "ui.PublicIPLabel.value", "Unknown"); -- send mail fibaro:call(2, "sendEmail", "Check Network Status failed !", "Unable to check network status, error code is "..errorCode.. ", response is ["..response.."]"); end end -- execution de la fonction checkIP(); -- clean memory, destroy object httpClient = nil; Ce code interroge le service checkip.dyndns.com pour vérifier l'adresse IP, si le service est en erreur ou bien un problème avec FHttp, alors le script est relancé une nouvelle fois. Si au bout d'un maximum de 5 tentatives il y a toujours une erreur alors un mail est envoyé. La fonction récursive peut être dans d'autres cas: algorithme, calcul etc.
  15. Did

    Heure d'été

    Bonjour, J'ai découvert une commande Lua "isdst" qui permet de savoir si nous sommes en heure d'été. On doit pouvoir stocker cette réponse "true" dans une variable Saison mais je ne sait pas si il y a une réponse "false" pour les mois d'hiver. Quelqu'un a une idée sur les lignes de commande Lua pour récupérer cette info dans le panneau des variables? Merci.
  16. Voici un script de rafal.m repris sur le forum officiel. Ce script permet de basé l'éclairage automatique d'une salle de bain, toilette ... Sur l'ouverture d'une porte pour un fgk-101. Je n'ai pas retesté ce script depuis les modifications de l'alarme, je l'ai modifier pour utiliser une variable globale. -- NOTICE TO CHANGE DEVICES ID's: --[[ %% properties 7 value 17 value %% globals --]] -- BATHROOM SCENE FUNCTIONALITY: -- No extra Global variables needed! -- Automatic light depending of opening and closing door -- Time to enter - detecting another situations, like cleaning bathroom -- NOTICE TO CHANGE DEVICES ID's: doorID = 7; lightID = 17; -- time to enter, longer time will detect as another situation, like: cleaning timeToEnter = 10; local light = fibaro:getValue(lightID, 'value'); local door = fibaro:getValue(doorID, 'value'); local armed, lastArmed = fibaro:get(doorID, 'armed'); local trigger = fibaro:getSourceTrigger(); if (fibaro:countScenes()>1) then fibaro:debug('Kill second scene!'); fibaro:abort(); end if (trigger['type']=='property') then -- door trigger if (trigger['deviceID']==tostring(doorID)) then -- door opened if (door=='1') then fibaro:debug('Door opened.'); if (armed=='0') then fibaro:call(lightID, 'turnOn'); fibaro:call(doorID, 'setArmed', '1'); fibaro:call(doorID, 'setArmed', '0'); fibaro:debug('Light on!'); end -- door closed elseif (door=='0') then fibaro:debug('Door closed.'); if (armed=='1' or (os.time()-lastArmed)>=timeToEnter) then fibaro:call(lightID, 'turnOff'); fibaro:call(doorID, 'setArmed', '0'); fibaro:debug('Light off, room empty!'); else fibaro:call(doorID, 'setArmed', '1'); fibaro:debug('Someone inside!'); end end -- light manual elseif (trigger['deviceID']==tostring(lightID) and (os.time()-lastArmed)>0) then -- light manual off if (light=='0') then if (door=='1') then -- when door are opened fibaro:call(doorID, 'setArmed', '1'); else -- when door are closed fibaro:call(doorID, 'setArmed', '0'); end fibaro:debug('Light manual off!'); -- light manual on elseif (light=='1') then fibaro:call(doorID, 'setArmed', '1'); fibaro:debug('Light manual on, arming...'); end end end
  17. Domotique-Home

    Index Des Fonctions (Thématique)

    Bonjour, J'ai commencé la traduction de la docs Fibaro en français je pense que cela nous aidera. Alors si vous êtes volontaire pour me donner un coup de pouce, hésitez pas a me contacter j’alimente la liste avec des lien au fur et a mesure de mon avancement. Index des fonctions (thématique) Fonctions de Contrôle de modules: fibaro:call(deviceID, actionName, …) fibaro:get(deviceID, propertyName) fibaro:getValue(deviceID, propertyName) fibaro:getModificationTime(deviceID, propertyName) fibaro:getType(deviceID) fibaro:getRoomID(deviceID) fibaro:getSectionID(deviceID) Fonctions de Contrôle des scènes fibaro:abort() fibaro:getSourceTrigger() fibaro:getSourceTriggerType() fibaro:startScene(sceneID) fibaro:killScenes(sceneID) fibaro:setSceneEnabled(sceneID, enabled) fibaro:isSceneEnabled(sceneID) fibaro:countScenes() fibaro:countScenes(sceneID) Fonctions de Manipulation fibaro:setGlobal(varName, value) fibaro:getGlobal(varName) fibaro:getGlobalValue(varName) fibaro:getGlobalModificationTime(varName) Fonctions supplémentaires fibaro:debug(text) fibaro:calculateDistance(position1, position2) Lien supprimés en respect de la nouvelle charte.
  18. Shad

    LUA scheduler for HC2

    Ce code a été écrit par robmac avec l'aide de jompa68 , A.Socha. J'ai également fais une traduction du poste original ici. Je ne vais pas tout expliquez mais juste faire comprendre le fonctionnement de base. Ce script a été écrit pour pouvoir gérer tout les heures de lancement d'une action depuis une seule scène. Personnellement ce script fonctionne beaucoup que le code standard lua. Les commandes sunset or sunrise fonctionne très bien. ATTENTION CE CODE NE FONCTIONNE PAS CHAQUE MINUTES DONC N'UTILISE PAS DE RESSOURCES SYSTEME. ILS DÉMARRENT SEULEMENT LORSQU'UNE TACHE EST PLANIFIÉE. Personnellement, depuis que j'utilise ce code ma HC2 ne fonctionne que mieux, dans chaque scène vous n'avez juste qu'à y mettre vos conditions et actions. Je ne posterais pas le code car il fait plus de 1000 lignes. Ce script ajoute également une fonctionne qui manque cruellement à la HC2, des alarmes. Par défaut il n'en possède que deux. Pour mon usage j'en ai programmé deux, une pour la semaine et l'autre pour le week-end. Installation du script: Créer une scène en Lua et collez le code du fichier Scene-1 - ID 1 Scheduler.txt, importez le fichier Alarm_Clock.vfib 4 fois (editez le numéro de chaqu'un dans le code) et 1 fois le Scheduler Control. Il vous faudra ensuite créer des globals variables avec comme nom: - scheduleGroup - scheduleActive - alarmTime1 - alarmTime2 - alarmTime3 - alarmTime4 Après pour redémarrez le scheduler il faut créer une scène avec: --[[ %% properties %% globals --]] local scheduleScene = 1 while (fibaro:countScenes(scheduleScene) > 0) do fibaro:killScenes(scheduleScene); fibaro:debug("Kill") end; active = active or { Active = 1, Disabled = 2 } activeIndex = activeIndex or { [1] = "Active", [2] = "Disabled"} local scheduleActive = fibaro:getGlobalValue("scheduleActive") or activeIndex[1] if scheduleActive == activeIndex[1] then -- restart a new instance if active fibaro:startScene(scheduleScene) end Maintenant pour paramétrez tout sa c'est très simple. Dans le scheduler il faut éditez les lignes: - 96: Id scène pour redémarrer - 97: Id virtual device pour controler le scheduler - 98, 103, 108 et 113: les id des virtuals devices pour les alarmes. Ensuite dans la scène pour redémarrer le scheduler éditez la ligne suivante avec l'id de la scène du scheduler: local scheduleScene = 1 Normallement c'est tout pour la configuration. MISE EN PLACE DU SCENARIO: Vous devez insérez vos lignes en-dessous la section <ADD YOUR LINES HERE> luaDaySchedule:add(<time>,<id>, <parameter> , <action>, <days> ,<catchup>,<p1>,<p2>,<p3>) Heure de lancement du scénario: <time> : Remplacez cette balise par une heure dans un format de 24h exemple: "23:21" ou "07:00". PS: Vous ne pouvez changer une variable globale pour changez l'heure de la scène sans relancez la scène. SUNRISE - SUNSET avec + ou - x minutes: <time>: Remplacez cette balise par "Sunrise" ou Sunset" <p1> Remplacez cette balise par 27 pour ajoutez 27 minutes ou - 11 pour lancez 11 minutes plus tôt. ID DU MODULE OU DE LA SCENE: <id> Remplacez cette balise par l'id de votre module ou scène. ACTION POSSIBLE (liste non entière et consulter le poste originale pour voir les commandes): Allumez ou éteindre un module régler une valeur pour un dimer envoyer un mail envoyer une notification push à un ou tous les périphériques envoyer un mail à un ou tous les utilisateurs appuyer sur un modules virtuels régler un slider pour un modules virtuels régler un variable global armer ou désarmer un module régler toute chacune des couleurs d'un module RGB démarrer un programme RGB démarrer une autre scène CHOIX DES JOURS DE LANCEMENT DES SCENARIOS: <days> Remplacer cette balise par jour de la semaine Il est également possible de mettre plusieurs jours de la semaine avec {"Sunday','Monday"}. Il y a 3 commandes spécial: {"All"] = Tous les jours de la semaines {"Weekend"} = Samedi et Dimanche {"Weekday"} = Lundi au Vendredi Ils peuvent également être fusionner avec les jours de la semaine {"Weekend","Monday"} = Samedie, Dimanche et Lundi LES ALARMES: Pour configurer les alarmes, un fichier vfib est disponible dans le zip joint. A la ligne 92 du scheduler vous devez paramétrer les id de vos modules virtuels ainsi que l'id de la scene du redémarrage du scheduler (également fournie dans le zip). Dans chaque bouton du module virtuel vous devez également reconfigurer l'id de ce module virtuel. Et pour finir vous devez créer des variables globales pour alarmDays1 - alarmDays2 - alarmTime1- alarmTime2. Voici les lignes que vous devez ajoutez à votre scheduler: --Réveil 1 luaDaySchedule:add(getAlarm("alarmTime1"),{"4"}, "" , "startScene", {"All"} ,false) --Réveil 2 luaDaySchedule:add(getAlarm("alarmTime2"),{"5"}, "" , "startScene", {"All"} ,false) Voici quelques une de mes lignes: luaDaySchedule:add("07:00","30", "" , "startScene", {"Weekday"}, false); luaDaySchedule:add("07:30","30", "" , "startScene", {"Saturday"}, false); luaDaySchedule:add("Sunset","Nightime", "1" , "setGlobal", {"All"}, false , 0); Comme écrit plus haut je n'ai pas tout expliquer car trop long. Il s'agit juste d'un résumé Des exemples sont fournis dans le scheduler + d'autre explication sur le poste originale du forum officiel. scheduler-1-3-0.zip Scheduler1-3-1.zip
  19. La HC2 est capable de gérer l'arrosage de votre jardin via le panneau d'arrosage. Dans ce panneau vous pouvez définir l'heure, la durée de l'arrosage mais aussi "adjust water" et "rain delay" afin de s'adapter à la météo. Sur le forum Fibaro, richo a mis a dispo le script suivant: HC2 = Net.FHttp("HC_IP",80) HC2:setBasicAuthentication("admin", "your_password") -- get table response ,status, errorCode = HC2:GET("/api/panels/drenchers") jsonTable = json.decode(response) -- change table in Lua for 24 hours delay jsonTable.rainDelay = "24" -- send back json = json.encode(jsonTable); HC2:PUT("/api/panels/drenchers", json) fibaro:log("ready") Cela permet de passer "rain delay" (décallage) à 24 heures. Il a aussi mis une scène pour le déclencher en automatique: --[[ %% properties 3 WeatherConditionConverted %% globals --]] local VD_ID = 999 -- enter the ID of your Virtual device local startSource = fibaro:getSourceTrigger(); condition = fibaro:getValue(3, "WeatherConditionConverted") fibaro:debug("Weather change: "..condition) if condition == 'rain' or condition == 'storm' then fibaro:call(VD_ID, "pressButton", "1"); fibaro:debug('sprinkle delayed 24h') end 1- J'ai repris cela pour créer un virtual device avec: - Une label pour le delai, - Trois boutons pour +0h / +24h / +48h - Une label pour le ajustement en eau - Trois boutons pour +0% / +10% / +20% Cela me permettra de le choisir manuellement si besoin. Le script pour le "rain delay" est du type: HC2 = Net.FHttp("HC_IP",80) HC2:setBasicAuthentication("admin", "your_password") -- get table response ,status, errorCode = HC2:GET("/api/panels/drenchers") jsonTable = json.decode(response) -- change table in Lua for 0 hours delay jsonTable.rainDelay = "0" -- send back json = json.encode(jsonTable); HC2:PUT("/api/panels/drenchers", json) fibaro:log("ready") fibaro:call(ID virtual device, "setProperty", "ui.Label1.value", " 0 heures"); Il suffit de changer "0" par "24" pour avoir un délai de 24h Pour l'ajustement, le script est: HC2 = Net.FHttp("HC_IP",80) HC2:setBasicAuthentication("admin", "your_password") -- get table response ,status, errorCode = HC2:GET("/api/panels/drenchers") jsonTable = json.decode(response) -- change table in Lua for +0% of sprinkling jsonTable.adjustWater = "+0" -- send back json = json.encode(jsonTable); HC2:PUT("/api/panels/drenchers", json) fibaro:log("ready") fibaro:call(ID virtual device, "setProperty", "ui.Label2.value", " +0%"); Après j'ai crée une scène qui va déclencher le délai de 24h fonction du temps, cf image jointe. Il faut que je retravaille cette scène afin de faire quelque chose comme en LUA comme celle de richo et aussi utiliser la fonction ajustement s'il fait sec.
  20. lionel

    Filtration Piscine

    Avant que les beaux jours ne reviennent j ai créer ce petit script pour gérer le temps de filtration en fonction de la Température de la piscine (les retours sur une amélioration de celui sont les bienvenues) tout d abord ,j ai une créer un scénario qui: - ce lance tous les jours à 14 hrs - relève la température de la piscine - lance le script ci dessous --[[ %% properties %% globals --]] --filtration en route en fonction de le température de la piscine fibaro:debug("HC2 demarre le script le " .. os.date()); local MaVariable MaVariable=fibaro:getValue(112,'value')--module temperature piscine fibaro:debug('value = ' .. MaVariable) if (MaVariable >= '24' and MaVariable < '26') then sleep(288*100*1000) -- 8 heures fibaro:call(115,"turnOff") fibaro:debug(115) if (MaVariable >= '26' and MaVariable < '28') then sleep(360*100*1000) -- 10 heures fibaro:call(115,'turnOff') fibaro:debug(115) end end
  21. lionel

    Simulation de Présence

    Script de Clarkkent609 posté ici : http://forum.fibaro.com/viewtopic.php?t=3009 1ere étape: Créer une variable prédéfinie :"Simu_presence" avec les valeurs "On" and "Off" 2eme étape: créer un module virtuel 3eme étape: copier et coller ce code: --[[ %% properties %% globals --]] fibaro:setGlobal("Simu_presence", "On"); --fibaro:debug("Simulation de présence activée"); fibaro:log("Simulation de présence activée"); fibaro:call(30, "setProperty", "ui.status.value", "activée"); --fibaro:debug(fibaro:getValue(30, "ui.status.value")) 30 =ID du module virtuel coller ce code dans le second bouton: --[[ %% properties %% globals --]] fibaro:setGlobal("Simu_presence", "Off"); --fibaro:debug("Simulation de présence désactivée"); fibaro:log("Simulation de présence désactivée"); fibaro:call(30, "setProperty", "ui.status.value", "désactivée"); --fibaro:debug(fibaro:getValue(30, "ui.status.value")) 30 =ID module virtuel. Attention : ID du Label doit contenir "status" : voir photo: 4eme étape copier et coller ce code dans le MAIN LOOP et remplacer par vos valeurs utilisateur --[[ %% properties %% globals --]] -- LUA - Presence Simulator V1.0.0 -- -- simulate a presence when you're on vacation. -- A part of code is reused, it can found here. Thanx to Richo: http://forum.fibaro.com/viewtopic.php?t=1892&postdays=0&postorder=asc&highlight=presence&start=15 and here thx to Krikroff http://forum.fibaro.com/viewtopic.php?t=1656 -- USER SETTINGS : local start_hour = 19; --hour to start simulation local start_minute = 30; --minute to start simulation, example 19:30 local rndmaxtime = 20 --random time of light change in minutes --> here each device is on max 20min local runtime = 90 --how long to run simulation in minutes local ID_devices_lights = {17, 13} --IDs of lights to use in simulation local numbers_lights = #ID_devices_lights --numbers of light devices listed above local activated_push = true; --activate push when simulation starts and stops local ID_Smartphone = 7; --ID of your smartphone local simu = fibaro:getGlobal("Simu_presence"); --value of the global value: simulation is on or off local debug = true; --activate the debug mode -- DO NOT EDIT THE CODE BELOW (except to suit your needs) -- local minute = 60000 --in milliseconds local currentDate = os.date("*t"); SimulatorPresenceEngine = { version = "1.0.0" }; -- function to switch off devices in the list function SimulatorPresenceEngine:TurnOff(group) local name, id; local ID_devices_group = group; for i=1, #ID_devices_group do id = tonumber(ID_devices_group[i]); fibaro:call(id, "turnOff"); if (debug) then name = fibaro:getName(id); if (name == nil or name == string.char(0)) then name = "Unknown" end fibaro:debug("Device:" .. name .. " On "); end end end -- function to simulate a presence function SimulatorPresenceEngine:Launch() local start = os.time() local endtime = start + runtime*minute/1000 -- after how many minutes exit simulation if (activated_push) then fibaro:call(ID_Smartphone, 'sendPush', "Lights simulation started") ; --send push notification if (debug) then fibaro:debug("push start sent") end end while ((os.time() < endtime) and (simu == "On")) do local random_light = tonumber(ID_devices_lights[math.random(numbers_lights)]) --choose a random light in the list local lightstatus = fibaro:getValue(random_light, 'value') --get the value of the random light in the list -- turn on the light if off or turn off if on if tonumber(lightstatus) == 0 then fibaro:call(random_light, 'turnOn') else fibaro:call(random_light, 'turnOff') end fibaro:sleep(1000) ; --necessary to get back the new status, because HC2 is too fast :-) lightstatus = fibaro:getValue(random_light, 'value') --get the value of the random light after his update if (debug) then fibaro:debug('light ID:'..random_light..' status:'..lightstatus) end local sleeptime = math.random(rndmaxtime*minute) --random sleep fibaro:sleep(sleeptime) local sleeptimemin = math.abs(sleeptime/60000) if (debug) then fibaro:debug('sleeptime:'..sleeptimemin) end simu = fibaro:getGlobal("Simu_presence"); --verify the global value, if the virtual device is deactivated, the scene stops. end --turn Off all lights SimulatorPresenceEngine:TurnOff(ID_devices_lights); fibaro:call(ID_Smartphone, 'sendPush', "Lights simulation stopped") ; --send push notification if (debug) then fibaro:debug("push stop sent") end fibaro:sleep(60000); end -- Condition to start simulation if ((simu == "On")and (currentDate.hour == start_hour ) and (currentDate.min == start_minute))then SimulatorPresenceEngine:Launch(); --launch the simulation when virtual device is on, and the current time is triggered. end
  22. lionel

    Armoire Météo avec RGB

    Merci a Olivier Male qui est l auteur de ce script poster ici: http://domotique-info.fr/2013/08/armoire-meteo-fibaro-rgbw-controller/ Dans ce tutoriel, nous allons voir comment transformer son armoire en armoire météo. Le principe est d’y ajouter des LEDs RGB pour éclairer l’armoire avec une couleur au moment où vous ouvrez la porte. Mais nous allons ajouter un peu d’intelligence et faire correspondre la couleur à la météo du moment. Voici le sens qu’on souhaite donner à chaque couleur : bleu : il va pleuvoir vert : il fait froid jaune : il fait beau rouge : il fait lourd blanc : ciel nuageux Pré-requis : Fibaro RGBW Controller Pour réaliser ce tutoriel nous avons besoin d’un contrôleur RGB et de LEDs. Nous allons utiliser le module Fibaro RGBW Controller dont vous pouvez trouver le test sur le site fait par Pascal. Ce tutoriel est prévu pour la box domotique Fibaro Home Center 2. qui est la seule box à ce jour à savoir utiliser ce module RGB. Mais comme la solution est basée sur le protocole z-wave, d’ici quelques semaines, les autres box z-wave du marché sauront en faire de même. Scène : Lumière Armoire La récupération de la météo se fait tout simplement en utilisant les variables de la box Home Center 2. Celles-ci peuvent récupérées avec cette commande : fibaro:getValue(3, « Humidity »). Nous avons plus qu’à intégrer cette commande à notre script et nous obtenons : --[[ %% properties 3 Temperature 3 Humidity 3 WeatherConditionConverted 96 value %% globals --]] local startSource = fibaro:getSourceTrigger(); local Humidity = tonumber(fibaro:getValue(3, "Humidity")); local OutsideTemperature = tonumber(fibaro:getValue(3, "Temperature")); local WeatherCondition = fibaro:getValue(3, "WeatherConditionConverted"); fibaro:debug("OutsideTemperature " .. OutsideTemperature); fibaro:debug("Humidity " .. Humidity); fibaro:debug("WeatherCondition " .. WeatherCondition); -- 90 = ID module RGB -- 96 = ID interrupteur if ( (tonumber(fibaro:getValue(96, "value")) > 0 ) or startSource["type"] == "other" ) then -- si l'interrupteur est ouvert if(OutsideTemperature <= tonumber("20")) then fibaro:debug("vert"); fibaro:call(90, "setColor", "0", "255", "0", "0") -- vert end if(OutsideTemperature > tonumber("20")) then fibaro:debug("jaune"); fibaro:call(90, "setColor", "255", "255", "0", "0") -- jaune end if(Humidity >= tonumber("50")) then fibaro:debug("rouge"); fibaro:call(90, "setColor", "255", "0", "0", "0") -- rouge end if(Humidity >= tonumber("50") and OutsideTemperature < tonumber("20")) then fibaro:debug("blanc"); fibaro:call(90, "setColor", "255", "255", "255", "0") -- blanc end if(WeatherCondition == "rain") then fibaro:debug("bleu"); fibaro:call(90, "setColor", "0", "0", "255", "0") -- bleu end -- la météo est affichée 5 secondes fibaro:debug("tempo"); fibaro:sleep(5*1000); -- si la lumière n'a pas été fermée pendant ces 5 secondes if( (tonumber(fibaro:getValue(96, "value")) > 0 ) ) then -- met la lumière en blanc car plus pratique pour choisir ses affaires fibaro:call(90, "setColor", "255", "255", "255", "0") -- blanc fibaro:debug("tempo blanc"); fibaro:sleep(3*60*1000); if( (tonumber(fibaro:getValue(96, "value")) > 0 ) ) then fibaro:debug("turnOff1"); fibaro:call(90, "turnOff"); end end else -- si l'interrupteur est fermée fibaro:debug("turnOff2"); fibaro:call(90, "turnOff"); end
  23. Bonsoir, Voila j'expose mon problème, j'ai un détecteur d'ouverture et je voudrais que si la porte reste ouverte plus de 30 secondes cela m'envoie une notification. Sur le forum Fibaro j'ai vu un script et j'ai demandé à Andrew comment faire pour avoir la fonction "si ouvert plus de 30 secondes = notification", Andrew m'a dit d'utiliser une while loop, j'ai regardé le lien mais j'avoue que je ne sais pas comment faire. Voici le script que j'ai mis sur ma HC2 et qui envoi une notif + email quand le détecteur détecte un ouverture de porte: --[[ %% properties 154 value %% globals --]] local startSource = fibaro:getSourceTrigger(); if ( ( tonumber(fibaro:getValue(154, "value")) > 0 ) or startSource["type"] == "other" ) then fibaro:call(146, "sendDefinedPushNotification", "42"); fibaro:call(2, "sendDefinedEmailNotification", "42"); end Si quelqu'un peux m'expliquer comment marche une white loop et comment il faudrait faire pour mon cas de figure cela serait top. Merci
  24. Tout à commencé ici http://forum.fibaro.com/viewtopic.php?t=1894 Ce script peut servir à vérifier l'accès à un domaine et donc aussi sa connexion Internet. J'utilise une variable pour enregistrer le résultat: Cette variable n'est pas obligatoire, juste utile pour utiliser le résultat du script dans une scène. La limite de cette méthode pour le test de connexion est la disponibilité du domaine vers lequel pointe le script. --[[ %% properties %% globals --]] fibaro:log("Start process"); fibaro:sleep(2000); fibaro:log("<b>Check internet connection.</b>"); fibaro:sleep(2000); HC2 = Net.FHttp("dyn.com"); -- call domaine to check response, status, errorCode = HC2:GET("/"); -- check for error if errorCode == 0 then fibaro:setGlobal('Network Status', 1); fibaro:log("Internet connection is alive, http response status is " .. status); if tonumber(status) == 200 then fibaro:sleep(2000); fibaro:log("<b>The request has succeeded</b>"); end else fibaro:setGlobal('Network Status', 0); fibaro:log("<b>Internet is down, check your connection</b>"); end --EOF
  25. Tout est dans le titre J'ai publié ce code en premier sur le Forum Fibaro ici http://forum.fibaro.com/viewtopic.php?t=1870#15926 suite à une demande utilisateur. Modifier avec votre adresse IP, UserID et Password de votre HC2. HC2 = Net.FHttp("xxx.xxx.xxx.xxx"); HC2:setBasicAuthentication("admin","password"); response, status, errorCode = HC2:POST("/api/settings/reboot", "data=reboot"); if errorCode == 0 then fibaro:log(status); else fibaro:log("error"); end A utiliser par exemple dans le bouton d'un périphérique virtuel.
×