Aller au contenu

Rechercher dans la communauté

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



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
    • Annonces et suggestions
    • Nouveau ? Présentez-vous
    • Le bistrot
    • Mon installation domotique
    • Autres Solutions Domotiques
  • La HC2 et ses périphériques
    • La Home Center pour les nuls
    • Home Center 2 & Lite
    • Modules Fibaro
    • Modules Z-wave
    • Périphériques et matériels autres
    • Plugins
    • Alarme & Vidéo-surveillance
    • Multimédia
    • Chauffage et Energie
    • Actionneurs & Ouvrants (Portail, volets...)
    • Eclairage
    • Applications Smartphones et Tablettes
    • English Section
  • Les objets connectés
    • Les Assistants Vocaux
  • Fibaro's Awards
    • Membre du mois
    • Jeux concours & Cadeaux
  • 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

16 résultats trouvés

  1. VD Yeelight Controller v. 1.3.0 - 14/01/2018 Je vous présente le VD Yeelight Manager qui, comme son nom l'indique, permet d'intégrer les produits Yeelight avec la HC2. Pour être très précis, je ne dispose que d'une Bedside Lamp et je n'ai donc pas testé ce VD avec d'autres produits. Cependant, l'API étant générique, il n'y a pas de raisons que ça ne fonctionne pas aussi. Seule limite, je n'ai pas intégré dans le VD la gestion de la background light puisque la Bedside Lamp n'en a pas. Trêve de bavardages, voici l'usine à gaz : Yeelight Controller v. 1.3.0.vfib Paramétrage des plus classiques, il vous suffit de renseigner l'IP de la Yeelight dans le champ IP du VD, et le port dans le champ Port du VD (c'est le port 55443 qui est utilisé par les Yeelights). Avant d'importer le VD, je vous conseille de l'ouvrir dans un éditeur de texte et de faire un rechercher/remplacer pour définir l'ID de l'icône des boutons (rechercher la chaîne "buttonIcon":1011). IMPORTANT = Il faut activer le Contrôle sur le réseau local depuis l'application Yeelight, pour chaque lampe. Pour pouvoir gérer une Yeelight 'presque' comme un module, il suffit d'insérer dans la scène ou le code du bouton ou du Main Loop le code suivant : _y={credits='Yeelight Controller v. 1.3.0 - Copyright 2018 Olivier Meyer - GNU GPLv3',global='y_yeelight_global',item='y_yeelight_',props={power=true,bright=true,ct=true,rgb=true,hue=true,sat=true,color_mode=true,flowing=true,delayoff=true,flow_params=true,music_on=true,name=true,bg_power=true,bg_flowing=true,bg_flow_params=true,bg_ct=true,bg_lmode=true,bg_bright=true,bg_rgb=true,bg_hue=true,bg_sat=true,nl_br=true},f=fibaro,debug=function(s,m,c)s.f:debug(string.format('<span style="color:%s;">%s</span>', c, m))end,here=function(s)local h=type(s.f.getSelfId)=='nil' if h then return h,__fibaroSceneId else return h,s.f:getSelfId(),_elementID_ end end,log=function(s)local h=s:here()if h then local a=s.f:args()if a then if a[1].yeelight then s:debug(a[1].debug,a[1].color);s:debug(a[1].command,a[1].color);os.exit()end end end end,getBtn=function(s,i,n)local c,r=0,api.get('/devices/'..tostring(i))['properties']['rows'] local x=#r for a=1,x do local y=#r[a].elements for b=1,y do c=c+1 if n==r[a].elements[b].name then return c end end end s:debug('[Yeelight] Unable to locate button '..n..', check virtual device '..i,'Tomato');return nil end,build=function(s,m,p)local c='{"id":1, "method":"'..m..'", "params":['for i=1,#p do if type(p[i])=="number"then c=c..p[i]else c=c..'"'..p[i]..'"'end;if i~=#p then c=c..', 'end end;c=c..']}\r\n'return c end,load=function(s,v)local g=s.f:getGlobalValue(v)if string.len(g or '')>0 then local d=json.decode(g)if d and type(d)=='table'then return d else s:debug('[Yeelight] Unable to process data, check variable','Tomato')end else s:debug('[Yeelight] No data found!','Tomato')end return nil end,set=function(s,i,d)local g=s:load(s.global)if g[tostring(i)]then local a,b,c=s:here();g[tostring(i)].scene=a;g[tostring(i)].id=b;g[tostring(i)].button=c;g[tostring(i)].command=d;s.f:setGlobal(s.global,json.encode(g))end end,call=function(s,i,m,p)local b=s:getBtn(i,'btnTransmission')if b==nil then return nil end;local c=s:build(m,p)s:set(i,c)s.f:call(i,'pressButton',b)end,getValue=function(s,i,p,g)if s:checkP(p) then if type(g)~='table' then g=s:load(s.item..i)end if g.properties then if g.properties[p] then if g.properties[p].value then return g.properties[p].value end end end s:debug('[Yeelight] Unable to get value of '..tostring(p)..', please check variable.','Tomato');end return nil end,getModificationTime=function(s,i,p,g)if s:checkP(p) then if type(g)~='table' then g=s:load(s.item..i)end if g.properties then if g.properties[p] then if g.properties[p].modificationTime then return g.properties[p].modificationTime end end end s:debug('[Yeelight] Unable to get modification time of '..tostring(p)..', please check variable.','Tomato');end return nil end,get=function(s,i,p)local g=s:load(s.item..i);return s:getValue(i,p,g),s:getModificationTime(i,p,g)end,getStatus=function(s,i)local g=s:load(s.item..i)if g then if g.status then return g.status end end return nil end,getLastChange=function(s,i)local g=s:load(s.item..i)if g then if g.last then return g.last end end return nil end,checkP=function(s,p)if not s.props[p] then s:debug('[Yeelight] '..p..' is not an existing property!','Tomato') return false end return true end} _y:log() Ce code ci-dessus contient les fonctions suivantes : _y:call(id, method, params) qui permet d'envoyer une commande à la lampe. Les différents boutons du VD permettent d'avoir un aperçu du fonctionnement. Pour aller plus loin, je vous renvoie à la documentation de l'API Yeelight : Yeelight_Inter-Operation_Spec.pdf _y:get(id, property) qui fait exactement la même chose que fibaro:get() _y:getValue(id, property) qui fait exactement la même chose que fibaro:getValue() _y:getModificationTime(id, property) qui fait exactement la même chose que fibaro:getModificationTime() _y:getStatus(id) qui retourne "online" si la lampe est connectée au réseau wifi, et "offline" dans le cas contraire _y:getLastChange(id) qui retourne une table contenant les propriétés qui viennent d'être modifiées et leur nouvelle valeur Les logs générés par l'utilisation de la fonction call() s'affichent dans la zone de debug de la scène (ne pas oublier pour cela la ligne _y:log() et d'autoriser suffisamment d'instances) ou dans celle du bouton / main loop du module virtuel d'où a été utilisé la fonction. Pour pouvoir utiliser ces lampes comme déclencheurs de scène, le VD crée automatiquement une variable globale y_yeelight_XXX, où XXX est l'ID du VD. Cette variable globale contient toutes les propriétés de la lampe et est mise à jour en temps réel. Par exemple, pour lancer l'exécution d'une scène à l'allumage d'une Yeelight : --[[ %% globals y_yeelight_XXX --]] _y={credits='Yeelight Controller v. 1.3.0 - Copyright 2018 Olivier Meyer - GNU GPLv3',global='y_yeelight_global',item='y_yeelight_',props={power=true,bright=true,ct=true,rgb=true,hue=true,sat=true,color_mode=true,flowing=true,delayoff=true,flow_params=true,music_on=true,name=true,bg_power=true,bg_flowing=true,bg_flow_params=true,bg_ct=true,bg_lmode=true,bg_bright=true,bg_rgb=true,bg_hue=true,bg_sat=true,nl_br=true},f=fibaro,debug=function(s,m,c)s.f:debug(string.format('<span style="color:%s;">%s</span>', c, m))end,here=function(s)local h=type(s.f.getSelfId)=='nil' if h then return h,__fibaroSceneId else return h,s.f:getSelfId(),_elementID_ end end,log=function(s)local h=s:here()if h then local a=s.f:args()if a then if a[1].yeelight then s:debug(a[1].debug,a[1].color);s:debug(a[1].command,a[1].color);os.exit()end end end end,getBtn=function(s,i,n)local c,r=0,api.get('/devices/'..tostring(i))['properties']['rows'] local x=#r for a=1,x do local y=#r[a].elements for b=1,y do c=c+1 if n==r[a].elements[b].name then return c end end end s:debug('[Yeelight] Unable to locate button '..n..', check virtual device '..i,'Tomato');return nil end,build=function(s,m,p)local c='{"id":1, "method":"'..m..'", "params":['for i=1,#p do if type(p[i])=="number"then c=c..p[i]else c=c..'"'..p[i]..'"'end;if i~=#p then c=c..', 'end end;c=c..']}\r\n'return c end,load=function(s,v)local g=s.f:getGlobalValue(v)if string.len(g or '')>0 then local d=json.decode(g)if d and type(d)=='table'then return d else s:debug('[Yeelight] Unable to process data, check variable','Tomato')end else s:debug('[Yeelight] No data found!','Tomato')end return nil end,set=function(s,i,d)local g=s:load(s.global)if g[tostring(i)]then local a,b,c=s:here();g[tostring(i)].scene=a;g[tostring(i)].id=b;g[tostring(i)].button=c;g[tostring(i)].command=d;s.f:setGlobal(s.global,json.encode(g))end end,call=function(s,i,m,p)local b=s:getBtn(i,'btnTransmission')if b==nil then return nil end;local c=s:build(m,p)s:set(i,c)s.f:call(i,'pressButton',b)end,getValue=function(s,i,p,g)if s:checkP(p) then if type(g)~='table' then g=s:load(s.item..i)end if g.properties then if g.properties[p] then if g.properties[p].value then return g.properties[p].value end end end s:debug('[Yeelight] Unable to get value of '..tostring(p)..', please check variable.','Tomato');end return nil end,getModificationTime=function(s,i,p,g)if s:checkP(p) then if type(g)~='table' then g=s:load(s.item..i)end if g.properties then if g.properties[p] then if g.properties[p].modificationTime then return g.properties[p].modificationTime end end end s:debug('[Yeelight] Unable to get modification time of '..tostring(p)..', please check variable.','Tomato');end return nil end,get=function(s,i,p)local g=s:load(s.item..i);return s:getValue(i,p,g),s:getModificationTime(i,p,g)end,getStatus=function(s,i)local g=s:load(s.item..i)if g then if g.status then return g.status end end return nil end,getLastChange=function(s,i)local g=s:load(s.item..i)if g then if g.last then return g.last end end return nil end,checkP=function(s,p)if not s.props[p] then s:debug('[Yeelight] '..p..' is not an existing property!','Tomato') return false end return true end} _y:log() local function run() --Code à exécuter à l''allumage de la Yeelight end local trigger = fibaro:getSourceTrigger() if trigger.type == "global" then if trigger.name == "y_yeelight_XXX" then if _y:getLastChange(XXX)["power"] == "on" then run() end end end Et voici les icônes que j'utilise pour l'état on/off de la lampe, celle qui est sur chaque bouton pour signifier l'envoi de la commande, et celle qui indique que la lampe est hors ligne : REMERCIEMENTS un grand merci à @ADN182 qui m'a fourni le VD qu'il avait commencé à développer et qui m'a fait gagner beaucoup de temps dans la compréhension de la manière d'envoyer les commandes à la lampe, vu que l'objet Net.FTcpSocket ne semble documenté nulle part (ou alors je n'ai pas trouvé ). Egalement, je dois pas mal à @Krikroff et à son VD Sonos Remote puisque c'est de là que vient l'idée d'utiliser une variable globale pour faire passer les commandes depuis n'importe quelle scène jusqu'au VD pour qu'il l'envoie à la lampe. De même pour le principe du ping que j'utilise pour détecter quand la lampe est déconnectée du réseau wifi, de manière à relancer automatiquement la connexion TCP lorsqu'elle revient en ligne, ce qui était le souci de @ADN182. Et, enfin, un grand merci également à @Talwayseb pour son VD Philips Hue qui m'a grandement inspiré pour l'esthétique du VD Yeelight Manager. Et aussi à @pepite et @Lazer pour leurs tuyaux pour faire passer les debug entre un VD et un autre VD (_elementID_ !!) ou une scène (fibaro:args()).
  2. Salut à tous !!! Pour mon premier post, je partage avec vous quelques VD lié à l’univers Philips Hue et, cerise sur le gâteau, compatible avec les ampoules LED TRÅDFRI de Ikea. Ils sont inspirés de ce que j’ai pu glané ici et là sur le forum, notamment le VD de @Zorgonaute84 et le VD de @Moicphil. /!\ Avant de commencer : Créer un compte Développeur sur son bridge Connectez-vous au Bridge Hue depuis un navigateur internet via l'adresse suivante : http://<IPduBridgeHUE>/debug/clip.html Dans URL : vous tapez : /api Dans Message body : {"devicetype":"my_hue_app#newdevelopper"} Appuyez sur le bouton d'association de votre bridge HUE, puis vous cliquez sur POST Dans Command Response : recopier le username Récupérer la configuration de votre bridge Connectez-vous au Bridge Hue depuis un navigateur internet via l'adresse suivante : http://<IPduBridgeHUE>/debug/clip.html Dans URL : vous tapez : /api/VotreUsername/ Cliquez sur GET Dans Command Response : recopier et sauvegarder le texte afin de conserver sur le coude vos n° de lampe, n° de groupe, etc… Créer la variable globale VD_Hue_User Dans le panneau de Variables, ajouter, dans le tableau Variables prédéfinies, la variable VD_Hue_User. Donner lui la valeur de votre username récupéré sur le Bridge. Supprimer l’autre valeur, en lui donnant la même valeur. Du coup, pour la plupart des VD proposés, vous aurez plus qu’à renter l’adresse IP et le n° de l’ID (n° de la lampe, n° du groupe, etc…) dans le port TCP. Quelques liens utiles https://my.meethue.com/fr-fr/ https://developers.meethue.com/documentation/getting-started https://developers.meethue.com/philips-hue-api https://developers.meethue.com/documentation/supported-lights Logiciel WinHue 3 : https://hyrules.github.io/WinHue3/ Gamut - Espace Colorimétrique Philips utilise 3 Espaces de couleur : A, B et C. en fonction de la référence du produit. Les VD proposés sont optimiser pour un Gamut de type C. Pour le Gamut A, relativement proche, il ne devrait pas y avoir de soucis. Par contre pour le Gamut B, à cause de l'espace colorimétrique, les couleurs entre le jaune et le bleu (Lime, Vert, Jade, Cyan, Bleu ciel) devraient logiquement être presque blanche... Icônes : Pour chaque VD ou Scène, pour l'icône par défaut, j'utilise toujours une icône invalide (la rose avec ?). Cela me permet de savoir au premier coup d'œil si le VD ou la scène fonctionne correctement. --------------------------------------- VD Talwayseb - Bridge Philips Hue : - Renseigner l'adresse IP de votre bridge dans le champ "Adresse IP" du module - Renseigner le port 80 de votre bridge dans le champ "Port TCP" - Ajouter les 7 icônes pour le modèle de votre choix pour chaque état : Bridge V1 Bridge V2 - Dans la Boucle Principale (Main Loop), il faut également ajouter le numéro des icônes en fonction de chaque état. Téléchargement : Le ZIP : VD Talwayseb - Bridge Philips Hue V1.0.zip (Contient le .VFIB + les icônes) Mot de Passe : Talwayseb --------------------------------------- VD Talwayseb - Ampoule Philips et Ikea en fonction du type : - Renseigner l'adresse IP de votre bridge dans le champ "Adresse IP" du module - Renseigner le n° ID de la lampe Hue à contrôler dans le champ "Port TCP" - Ajouter les 26 icônes pour la catégorie de votre choix pour chaque couleur : Ampoule E27 Ampoule GU10 Bandeau LED Ampoule E14 Ampoule blanche dimmable - Dans la Boucle Principale (Main Loop), il faut également ajouter le numéro des icônes en fonction de chaque couleur. Téléchargement en fonction de votre type de lampe : Le ZIP pour les ampoules de couleurs - Color Light (e.g. Bloom, Iris, LightStrips) : VD Talwayseb - Ampoule Philips Hue Color V1.0.zip (Contient le .VFIB + les icônes) Le ZIP pour les ampoules de couleurs étendues - Extended Color Light (e.g. A19, BR30, GU10) : VD Talwayseb - Ampoule Philips Hue White & Color V1.1.zip (Contient le .VFIB + les icônes) Le ZIP pour les ampoules blanche d'ambiance - Color Temperature Light (e.g. ) : VD Talwayseb - Ampoule Philips Hue White Ambiance V1.0.zip (Contient le .VFIB + les icônes) | Compatible Ikea Le ZIP pour les ampoules blanche dimmable - Dimmable Light (e.g. Hue Lux A19) : VD Talwayseb - Ampoule Philips Hue White V1.1.zip (Contient le .VFIB + les icônes) | Compatible Ikea Mot de Passe : Talwayseb --------------------------------------- VD Talwayseb - Groupe Philips en fonction du type : - Renseigner l'adresse IP de votre bridge dans le champ "Adresse IP" du module - Renseigner le n° ID du groupe Hue à contrôler dans le champ "Port TCP" - Ajouter les 26 icônes pour chaque couleur - Ou ajouter les 18 icônes si que dimmable - Dans la Boucle Principale (Main Loop), il faut également ajouter le numéro des icônes en fonction de chaque couleur. Téléchargement en fonction de votre type de groupe : Le ZIP pour le groupe des ampoules de couleurs : VD Talwayseb - Groupe Philips Hue Color V1.0.zip (Contient le .VFIB + les icônes) Le ZIP pour le groupe des ampoules de couleurs étendues : VD Talwayseb - Groupe Philips Hue White & Color V1.1.zip (Contient le .VFIB + les icônes) Le ZIP pour le groupe des ampoules blanche d'ambiance : VD Talwayseb - Groupe Philips Hue White Ambiance V1.0.zip (Contient le .VFIB + les icônes) | Compatible Ikea Le ZIP pour le groupe des ampoules blanche dimmable : VD Talwayseb - Groupe Philips Hue White V1.0.zip (Contient le .VFIB + les icônes) | Compatible Ikea Mot de Passe : Talwayseb --------------------------------------- VD Talwayseb - Beyond Philips Hue : - Renseigner l'adresse IP de votre bridge dans le champ "Adresse IP" du module. - Renseigner le n° ID du groupe Hue par défaut à contrôler dans le champ "Port TCP". - Créer une variable globale unique pour chaque VD pour le mode. Dans mon VD, elle s'appelle VD_ModeHue_SAM. - Pour la plupart des Boutons et dans la Boucle Principale (Main Loop), il faut renseigner les groupes à gérer en fonction du mode choisi : NumGroupUp pour le N° du Groupe Beyond Up NumGroupDown pour le N° du Groupe Beyond Down - Ajouter les 96 icônes pour chaque couleur : Icônes communes Mode1 (gestion de l'Eclairage Bas en Blanc + Eclairage Haut en Couleur) Mode2 (gestion de l'Eclairage Bas en Couleur + Eclairage Haut en Blanc) Mode3 (Gestion des 2 sources lumineuses de façon identique) Mode4 (Gestion de la source lumineuse Haute) Mode5 (Gestion de la source lumineuse Basse) - Dans la Boucle Principale (Main Loop), il faut également ajouter le numéro des icônes en fonction de chaque couleur pour chaque mode. - Toujours dans la boucle, renseigner un n° ID d'une lampe comprise dans le groupe par défaut. Téléchargement : Le ZIP : VD Talwayseb - Beyond Philips Hue V1.2.zip (Contient le .VFIB + les icônes) Mot de Passe : Talwayseb --------------------------------------- VD Talwayseb - CMD Général Philips Hue White & Color (Groupe 0) : /!\ attention à la gestion des groupes, j'ai personnellement un groupe avec des informations différentes. j'ai fais en sorte de ne pas l'interroger. - Renseigner l'adresse IP de votre bridge dans le champ "Adresse IP" du module - Renseigner le n° ID du groupe Hue par défaut à contrôler dans le champ "Port TCP" - Ajouter les 26 icônes pour chaque couleur - Dans la Boucle Principale (Main Loop), il faut également ajouter le numéro des icônes en fonction de chaque couleur. - Sur certain Bouton et dans la Boucle Principale, il faut renseigner la variable CdeGroupMax avec le nombre de groupe que vous avez. Téléchargement : Le ZIP : VD Talwayseb - CMD Général Philips Hue White & Color (Groupe 0) V1.1.zip (Contient le .VFIB + les icônes) Mot de Passe : Talwayseb --------------------------------------- VD Talwayseb - Timer Philips Hue : Ce VD vous permet de piloter une Tempo créer et existante via l'application officielle Philips Hue . Via l'application Philips Hue : 1 - Dans l'onglet Routines, allez dans le Menu Minuteurs. 2 - Créez/gérez une Tempo, Affectez lui un Nom, Choisissez une durée (peut importe elle sera modifiable depuis la HC2), Choisissez votre groupe (la pièce) et vous sélectionnez le scenario extinction (vous êtes libre d'utiliser un autre scenario en fonction de vos besoin). 3 - La Tempo est prête sur le pont !!! Via l'API Debugger : Connectez-vous au Bridge Hue depuis un navigateur internet via l'adresse suivante : http://<IPduBridgeHUE>/debug/clip.html Dans URL : vous tapez : /api/VotreUsername/schedules/ Cliquez sur GET Dans Command Response : repérez le n° ID qui possède le nom de la Tempo que vous avez paramétré. Sur la HC2 : - Renseigner l'adresse IP de votre bridge dans le champ "Adresse IP" du module - Renseigner le n° ID du Timer par défaut à contrôler dans le champ "Port TCP". - Ajouter les 5 icônes pour chaque état : - Dans la Boucle Principale (Main Loop), il faut également ajouter le numéro des icônes en fonction de chaque état. Téléchargement : Le ZIP : VD Talwayseb - Timer Philips Hue V1.0.zip (Contient le .VFIB + les icônes) Mot de Passe : Talwayseb --------------------------------------- Intégration des Ampoules IKEA TRÅDFRI via le pont Philips Hue : Voici une procédure pour les intégrer : Ajouter des ampoules L.E.D ikea TRÅDFRI sur le pont Philips Hue --------------------------------------- Voiloùuuuuu !!! C'est avec plaisir que je prendrai les suggestions d'amélioration !!! --------------------------------------- Modifications à venir : - Support du Multi langues - Ajout d'un Bouton Flash dans les VD des Lampes et des Groupes - Ajout des Scènes dans les VD des Groupes - Gestion des Variables globales dans tous les VD --------------------------------------- Demandes des Membres : - VD Motion Sensors Hue - VD Télécommande Dimmer Hue
  3. Bonjour, Je vois pas mal de personne qui s’intéresse à la gestion auto de leur éclairage en fonction de la détection de mouvement et de la mesure de luminosité. J'utilise depuis plusieurs mois un script de Stevenvd du forum officiel. Etant étonné de ne pas voir ces infos présente sur notre forum, je vous en fait une petite présentation. Ce script a pour but de gérer de manière autonome la ou les lumières de votre pièce en fonction de la lumière ambiante, de la présence dans la pièce, de vos variables Dodo/Debout, Présence/Abscence, Jour/nuit. Le principe est le suivant : La journée est divisée en plusieurs périodes(Matin, jour, soir, nuit) Si on détecte un mouvement et que la lumière est trop basse pour la période de la journée alors on allume la/les lumière(s) pour X temps. Mais là ou le script est bien pensé, c'est qu'il intègre la possibilité d'allumer une ou plusieurs lampe en fonction de la journée et de la lumière ambiante mais aussi de gérer des exceptions ( Lecture d'un film sur kodi, absence de la maison, ou ce que vous voulez) Le post sur le forum officiel se trouve ICI et le script complet est dispo sur le site de l'auteur . Pré-requis : Vous devez avoir des variables globales pour les états suivants: sleepState = "Dodo" timeOfDay = " Periode de la journée" presentState = "Présence" Ces variables changent de valeur via un autre script ( GEA ou scheduler ou toute autre scene de votre cru !) Ci-dessous les 1eres ligne du script où l'on a besoin d'intervenir. (j'ai traduit les commentaires en français pour les anglophobes ou les Lorrains ) --[[ %% properties 477 value 480 value 491 value %% globals TimeOfDay PresentState --]] --[[ Changez - XXX value - au dessus. Une par détecteur de mouvement, une par détecteur de lux. La variable globale TimeOfDay et les lux s'assurent que la scene soit déclenchée quand vous etes déja dans la pièce et que quelquechose change. faites vos régalges en dessous, lumières et ajouter des " extra functions" Feel free to suggest changes or contact when having problems. It is not allowed to sell or distribute this software and earlier versions without the approval of Control Living © 2014 - 2015 Smart lights by Control Living Version 1.6.7 --]] -------------------------------------------------------------------- -----------------------YOUR LIGHT SETTINGS-------------------------- motionSensorID = {477}; -- changez les id du ou des détecteurs de mouvement {477} ou {477,478,479} si vous en avez plusieurs. LuxSensorID = {480}; -- changez les id du ou des détecteurs de luminosité {480} ou {480,481,482} si vous en avez plusieurs. --Pour eviter de devoir modifier tout le script, on définit ici les equivalences entre vos variables et celles du script --Entrez le nom de vos Variables Globales qui correspondent aux variables ci dessous.Il faut les créer au préalable. SANS CELA , LA SCENE NE FONCTIONNERA PAS. Attention aux majuscules ! sleepState = "SleepState"; --Sleep globalstate variable. timeOfDay = "TimeOfDay"; --Time of Day Global variable. presentState = "PresentState"; --Present state Global variable. --Enter the values of your global variables stated above. If not using, copy the name in front of the "YourValueName" --Entrez les valeurs de vos Variables Globales qui correspondent aux variables ci dessous sleepStateMapping = {Sleeping="Sleeping", Awake="Awake"}; timeOfDayMapping = {Morning="Morning", Day="Day", Evening="Evening", Night="Night"}; presentStateMapping = {Home="Home", Away="Away", Holiday="Holiday"}; -- Réglez la valeur en lux à laquelle la lumière doit s'allumer. -- Si vous ne voulez pas utiliser de minLux alors mettez : 65535 minLuxMorning = 100; minLuxDay = 60; minLuxEvening = 40; minLuxNight = 30; --Si la luminosité est supérieur à maxlux, la lumière s'éteint après le délai onTime (voir plus bas). maxLuxMorning = 300; maxLuxDay = 300; --[[ Maintenant la partie la plus importante: Ici vous pouvez définir quelle lumière doit s'allumer,à quelle valeur et pour combien de temps. Laissez les acollades vides pour pas de lumière. Pour régler la valeur d'une lampe sans timer on utilise 2 parametres: {id=ID_LAMPE, setValue="VALEUR"} Pour régler la valeur d'une lampe avec un timer on utilise 3 parametres: {id=ID_LAMPE, setValue="VALEUR", onTime=TEMPS_EN_SECONDES } Pour régler la valeur d'un RGBW, on défini les 4 canaux dans le SetValue : setValue={R="255",G="255",B="255",W="255"} -- RGBW set: {id=ID_LAMPE, setValue={R="255",G="255",B="255",W="255"}, onTime=TEMPS_EN_SECONDES } --]] lightsSleeping = {}; --lights that are triggered when Sleepstate is sleeping. lightsMorning = {{id=471, setValue="99", onTime=300},{id=491, setValue="99", onTime=300},{id=902, setValue="turnOn", onTime=360}}; lightsDay = {{id=471, setValue="80", onTime=90},{id=491, setValue="80", onTime=90}}; lightsEvening = {{id=471, setValue="60", onTime=300},{id=491, setValue="60", onTime=300},{id=902, setValue="turnOn", onTime=300}}; lightsNight = {{id=471, setValue="45", onTime=60}, {id=491, setValue="45", onTime=60}}; --Manual Override, the time that lights will not be turned ON again after manually turning them off. --OverrideFor, le temps en secondes pendant lequel la lumière ne se rallume pas apres une extinction manuelle --dimmDownTime, temps en seconde pour le dimmer à l'extintion OverrideFor = 90; dimmDownTime = 10; -------------------------------------------------------------------- -------------------------EXTRA FEATURES----------------------------- --Ici le script integre des fonctions supplementaires. C'est ici que l'on peut ajouter des conditions supplémentaires pour eviter l'allumage des lumières pendans la lecture d'un film par exemple extraMorningFunc = function() -- Add your extra code here. If you want some checks or maybe run a virtual device button. --This code is always triggered if there is motion. -- movieLights = {{180, "10"},{181, "10"} }; --if (xbmc == "playing" ) then CallLightArray(movieLights); ExtraDebug("Extra morning function called"); end extraDayFunc = function() -- Add your extra code here. If you want some checks or maybe run a virtual device button. --This code is always triggered if there is motion. ExtraDebug("Extra day function called"); end extraEveningFunc = function() -- Add your extra code here. If you want some checks or maybe run a virtual device button. --This code is always triggered if there is motion. ExtraDebug("Extra evening function called"); end extraNightFunc = function() -- Add your extra code here. If you want some checks or maybe run a virtual device button. --This code is always triggered if there is motion. ExtraDebug("Extra night function called"); end extraLightTriggerChecks = function() --add extra checks here. and return the total true or false value. --if returning false the lights will not be triggered. -- for instance: return ( (pcTurnedOff == true ) and (xbmc ~= "Empty") ); -- return true to enable lights to turn on return true; end extraOffChecks = function() --return true to keep lights on. return false; end -------------------------------------------------------------------- ----------------------ADVANCES SETTINGS----------------------------- local showStandardDebugInfo = true; -- Debug shown in white local showExtraDebugInfo = false; -- Debug shown in orange
  4. Interrupteur tactile 0-10v connecté sur un module fibaro fgrgb -101 (rgbw) 0-10v. Tout fonctionne parfaitement, le module fibaro rgbw réagit au doigt et à l'oeil avec l’interrupteur tactile ... Réglage du module Fibaro fgrgb-101 obligatoirement en Output/Input 0-10v. Ce mode crée: - 1 module Maître - 4 modules esclaves. Principe de fonctionnement: 1) récupérer les valeurs envoyées par l'interrupteur tactile au module fibaro "01". 2) récupérer les valeurs du module fibaro "02" qui est connecté au ruban led. 3) faire une comparaison des deux valeurs et lorsque il y a un déséquilibre entre ces deux modules imposer au modules fibaro "02" ruban led de se mettre en phase avec le module "01" Pour la partie "intelligente" de l'inter, lorsque celui ci est a 0 au niveau des valeurs rgbw traiter cette action comme éteint. Et inversement aussi lorsque l'inter envoie une info >= a 0 au niveau des valeurs rgbw traiter cette info comme allumer ! Pour le S idem, c'est une touche d’apprentissage donc je lui impose pour mon cas d'avoir un R=256 un G=0 et un B=256, le tour est joué, lorsque j'ai ces valeurs je valide le push !!! Mais aussi la possibilité de réaliser jusqu'à 4 zones afin de pouvoir contrôler jusqu'à 4 modules RGBW différents !!! du travail reste à faire sur ce point. ​Présentation du montage: Présentation de l'interrupteur: Présentation du câblage: Présentation du module virtuel en positon d’arrêt: Présentation du module virtuel en positon de fonctionnement maxi: Présentation du périphérique virtuel (ébauche): Présentation en vidéo de l'ensemble: https://www.youtube.com/watch?v=F-FSzuWvDAc&feature=youtu.be Ou trouver l’interrupteur! Prochainement il sera disponible sur un site e-commerce que je mets en place. Ce site va proposer beaucoup de produits qui pourront être intégré entre autre avec les modules fibaro. --------------------------------------------- Voila, pour un premier tour rapide concernant ce montage. Merci à KriKroff pour son code afin de rapatrier séparément les valeurs RGBW du module fibaro. Je ne poste pas pour le moment le code du périphérique virtuel et de la scène, il n'est pas encore terminé et utilise trop de whiletruedo je voudrais travailler d'avantage avec les Trigger !!! Ravis de partager enfin cet ensemble qui pour moi et madame va changer nos habitudes et relations avec la domotique. Comme je l'avais déjà évoqué, un peu de simplicité c'est pas mal aussi surtout lorsque la tablette tactile est déchargée ! Bruno PS: j'ai déjà un nouveau truc à réaliser "un mur chauffant fonctionnant avec mon poêle à bois, un échangeur à plaque, et des ballons tampons, avec passage d'un circuit VMC double flux dans ce mur afin de chauffer l'air pour les étages.. je pense qu'il va y avoir du fibaro universel fgbs-001 " Mais la il y a du gros oeuvre donc ce sera plus long !!! --------------------------------------------- Bien, voila le code concernant le module virtuel il se trouve dans la phase ou je le présente dans la vidéo youtube: Il reste un petit travail a réaliser concernant le pushS. Bon je post le vfib : Tactile_RGBW_0_10V.vfib Son image : Mais aussi voila la scène qui traite la possibilité sur deux zones pour le moment afin de changer les états en Zone R vers Zone G et vis versa, le reste n'ai pas terminé hélas par manque de temps ... Il faudra par la suite créer en fonction de ces zones "l'attaque" des modules RGBW souhaité ... Oui il y a encore pas mal de travail ... Scéne à créer aussi : Zone_R_vers_Zone_G.txt Il faudra aussi créer 3 variables prédéfinies: Tactile1Mode : AllActif, Off, OffOn, OnOff, Timer Tactile1_PushS: Inactif, Actif Tactile1_Zone: ZONE_R, ZONE_G,ZONE_B Site Internet pour trouver le produit: Plus de site, car pas de temps pour s'en occupé... Reste quelques inter 0-10v disponible. Merci à vous !
  5. Je ressors un vieux bout de lua basé sur les équations de robert penner et posté à l'origine ici http://forum.fibaro.com/viewtopic.php?t=1656 Tout est dans le titre. Vous pouvez utiliser cette scène de manière autonome ou bien dans le cadre d'une programmation horaire . Amusez vous bien Pour la mise en place, il faut créer donc une nouvelle scène en mode LUA puis copier le code ci-dessous. ensuite, renseigner tous les identifiants des périphériques de type "dimmer" dans la variable devices, c'est eux qui varieront d'intensité lumineuse. local devices = {23, 45, 55}; Renseigner dans la variable local curve = "inExpo" la courbe choisie pour la variation lumineuse ou bien conserver celle par défaut. cf. tableau des courbes. local duration = 20; La variable duration correspond à la durée totale en seconde de la scène pour faire une transition de la valeur basse à la valeur haute. --[[ %% properties %% globals --]] fibaro:debug("HC2 start script at " .. os.date()); -- LUA - Dawn simulator V1.0.1 -- -- Wake up "naturally", illuminated by a soft light and progressive. -- Based on open source Robert Penner's original easing equations (Copyright © 2001 Robert Penner) -- Copyright © 2013 Jean-christophe Vermandé -- USER SETTINGS : -- Type of equation used to generate the curve (dimming). -- Possible values are: linear, inQuad, inExpo, outExpo, inOutQuad, inOutExpo, outInExpo local curve = "inExpo"; -- Type of equation used to generate the curve (dimming). local debug = false; -- To log in HC2 debug area local devices = {36}; -- IDs of devices to be varied (only dimmable device), eg. {1, 16, 10} local startValue = 0; -- Begin value local endValue = 100; -- End value local duration = 100; -- Execution time in seconds of the scene -- DO NOT EDIT THE CODE BELOW (except to suit your needs) -- dawnSimulatorEngine = { version = "1.0.1" }; function dawnSimulatorEngine:init(startValue, endValue, duration, devices, curve, debug) self._lastValue = 0 self._startValue = startValue or 0; self._endValue = endValue or 100; self._duration = duration or 1; self._devices = devices or {}; self._curve = equations.map[curve or 'linear']; -- require 'equations' to operate self._debug = debug or true; end function dawnSimulatorEngine:_update(value) self._lastValue = value; -- keep in memory the last value to compare later -- loop in deveices local name, id; for i=1, #self._devices do id = tonumber(self._devices[i]); fibaro:call(id, "setValue", value); if (self._debug) then name = fibaro:getName(id); if (name == nil or name == string.char(0)) then name = "Unknown" end fibaro:debug("Device:" .. name .. " setValue: " .. value); end end end function dawnSimulatorEngine:_compute(time) return math.ceil(tonumber(self._curve(time, self._startValue, self._endValue, self._duration))); end function dawnSimulatorEngine:start() local computedValue; local doWhile = true; local time = 0; -- timeline while (doWhile == true) do computedValue = self:_compute(time); -- prevent multiple call with same value if (computedValue ~= self._lastValue) then -- update device value self:_update(computedValue); end time = time + 1; if (time > self._duration) then doWhile = false; if (self._lastValue < self._endValue) then -- force target value self:_update(computedValue); end else fibaro:sleep(1000); end -- do while end end -- Easing function (Penner's Easing Equations) equations = equations or { version = "1.0.1", -- Linear linear = function(t, b, c, d) return c * t / d + b; end, -- InQuad inQuad = function(t, b, c, d) t = t / d; return c * math.pow(t, 2) + b; end, -- InOutQuad inOutQuad = function(t, b, c, d) t = t / d * 2; if t < 1 then return c / 2 * math.pow(t, 2) + b; else return -c / 2 * ((t - 1) * (t - 3) - 1) + b; end end, -- InOutExpo inOutExpo = function(t, b, c, d) if t == 0 then return b end if t == d then return b + c end t = t / d * 2; if t < 1 then return c / 2 * math.pow(2, 10 * (t - 1)) + b - c * 0.0005; else t = t - 1; return c / 2 * 1.0005 * (-math.pow(2, -10 * t) + 2) + b; end end, -- OutInExpo outInExpo = function(t, b, c, d) if t < d / 2 then return equations.outExpo(t * 2, b, c / 2, d); else return equations.inExpo((t * 2) - d, b + c / 2, c / 2, d); end end, -- InExpo inExpo = function(t, b, c, d) if t == 0 then return b; else return c * math.pow(2, 10 * (t / d - 1)) + b - c * 0.001; end end, -- OutExpo outExpo = function(t, b, c, d) if t == d then return b + c; else return c * 1.001 * (-math.pow(2, -10 * t / d) + 1) + b; end end }; -- Equations map equations.map = { ['linear'] = equations.linear, ['inQuad'] = equations.inQuad, ['inExpo'] = equations.inExpo, ['outExpo'] = equations.outExpo, ['inOutQuad'] = equations.inOutQuad, ['inOutExpo'] = equations.inOutExpo, ['outInExpo'] = equations.outInExpo } -- START SIMULATOR ENGINE if (debug) then fibaro:debug("Starting the process"); end --startEngine(equations.map[curve]); dawnSimulatorEngine:init(startValue, endValue, duration, devices, curve, debug); dawnSimulatorEngine:start(); if (debug) then fibaro:debug("End of the process"); end
  6. Le but de ce script est de gérer l’allumage automatique des lumières (la nuit => bascule jour/nuit géré par une scène) et leur extinction si aucun mouvement détecté dans un laps de temps défini, tout en conservant la possibilité de désactiver cet automatisme. La fonction se décompose en une scène qui gère l’allumage et l’extinction et en un module virtuel pour le réglage des paramètres. A chaque déclenchement, les lumières passent à ON et un compteur est incrémenté. Ce compteur est décrémenté après le délai fixé, si ce compteur est à 0, alors les lumières passent à OFF. Peut être il existe une solution plus simple, mais c’est la seule solution que j’ai trouvé pour repartir sur un nouveau délai avant extinction sans toucher au statut ARMER/DESARMER de mes capteurs de mouvements (le statut ARMER pour les alarmes, le statut DESARMER pour l'éclairage) Après de nombreuses recherches, je n’avais pas trouvé le script qui convenait. Pour ce faire, pour chaque pièce, je crée 3 variables (exemple pour salon) - Salon => le compteur - Duree_Salon => durée en minutes avant extinction - Salon_Allum_Auto (oui/non) => allumage/extinction actif (ou non) Scène Allumage Auto --[[ %% autostart %% properties 46 value 46 armed %% globals Jour_Nuit --]] local startSource = fibaro:getSourceTrigger(); if ( ( (tonumber(fibaro:getValue(46, "value")) > 0 and tonumber(fibaro:getValue(46, "armed")) == 0) and fibaro:getGlobalValue("Jour_Nuit") == "Nuit" and fibaro:getGlobalValue("Salon_Allum_Auto") == "Oui" ) or startSource["type"] == "other" ) then fibaro:setGlobal("Salon", tonumber(fibaro:getGlobalValue("Salon")) + 1); fibaro:call(17, "turnOn"); fibaro:call(20, "turnOn"); setTimeout(function() fibaro:setGlobal("Salon", tonumber(fibaro:getGlobalValue("Salon")) - 1); if ( tonumber(fibaro:getGlobalValue("Salon")) == tonumber("0") and fibaro:getGlobalValue("Salon_Allum_Auto") == "Oui" ) then fibaro:call(17, "turnOff"); fibaro:call(20, "turnOff"); end end, tonumber(fibaro:getGloabalValue("Duree_Salon")) * 60 * 1000) end ​Module virtuel Activation Allum Auto Création d’un label (Allum Auto), d’une zone 2 boutons et d’un slider Code Lua bouton ON local id = fibaro:getSelfId() local temp = "Oui" fibaro:call(id,"setProperty","ui.Label1.value",temp) fibaro:setGlobal("Salon_Allum_Auto", temp) Code Lua bouton OFF local id = fibaro:getSelfId() local temp = "Non" fibaro:call(id,"setProperty","ui.Label1.value",temp) fibaro:setGlobal("Salon_Allum_Auto", temp) Code Lua slider fibaro:setGlobal("Duree_Salon", _sliderValue_) Code Lua boucle principale local id = fibaro:getSelfId() local temp = fibaro:getGlobalValue("Salon_Allum_Auto") local duree = fibaro:getGlobalValue("Duree_Salon") fibaro:call(id,"setProperty","ui.Label1.value",temp) fibaro:call(id,"setProperty","ui.Slider1.value",duree) En espérant que ma contribution pourra aider certains et en attente de vos commentaires pour améliorer tout ça.
  7. Zorgonaute84

    Module Virtuel Pour Philips Hue

    Bonjour à tous, En ces jours tristes de V4 bugué et de plugin Hue qui déconne, je vous propose (a ceux qui ont encore une box fonctionnel) aujourd'hui mon module virtuel pour piloter une lampe philips hue. Présentation du module : L'interface : Le bouton ON, allume la lampe en blanc et luminosité max Le bouton OFF, éteint la lampe Le slider de luminosité gère la luminosité, éteint la lampe a 0, et permet de la rallumer avec les mêmes paramètres (hormis la luminosité) qu'a son extinction. Le slider saturation gère ... la saturation Les icones de couleurs allumes la lampe, luminosité au max, saturation au max avec la couleur du bouton. Le Slider variance toujours fixé au milieu, permet de faire varier la couleur. Après chaque mise a jour il se refixe automatiquement au milieu. Par défaut l'amplitude du Slider est de 10'000 (sur 65535) Le Mainloop permet de mettre à jour l'icône en fonction de l'état de l'ampoule (meme si la modification a été faite en dehors du HC2) 1ère étape : Créer un compte newdeveloper sur son bridge Connectez vous à vos Bridge Hue depuis un navigateur internet via l'adresse suivante : http://<IPduBridgeHUE>/debug/clip.html Dans URL vous tapez : /api Dans body : {"devicetype":"test user","username":"newdeveloper"} Appuyez sur le bouton d'association de votre bridge HUE puis vous cliquez sur POST Voila, le compte newdeveloper est créé !!! PS : Cette étape n'est à faire que la premiere ampoule. Pour les suivantes, passez directement à l'étape 2. 2ème étape : Ajouter le module virtuel Hue.vfib 3ème étape : Paramétrer le module - Renseigner l'adresse IP de votre bridge dans le champ "Adresse IP" du module - Tapez 80 dans le champ "Port TCP" - Dans le code de chaque boutons renseigner l'ID de la lampe a contrôler. - Ajouter les icones suivantes : Les icones de couleurs sont a ajoutés pour chaque couleur, la blanche pour le bouton ON, la sombre pour le bouton Off, l'icone avec les engrenages pour les sliders et l'icone d'erreur avec la croix est a ajouter mais sans l'associer a un bouton. - Dans le main loop il faut également ajouter le numéro de chacune de ces icones : Et voila, Enjoy !!!! Personnalisation du module : Vous pouvez personnaliser le module sur certains critères : - La couleur prédéfinie des 8 boutons (variable en début de code de chaque bouton) - L'amplitude du slider de Variance (par défaut amplitude a 10'000, de - 5'000 a + 5'000) Un peu touchy, vous pouvez également personnaliser les limites de "bascule" dans l'affichage des icones entre chaque couleur du mainloop : J'ai mis une condition sur la saturation pour certaines couleurs qui virent au blanc une fois déssaturées. Par défaut j'ai mis 125 à toute les couleurs sauf au vert qui reste vert meme déssaturé complètement. Ces valeurs méritent d'être améliorés. Surtout quand on voit la différence de couleur entre un lightstrip et une ampoule classique. Remerciement a Leon du forum Fibaro dont je me suis inspiré pour le code du mainloop (http://forum.fibaro.com/printview.php?t=3635&start=0&sid=9cac8f29955ead11536902261289d7e0) J'ajouterai dans la prochaine version du module le lancement de comportements comme le clignotement, l'allumage ou l'extinction en transition "longue"...
  8. Installation Tubes LED T8/G13 Néon Ce type de néon et fortement recommandé lors de utilisation de module type FGS-221 Il existe des supports ou crochets pour les Tubes Néon avec ballasts inductifs(LAMal, LCA)ou éléctroniques (EVG). Lors du montage des Tubes LED, le démarreur doit etre retiré tout comme les Tubes Néon avant l'installation des nouveaux Tubes LED. Un Starter/Demarreur est également livré avec nos Tubes LED LEDVero mais il n'est pas nécessaire dans de nombreux cas. Avant d'installer les lampes LED, n'oubliez pas dans tous les cas de désactiver le courant éléctrique. Remplacement facile Lors du Montage des Tubes LED avec (EVG), le ballast éléctronique doit etre débranché par un électricien professionnel. Si vous avez des questions concernant le montage, vous devriez contacter au préalable un électricien ou un technicien spécialiste.
  9. Je me souviens que la demande avait été faite, mais je ne me souviens pas d'une éventuelle réponse. Dans le cas ou je me trompe, ce morceau de code ne servira peut-être jamais function turnIt(mode) -- On parcours les 350 premiers modules for i = 1, 1000 do -- Si un module est de type Eclairage local ret = fibaro:get(i, 'isLight') if (type(ret) == "string" and string.find(ret, "1" )) then -- On l'allume ou l'éteint fibaro:call(i, mode) end end end turnIt("turnOn") --turnIt("turnOff") turnIt("turnOf") permet donc d'allumer tout les modules de type "Eclairage", turnIt("turnOff") en revanche, permet de tout éteindre.
  10. Aujourd’hui je vous propose un nouveau module virtuel qui permet d’allumer ou éteindre les anneaux de WallPlug de Fibaro. Vous pouvez utiliser ce module avec sa télécommande ou dans vos différentes scènes en fonction des vos besoins. Installation: 1) Création de variables globales: Créez trois variable dans le panneau « variables » -> IdWallPlug -> LoginHC2 -> MdpHC2 2) Téléchargez le module et installer le via importation de modules Module disponible ici: http://domotique-home.fr/download/module_virtuel_hc2/Colors_Wallplug.vfib 3) Ouvrez le module et renseigniez l’adresse IP de votre Home Center 4) Dans la partie « Settings », renseigniez les trois données: (voir capture) deviceID = XXX <–ID de Wallplug a gérer LoginHC2 = « admin » <– Votre login MdpHC2 = « admin » <– Votre mot de passe Laissez les valeurs des variables crées a 0 ou vide. Enregistrez 5) Appuyiez sur le bouton « Settings » de module 6) Votre module est maintenant fonctionnel, amusez vous bien. Soyez patient la Homme Center prend environs 5 secondes pour enregistrement de nouveaux paramètres. La couleurs de votre WallPlug change une fois que la Home Center a fini de mettre à jours les paramètres
  11. sebcbien

    Fixer La Valeur D'un Dimmer

    Bonjour, Je partage un petit script qui permet de fixer la valeur d'un dimmer à 60%, toutes les 4 heures, sauf si en utilisation. Le script fonctionne très bien depuis des mois. Je suis loin d'être un développeur, donc s'il y a des suggestions d'amélioration, n'hésitez pas Créer une scène et y mettre ce code: --[[ %% autostart %% properties %% globals --]] -- si lampe SAM eteinte, set dimmer a 60% toutes les 4 heures entre 0h01 et 23h59 local sourceTrigger = fibaro:getSourceTrigger(); if (sourceTrigger["type"] == "autostart") then while true do local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); if ( ( (tonumber(os.date("%H%M")) >= tonumber(string.format("%02d%02d", "00", "01")) and tonumber(os.date("%H%M")) <= tonumber(string.format("%02d%02d", "23", "59"))) and (math.floor(os.time()/60)-math.floor(1391295660/60))%240 == 0 ) and ( tonumber(fibaro:getValue(54, "value")) == 0 ) ) then fibaro:call(54, 'setValue', 60); fibaro:call(54, 'turnOff'); end fibaro:sleep(60*1000); end else local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); if ( ( (tonumber(os.date("%H%M")) >= tonumber(string.format("%02d%02d", "00", "01")) and tonumber(os.date("%H%M")) <= tonumber(string.format("%02d%02d", "23", "59"))) ) and ( tonumber(fibaro:getValue(54, "value")) == 0 ) or startSource["type"] == "other" ) then fibaro:call(54, 'setValue', 60); fibaro:call(54, 'turnOff'); end end
  12. Salut a tous, Je pense que ça a du au moins vous arriver une fois dans votre vie d'allumer par mégarde une lampe extérieure sans vous en rendre compte et la laisser allumée. J' ai donc fait un petit script rapide qui permet de detecter quand une lampe extérieure est allumée en journée et l'éteindre automatiquement après 20 secondes. voici donc le script : --[[ %% properties 29 value 34 value 33 value %% globals sunsetHour --]] local startSource = fibaro:getSourceTrigger(); if (fibaro:getGlobal("sunsetHour") == "0") then if (fibaro:getValue(29, "value") > "0") or (fibaro:getValue(33, "value") > "0") or (fibaro:getValue(34, "value") > "0") then fibaro:call(4, "sendPush", "Lumière Ext Allumée. Procedure d extinction."); fibaro:sleep(20*1000) fibaro:call(29, "turnOff") fibaro:call(33, "turnOff") fibaro:call(34, "turnOff") end end Dans ce script les IDs 29, 33 et 34 sont les IDs de mes lampes extérieures. Il faudra donc les modifier par les votres. Egalement j' ai 3 lampes ext, si vous avez plus ou moins, il faudra adapter le code en enlevant ou ajoutant des lignes. Et j'utilise comme element de verification une variable Globale "sunsetHour" pour savoir si nous sommes en journée ou de nuit. Voila c'est tout bête, mais ça dépanne.
  13. Alerte Lumineuse RGBW sur détection de mouvement Avec le module RGBW, comme l'explique Fibaro, il est possible d'utiliser plusieurs formes d'alertes lumineuses, seul l'absence d'imagination est un frein. (Eau de la baignoire trop chaude, distance de garage minimum, température aquarium, état de la météo) à l'aide d'un bandeau à led RGB. Le fait d'avoir des "notifications" visuel est très intéressant pour moi, autant qu'une sirène lors d'une effraction. Ici, nous voulons juste être avertit lors d'une séance cinéma, qu'un intrus potentiel franchit une zone extérieur sous contrôle. Une sorte d'alarme silencieuse, qui ne dérange pas vos invités, mais vous incite à aller voir ce qu'il se passe. Il serait possible de pousser le vis plus loin avec une incrustation sur l'écran sous forme de PIP, provenant d'une caméra vidéo. Alerte lumineuse + confirmation par la caméra qu'il s'agit du chat, ou d'un réel intrus. Le script maintenant : Quand le détecteur de mouvement extérieur (69) est en alerte et armé Si uniquement il fait nuit (coucher du soleil par une variable) Alors déclencher alerte lumineuse (90) Avec un programme rouge clignotant (7) sous le meuble cinéma pendant 10 secondes Puis revenir à la couleur ou programme précédent. Cela fonctionne aussi bien si un programme complet était lancé ou juste une couleur fixe. à‡a a l'air bête et simple expliqué sur 3 lignes, mais c’était ici la complexité d'avoir les deux à la fois, et pas évident, Fibaro n'ayant pas tout permit de manière simple dans les blocs, ou pas. Au départ ça fonctionnait uniquement en couleur fixe. 69 est le détecteur de mouvement 90 le module RGBW Fibaro 7 est le numéro du programme RGBW a déclencher Les autres lignes sont commentés. Bonne bidouilles Merci @Krikroff pour m'avoir écrit ce script ! Sans sont aide je serais encore à la première ligne...cad celle là --[[ --[[ %% properties 69 value 69 armed Jour_Nuit %% globals --]] --Quand detecteur de mouvement rue est en alerte et armed local startSource = fibaro:getSourceTrigger(); if ( ( (tonumber(fibaro:getValue(69, "value")) > 0 and tonumber(fibaro:getValue(69, "armed")) > 0) ) --Et uniquement si il fait nuit (variable sur la semaine + coucher du soleil) --S'il fait jour aucune raison d'allumer les leds car je ne suis pas devant la TV and ( fibaro:getGlobalValue("Jour_Nuit") == "Nuit" ) --Alors allumer les led du meuble TV and ( tonumber(fibaro:getValue(90, "value")) > 0 ) or startSource["type"] == "other" ) then fibaro:call(90, "turnOn"); --Si un programme led est actif local currentProgramID = tonumber(fibaro:getValue(90, "currentProgramID")); if (currentProgramID > 0) then --stoper le prog en cours fibaro:call(90, "turnOff"); --lancer le programme ALERTE 7 fibaro:call(90, "startProgram", "7"); --Passer en lunimosite maximal 100 fibaro:call(90, "setValue", "100"); --Fait une pause de 10 secondes fibaro:sleep(10000); --apres 10 secondes, relancer le programme precedent fibaro:call(90, "startProgram", currentProgramID); else --get last color local colorSet = fibaro:getValue(90, "lastColorSet"); --set old color local RGBWTable= {}; local i = 1; for value in string.gmatch(colorSet,"(%d+)") do RGBWTable[i] = value; i = i + 1; end -- lance le prog ALERTE !!!! fibaro:call(90, "startProgram", "7"); fibaro:sleep(10000); -- apres 10 secondes, relance la couleur fixe --fibaro:call(90, "stopProgram", "7"); -- pas utile mais a activer si probleme de changement de couleur fibaro:call(90, "setColor", RGBWTable[1], RGBWTable[2], RGBWTable[3], RGBWTable[4]); end end
  14. Voici un script de rafal.m repris sur le forum officiel. Ce script permet de basé l'éclairage automatique d'une salle de bain, toilette ... Sur l'ouverture d'une porte pour un fgk-101. Je n'ai pas retesté ce script depuis les modifications de l'alarme, je l'ai modifier pour utiliser une variable globale. -- NOTICE TO CHANGE DEVICES ID's: --[[ %% properties 7 value 17 value %% globals --]] -- BATHROOM SCENE FUNCTIONALITY: -- No extra Global variables needed! -- Automatic light depending of opening and closing door -- Time to enter - detecting another situations, like cleaning bathroom -- NOTICE TO CHANGE DEVICES ID's: doorID = 7; lightID = 17; -- time to enter, longer time will detect as another situation, like: cleaning timeToEnter = 10; local light = fibaro:getValue(lightID, 'value'); local door = fibaro:getValue(doorID, 'value'); local armed, lastArmed = fibaro:get(doorID, 'armed'); local trigger = fibaro:getSourceTrigger(); if (fibaro:countScenes()>1) then fibaro:debug('Kill second scene!'); fibaro:abort(); end if (trigger['type']=='property') then -- door trigger if (trigger['deviceID']==tostring(doorID)) then -- door opened if (door=='1') then fibaro:debug('Door opened.'); if (armed=='0') then fibaro:call(lightID, 'turnOn'); fibaro:call(doorID, 'setArmed', '1'); fibaro:call(doorID, 'setArmed', '0'); fibaro:debug('Light on!'); end -- door closed elseif (door=='0') then fibaro:debug('Door closed.'); if (armed=='1' or (os.time()-lastArmed)>=timeToEnter) then fibaro:call(lightID, 'turnOff'); fibaro:call(doorID, 'setArmed', '0'); fibaro:debug('Light off, room empty!'); else fibaro:call(doorID, 'setArmed', '1'); fibaro:debug('Someone inside!'); end end -- light manual elseif (trigger['deviceID']==tostring(lightID) and (os.time()-lastArmed)>0) then -- light manual off if (light=='0') then if (door=='1') then -- when door are opened fibaro:call(doorID, 'setArmed', '1'); else -- when door are closed fibaro:call(doorID, 'setArmed', '0'); end fibaro:debug('Light manual off!'); -- light manual on elseif (light=='1') then fibaro:call(doorID, 'setArmed', '1'); fibaro:debug('Light manual on, arming...'); end end end
  15. Le script de BenjyNet m'a donné un idée pour des rubans leds que j'ai chez moi au niveau de la télé, l'idée est de démarrer les leds quand il fait nuit et quand la télé marche donc tire du jus sur le wallplug ou elle est branchée. J'ai fais le script suivant: --[[ %% autostart %% properties %% globals --]] -- Allumage led fonction conso wallplug v 1.0.0 [03-2014] -- Copyright © 2014 lolomail local sourceTrigger = fibaro:getSourceTrigger(); local current_conso = 0; if ( (sourceTrigger["type"] == "autostart") and ( fibaro:getGlobalValue("Jour_Nuit") == "Jour" ) ) then while true do local current_conso = tonumber(fibaro:getValue(66, "valueSensor")); fibaro:debug("Conso wallplug " ..current_conso); if current_conso > 80 then fibaro:debug(os.date() .. " - Télé allumée"); fibaro:debug(os.date() .. " - LEDs allumées"); if ( tonumber(fibaro:getValue(132, "value")) < 1 ) then fibaro:call(132, "turnOn"); end if ( tonumber(fibaro:getValue(133, "value")) < 1 ) then fibaro:call(133, "turnOn"); end end if current_conso < 80 then fibaro:debug(os.date() .. " - Télévision éteinte"); fibaro:debug(os.date() .. " - LEDs éteintes"); if ( tonumber(fibaro:getValue(132, "value")) > 1 ) then fibaro:call(132, "turnOff"); end if ( tonumber(fibaro:getValue(133, "value")) > 1 ) then fibaro:call(133, "turnOff"); end fibaro:sleep(10*1000) end end end Il me démarre nickel les rubans quand la conso de la télé passe au delà de 80w mais quand j'éteins, il n'éteint pas les rubans. J'ai fais une coquille? Merci Laurent
  16. Checker l'éclairage chez soi Exécution automatique d'un script qui vérifie si toutes les lumières sont éteintes au départ de chez soi. NB : Je ne suis pas un spécialiste de LUA et mes connaissances en programmation datent de plus de 20 ans (inutile de m'appeler papy ) L'exemple ci-dessous est une adaptation d'un script de contrôle de fenêtres écrit par @quikdav...j'espère qu'il rejoindra ce forum Cette scène est exécutée automatiquement au départ de chez moi Quelques précisions : - "wallplug" et "interrupteur" sont des variables locales de type "table" - les valeurs entre parenthèses bouclées, sont les ID des modules Fibaro (Wall plug FGP111 / Dimmer FGD111). Elles sont séparées par des virgules - Le script va lire les valeurs d'une table dans une boucle : "for i = 1, #wallplug do" par exemple - Ces valeurs sont utilisées dans les commandes : "fibaro:getValue" - "tonumber" permet de changer le type de variable de "caractères à "nombre" - la variable "request" recueille le message à envoyer : une concaténation de textes et de variable - les deux lignes suivantes permettent d'envoyer le message par l'outil "Prowl" que j'expliquerai dans un futur post fibaro:setGlobal('pushnotification', request); fibaro:call(46, "pressButton", "3"); -- Message Prowl Voilà donc un premier post à propos de LUA Et n'hésitez pas dans vos remarques ! --[[ %% properties %% globals --]] wallplug = {6, 67, 68, 69} -- id des wallplugs interrupteur = {22, 50, 51, 87} -- id des interrupteurs local startSource = fibaro:getSourceTrigger(); local bconso = 0 -- contrôle wall plug for i = 1, #wallplug do local wallplugname = fibaro:getName(wallplug[i]); local request -- contrôle si conso supérieure à 1W (halogène consomme 0.5 à l'arrêt) if (tonumber(fibaro:getValue(wallplug[i], "valueSensor")) > 1) then -- remplace les espaces par des %20 pour que cela puisse être interprété dans une URL wallplugname = string.gsub(wallplugname, " ", "%%20") request = 'La%20lampe%20'..wallplugname..'%20est%20allumée'; fibaro:debug(request); fibaro:setGlobal('pushnotification', request); fibaro:call(46, "pressButton", "3"); -- Message Prowl bconso = 1 fibaro:sleep(2000); end end -- contrôle interrupteurs for i = 1, #interrupteur do local interrupteurname = fibaro:getName(interrupteur[i]); local request if (tonumber(fibaro:getValue(interrupteur[i], "value")) > 0) then -- remplace les espaces par des %20 pour que cela puisse être interprété dans une URL interrupteurname = string.gsub(interrupteurname, " ", "%%20") request = 'La%20lampe%20'..interrupteurname..'%20est%20allumée'; fibaro:debug(request); fibaro:setGlobal('pushnotification', request); fibaro:call(46, "pressButton", "3"); -- Message Prowl bconso = 1 fibaro:sleep(2000); end end if (bconso == 0) then request = "Aucune%20lampe%20n'est%20allumée"; fibaro:debug(request); fibaro:setGlobal('pushnotification', request); fibaro:call(46, "pressButton", "3"); -- Message Prowl end
×