Aller au contenu

Rechercher dans la communauté

Affichage des résultats pour les étiquettes 'Tuto Ouvrants'.



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

25 résultats trouvés

  1. Manu31

    Domotiser sa porte de garage

    Bonjour, Suite à la domotisation de mes portes de garages, voici mon retour d'expérience / mon partage Prérequis : 1x module Fibaro FGS-224 "Double Smart Module - Micromodule Z-Wave Plus à contact sec double sortie On/Off" Un simple Smart module peut suffire si vous n'avez qu'une porte de garage (ce qui n'est pas mon cas, ayant 2 portes de garage) https://www.domotique-store.fr/domotique/modules-domotiques/modules-encastrables/micromodules-switch-domotique-sans-fil/1242-fibaro-fgs-224-double-smart-module-micromodule-z-wave-plus-a-contact-sec-double-sortie-onoff.html 1x module FGDW-002 OU Aeotec ZWA008 - Door/Window Sensor 7 https://www.domotique-store.fr/domotique/modules-domotiques/detecteurs-capteurs-mesure/ouverture-porte-fenetre/778-fibaro-sensor-2-fgdw-002-x-z-wave-detecteur-d-ouverture-de-porte-et-fenetre-avec-sonde-de-temperature-integree.html?search_query=fgdw&results=4 1x Boite de dérivation https://www.amazon.fr/DEBFLEX-Boite-Derivation-IP55-115x115x55/dp/B07HRTFP9S/ref=sr_1_11?keywords=boite+electrique&qid=1659638192&s=hi&sr=1-11 Installation dans le coffret : A savoir : Le FGS-224 est à contact sec. Il permettra de donner l'impulsion pour ouvrir ou fermer la porte Le FGS-224 ne permet pas d'avoir un retour d'état Nous utiliserons le module FGDW-002 pour ceci Le but est donc de connecter le module FGS-224 en amont d’un bouton poussoir, puis relier le bouton poussoir au module FGS-224 Voici une photo du câblage à faire : Côté moteur garage Ou encore : Côté module FGS-224 : Voici une photo « schématique » du câblage : Une photo de ce que ca donne "IRL" dans mon coffret : PS : Attention les couleurs n’ont pas forcément été respectées, ayant fait ca avec des chutes de câbles. Mais aussi le module FGDW-002 qui lui servira pour le retour d'état des portes de garage Côté HC3, nous devons faire 1 ou 2 paramétrages : Mettre les paramètres 150 (Porte n°1) & 151 (Porte n°2) à la valeur 2 afin de mettre la sortie en mode impulsion Par défaut, l'impulsion sera de 0.5s avant de revenir à OFF. Si vous souhaitez changer cela, vous devrez modifier les paramètres 154 (Porte n°1) & 155 (Porte n°2) afin de mettre plus ou moins de temps. Et nous pouvons voir que tout remonte bien et que tout marche : En PJ les manuels que j'avais duo-visionduorapido_46758V002.pdf et notice-duo-vision.pdf Voilà, en éspérent que ca puisse en aider certain(e)s d'entre nous . Bonne journée
  2. Bonjour, Ayant récemment domotisé ma porte de garage automatique sectionnelle Duo Vision, je vous livre ici la façon dont je l'ai fait. Sur les broches 5 et 6 du connecteur blanc sur lequel vient s'enficher la carte électronique du contrôleur de la porte, nous avons la possibilité de connecter un bouton poussoir supplémentaire dans la pièce. C'est donc là que j'ai connecté la sortie du FGS-211, réglé en mode contact poussoir, c'est à dire que le module réalise un contact puis l'arrête après une seconde. Pour l'alimentation du module FGS-211, afin d'éviter une alimentation externe, j'ai cherché une solution possible dans le boitier de commande. La carte électronique dispose d'un bornier sur la partie supérieure. Les broches 9 et 10 de celui-ci sont présentes pour alimenter un système de détection de passage à cellule photoélectrique. Dans mon cas, je n'en dispose pas, et les broches 7 et 8 sont reliées par un pont. Je me sert dont des broches 9 et 10 fournissant un courant continue de 24v pour alimenter le module FGS-211, la broche 10 étant la masse. Notez que je n'ai pu inclure le module FGS-211 qu'en l'alimentant temporairement en 220v alternatif, l'inclusion à basse tension ne semblait pas possible. Au final, le petit module Fibaro se retrouve alimenté par le boitier de commande de la porte, et peut même s'insérer dedans sans que rien ne soit visible de l'extérieur une fois le capot refermé.
  3. Présentation : Cette Scène va permettre d'actionner vos volets :au lever et coucher du soleil avec un décalage en minutes possible Les jours fériés A heure fixe Prérequis : Il va falloir installer les scènes et Virtual device suivant :VD Jour Chômé ICI Scene Lua - Jour / Nuit Avec Décalge Possible Et Optimisation Du Sleep ICI Scene Lua - Trigger Horaire Sans Boucle While ... Do ICI Configuration : Saisir le nom de ces volets et leurs ID local mesvolets ={ ["Bureau"] = 5, ["Ch_Amis"] = 7, ["Chaufferie"] = 9, ["Ch_Parents"] = 17, ["Ch_Enfants"] = 19, ["Cuisine"] = 23, ["SAM"] = 25, ["SdB"] = 27, ["Salon"] = 29, } Créer des groupes de volets (Ce n'est pas obligatoire) local RDC = {"Bureau", "Ch_Amis", "Chaufferie"} local Rue = {"Bureau", "Cuisine", "SAM"} local Jardin = {"Chaufferie", "Ch_Amis", "SdB"} local Chambre = {"Ch_Parents", "Ch_Enfants"} Saisir le Nom des différents Variables globales --[[ %% globals SoleilLever SoleilCoucher Heure --]] local nomLever = "SoleilLever" --> Nom de la Variable Globale lever soleil local nomCoucher = "SoleilCoucher" --> Nom de la Variable Globale coucher soleil local Heure = "Heure" --> Nom de la variable globale Heure local JourChome = fibaro:getGlobalValue("JourChome") --> Nom de la variable Module Virtuel Hansloo local IdTel = fibaro:getGlobalValue("IdTel") -- Recuperation de id du tel pour le push Saisir le temps de pause entre chaque volets (Seulement si on utilise des groupes de volets) -------------------------------------------------------------------------- local Pause = 0 -- Temp de pause entre chaque commande de modules en seconde Copier la scène suivante version 1.00b --[[ %% globals SoleilLever SoleilCoucher Heure --]] local mesvolets ={ ["Bureau"] = 5, ["Ch_Amis"] = 7, ["Chaufferie"] = 9, ["Ch_Enfants"] = 17, ["Ch_Parents"] = 19, ["Cuisine"] = 23, ["SAM"] = 25, ["SdB"] = 27, ["Salon"] = 29, } -- Table Zone (Groupes de modules) local RDC = {"Bureau", "Ch_Amis", "Chaufferie"} local Rue = {"Bureau", "Cuisine", "SAM"} local Jardin = {"Chaufferie", "Ch_Amis", "SdB"} local Chambre = {"Ch_Parents", "Ch_Enfants"} -------------------------------------------------------------------------- local nomLever = "SoleilLever" --> Nom de la Variable Globale lever soleil local nomCoucher = "SoleilCoucher" --> Nom de la Variable Globale coucher soleil local Heure = "Heure" --> Nom de la variable globale Heure local JourChome = fibaro:getGlobalValue("JourChome") --> Nom de la variable Module Virtuel Hansloo local IdTel = fibaro:getGlobalValue("IdTel") -- Recuperation de id du tel pour le push -------------------------------------------------------------------------- local Pause = 0 -- Temp de pause entre chaque commande de modules en seconde ---------------------------------------------------------------------- -- Envoi d'un Push pour avertir que le box à démarrer ou redémarrer -- ---------------------------------------------------------------------- function EnvoiPush(Message) fibaro:debug("Envoi Push : "..Message) fibaro:call(IdTel, "sendPush", Message) end ----------------------------------------------------------------------- -- Test si la valeur a enoyer est différente de la valeur du module ----------------------------------------------------------------------- function testvaleur(id, valeurs) local GetValeur = tonumber(fibaro:getValue(id, "value")) if valeurs ~= GetValeur then fibaro:call(id, "setValue", valeurs) --fibaro:debug(id.." - action en cours... - Valeur "..valeurs) fibaro:sleep(Pause*1000) end end ---------------------------------------------------------------------------- -- Recupération de l'id par rapport au nom de la tables mesvolets ---------------------------------------------------------------------------- function volets(zone, valeurs) if (type(zone) == "table") then local messages = "Les "..#zone.." Volets : " for i,v in ipairs(zone) do messages = (messages..v..", ") local id = mesvolets[v] if id == nil then fibaro:debug("ERREUR NOM DU VOLET - "..v.." - dans une table") EnvoiPush("ERREUR NOM DU VOLET - "..v.." - dans une table") else testvaleur(id, valeurs) end end messages = (messages.."ont été actionnés à "..valeurs.."%") EnvoiPush(messages) elseif (type(zone) == "string") then local id = mesvolets[zone] if id == nil then fibaro:debug("ERREUR DANS LE NOM DU VOLET : "..zone) EnvoiPush("EERREUR DANS LE NOM DU VOLET : "..zone) else testvaleur(id, valeurs) EnvoiPush("Le volet : "..zone.." a été actionné à "..valeurs.."%") end else fibaro:debug("Erreur......") EnvoiPush("Erreur......") end end -------------------------------------------------------------------- -- test si le déclencheur est lever ou coucher du soleil -------------------------------------------------------------------- function Test(zone, valeurs, minutes) if zone ~= nil then if minutes == nil then; minutes = 0 end volets(zone, valeurs) else fibaro:debug("Erreur dans la table ou table inéxitante") EnvoiPush("Erreur dans la table ou table inéxitante") end end -------------------------------------------------------------------- -- test Lever -------------------------------------------------------------------- function lever(zone, valeurs, minutes, Jchome) if nomTrigger == nomLever and valeurTrigger == minutes then if Jchome == JourChome or Jchome == nil then Test(zone, valeurs, minutes) end end end -------------------------------------------------------------------- -- test Coucher -------------------------------------------------------------------- function coucher(zone, valeurs, minutes, Jchome) if nomTrigger == nomCoucher and valeurTrigger == minutes then if Jchome == JourChome or Jchome == nil then Test(zone, valeurs, minutes) end end end -------------------------------------------------------------------- -- test Heure -------------------------------------------------------------------- function heure(zone, valeurs, minutes, Jchome) if nomTrigger == Heure and valeurTrigger == minutes then if Jchome == JourChome or Jchome == nil then Test(zone, valeurs, minutes) end end end -------------------------------------------------------------------------- -- Demarrage du programme -------------------------------------------------------------------------- local trigger = fibaro:getSourceTrigger() if (trigger['type'] == 'global') then nomTrigger = trigger['name'] valeurTrigger = tonumber(fibaro:getGlobalValue(nomTrigger)) print("Nom du déclencheur = ", nomTrigger, " - Minutes : ", valeurTrigger) else fibaro:debug("La scéne ne peut être lancer que par une Variable Globale") fibaro:abort(); --nomTrigger = "Heure" --valeurTrigger = 6 end ------------------------------------------------------------------------- -- Ne rien modifier au dessus de cette ligne ------------------------------------------------------------------------- -- Commandes a écrit pour lever du soleil -- lever (Funtion qui traite le lever du soleil -- coucher(zone, valeur, minutes) -- exemple pour actionné les volets de la table Rue a 80% 10 minutes avant le lever -- lever(Rue, 80, -10) -- exemple pour actionné le volet "Bureau" au lever du jour -- lever("Bureau", 99, 0) -- Pour actionner un volet au coucher du soleil -- Il faut remplacer lever par coucher -- ex : coucher(Rue, 0, 20) ------------------------------------------------------------------------ -- Vous pouvez entrer vos commande en dessous de cette ligne Utilisation : lever ou coucher("Nom du volet" ou Nom du groupes de volets, valeur a envoyer, le décalage par rapport au lever ou coucher) Exemples : lever("Ch_Enfants", 99, -15) -- ouvre le volets 15 minutes avant le lever du soleil lever("Salon", 99) ou lever("Salon", 99, 0) -- ouvre le volets au lever du soleil (le 0 n'est pas obligatoire) coucher(Rue, 0, 0, "NON") -- Ferme les volets du groupe Rue au coucher du soleil si Jour Non férié coucher(Jardin, 0, 30) -- Ferme les volets du groupe jardin 30 mn après le coucher du soleil (Attention le 3° paramètre qui représente les minutes doit se trouver dans la table de la scène jour nuit, dans ces 2 tables vous pouvez mettre autant de valeurs que vous voulez chaque valeur représentera un déclencheur) -- Minutes de décalages par rapport au lever du soleil local TLever = {-30, -15, 10, 20, 30, 45, 60} -- Minutes de décalages par rapport au Coucher du soleil local TCoucher = {-30, -15, 10, 20, 30, 45} Pour l'utilisation de l'heure je n'ai prévu qu'un déclenchement avec la variable globale heure, on ne pourra donc exécuter une commande qu'a heure fixe (1h, 2h, 3h, 4h, 5h etc....) Exemples : heure("Ch_Parents", 99, 6, "NON") -- Ouverture du volets Ch_Parents a 6h00 si jour non férié heure(Nord, 0, 20) -- Fermeture du groupes de volets Nord à 20h00
  4. Bon comme promis, petit retour sur le VTP - IP, car je viens de poser mon Velux supplémentaire ce week-end et donc son volet. Les 4 autres sont contrôlés par un IPX 800, là vu qu'il n'en restait qu'un à faire, j'ai pris un VRT-IP. Possibilité d'en commander 2 avec ce device. Alimentation : 24V standard, juste prévoir 4A si 2 gros volets roulants à commander. Pour faire rapide : Cela fonctionne nickel. Monter, descente, pause, contrôle local par bouton poussoir. Gestion depuis la HC2 : Aucun souci, il y a une API (En plus du site Web fourni et qui peut être personnalisé). L'API permet de tout gérer pour les 2 Velux (J'ai moi posé la toute dernière version 2015 de chez VELUX, en 24V, il ne faut juste pas brancher de KUX dessus). Conclusion : Pour contrôler facilement 1 ou 2 volets roulants pour Velux ou autre fenêtre de toit, cela est parfait. Au dessus, autant passer à l'IPX qui coutera le même prix mais qui offrira en plus des sondes analogiques ainsi qu'un retour en cas de commande en local (Ce qui n'est pas le cas du VRT-IP). Allez en cadeau, un petit module virtuel vite fait qui permet de contrôler les fonctions de son premier volet roulant relié. Velux_-_Escalier.vfib
  5. Voici ma modeste première contribution. Je sais qu'il existe déjà des scènes, modules Jour/Nuit mais j'ai voulu aller un peu plus loin en créant un module décomposant la journée en 6 phase (+ une en cas d'erreur). 0 - Erreur 1 - Aube 2 - Aurore 3 - Matin 4 - Apres-Midi 5 - Crepuscule 6 - Soir 7 - Nuit J'ai créé pour cela un module virtuel délivrant 2 variables : Day_Phase : la Phase de la journée, explicite, en texte (Créée dans le panneau de variables, en tant que variable prédéfinie contenant les 7 états ci-dessus) Day_Phase_Num : le numéro de la Phase, en entier, facilitant son utilisation dans des scènes (Créée dans le panneau de variables, en tant que variable recevant le numéro de la phase) Pour fonctionner, une variable supplémentaire doit être créée : Day_Phase_Nuit : Permet de fixer l'heure de basculement de l'état '6 - Soir' à l'état '7 - Nuit'. Format HHmm. Le code gère si cette heure est avant ou après minuit.... Il faut donc créer ces 3 variables dans un premier temps, puis importer le module virtuel A l'intérieur de ce dernier, dans le code LUA, il faut corriger l'ID du module virtuel (48 dans la version proposée) et modifier l'ID du détecteur de luminosité de référence (43 ans la version proposée). C'est un premier jet, et des améliorations vont venir (exemple, ID du module virtuel géré en interne du code, corriger le franglais..., ajout d'une icone par phase de la journée, etc...). Je voulais quelque chose de rapidement opérationnel... Je l'utilise actuellement avec deux petites scènes Allumage des éclairages extérieurs si Day_Phase_Num = 6 Extinction dans le cas contraire Day_Phase.vfib
  6. Allé pour continuer à fêter ma nomination au membre du mois de mai je vous livre cette Astuce : Elle n'a pas vraiment de rapport avec la HC2 (quoi que vous verrez qu'avec un FGBS-001 on pourrait la relier) qui va permettre aux motards de ne plus chercher leur télécommande quand ils arrivent au portail ! C'est déclinable aussi sur une voiture, même si on conduit moins souvent avec de gros gants ça reste pratique L'idée est d'ouvrir son portail grâce à un appel de phare. Ca peut ressembler au super sujet proposé par Shad mais on se passe ici du Zwave et de la HC2 (enfin on verra que l'on peut y revenir par un FGBS-001). Alors pourquoi présenter cette solution sur domestique-fibaro ? Ben parce que même si le forum est orienté Fibaro on parle aussi et surtout de Domotique. Et là s'en est ! Matériel nécessaire : Un portail motorisé avec une télécommande (ici on se fiche de la carte et de son éventuelle entrée contact sec). Il vous faudra au minimum un Creasol Sender dont vous trouverez le descriptif complet ici. (Je vous invite à vérifier la compatibilité de votre télécommande à moins que vous ayez une zibase). Vous pourrez vous le procurer ici pour 28,9 €. Le Creasol Sender est un duplicateur de télécommande. Cela signifie qu'il va apprendre le signal de votre télécommande de portail. Une fois enregistré, ce signal sera émis dès que le Creasol Sender sera alimenté en 7 volts jusqu'à 35 volts (donc une batterie de moto ou voiture). Le branchement : • Pour le branchement sur une moto, on coupe un des fils qui part de la gâchette d’appel de phare (ou près de l'ampoule sur la causse plein phare pour la voiture c'est plus simple). • On place un domino pour refermer le circuit (celui que l'on vient de couper je sais c'est bizarre mais) et on utilise ce même domino pour relier un des supply du Creasol sender (on peut aussi dénuder le fil de sa bécane et faire une soudure avec le supply). • Le second supply du Creasol Sender est branché sur la masse de la moto/voiture (au niveau de la vis du rétroviseur par exemple). Du coup -> un appel de phare et le creasol est alimenté tant que l'on laisse le phare allumé (valable aussi quand on est en plein phare). On se retrouve donc avec une nouvelle télécommande toujours accessible par la gâchette de l'appel de phare (même avec des gants) ! J'ouvre mon portail à 50 mètres. Nota : Il faut faire une appel de phare d’une seconde (donc on compte 1… 2 et on lâche) pour que le creasol ait le temps d’envoyer son signal ! Nota 2 : Je n'ai jamais réussi à enregistre le code tournant de mes télécommandes Somfy alors que le constructeur du Creasol dit que c'est possible. J'ai donc utilisé ma Zibase pour émettre un signal chacon ou X10 (je sais plus). C'est ma Zibase qui recevait le signal du creasol Sender et qui déclenchait un contact sec branché sur mon portail. Bon ... Le problème c'est que ces signaux ne sont pas sécurisés... J'ai donc piqué la télécommande de mes parents qui a été reconnue par le creasol Sender. Me demandez pas la marque elle est illisible !!! En tout cas le code n'est pas reçu par ma Zibase ! Il semble donc plus complexe qu'un simple code chacon ou X10... mais alors comment j'ai fait ? Et bien c'est dans le second post... Cherchez les *** Quoi qu'il arrive, j'ai un message et des photos de mon portail dès qu'il s'ouvre (capteur d'ouverture FGBS-001) ! Alors si un malin utilisait un code pour ouvrir mon portail j'aurai au moins une alerte sur mes téléphones et des photos par mail ! PS : Je n'ai aucun lien commercial avec les sites de ventes que j'ai utilisés comme références. Je les ai juste proposés pour vous donner une idée des modules dont je parlais.
  7. 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)
  8. Bonjour, Je souhaite vous partager comment j'ai utilisé le binary sensor de Fibaro pour contrôler le status de ma porte de garage. Mon idée initiale était de remplacer 2 Door Sensors (DS) pour un Binary Sensor (BS) avec les avantages suivants : coà»t : 40€ au lieu de 2x50€ le BS est alimenté sur l'alimentation du moteur au lieu de par piles Contacts moteur porte de garage Malheureusement, il n'y avait pas de contact sec qui indiquait : soit porte fermée soit porte partiellement fermée ou ouverte C'est un problème, car d'un point de vue sécurité, il faut savoir si la porte est bien fermée, et donc il est moins important de savoir si elle est tout à fait ouverte ou seulement à moitié. Par contre, il y avait deux contacts sec : Status Ouvert : si la porte est complètement ouverte Status Fermé : si la porte est complètement ou partiellement (ou en mouvement) fermée Status Ouvert : si la porte est complètement ouverte ou complètement fermée Status Fermé : si la porte est partiellement ouverte ou fermée (ou en mouvement) Pour l'alimentation du BS, j'ai récupéré le 24V DC fourni par le moteur, autrement il y a un transfo sur Amazon.fr à 5 €. Virtual Device On crée ensuite un Virtual Device (Garage Vincent) avec 3 boutons : Open : lorsque la porte est complètement ouverte Open/Close : lorsque la porte est partiellement ouverte ou fermée (ou en mouvement) Close : lorsque la porte est complètement fermée A chacun de ces boutons on associe une image représentant le status de la porte. Scènes Enfin on crée 3 scènes qui vont modifier la Virtual Device en fonction de l'état des deux contacteurs : GV_Open : en fonction de la combinaison du status des 2 contacts du Binary Sensor, il met la Virtual Device en status Open GV_Open/Close : en fonction de la combinaison du status des 2 contacts du Binary Sensor, il met la Virtual Device en status Open/Close 3. GV_Close : en fonction de la combinaison du status des 2 contacts du Binary Sensor, il met la Virtual Device en status Close Conclusion Je connais le status (Ouvert / Fermé / Partiellement ouvert) de la porte de garage avec un binary sensor et l'utilisation de Virtual Device et de scènes. Cette solution est plus complète (3 status), plus fiable et moins chère qu'un door sensor. Bonne implémentation
  9. Bonjour à tous J'ai connu la misère et j'ai beaucoup été soutenu sur ce forum. Le fil de discussion se trouve ici => http://www.domotique-fibaro.fr/index.php/topic/6997-domotiser-un-portail/ et ce tuto en est un résumé. Je tiens à remercier les différentes personnes qui par leurs conseils et leurs idées m'ont permis aujourd'hui de réaliser ces quelques lignes. Sans eux, j'y serai toujours. j'espère qu'ici vous trouverez des réponses pour la mise en place de deux modules fibaro pour domotiser votre portail. Je m'appuie sur un type de moteur bien précis. Soyez donc attentif à la documentation de votre moteur. Voici donc l'actionneur pour portails coulissants à crémaillère, le deimos BFT avec sa carte H-QSC. http://www.france-automatismes.com/fr/pdf/files/11_NOTICE_DEIMOS_BT.pdf La carte permet une ouverture partielle et totale (Voyez sur la documentation de votre moteur si celui-ci le permet) et se commande soit avec un (des) bouton(s) poussoir(s) ou des télécommandes vendues avec le kit. Avant de commencer, je tiens à vous à signaler qu'il vaut mieux penser à l'avance les câblages en suffisance pour avoir une connexion parfaite de vos modules et aussi pour les mettre à l’abri à l'intérieur de votre habitation. Ma première tentative s'est montrée assez médiocre avec les modules installés directement dans le boîtier du moteur, pourtant pas si loin de la box. (8 mètres) Les modules à vous procurer seront : Le FGS 221 (relay switch) qui servira à l'ouverture et fermeture (totale et piéton) du portail. les FGS envoient de l'information (2 relais = 2 contacts (secs ou 220V)) L'universal Sensor pour le retour d'état (ouvert ou fermé). Attention que ce dernier est alimenté en 12v. Les FGBS permettent de recevoir de l'info (via 2 contacts sec et 4 sondes de température) 1 transfo 12v pour le sensor http://www.amazon.fr...ailpage_o00_s00 La première chose à faire est de repérer dans votre manuel le bornier et ses différentes connexions Sur le deimos les bornes : 19 – 20 => commandent l'ouverture piétonne 21 – 26 => commandent l'ouverture totale On prend son courage à deux mains et on se lance... Veillez à couper l'alimentation moteur pour les branchements. Quand ceci est fait, il faut paramétrer 4 et 5 de votre FGS-221 à 0.5 ou 1 seconde ainsi que le 14 comme bouton poussoir. A ce stade, vous avez la possibilité d'ouvrir le portail (totalement ou partiellement) ainsi que la fermeture. C'est cool mais c'est pas top. Il nous manque le retour d'état du portail. Est-il ouvert ou fermé... ??? (Moi je demandais à ma femme d'aller voir - mais ca c'était avant...) ---------------------------------------------------------------------------------------- Comme pour le module précédent, voyez sur la documentation les bornes relatives aux fins de courses. Sur le deimos les bornes sont : 5 – 6 => SWC 5 – 7 => SWO MAIS ATTENTION, IL EST FORTEMENT DECONSEILLE VOIR PAS DU TOUT CONSEILLE DE BRANCHER L'UNIVERSAL SENSOR SUR LE BORNIER. Ceci a eu comme incidence sur mes fins de courses d'être complètement zappées par la carte et le portail ne s’arrêtait donc plus du tout. (J'ai failli mourir – heureusement je suis quand même là pour vous prévenir ) Deux possibilités s'offrent à vous . La première est celle qui a fonctionnée pour moi. Connecter l'universal sensor directement sur le relais du « gros ressort » (Normalement deux doivent-être libre.) Comment s'y prendre: Donc pour le sensor, rien n'est directement branché sur la carte sous peine de gros problèmes. Mais j'ai directement connecté l'universal sensor sur le relais de fin de courses (heureusement pour moi deux étaient libres – vérifiez cela avant vos branchements.) La seconde consiste à installer des contacts magnétiques, mais malheureusement, je n'ai pas la possibilité de vous aider pour ceci. Voilà c'est déjà tout.. bin oui... ca marche non? PS : Je ne suis pas responsable si vous mourez en réalisant ce tuto... Soyez prudent, soyez patient, soyez bien sage...
  10. Hello, Comme je ne trouve pas pratique l'appli smartphone pour contrôler si j'ai laissé des fenêtres ou des portes ouvertes, j'ai fait un petit script pour faire ce check. Voilà , je vous partage mon code si ça peut vous aider... --[[ %% properties %% globals --]] local test = "" -- mettre "oui" pour mode test (affiche seul. la liste des Devices) local IDiPhone = fibaro:getGlobal("IDiPhone") -- lit la variable avec l'ID de l'iPhone local AllDevices = api.get("/devices") -- lit tous les devices local texte = "<BR>" -- variable avec texte à afficher local push = "Ouvert : " -- variable avec texte pour push -- passe en revue tous les devices et traite que les portes et fenêtres for k, device in pairs(AllDevices) do -- on affiche tous les devices pour contrôle si test = oui if (test == "oui") then print("Name = " .. device.name .. " - ID = " .. device.id .. " - Type = " .. device.type .. "<BR>") end -- Fenêtres if (device.type == "com.fibaro.windowSensor") then if (tonumber(fibaro:getValue(device.id, "value")) > 0) then texte = texte .. device.name .. " (" .. device.id .. ") OUVERTE ! <BR>" push = push .. device.name .. " / " end end -- Portes if (device.type == "com.fibaro.doorSensor") then if (tonumber(fibaro:getValue(device.id, "value")) > 0) then texte = texte .. device.name .. " (" .. device.id .. ") OUVERTE ! <BR>" push = push .. device.name .. " / " end end end --for -- On affiche le texte et on envoie le push si on n'est pas en mode test if (test ~= "oui") then if (string.len(push) > 9) then -- Affiche le texte print(texte) -- Envoie le push push = string.sub(push,1,string.len(push) -3) -- on enlève le texte " / " à la fin fibaro:call(IDiPhone, "sendPush", push) else texte = "Pas de fenêtre ou de porte ouverte..." print(texte) fibaro:call(IDiPhone, "sendPush", texte) end end
  11. Shad

    Association De Module

    Associations des Modules Ce tutoriel à pour but d'expliquer comment associer efficacement des modules entre eux tous en évitant de faire des changements d'états inutiles. Pour quoi éviter les associations avec la Fibaro: Trop fouillis pour moi Faut une bonne mémoire pour ce rappeler de toutes les associations Peut-être difficile à débugger en cas de problème 1- Pour commencer l'entête du script, on y mettra les ID qui doivent démarrer la scène: --[[ %% properties 12 value 50 value 60 value 64 value %% globals --]] 2- On définie nos locals et nos modules : local startSource = fibaro:getSourceTrigger(); --Settings debug = "no"; --IdDevice lightMasterBathRoom = 12; ledMasterBathRoom = 26; rgbwMasterBathRoom = 30; lightKitchen = 60; lightSalleManger = 64; lightSalleManger2 = 62; spotKitchen = 88; lightRoom2 = 50; light2Room2 = 52; La fonction debug affichera en rouge un turnOn, en bleue un turOn, en vert un valeur et en orange la valeur et l'id de lu module de commande 3- La fonction qui permet d'éviter les changements d'états inutile. function StateDevice (typeDevice, idDevice, valueDevice) if (typeDevice == "contactDevice") then if (valueDevice == "turnOff") then if ( tonumber(fibaro:getValue(idDevice, "value")) == 1) then fibaro:call(idDevice, "turnOff"); if (debug == "yes") then fibaro:debug("<font color='blue'>Id: " .. idDevice .. ", value: TurnOff</font> "); end end elseif (valueDevice == "turnOn") then if ( tonumber(fibaro:getValue(idDevice, "value")) == 0) then fibaro:call(idDevice, "turnOn"); if (debug == "yes") then fibaro:debug("<font color='red'>Id: " .. idDevice .. ", value: TurnOn </font> "); end end end end if (typeDevice == "RgbwDevice") then if (valueDevice == "turnOff") then if ( tonumber(fibaro:getValue(idDevice, "value")) ~= 0) then fibaro:call(idDevice, "turnOff"); if (debug == "yes") then fibaro:debug("<font color='blue'>Id: " .. idDevice .. ", value: TurnOff </font> "); end end elseif (valueDevice == "turnOn") then if ( tonumber(fibaro:getValue(idDevice, "value")) == 0) then fibaro:call(idDevice, "turnOn"); if (debug == "yes") then fibaro:debug("<font color='red'>Id: " .. idDevice .. ", value: TurnOn </font> "); end end end end if (typeDevice == "DimmerDevice") then if (valueDevice == "turnOn" or valueDevice == "turnOff") then if (valueDevice == "turnOff") then if ( tonumber(fibaro:getValue(idDevice, "value")) ~= valueDevice) then fibaro:call(idDevice, "turnOff"); if (debug == "yes") then fibaro:debug("<font color='blue'>Id: " .. idDevice .. ", value: TurnOff </font> "); end end elseif (valueDevice == "turnOn") then if ( tonumber(fibaro:getValue(idDevice, "value")) == valueDevice) then fibaro:call(idDevice, "turnOn"); if (debug == "yes") then fibaro:debug("<font color='red'>Id: " .. idDevice .. ", value: TurnOn </font> "); end end end elseif ( tonumber(fibaro:getValue(idDevice, "value")) ~= valueDevice) then fibaro:call(idDevice, "setValue", valueDevice); if (debug == "yes") then fibaro:debug("<font color='green'>Id: " .. idDevice .. ", value: " .. valueDevice .. " </font> "); end end elseif (typeDevice == "contactBlind") then if (valueDevice == "Close" or valueDevice == "Open") then if (valueDevice ~= "Close") then if ( tonumber(fibaro:getValue(idDevice, "value")) ~= 0) then fibaro:call(idDevice, "close"); if (debug == "yes") then fibaro:debug("<font color='blue'>Id: " .. idDevice .. ", value: Fermé </font> "); end end elseif (valueDevice == "Open") then if ( tonumber(fibaro:getValue(idDevice, "value")) ~= 99) then fibaro:call(idDevice, "open"); if (debug == "yes") then fibaro:debug("<font color='red'>Id: " .. idDevice .. ", value: Ouvert </font> "); end end end elseif ( tonumber(fibaro:getValue(idDevice, "value")) ~= valueDevice) then fibaro:call(idDevice, "setValue", valueDevice); if (debug == "yes") then fibaro:debug("<font color='green'>Id: " .. idDevice .. ", value: " .. valueDevice .. " </font> "); end end end end La fonction StateDevice a besoin de 3 paramètres: typeDevice qui a pour valeur: contactDevice/RgbwDevice/DimmerDevice/contactBlind idDevice: l'id du device qu'il faut modifier l'état valueDevice qui a pour valeur: turnOn/turnOff/Close/Open/0-99 Attention, vue qu'il y a un problème pour les volets avec la box, le contactBlind ne fonctionne pas. 4- Et pour finir on met notre code d'associations: if (startSource['type']=='property') then if (debug == "yes") then fibaro:debug("<font color='green'>Id:" .. startSource['deviceID'] .. ", value: " .. tonumber(fibaro:getValue(startSource['deviceID'], "value")) .. "</font> "); end -- Lumière salle de bain Master if (startSource['deviceID'] == lightMasterBathRoom) then if ( tonumber(fibaro:getValue(lightMasterBathRoom, "value")) == 99 ) then StateDevice ("contactDevice", ledMasterBathRoom, "turnOn"); StateDevice ("RgbwDevice", rgbwMasterBathRoom, "turnOn"); elseif ( tonumber(fibaro:getValue(lightMasterBathRoom, "value")) <= 95 ) then StateDevice ("contactDevice", ledMasterBathRoom, "turnOff"); StateDevice ("RgbwDevice", rgbwMasterBathRoom, "turnOff"); end elseif (startSource['deviceID'] == lightKitchen) then if ( tonumber(fibaro:getValue(lightKitchen, "value")) == 99 ) then StateDevice ("contactDevice", spotKitchen, "turnOn"); elseif ( tonumber(fibaro:getValue(lightKitchen, "value")) < 99 ) then StateDevice ("contactDevice", spotKitchen, "turnOff"); end elseif (startSource['deviceID'] == lightRoom2) then if ( tonumber(fibaro:getValue(lightRoom2, "value")) == 99 ) then --StateDevice ("contactDevice", spotKitchen, "turnOn"); fibaro:call(52, "setValue", "99") elseif ( tonumber(fibaro:getValue(lightRoom2, "value")) < 99 ) then --StateDevice ("contactDevice", spotKitchen, "turnOff"); fibaro:call(52, "setValue", "0") end elseif (startSource['deviceID'] == lightSalleManger) then StateDevice ("DimmerDevice", lightSalleManger2, fibaro:getValue(lightSalleManger, "value")); end end Je vous ai mis qu'une partie de mon code pour voir un peu le fonctionnement. Amusez-vous bien.
  12. Bonjour, je vous livre ici un petit essai que je viens de réaliser. J'ai quelques volets somfy qui sont actuellement gérés par une Zibase. Comme je prefere l'interface de fibaro je me suis demandé, est-il possible de commander mes volets Somfy en utilisant la zibase comme passerelle RTS ?. Eh bien c'est possib... et en plus c'est hyper facile. Pour ce tuto il vous faudra Une box Fibaro Une box Zibase Au moins un volet RTS de la marque somfy Mon volet est enregistré comme C1 dans la configuration de la Zibase. Il suffira de lui envoyer la commande ON pour l'ouvrir et OFF pour le fermer. Créons un petit module virtuel que nous allons nommer Volet Salle a manger dans le champ port on introduit 80 on passe ensuite en mode avancé et on choisit le nombre de boutons Ici je choisis 2 boutons piusque je compte utiliser 2 fonctions, à savoir "Ouvrir" et "Fermer" Le bouton "Ouvrir" Le label contiendra le mot "Ouvrir" et l'ID, je l'ai choisi au hasard le bouton radio main sélectionné correspondra au bouton unique de votre interface et sera donc actionné par défaut. Le code inséré est le suivant : SOMFY = Net.FHttp("192.168.10.73",80); SOMFY:GET("/cgi-bin/domo.cgi?cmd=ON%20C1%20P10"); Le bouton "Fermer" Le label contiendra le mot "Fermer" et l'ID est toujours choisi au hasard Le code inséré est le suivant : SOMFY = Net.FHttp("192.168.10.73",80); SOMFY:GET("/cgi-bin/domo.cgi?cmd=OFF%20C1%20P10"); PS: le %20 correspond a un espace, et le P10 en fin de ligne correspond au protocole RTS dans l'API de la Zibase on pourra également envoyer une petite notification dans les logs en utilisant le code suivant : fibaro:log("Volet Salle à manger ouvert"); et fibaro:log("Volet Salle à manger Fermé"); On teste et ça marche ! Voili Voilou Coolride.
  13. A la demande générale, voici un petit tuto/bricolage qui va vous permettre de savoir si votre porte est verrouillée ou non. Le principe consiste à placer un contacteur qui va être actionné par le pêne (partie métallique qui entre dans le verrou quand on actionne la clé). En faisant mes fonds de tiroirs, j'ai retrouvé ces 2 contacteurs : http://www.amazon.fr/gp/product/B006XQVH3Y?psc=1&redirect=true&ref_=oh_aui_search_detailpage http://www.amazon.fr/gp/product/B006XQUYHE?psc=1&redirect=true&ref_=oh_aui_search_detailpage Avant de les placer dans la serrure, il faut souder 2 fils sur les 2 broches qui remonteront l'information jusqu'au détecteur (dans mon cas j'ai recyclé un FGK et un HSM02). Après quelques essais, j'ai réussi à les placer pile poil pour que le pêne actionne l'interrupteur sans forcer sur la serrure. Le premier contacteur possède une grande tige que l'on peut tordre. J'ai donc plié la tige afin de créer une sorte de > sur lequel pousse le pêne en fin de course. J'ai calé le contacteur sur les côté pour le centrer par rapport au pêne (POV du pêne - on voit ici la serrure sur sa partie basse) : Les 2 fils sortent sur le côté et sont branchés sur HSM02 avec une soudure en parallèle du reed (commutateur à lames du HSM). Voici ce que ça donne avant les finitions (le contacteur est situé juste au dessus de la vis dans la partie métallique située au dessus du HSM02) : Pour la seconde serrure (celle du garage), j'ai creusé le bois en face du pêne pour insérer le contacteur tout au fond. J'ai placé des cales sur les côtés et derrière. Les 2 fils passent derrière le contacteur par un trou (que j'ai pu percé en biais) pour les brancher sur le FGK : Une fois les essais réalisés, j'ai stabilisé les contacteurs avec du silicone (pour que ça se tienne dans le temps mais que ce soit aussi démontable). Le plus difficile aura été de placer les interrupteurs de manière à ce qu'il soient actionnés par les pênes des serrures sans que ça ne force sur les serrures. Les détecteurs remontent bien l'information verrouillé/déverrouillé. Avec les icônes proposées par Quickdav : #1650 et megabubu : #1654 ou encore Did : #1655 Je vois en un coup d'oeil si je dois aller jusqu'au garage avant d'aller me coucher. Pour les possesseurs de serrures 3 points, il est aussi possible de placer le contacteur en haut/en bas des tiges verticales.
  14. J'avais donc un soucis avec ce FGS-221 où le relais de la sortie 1 restait bloqué en position allumée, le retour d'état dans l'interface web de la HC2 répondait bien aux commandes On/Off (ou de l'entrée S1) mais la lampe restait continuellement allumée. Le fait de tapoter sur le module avec le manche d'un petit tournevis arrivait à débloquer le contact du relais. Ce dysfonctionnement avait lieu aléatoirement trois ou quatre fois dans l'année mais ce week-end, j'ai dà» faire cette manip trois fois. Le relais allait définitivement rendre l'âme, mais il reste une solution pour ne pas transformer ce FGS-221 en 211. Le dépannage est assez facile à réaliser et nécessite un cutter, un fer à souder (30W maxi), une pompe à dessouder (ou mieux, un fer à dessouder), un peu d'étain et le plus important: le petit relais Relpol. Je précise que mon module est en v2.1 donc le relais est un modèle 12V (Référence: RM40-3021-85-1012) dispo ici: http://www.tme.eu/fr/details/rm40-z-12/relais-electromagnetiques-miniatures/relpol/rm40-3021-85-1012/# mais les FGS plus anciens en v1.9 étaient équipés de modèle 5V(Référence: RM40-3021-85-1005) dispo ici: http://www.tme.eu/fr/details/rm40-z-05/relais-electromagnetiques-miniatures/relpol/rm40-3021-85-1005/# Cette manipulation ne concerne pas les tout récents FGS-212 et 222. Pour commencer, il faut fendre le coin inférieur droit (à côté de S1 à la base du bornier) avec la lame du cutter, pas la pointe car elle risque de riper et attention aux doigts. Une fois la lame engagée, il suffit de remonter le long jusqu'à l'antenne et fendre légèrement en haut au centre de l'arrondi pour séparer les coques supérieure et inférieure. Pas besoin de faire le tour complet, en écartant les deux coques, le module devrait sortir. Le relais pour la sortie 1 est celui de gauche (toujours avec le bornier en bas) donc en retournant le module, cela se présente comme ça. Ensuite, après avoir aspiré la soudure sur les quatre points (repérés en rouge pour la sortie O1) à l'aide du fer à dessouder, le relais peut être retiré comme ceci. Puis on le remplace par le nouveau et, après avoir attendu le refroidissement du fer, je remets la panne pour refaire les quatre soudures. Voici le résultat: Reste un petit point de colle super glue sur le côté et au milieu de l'arrondi et le module est remis en service sans même avoir perdu ses numéros d'Id. On peut aussi, en déportant l'alimentation de la bobine par deux petits fils vers l'extérieur du module, le raccorder à un relais (avec bobine 12V DC) pour avoir, par exemple, deux contacts totalement indépendants (O2 sur le module et plus rien sur O1 puisque déporté vers le relais) ou même avec de plus gros pouvoir de coupure comme je l'ai fait avec mon chauffe-eau. Voilà mes quelques idées de recyclage pour vos FGS qui battent de l'aile.
  15. Bonjour à tous, Ca y est ! Je me suis lancé dans la "zwave-isation" du volet roulant de ma baie vitrée de marque Bubendorf. J'ai déjà 3 autres volets de marque Somfy, avec butées mécaniques, et cela n'a posé aucun problème avec les modules Fibaro FGRM-222. Comme ces modules sont censés gérer les butées électroniques, je me suis dit pourquoi ne pas essayer sur le Bubendorf ? J'avais dans un premier temps soudé des fils en parallèle des boutons poussoirs sur la télécommande, et je pilotais tout ça avec un module et une télécommande Chacon. Ca marche, mais c'est loin d'être satisfaisant: - Pas de retour d'état. - Fiabilité faible. - Pas de gestion du pourcentage d'ouverture du volet. - Difficilement intégrable aux scènes de la HC2. Je crois qu'il existe différents modèles de volets (donc peut-être de type de commande) chez Bubendorf. Voici le modèle de ma télécommande RF: (on aperçoit le connecteur avec les fils soudés en parallèle des contacts) Allez, je me lance: Je démonte tout ! ATTENTION: Prévoyez d'y passer du temps. Il y a pas mal de boulot ! Je vous passe la séquence démontage, cela doit être différent en fonction de la fenêtre et du caisson que vous avez chez vous. Chez moi, il a fallu que j'enlève le cache, et que je démonte les 2 rails dans lesquels coulissent les lames du volet pour pouvoir tout sortir. Il vaut mieux être deux, sinon ça risque d'être galère. Apres démontage, voici ce qu'on peut lire sur la plaque du volet: Il faut démonter cette plaque noire, et derrière, on trouve le circuit imprimé de toute l'électronique de réception RF et de commande du moteur ainsi qu'une capacité. Le connecteur avec 3 fils (1 jaune, 1 rouge et un noir) est la connexion au moteur. L'autre connecteur (avec les 2 fils blancs) est relié à la capacité. Je teste les fils à l'ohmmètre pour savoir à quel type de moteur on a affaire: Entre le fil jaune et le rouge on a 205 Ohms. Entre le fil jaune et le noir on a 205 Ohms. Entre le fil noir et le rouge on a 410 Ohms. J'en déduis que c'est un moteur monophasé avec 2 enroulements identiques. Ce genre de moteur s'alimente de la façon suivante: On mets une Capacité entre les 2 bobinages, on branche le neutre sur le fil commun (jaune dans notre cas). Si on applique la phase sur le fil rouge, la bobine correspondante est alimentée directement, et la bobine du fil noir est alimentée à travers la capacité qui génère un déphasage. Ceci crée un champ tournant qui fait tourner le moteur dans un sens. Si on mets la phase sur le noir, le champ tournant s'inverse et le sens de rotation également. Super !!! Ca correspond au possibilités de branchements du module FGRM-222 Ca va donner un câblage de ce type: Comme je veux garder une possibilité de revenir en arrière, je me suis fait une plaque qui se met à la place de celle de Bubendorf, qui ne sert qu'à faire les connexions entre le moteur, la capacité et le module Fibaro en gardant intacts les connecteurs. Comme je ne savais pas au départ à quel fil correspond la montée ou descente sur le moteur, j'ai connecté au hasard (une chance sur deux), et j'ai eu de la chance. Par contre, je n'ai pas repéré les fils du moteur , et je ne sais plus lequel fait quoi :-( Désolé, mais si vous faites le montage, il faudra faire un essai avant de tout remonter. Après remontage de l'ensemble, je teste (j'ai inclus le module sur ma Box avant de le connecter dans le volet): J'ai bien sur configuré le module avec les paramètres suivants: - appareil commandé = Blind with positioning inactive (ce qui, pour moi, correspond à une détection électronique) - switch type = Momentary switches Un appui sur le bouton "descente" ... ça descend ! Un appui sur le bouton "montée" ... ça monte ! C'est après que les choses se gâtent... J'essaye de lancer une calibration: Le volet descend jusqu'à la butée ... et continue de forcer. Pareil sur la montée. Essai avec le paramètre appareil commandé = Blind with positioning active : Pareil J'ai passé les heures suivantes à faire des essais en jouant avec les paramètres de détection de puissance et de durée de fonctionnement, mais impossible d'arriver à faire arrêter le moteur en butée haute ou basse. A force de faire forcer le moteur, il est arrivé qu'il n'a plus bougé du tout. Le module fonctionnait normalement, car lorsqu'il était actionné, les LED verte et rouge s'allumaient bien en fonction de l'ordre envoyé: montée ou descente. J'ai tout débranché pendant 15/20 minutes, et tout a remarché quand j'ai rebranché. J'en déduis qu'il y a une protection thermique sur le moteur du volet. Après m'être arraché presque tous les cheveux, J'ai fini par alimenter mon volet à partir d'une rallonge, de façon à brancher un Wattmètre sur l'ensemble. Mesures en descente ou montée sans forcer: 0.8 Ampères, 190 Watts. Mesures en butée haute ou basse : 0.8 Ampères, 190 Watts. ???? La consommation est exactement la même que le moteur force ou pas !??? C'est donc normal que le module Fibaro ne puisse pas faire la différence et arrêter le moteur en butée ! à‡a ne m'arrange pas du tout ça... Après tout le temps passé, je n'ai pas envie de renoncer tout de suite. Je décide d'essayer de mettre provisoirement des contacts de fin de course pour détecter les butées hautes et basses. Voici la haute: Avec le branchement suivant: Je remets le paramètre appareil commandé = Blind with positioning active. Je lance une Calibration: le volet descend, actionne le fin de course bas, remonte, arrive au fin de course haut et s'arrête. Tout s'est bien passé ! Tous les essais suivants de positionnement intermédiaires, ouvertures, fermetures, fonctionnent aussi. J'ai donc ce que je voulais, mais je suis quand même un peu insatisfait. Je pensais que la détection électronique des modules FGRM-222 allait faire l'affaire. D'après mes souvenirs (lointains), un moteur qui force se rapproche d'un court-circuit, ce qui fait un appel de courant plus important et donc une détection possible. D'ailleurs, tous vos commentaires sont les bienvenus, surtout si vous vous y connaissez en moteurs :-)) Les fin de course font un peu "usine à gaz". De plus, pour détecter la position basse, il va falloir que je trouve un autre moyen qu'un contact placé en bas du volet: en effet, le volet s'arrête dès qu'il touche le contact, ce qui fait que le volet n'est pas fermé complètement. Les lames ne sont pas serrées et il reste un jour entre elles. On peut soulever le volet de quelques centimètres... pas bon pour la sécurité. Si je reste avec cette solution, il va falloir que je trouve un moyen de détecter cette position directement dans le caisson du volet... j'y travaille !
  16. Cette scène n'est pas de moi mais le résultat d'un travail en groupe avec quelques membres du forum Elle permet l'envoi de notification vers un ou plusieurs téléphones lorsqu'une porte est fermé ou ouverte Il faut juste entrer le numéro d'ID des détecteurs suivi de value dans l'entête de la scène Il faut aussi renseigner les ID du ou des téléphones Elle prévient lorsque la box vient de redémarrer. --[[ %% autostart %% properties 69 value 53 value 73 value --]] -- ================================================ -- PREPARATION DU CODE, ON CREER LES FONCTIONS QUE -- NOUS ALLONS DEVOIR APPELER PAR LA SUITE -- Dans notre cas, il y a au moins 2 fonctions : -- une pour l'envoi du message -- une pour obtenir les informations du module et son état -- -- Une fonction est un morceau de code que nous pouvons appeler -- plusieurs fois. Elle peux recevoir des paramètres. -- Une fonction peux exister sans pour autant être utilisée -- ================================================ -- ================================================ -- Envoi un message sur un ou plusieurs portables -- ---------------------------------------------------------------------------------- -- Parmètre : -- idPortables : numéro d'un portable ou tableau de plusieurs portable -- message : message à envoyer -- Exemple : -- sendPush(23, "Envoi d'un message simple") -- sendPush({23,25,27}, "Envoi a plusieurs destinataires") -- ================================================ function sendPush(idPortables, message) if (type(idPortables) == "table") then -- Si nous avons plusieurs numéros dans un tableau {} for i = 1, #idPortables do -- On envoi le message sur tout les portables fibaro:call(idPortables[i], "sendPush", message) end fibaro:debug(string.format("Pushs envoyés : %s", message)) elseif (type(idPortables) == "number") then -- Si nous avons un seul numéro de portable fibaro:call(idPortables, "sendPush", message) fibaro:debug(string.format("Push envoyé : %s", message)) else fibaro:debug(string.format("Erreur : le numéro %s n'est pas valable", idPortables)) end end -- ================================================ -- Retourne les information sur un device -- ---------------------------------------------------------------------------------- -- Parmètre : -- deviceId : l'dientifiant du device -- Exemple : -- local message = getDeviceInfo(69) -- ================================================ function getDeviceInfo(deviceId) local etat = "ouverte" if (fibaro:getValue(deviceId, 'value' ) == "0") then etat = "ferme" end return string.format("La %s est %s.", fibaro:getName(deviceId), etat) end -- ================================================ -- FIN DE LA PREPARATION DU CODE -- ================================================ -- ================================================ -- DEBUT DU CODE PRINCIPAL -- ================================================ -- Déclaration du/des numéros de portables local idportables = 181 -- local idportables = {23, 24, 25} -- Le déclencheur de cette scène, va nous permettre de savoir qui et -- comment cette scène a été démarrée local SourceTrigger = fibaro:getSourceTrigger() if (SourceTrigger['type'] == 'property') then -- si la scène a été démarrée par un "device", on va récupérer -- les informations du device local message = getDeviceInfo(SourceTrigger['deviceID']) -- puis l'envoyer sur les portables sendPush(idportables, message) elseif (SourceTrigger['type'] == 'other') then -- Si la scène a été démarrée manuellement sendPush(idportables, string.format("La scène a été lancée le %s a %s", os.date("%d/%m/%Y"), os.date("%R"))) elseif (SourceTrigger['type'] == 'autostart') then -- Si la scène a été démarrée par une sauvegarde de cette scène -- ou le redémarrage de la box sendPush(portables, string.format("La box a démarré le %s a %s", os.date("%d/%m/%Y"), os.date("%R"))) end
  17. Bonjour à tous, Je souhaitais partager ce que j'ai fait tout à l'heure : un script pour gérer les quelques volets roulants de mon domicile (ne faites pas attention aux noms de variables, au fait que je manipule des ID, ... je sais je peux optimiser :-p ) Mais j'aimerai votre avis, savoir si je prend une bonne direction sur le principe... (je vais l'enrichir petit à petit et du coup l'optimiser pour le rendre plus exploitable) Un grand merci tout d'abord à CaptainIgloo pour son virtual-device-position-du-soleil-et-ensoleillement donct j'ai juste rajouter la valeur de la nébulosité en variable globale pour que mon script s'en serve --[[ %% autostart %% properties %% globals --]] local sourceTrigger = fibaro:getSourceTrigger(); function tempFunc() local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); -- TOUTES LES 15 MIN ENTRE 6h et 22h CA TOURNE if ( ( (tonumber(os.date("%H%M")) >= tonumber(string.format("%02d%02d", "06", "00")) and tonumber(os.date("%H%M")) <= tonumber(string.format("%02d%02d", "22", "00"))) and (math.floor(os.time()/60)-math.floor(1446274800/60))%15 == 0 ) ) then fibaro:debug("ok") -- si le soleil est au dessus de 5° de l'horizon et la Nébulosité est inférieure à 15% ALORS JE VAIS REGARDER LA POSITION DU SOLEIL POUR CHAQUE FACADE ET OUVRIR OU FERMER if ( (tonumber(fibaro:getGlobalValue("VDSoleilHauteur")) > 5) and (tonumber(fibaro:getGlobalValue("VDSoleilNebulosite")) < 15) ) then fibaro:debug("soleil > 5 et Nebulosite < 15") -- si facade EST est éclairée if ( (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))>0) and (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))<180) ) then -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_1"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(446, "open") -- volet bureau end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_6"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(189, "open") -- volet chambre antigua end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_5"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(157, "pressButton", "1") -- volet chambre meteorite EST end end -- si facade SUD est éclairée if ( (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))>90) and (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))<270) ) then -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_5"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(608, "pressButton", "1") -- volet chambre meteorite SUD end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_4"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(593, "open") -- volet chambre grise end end -- si facade OUEST est éclairée if ( (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))>180) and (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))<360) ) then -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(471, "open") -- volet cuisine fenetre end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(473, "open") -- volet cuisine porte end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(607, "open") -- volet ar-cuisine end end -- si facade NORD est éclairée if ( (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))>270) and (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))<360) ) then -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_8"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(162, "open") -- volet SDB étage end end -- si facade EST n'est pas éclairée if (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))>180) then -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_1"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(446, "close") -- volet bureau end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_6"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(189, "close") -- volet chambre antigua end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_5"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(157, "pressButton", "2") -- volet chambre meteorite EST end end -- si facade SUD n'est pas éclairée if ( (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))<90) or (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))>270) ) then -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_5"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(608, "pressButton", "2") -- volet chambre meteorite SUD end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_4"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(593, "close") -- volet chambre grise end end -- si facade OUEST n'est pas éclairée if (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))<180) then -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(471, "close") -- volet cuisine fenetre end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(473, "close") -- volet cuisine porte end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(607, "close") -- volet ar-cuisine end end -- si facade NORD n'est pas éclairée if ( (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))<270) or (tonumber(fibaro:getGlobalValue("VDSoleilAzimut"))>90) ) then -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_8"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(162, "close") -- volet SDB étage end end else -- on ferme les volets car le soleil n'est pas suffisamment haut ou la nébulosité est élevée if ( (tonumber(fibaro:getGlobalValue("CHAUFF_1"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(446, "close") -- volet bureau end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_6"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(189, "close") -- volet chambre antigua end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_5"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(157, "pressButton", "2") -- volet chambre meteorite EST end if ( (tonumber(fibaro:getGlobalValue("CHAUFF_5"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(608, "pressButton", "2") -- volet chambre meteorite SUD end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_4"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(593, "close") -- volet chambre grise end if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(471, "close") -- volet cuisine fenetre end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(473, "close") -- volet cuisine porte end -- si pièce inoccupée OU maison vide if ( (tonumber(fibaro:getGlobalValue("CHAUFF_7"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(607, "close") -- volet ar-cuisine end if ( (tonumber(fibaro:getGlobalValue("CHAUFF_8"))==5) or (tonumber(fibaro:getGlobalValue("IS_EMPTY_HOUSE"))==1) ) then fibaro:call(162, "close") -- volet SDB étage end end end setTimeout(tempFunc, 60*1000) end if (sourceTrigger["type"] == "autostart") then fibaro:debug("ok autostart") tempFunc() else local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); if ( startSource["type"] == "other" ) then fibaro:debug("ok other") tempFunc() end end
  18. 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
  19. Je vous propose ma modeste contribution ici. Il s'agit d'un module virtuel permettant de piloter des volets Somfy via une Zibase en mode passerelle. La particularité de ce module virtuel c'est que j'ai ajouté un slider permettant d'ouvrir partiellement le volet. Au préalable vous devez créer une variable numérique pour le volet. Ensuite paramétrer le module en renseignant l'IP de la Zibase et le port 80 Renseigner ensuite les variables dans le code LUA : Dans chaque boutons : local zibase = "C1" --> Il s'agit du code du périphérique dans la Zibase local VarGlobalEtatDuVolet = 'EtatVolet' --> La variable dans la HC2 que vous avez crée Dans le slider : local temps = 58 -- Le temps en sec d'ouverture des volets Et voilà . Le slider permet d'ouvrir partiellement les volets. A noter qu'en cas de monter, il monte 1sec de plus pour terminer son mouvement par une descente Et il y a une marge de 5% au début et a la fin du Slider. Ex : 4% = Ouvrir, et 97%= Fermer Et les icones : J'ai fais le choix de ne pas utiliser le mainloop pour mettre a jour l'icône. Le dernier boutons enfoncé determine l'icône. N'hésitez pas a me faire des retours si vous avez des idées de comment améliorer la chose. Volet_Somfy.vfib
  20. Voici enfin le tutoriel sur le portail électrique avec le même matériel que dans la vidéo de présentation de fibaro. ATTENTION: CE MATÉRIEL N'EST PAS DESTINE A àŠTRE VENU EN DEHORS DE POLOGNE, DONC LA SEULE DOCUMENTATION DISPONIBLE EST EN POLONAIS ET AUCUNE ASSISTANCE DE FIBARO NE SERA FOURNIS. Matériel nécessaire: - 1 voiture avec des plein phare qui fonctionne (si si je vous jure) - 1 Portail électrique déjà fonctionnel (j'aime mieux précisé) - 1 Channel Expander ( Perso mon tuto est basé sur un 4 channel expander) disponible sur le site d'un de wasil (forum fibaro) http://www.fibaro-grudziadz.pl/component/jshopping/product/view/2/19?Itemid=105 ou celui que j'ai commandé Eutech http://automatykasklep.com.pl/en/accessories/2106-4-channel-expander.html - 1 Automotive remote control Wasil http://www.fibaro-grudziadz.pl/component/jshopping/product/view/2/22?Itemid=105 ou Eutech http://automatykasklep.com.pl/en/accessories/2110-automotive-remote-control.html mais oublié le support et j'ai également eu quelque soucie avec un des commercial. - 1 FGS221 - 1 FGBS-001 Wasil ma confié qu'il ferait une réduction pour une commande groupée. 1) Branchement du 4 channel expander - Alimentaion : 12/24V ~/- - 1: Commande N° 1 - 2: Commande N° 2 - 3: Commande N° 3 - 4: Commande N° 4 - Jumper pour changer NO/NC Pour les Channels 1 et 2, il faut connecter chaque entrée au bouton poussoir pour récupérer l'entrée de tension et les sorties au FGS221. Pour les Channels 3 et 4, Il faut faire un pont entre les deux pour le ground, et chaque entré sur IN1 et IN2. Il faut également bouger les jumper d'un cran sur la gauche pour qu'il soit en position fermer par défaut. Une fois l'alimentation branché, celui-ci fera un BIP. 1) Automotive remote contol Pour le branchement c'est très simple, brancher le fil noir sur la masse de la batterie, débrancher les câbles de votre et insérer le bout dénudé dedans, appuyer sur vos plein phare. Quand vous aurez trouvé le bon câble, celui-ci fera bip et il vous restera à le brancher comme il faut. 3) Configuration Bon là j'avoue j'ai passé du temps car je faisais mal les appels de phares mais c'est très simple mais faut s'armer de patience. Sur le channel expander, en haut à droite il y a petit bouton (regardez la photo plus haut on le voit), rester appuyer dessus. La lumière rouge va s'allumer et un bip va arriver, la première led verte s'allume, on fait un appel de phare vous allez entendre un bip du remote control qui envoie la commande et encore un bip sur le channel expander comme quoi il l'a bien reçue. On attend 10 sec, un bip retentie la 1ère led clignote et on continue d'attendre, 10 secondes après encore un bip et la deuxième led s'allume et là on fait 2 appels de phare et on continue ainsi de suite... Personellement j'ai du m'y reprendre 5 ou 6 fois car il enregistré mal les commandes 3 et 4. 4) Configuration du fgbs: Créez une scène et mettez-y le code suivant et remplacez l'id 159 par le votre: --[[ %% properties 159 sceneActivation %% globals --]] PortailFgbs = 159; if (tonumber(fibaro:getValue(PortailFgbs, "sceneActivation")) == 10) then fibaro:debug("3click"); elseif (tonumber(fibaro:getValue(PortailFgbs, "sceneActivation")) == 20) then fibaro:debug("4click"); end Franchement, je suis très content de ce produit, un peu moins de Fibaro car ils sont contre l'exportation de ce produit donc aucun support et on vous renvoie chez le fournisseur. Donc étonnement surpris de cette politique de notre fournisseur préféré. Quoi qu'il en soit, je n'ai pas vraiment testé la porté, mais j'ai fais des tests à environ 50m et sa fonctionne très bien. Donc pour mon cas j'utilise les channels: - 1 ouverture un côté du portail - 2 ouverture complet du portail - 3 ouverture complet du portail plus activation de la maison (le scénario dépend s'il fait jour ou nuit) - 4 ouverture complet du portail + activation de la maison en mode romantique + musique (Je suis de nouveau sur le marché du célibat, donc faut bien surprendre dès le départ) Voilà amusez-vous bien.
  21. 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 ++
  22. Bonjour, ci-joint ma première contribution. Il s'agit de mon humble module virtuel pour la gestion automatique des volets roulants. Etape 1 - Créer une variable Globale "SysVolet" nom de la variable : "SysVolet" valeur1 : "ON" valeur2 : "OFF" Etape 2 (facultatif) - Créer un variable "weekend" Cette variable est définie dans un autre module dont voici le code : (la variable "Jour_semaine" est une variable globale ayant 7 valeurs possibles : Lundi à Dimanche dont on n'a pas besoin ici) --[[ %% properties %% globals --]] local minute = 60000 --in milliseconds local currentDate = os.date("*t"); local currentTime = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min); --wday=1 is Sunday --wday=2 is Monday --wday=3 is Tuesday --wday=4 is Wednesday --wday=5 is Thursday --wday=6 is Friday --wday=7 is Saturday local weekend = fibaro:getGlobal("weekend"); local jour = fibaro:getGlobal("Jour_semaine"); if (currentDate.wday == 1 ) then fibaro:setGlobal("weekend", 1); fibaro:setGlobal("Jour_semaine", "Dimanche") end if (currentDate.wday == 2 ) then fibaro:setGlobal("weekend", 0); fibaro:setGlobal("Jour_semaine", "Lundi") end if (currentDate.wday == 3 ) then fibaro:setGlobal("weekend", 0); fibaro:setGlobal("Jour_semaine", "Mardi") end if (currentDate.wday == 4 ) then fibaro:setGlobal("weekend", 0); fibaro:setGlobal("Jour_semaine", "Mercredi") end if (currentDate.wday == 5 ) then fibaro:setGlobal("weekend", 0); fibaro:setGlobal("Jour_semaine", "Jeudi") end if (currentDate.wday == 6 ) then fibaro:setGlobal("weekend", 0); fibaro:setGlobal("Jour_semaine", "Vendredi") end if (currentDate.wday == 7 ) then fibaro:setGlobal("weekend", 1); fibaro:setGlobal("Jour_semaine", "Samedi") end Etape 3 - Créer un module Virtuel composé d'un label : et de 2 boutons : (remplacer 102 par l'id de votre module virtuel) copier ce code dans le main loop --[[ %% properties %% globals --]] local smartphoneID = 12; local ID_volet_salon = {6,7,8,14}; --ID volets salon + cuisine local ID_volet_etage = {30,31,32}; --ID volets étage local ID_volet_chambre_E = {27}; --ID volet Chambre Enfant local ID_volet = {6,7,8,14,30,31,32}; --ID tous les volets sauf enfant local ID_fenetre_salon = {9,15,16,16}; --ID fenetres salon + cuisine --(deuxieme 16 à remplacer par ID fenetre cuisine, le mien est mort) local ID_fenetre_etage = {34,34,33}; --ID fenetres étage local ID_fenetre_chambre_E = {28}; --ID fenetre Chambre Enfant local ID_fenetre = {9,15,16,16,34,34,33}; --ID toutes les fenetres sauf enfant --(deuxieme 16 à remplacer par ID fenetre cuisine, le mien est mort) --(deuxième 34 correspond à une fenetre qui ne s'ouvre pas) ------------------------------------------------------------------------------------------------------------- -- Définition des horaires Auto des volets ------------------------------------------------------------------------------------------------------------- local time_ouv_auto_1 = "06:30"; --debut plage horaire douche local time_ouv_auto_2 = "10:30"; --fin plage horaire douche local time_ouv_1 = "07:30"; --ouverture volets local time_ferm_E = "19:00"; -- fermeture volet chambre enfant local time_ferm_Et local time_ferm_S = "23:30"; -- fermeture volets Salon local weekend = fibaro:getGlobal("weekend"); if (weekend == 1) then -- weekend time_ferm_Et = "23:30"; -- fermeture volets Etage --fibaro:debug("weekend fermeture etage "..time_ferm_Et); else -- semaine time_ferm_Et = "22:00"; -- fermeture volets Etage --fibaro:debug("semaine fermeture etage "..time_ferm_Et); end --fibaro:debug("fermeture etage "..time_ferm_Et); ------------------------------------------------------------------------------------------------------------- -- CODE ------------------------------------------------------------------------------------------------------------- local minute = 60000 --in milliseconds local currentDate = os.date("*t"); local currentTime = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min); ------------------------------------------------------------------------------------------------------------- -- Ouvrir Auto Groupe Salon si Douche ------------------------------------------------------------------------------------------------------------- local id_v = 0; if time_ouv_auto_1 <= currentTime and currentTime <= time_ouv_auto_2 then if tonumber(fibaro:getValue(46, "value")) > 70 then for i=1, #ID_volet_salon do id_v = tonumber(ID_volet_salon[i]); fibaro:call(id_v, "open"); --fibaro:debug(id) end fibaro:log("Ouverture Auto Volets Salon"); end end ------------------------------------------------------------------------------------------------------------- local sysvolet_auto = "SysVolet_auto" -- variable globale à déclarer local sysvolet_a = fibaro:getGlobal(sysvolet_auto); --fibaro:debug(sysvolet_a) if sysvolet_a == "ON" then ------------------------------------------------------------------------------------------------------------- -- Ouvrir Auto Volets Etage + Salon ------------------------------------------------------------------------------------------------------------- local id_v = 0; if time_ouv_1 == currentTime then for i=1, #ID_volet_salon do id_v = tonumber(ID_volet_salon[i]); fibaro:call(id_v, "open"); --fibaro:debug(id) end for i=1, #ID_volet_etage do id_v = tonumber(ID_volet_etage[i]); fibaro:call(id_v, "open"); --fibaro:debug(id) end fibaro:log("Ouverture Auto Volets Salon et Etage"); end ------------------------------------------------------------------------------------------------------------- -- Fermeture Auto Fenetre Enfant ------------------------------------------------------------------------------------------------------------- local id_v = 0; local id_f = 0; if time_ferm_E == currentTime then for i=1, #ID_volets_chambre_E do id_v = tonumber(ID_volet_chambre_E[i]); id_f = tonumber(ID_fenetre_chambre_E[i]); if tonumber(fibaro:getValue(id_f, "value")) == 0 then -- vérifie si fenetre fermée fibaro:call(id_v, "close"); --fibaro:debug(id_v) end end fibaro:log("Fermeture Auto Volet Enfant"); end ------------------------------------------------------------------------------------------------------------- -- Fermeture Auto Volets Etage ------------------------------------------------------------------------------------------------------------- local id_v = 0; local id_f = 0; if time_ferm_Et == currentTime then fibaro:call(smartphoneID, "sendPush", "Fermeture Automatique Etage"); for i=1, #ID_volet_etage do id_v = tonumber(ID_volet_etage[i]); id_f = tonumber(ID_fenetre_etage[i]); if tonumber(fibaro:getValue(id_f, "value")) == 0 then -- vérifie si fenetre fermée fibaro:call(id_v, "close"); --fibaro:debug("id_v "..id_v); --fibaro:debug("id_f "..id_f); end end fibaro:log("Fermeture Auto Volet Etage"); end ------------------------------------------------------------------------------------------------------------- -- Fermeture Auto Volets Salon ------------------------------------------------------------------------------------------------------------- local id_v = 0; local id_f = 0; --fibaro:debug(time_ferm_S); if time_ferm_S == currentTime then fibaro:call(smartphoneID, "sendPush", "Fermeture Automatique Salon"); for i=1, #ID_volet_salon do id_v = tonumber(ID_volet_salon[i]); id_f = tonumber(ID_fenetre_salon[i]); if tonumber(fibaro:getValue(id_f, "value")) == 0 then -- vérifie si fenetre fermée fibaro:call(id_v, "close"); --fibaro:debug(id) end end fibaro:log("Fermeture Auto Volet Salon"); end ------------------------------------------------------------------------------------------------------------- end Faites bien attention à bien associer le module du volet et le capteur d'ouverture de fenêtre associé. exemple chez moi : volet 6 va avec fenetre 9, etc... et voici les deux icones amélioration en cours de réflexion : faire un sleep de 2 minutes après le push, histoire d'arreter le process si je suis dehors, voir si c'est utile
  23. Ce script consiste a envoyer un SMS via le plugin freesms de notre amis Krikroff que je remercie au passage pour son super boulot. A chaque ouverture ou fermeture d'une porte vous recevrez un Sms (Service Gratuit chez FREEMobile) Ce script peu bien sur être adapter pour d'autres modules 1 - Installation du plugin 2 - créé une instance et ajouter vos identifiant (il faut que le service soit activé sur votre compte freemobile c'est gratuit) 3 - faire un test pour voir si tout fonctionne parfaitement 4 - Crée un variable global FreeSmsID avec commme valeur l'ID de l'instance (J'utilise cette solution car a chaque mise a jour il faut ré installer le plugin puis re crée l'instance comme je suis pas trés courageur j' ai pas envie de modifier l'id dans toutes les scripts je modifie donc la variable global a chaque nouvelle installation du plugin, si vous avez plusieurs forfait il suffit d'utilisé un variable global par instance) 5 - Crée une nouvelle Scème LUA et ajouter ce code %% properties 35 value 39 value 152 value %% globals --]] local OrigineDeclenchement = fibaro:getSourceTrigger() -- on demande au système de récupérer (get) l'origine (Source) du déclenchement de la scène (Trigger) if OrigineDeclenchement['type'] == 'property' then -- si l'origine du déclenchement de la scène est la modification d'une propriété d'un module surveillée dans l'entête alors local id = OrigineDeclenchement['deviceID'] -- Récuperation de l'id du déclencheur local Name = fibaro:getName(id) -- Récuperation Nom du module déclencheur local MaPorte = fibaro:getValue(id, 'value' ) -- récuperation de la valeur de l'id déclencheur local IdSMS = fibaro:getGlobalValue("FreeSmsID") -- récuperation de la variable global instance freesms local MessageSms = ('La ' ..Name) fibaro:debug('id module = '..id) fibaro:debug('Nom du module = '..Name) fibaro:debug( 'ID Plugin SMS = ' .. IdSMS) fibaro:debug( 'value = ' .. MaPorte) if (MaPorte == '0') then fibaro:call(IdSMS, "send", MessageSms .." est Fermee") fibaro:debug( 'Fermer' ) else fibaro:call(IdSMS, "send", MessageSms .." est Ouverte") fibaro:debug( 'Ouverte' ) end elseif OrigineDeclenchement['type'] == 'other' then -- sinon si l'origine du déclenchement de la scène est autre alors fibaro:debug('La scène a été lancée manuellement') end - 6 Ajouter l id des modules pour lesquels vous voulez recevoir un SMS ex : pour un détecteur d'ouverture id 100 on peut en ajout comme bon vous semble . --[[ %% properties 100 value %% globals --]] C'est mon premier script que je post donc je demande a Mr Moicphil de bien vouloir être indulgent si j'ai mal posté mon post merci
  24. Bonjours a tous, Pourquoi UNIVERSEL Parce que cette télécommande peut facilement être utilisé pour de FGD par exemple, il suffit de mettre l'id d'un FGD et ca fonctionne (pour les puristes il faudra changer le mots volets par FGD) Je débute en lua, j'ai donc décider de me faire une télécommande via un Module Virtuel Mon objectif principal et d' optimisez au maximum mon code je pense que les experts du lua vont encore diminuer le nombres de lignes J'ai donc réfléchi (oui ca m'arrive) pour que cela soit le plus simple possible a gérer. j'ai pas envie de tous refaire a chaque fois qu'un ID change la télécommande ce divise en 3 Zones + 1 Slider le Slider sert a choisir la valeur d'ouverture du volet je ne parlerai donc jamais de fermeture mais d'une ouverture a "0" Chaque Zone ce divise en 3 boutons Ouvrir = ouverture de la zone Slider = ouvre la zone en fonction de la position du slider Fermer = fermeture de la zone Pour installer ce module il va falloir crée plusieurs variables Il faut absolument respecté les majuscules et minuscules 2 variables globales IdI9305=(id de votre téléphone) ex : IdI9305=134 (cette variable va servir un faire un push lors de l'actionnement d'une zone) VoletsSlider=0 elle va nous permettre a stocker la valeur de notre slider 3 Variables prédéfinies V_Zone1 V_Zone2 V_Zone3 dans chacune de ces variables on va indiqué les id des volets attention a la syntaxe. si vous voulez modifier les id il faut supprimer la variable prédéfinies et la recrée L'id du volets peut être mis dans plusieurs zone exemple : V_Zone1=5,7,9 V_Zone2=19,23,25 V_Zone3=29,27,17,5 Voila le plus dur est fait. Pour le slider Voici ce que j'ai fais. Le début du code a été récupérer sur le forum -- Permet de récuperer la valeur slider function map_range( a1, a2, b1, b2, s ) return b1 + (s-a1)*(b2-b1)/(a2-a1) end local V_Slider = map_range(0, 100, 0, 100, _sliderValue_ ); -- Mise a jour de la Variable globale Slider fibaro:setGlobal('VoletsSlider', V_Slider) fibaro:debug( "Valeur Slider = " ..V_Slider ) -- mise a jour des labelles fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblZone1.value", " Slider = " ..V_Slider) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblZone2.value", " Slider = " ..V_Slider) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblZone3.value", " Slider = " ..V_Slider) je vais vous donnez le code pour un bouton c'est sensiblement le même pour les autres. -- traitement de la varialble globale Merci Steven function split(text, sep) local sep, fields = sep or ":", {} local pattern = string.format("([^%s]+)", sep) text:gsub(pattern, function(c) fields[#fields+1] = c end) return fields end local mon_tableau = fibaro:getGlobal('V_Zone1'); local V_Id = split(mon_tableau, ",") -- fin du traitement de la varialble globale -- Numero de la Zone local Zone = 1 -- Valeur 0=Fermer - 99 = Ouvert local V_Status = fibaro:getGlobalValue("VoletsSlider") -- Recuperation de id du tel pour le push local IdTel = fibaro:getGlobalValue("IdI9305") -- Initialisation de la table local V_IdValue = {}; fibaro:debug("Nombres Modules = " ..#V_Id) for i = 1,#V_Id do fibaro:call(V_Id[i], "setValue", V_Status ); -- Commande Module V_IdValue[i] = fibaro:getValue(V_Id[i], 'value' ); -- recuperation de la valeur du module fibaro:debug( V_IdValue[i] .." " .. i ) end local V_Status = fibaro:getGlobalValue("VoletsSlider") fibaro:sleep(2*1000) -- Mise a jour label fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblZone1.value", #V_Id .." Volets") -- Envoi du Push fibaro:call(IdTel, "sendPush", "Les " ..#V_Id .." Volets de La Zone " ..Zone .." sont Ouverts") Voila ce que ca donne au final Je voulais tous particulièrement dire merci a lionel57, Berale24 pour la réalisation de tableaux Ainsi qu'a Steven pour le bout de code qu'il a partagé sur le forum et donc je me suis servi Voici le lien pour télécharger le version 1.0 Volets_V1.0.vfib Télécommande Volets, FGD etc... V2.0 (8 Zone ou Prg) Il faut crée 2 variables globale : - VoletsSlider (si déja crée aucun soucis ca fonctionnera) - VoletsZone -- Nom du Programme + id des volets ex : {"RDC", 8, 15, 23} local Var_Id = {"Valeur a renseigner"} -- Ne Rien Modifier en dessous de cette ligne --------------- local Var_NameZone = (tostring(Var_Id[1])) -- Nom de la Zone ex : "RDC = " -- Sauvegarde des id dans la variable globale fibaro:setGlobal('VoletsZone',json.encode(Var_Id)); local Var_Name = "" for i = 2,#Var_Id do local TempName = fibaro:getName(Var_Id[i]) local TempValue = fibaro:getValue(Var_Id[i], 'value' ); -- recuperation de la valeur du module Var_Name = (Var_Name ..TempName .."=" ..TempValue .." - ") end -- Mise a jour label fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label3.value", Var_NameZone) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label1.value", Var_Name) il faut renseigner la zone + les id Exemple : -- Nom du Programme + id des volets ex : {"RDC", 8, 15, 23} local Var_Id = {"Rez De Chaussé", 5, 7, 9} cette manipulation est a faire pour chaque touche Prg que vous voulez utiliser Voici le code lorsque l'on appui sur Envoi : -- Récupération de vos id en début de vos scripts Var_Id=json.decode((fibaro:getGlobal('VoletsZone'))); local Var_Zone = tostring(Var_Id[1]) -- Valeur 0=Fermer - 99 = Ouvert local V_Status = fibaro:getGlobalValue("VoletsSlider") -- Recuperation de id du tel pour le push local IdTel = fibaro:getGlobalValue("IdI9305") -- Initialisation de la table local V_IdValue = {}; fibaro:debug("Nombres Modules = " ..#Var_Id) for i = 2,#Var_Id do V_IdValue[i] = fibaro:getValue(Var_Id[i], 'value' ); -- recuperation de la valeur du module if V_IdValue[i] ~= V_Status then fibaro:call(Var_Id[i], "setValue", V_Status ); -- Commande Module else fibaro:debug(V_IdValue[i] .." = " .. V_Status ) end end fibaro:sleep(2*1000) -- Mise a jour label fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label1.value", "Les " ..#Var_Id-1 .." Modules de La Zone " ..Var_Zone .." ACTIONNES") -- Envoi du Push fibaro:call(IdTel, "sendPush", "Les " ..#Var_Id-1 .." Volets de La Zone " ..Var_Zone .." ACTIONNES") Utilisation : On sélectionne un programme le nom des modules ainsi que leurs valeurs actuel s'affiche (Mise en page pas toujours super car on affiche cela dans une étiquette) On sélectionne une valeur avec le SLIDER ou OUVRIR ou FERMER On sélectionne Envoyer et c'est parti Je vais peut être ajouter 3 nouvelles touche pour actionner des Scenes Voici le lien pour télécharger le version 2.0b : Volets_V2.0b.vfib Voici un script pour la télécommande qui permet de sélectionner tous les volets sans avoir a donner les ID Fonctionne avec des FGRM222 et FGRM221 Il suffit de copier ce script dans l'un des 8 prg -- Ne Rien Modifier en dessous de cette ligne --------------- local HC2 = Net.FHttp("127.0.0.1", 11111) local reponse = HC2:GET("/api/devices") local NombreModule = json.decode(reponse) local Var_Id = {"Tous"} for i = 3, #NombreModule do local theType = string.sub(fibaro:getType(i), 12,15) local Var_Name = fibaro:getName(i) -- Si égale à 'blind' if (theType == 'FGRM') then local t_id = #Var_Id + 1 table.insert(Var_Id, t_id, tonumber(i)) fibaro:debug("Type : "..theType..' - Volets ID '..i .." = "..Var_Name) end end local Var_NameZone = (tostring(Var_Id[1])) -- Nom de la Zone ex : "RDC = " -- Sauvegarde des id dans la variable globale fibaro:setGlobal('VoletsZone',json.encode(Var_Id)); local Var_Name = "" for i = 2,#Var_Id do local TempName = fibaro:getName(Var_Id[i]) local TempValue = fibaro:getValue(Var_Id[i], 'value' ); -- recuperation de la valeur du module Var_Name = (Var_Name ..TempName .."=" ..TempValue .." - ") end -- Mise a jour label fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label3.value", Var_NameZone) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label1.value", Var_Name)
  25. Nicolas P

    Portail Électrique Astrell 300

    Bonjour, Voici ma première vrai contribution à ce forum. Grâce à l'aide de plusieurs personnes j'ai réussi à domotiser mon portail électrique Astrell 300. Pour commencer voici le câblage qu'il faut réaliser pour mettre un FGS-221 pour l'ouverture voiture et l'ouverture piéton : Une fois que cela est fait vous vous retrouvez dans le cas suivant : - Le portail ne s'ouvre ou se ferme que quand le contact est sur ON cela veut dire qu'il faut appuyer 2 fois sur le contact pour le repasser en OFF (Pas WAF du tout). Il y a 2 solutions pour arriver à nos fin : - Mettre les paramètres 4 et 5 des modules à 1 ce qui fera un OFF auto après le délai spécifié 0.5 devrait suffire ==> Merci à @Nikko et @Did pour les conseils - la deuxième solution est de créer 2 modules virtuels, j'aurais pu en faire qu'un seul mais cela été plus clair d'en faire 2 pour madame , rien de vous empêche de les réunir : - Portail_Voiture.vfib - Portail_Pieton.vfib Pour les icônes je me suis permis d'utiliser deux qui sont présent dans la banque d'icône : - Ouverture voiture : - Ouverture piéton : La prochaine étape sera de mettre un capteur d'ouverture pour avoir la position du portail. Je compte faire la détection avec un module universel FGBS-321 et un détecteur d'ouverture filaire extérieur dessus.
×