Aller au contenu
sebcbien

Modes Éclairage Auto/manuel Waf

Recommended Posts

Bonjour,

Petit partage, un VD et quelques lignes GEA pour activer/désactiver l'éclairage automatique chez moi.

J'avais déjà  implémenté la possibilité d'activer un mode "manuel" via un VD et 3 boutons (Automatique / Manuel / Manuel pendant 3H)

Ce mode manuel était utilisé dans GEA de la manière suivante:

 

local estHouse_Manuel = {"Global", "House_Mode", "Manual"}
local estNotHouse_Manuel = {"Global", "House_Mode", "Auto|Scheduler"}

GEA.add({{"Value", id2["SAM_MVT"],1},estNotHouse_Manuel}, -1, "",{{"turnOn", id2["SALLE_A_MANGER"]}})

Problème, pour activer ce mode il fallait sortir le téléphone de sa poche, pas WAF du tout et pas pratique (mon mantra en domotique: si t'a besoin de ton téléphone pour gérer ta domotique -> FAIL)

 

Voici la solution mà»rement réfléchie:

 

- Un interrupteur mural (ils ont l'avantage de ne pas se perdre et d'être proches ;) )

- Un Virtual Device qui sert aussi de Variable Globale

- GEA

- TTS pour le feedback

 

J'ai donc activé le paramètre 41 (Scène activation sur un FGD) et j'utilise un long press sur S2 pour basculer du mode AUTO en Manuel et vice-versa

Dans GEA, je détecte cet appui long et je clique sur le bouton correspondant du VD
 
GEA:
1894 sceneActivation
2139 ui.ModeRez.value


local estLumRez_Auto = {"Label", id2["MODES_AUTO_MANUEL"], "ModeRez", "Automatique"}
local estLum1er_Auto = {"Label", id2["MODES_AUTO_MANUEL"], "Mode1er", "Automatique"}
local estLumGarage_Auto = {"Label", id2["MODES_AUTO_MANUEL"], "ModeGarage", "Automatique"}


----------- GESTION MODES AUTO/MANU -----------
  -- Bascule mode éclairage actuel
  GEA.add({{"SceneActivation", id2["POUSSOIRS_HAUT"], 12}}, -1, "Switch changing Rez Auto/Manuel Mode at #time#",{{"VirtualDevice", id2["MODES_AUTO_MANUEL"], 5}})
  --Annonce TTS du Mode sauf si en passage en mode Away ou Night_All_Off
  GEA.add({{"Label", id2["MODES_AUTO_MANUEL"], "ModeRez", ""},estNotAwayOrNigh_All_Off}, -1, "Eclairage Rez Set to Mode: #value# at #time#", {{"Inverse"},{"Label", id2["SONOS_SAY_IT"], "Message", "éclairage ré en mode #value#."},TTS_Default})

Exemple d'utilisation:

- Si un soir on veut faire un jeu de nuit avec les enfants, un simple appuy sur l'interrupteur va annoncer dans les SONOS que le mode automatique à  été désactivé et plus aucune lampe ne s'allumera automatiquement.

- Si mon frère passe faire un baby sitting et veut regarder son film dans le noir, il peut activer le mode lui même.

- Si un matin on veut profiter de la lumière du lever de soleil sans lampes

 

Exemple de ligne GEA qui n'allume les lampes que si le mode est en auto:

GEA.add({{"Value", id2["SAM_MVT"],1},estLumRez_Auto }, -1, "",{{"turnOn", id2["SALLE_A_MANGER"]}})

A chaque fois que l'alarme est mise ou que le mode nuit est activé, GEA me remet tout en automatique:

------------ WHEN AT HOME DO-------------------
  GEA.add(estAt_Home, -1, "", {
estLumRez_Auto,
estLum1er_Auto,
estLumGarage_Auto
})

 

A partir d'un autre VD, j'ai 3 boutons

- Forcer tout en automatique

- Manuel

- Manuel pour une durée de 3H puis retour en mode automatique

 

Bouton tout Manuel:

local selfId = fibaro:getSelfId()
local NewState = "Manuel"
local id2 = {
--Maison (Global)
MODES_AUTO_MANUEL = 2139, 
}

fibaro:call(id2["MODES_AUTO_MANUEL"], "setProperty", "ui.ModeRez.value", NewState);
fibaro:call(id2["MODES_AUTO_MANUEL"], "setProperty", "ui.Mode1er.value", NewState);
fibaro:call(id2["MODES_AUTO_MANUEL"], "setProperty", "ui.ModeGarage.value", NewState);
fibaro:call(selfId, "setProperty", "ui.HouseMode.value", NewState);
fibaro:call(id2["MODES_AUTO_MANUEL"], "setProperty", "ui.LastChange.value", "Tout "..NewState.." à  "..os.date("%H:%M"));
fibaro:debug(os.date("%a %d/%m", os.time()).." Set all modes to "..NewState);

Bouton tout Auto:

local selfId = fibaro:getSelfId()
local NewState = "Automatique"
local id2 = {
--Maison (Global)
MODES_AUTO_MANUEL = 2139, 
}

fibaro:call(id2["MODES_AUTO_MANUEL"], "setProperty", "ui.ModeRez.value", NewState);
fibaro:call(id2["MODES_AUTO_MANUEL"], "setProperty", "ui.Mode1er.value", NewState);
fibaro:call(id2["MODES_AUTO_MANUEL"], "setProperty", "ui.ModeGarage.value", NewState);
fibaro:call(selfId, "setProperty", "ui.HouseMode.value", NewState);
fibaro:call(id2["MODES_AUTO_MANUEL"], "setProperty", "ui.LastChange.value", "Tout "..NewState.." à  "..os.date("%H:%M"));
fibaro:debug(os.date("%a %d/%m", os.time()).." Set all modes to "..NewState);

Bouton manuel pour une durée de 3H (puis retour en mode automatique si tout est toujours en manuel, donc si personne n'a appuyé sur le bouton):

local selfId = fibaro:getSelfId()
local NewState = "Manuel"
local id2 = {
--Maison (Global)
MODES_AUTO_MANUEL = 2139, 
}

fibaro:call(id2["MODES_AUTO_MANUEL"], "setProperty", "ui.ModeRez.value", NewState);
fibaro:call(id2["MODES_AUTO_MANUEL"], "setProperty", "ui.Mode1er.value", NewState);
fibaro:call(id2["MODES_AUTO_MANUEL"], "setProperty", "ui.ModeGarage.value", NewState);
fibaro:call(selfId, "setProperty", "ui.HouseMode.value", NewState);
fibaro:call(id2["MODES_AUTO_MANUEL"], "setProperty", "ui.LastChange.value", "Tout "..NewState.." pour 3H à  "..os.date("%H:%M"));
fibaro:debug(os.date("%a %d/%m", os.time()).." Set all modes to "..NewState.." and wait 3H");

-- sleep 3H:
--fibaro:sleep(10*1000)
fibaro:sleep(60*60*1000)
fibaro:debug(os.date("%a %d/%m", os.time()).." 1H Done")
fibaro:sleep(60*60*1000)
fibaro:debug(os.date("%a %d/%m", os.time()).." 2H Done")
fibaro:sleep(60*60*1000)
fibaro:debug(os.date("%a %d/%m", os.time()).." 3H Done")

if fibaro:getValue(id2["MODES_AUTO_MANUEL"], "ui.ModeRez.value") == "Manuel" and
   fibaro:getValue(id2["MODES_AUTO_MANUEL"], "ui.Mode1er.value") == "Manuel" and
   fibaro:getValue(id2["MODES_AUTO_MANUEL"], "ui.ModeGarage.value") == "Manuel" then
NewState = "Automatique"
fibaro:call(id2["MODES_AUTO_MANUEL"], "setProperty", "ui.ModeRez.value", NewState);
fibaro:call(id2["MODES_AUTO_MANUEL"], "setProperty", "ui.Mode1er.value", NewState);
fibaro:call(id2["MODES_AUTO_MANUEL"], "setProperty", "ui.ModeGarage.value", NewState);
fibaro:call(selfId, "setProperty", "ui.HouseMode.value", NewState);
fibaro:call(id2["MODES_AUTO_MANUEL"], "setProperty", "ui.LastChange.value", "Tout "..NewState.." à  "..os.date("%H:%M"));
fibaro:debug(os.date("%a %d/%m", os.time()).." Set all modes to "..NewState);
end

fibaro:debug(os.date("%a %d/%m", os.time()).." Time's up set mode Auto")
--fibaro:setGlobal("House_Mode", "Scheduler")
 

Voilà  un petit apperçu et un bon cas d'utilisation de LABELS au lieu de VG

 

Voici le VD:

Screenshot_2016-10-09-15-05-03.png

 
Et voici les icônes
post-826-0-64692800-1476128026_thumb.png
post-826-0-49950600-1476128036_thumb.png
 
 
 

 

post-826-0-75512000-1476018516_thumb.png

  • Upvote 3

Partager ce message


Lien à poster
Partager sur d’autres sites

Je n'en ai pas le besoin pour le moment (Tout ce qui est en auto l'est en continu et pas de besoin de la basucler en manuel, mais cela viendra un jour je pense, comme pour le garage), mais très propre au niveau rendu !

Partager ce message


Lien à poster
Partager sur d’autres sites

Effectivement ça arrive rarement si l'automatisme est bien pensé, mais pouvoir déroger à  la règle facilement est important, sinon ça donne des

 

- "Je voulais lire tranquille mon livre avec une petite lampe et cette PUT*IN de lampe plafonier s'allumait tout le temps."

Ou mon frère (baby-sitter)qui m'appelle sur mon GSM au cinoche car ces

- "PUTA*N de lampes du salon s'allument tout le temps et que je veux regarder mon film dans le noir"

... comme les baby-sitter n'ont pas l'application fibaro sur leur smartphone je dois le faire à  distance.

 

Donc oui c'est rare mais ça peut "tout gâcher".

Bon tuto aussi pour les LABELS des VD

Partager ce message


Lien à poster
Partager sur d’autres sites

Yes, superbe @sebcbien,

 

Oui ca c'est bon, en gestion LABEL ;-)

 

TOP, bonne idée, a reflechir mais bien au ca ou pour le passage en manuel si jamais..

 

a voir si j'ai un FGD qui traine qui ne fait pas deja du long press ;-) bon vous me direz je n'ai jamais joue avec S2, la j'ai mis un FGD212 pour dimmer..donc snif ou alors j'ai encore rate qqch :-(

Partager ce message


Lien à poster
Partager sur d’autres sites

?? Tu as bien un s2 quasi avec tous les modules fibaro.

Sent from my Note4

Partager ce message


Lien à poster
Partager sur d’autres sites

yes, en fait je viens de le faire dans les toilettes, j'ai mis un interr simple, suis c...j'aurais du mettre un double..Faudrait que je prenne le reflexe de mettre des doubles

Partager ce message


Lien à poster
Partager sur d’autres sites

Yes, les labels des VDs, j'avais fait plus que ça à  un moment, quand on en avait discuté pour faire une passerelle avec la Zibase pour mon alarme. Depuis avec les fake devices, j'ai fais le ménage, mais je fais comme ça dès que possible.

 

Sinon moi dans les passages, le souci c'est que je n'ai mis aucun interupteur, que du sans fil, choix délibéré. Car j'ai tellement de portes, que je ne voulais pas d'inter à  chaque porte, du coup j'ai fais très simple, je n'en ai pas mis :) :)

Mais pour le garage, je cherche encore ce que je vais faire. Soit ta solution, soit un petit script pour gérer l'allumage depuis l'inter qui bloque la coupure par détecteur, soit ton VD qui me plait bien. De même pour la cour tient !

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

@sebcbien, super ton VD...  exactement ce que je voulais faire pour les mêmes raisons...  me suis encore fait avoir hier soir en travaillant dans le garage et cette foutue commande GEA qui éteint la lampe après 5 minutes...  :angry:...  

tu aurais aussi les icônes que tu utilises dans ton VD ? 

Partager ce message


Lien à poster
Partager sur d’autres sites

salut

 

j'ai fais cela (sans se rendu) pour la fermeture baie . si je veux la baie ouverte plus tard que prévu (jardinage tardif),

 

max a une heure défini je passe par dessus manuel.

 

( idem pour la détection mouvement et l'éclairage ) pour un mode manuel.

 

après c'est un module type variables qui te reprend toutes tes variantes mode. (mode baie, mode détection,mode présence lolol)

Partager ce message


Lien à poster
Partager sur d’autres sites

@cardane, sorry j'ai oublié, je fais ça ce soir quand je rentre. je les ai améliorées, le switch est un peu plus visible

@q.philippe pour une seule pièce et une seule lampe et si tu utilises des dimers, il y a une autre méthode:

en gros: avec GEA:

 

Sur détection de mouvement, allumage à  98%

si à  98% depuis plus de X minutes et pas de mouvement -> extinction (avec mise à  99% juste avant)

Donc en cas d'allumage manuel (à  99%) il n'y aura pas de timeout

Si la lampe est déjà  allumée automatiquement (à  98%) un double click sur le poussoir fera passer le dimer à  99% et donc désactivera le timeout

 

Pour des exemples, voir dans le showroom gea V2 (dans ma signature)

Partager ce message


Lien à poster
Partager sur d’autres sites

icônes ajoutées

Partager ce message


Lien à poster
Partager sur d’autres sites

merci sebcbien...

deux petites questions, comme je ne suis pas expert en GEA, c'est quoi les deux premières lignes (1894.... et 2139 ...) ?

en fait, tu utilises trois boutons poussoir en tout (un par zone), c'est ça ? il suffirait que je rajoute par exemple un triple-clic sur ondes boutons et modifier le VD pour désactiver l'ensemble des zones ?

Partager ce message


Lien à poster
Partager sur d’autres sites
1894 sceneActivation -- id du module du bouton poussoir

2139 ui.ModeRez.value -- id du Virtual Device "Modes Eclairage ..."

 

Ces lignes servent à  déclencher GEA lors de l’appui sur le bouton ou lors du changement de valeur du VD

 

Pour le moment je n'ai qu'un seul interrupteur/poussoir pour le rez, les deux autre on ne le fait jamais, mais au besoin je peux l'activer via VD

Comme le VD sert de "variable globale" ça a du sens d'avoir ces zones pour les scripts, même sans poussoir physique

Partager ce message


Lien à poster
Partager sur d’autres sites

salut @sebcbien

 

peut être que me trompe,  mai il me semble que qu'il existe un autre moyen avec  RestartTask et StopTask pour réaliser un Auto / Manuel.

mai je ne le trouve plus.

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

salut @sebcbien

 

peut être que me trompe,  mai il me semble que qu'il existe un autre moyen avec  RestartTask et StopTask pour réaliser un Auto / Manuel.

mai je ne le trouve plus.

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai tester ce code mai ça fonctionne pas ;)

 

local id_wallplug = 10
local id_detecteur = 61

  
-- On éteint le wallplug après 5 minutes
local autoOff = GEA.add(id_wallplug, 5*60, "", {{"turnOff"}})
 
-- Sur detection de mouvement, on allume le wall plug et redémarre la commande autoOff
local autoDetect = GEA.add(id_detecteur, -1, "", {{"turnOn", id_wallplug}, {"RestartTask", autoOff}})
 
 -- Si on éteint le wallplug, on redémarre la commande d'exctintion automatique et le détecteur
GEA.add(id_wallplug, -1, "", {{"Inverse"}, {"RestartTask", autoOff}, {"RestartTask", autoDetect}})
 
 
-- Si on allume le wallplug, on stop la commande d'exctintion automatique et le détecteur
GEA.add(id_wallplug, -1, "", {{"StopTask", autoDetect}, {"StopTask", autoOff}})

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Pourquoi a l extinction du wallplug tu relances les taches? Extinction & autodetect pas besoin. Si eteint pas bedoin de l eteindre et autodetect est connue pas gea dc ca rallulera je pense

Partager ce message


Lien à poster
Partager sur d’autres sites

la je c'est plus, j'ai un mal de tête à la tête:P

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai tester ce bout de code mai, la lampe s’allume et s’éteint un fois  et plus rien

 

local id_wallplug = 16
local id_detecteur = 182


---- On éteint le wallplug après 5 minutes
local autoOff = GEA.add(true, 30, "", {{"turnOff", id_wallplug}})  
--- Sur detection de mouvement, on allume le wall plug et redémarre la commande autoOff
local autoDetect = GEA.add(id_detecteur, -1, "", {{"turnOn", id_wallplug}, {"RestartTask", autoOff}

 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai tester ce code il fonctionne pas trop mal, mai quand j'appui sur l’interrupteur et que je passe devant le détecteur la lampe s'éteint.

 dans le debug j'ai trouver une erreur .

 

local id_lampe = 16
local detecteur = 182
 
-- Extinction automatique de la lampe après 10mn.
local autoOff = GEA.add(id_lampe, 1*60, "", {{"turnOff"}})
 
-- Extinction de la lampe sur fermeture (inverse) de la porte
GEA.add(detecteur, -1, "", {{"Inverse"}, {"turnOff", id_lampe}})
-- Allumage de la lampe sur ouverture de la porte
GEA.add(detecteur, -1, "", {{"turnOn", id_lampe}, {"RestartTask", autoOff}})
 
-- Appuie sur l'interrupteur de la lampe, on stoppe l'extinction automatique.
GEA.add(id_lampe, -1, "", {{"StopTask", autoOff}})



[DEBUG] 09:43:23: GEA Version 5.40 : en exécution...
[DEBUG] 09:43:23: [ 16 | n/a ] sendActions : traitement des actions (ID: 4) [StopTask,1]
[DEBUG] 09:43:23: [ 16 | n/a ] !!! ERREUR !!! : vérification (ID: 4) [StopTask,1]

 

Partager ce message


Lien à poster
Partager sur d’autres sites

salut

 

je suis arriver avec deux variable global

 

si j’appuie sur l’interrupteur j'allume ma lampe et n'autorise pas la détection d mouvement 

et quand j éteindre la lampe, je passe en mode AUTO 

 

mai je c'est pas si il est possible de faire plus simple  et  peut on remplacer une variable global par une variable local 

 

local tempo  = {"Function", function() fibaro:sleep(3000) end}
 ----Mode Interupteur

GEA.add({"Value",  id["PLAFONNIER_CUISINE"], 1}, -1, "Mode interupteur actif", {
{"turnOn", id["PLAFONNIER_CUISINE"]}, 
{"Global", "MODEINTERUP", "1"}, 
{"Global", "MODEDETECTEUR", "0"}})

GEA.add({"Value",  id["PLAFONNIER_CUISINE"], 0}, -1, "Mode interupteur inactif", {
{"turnOff", id["PLAFONNIER_CUISINE"]}, 
{"Global", "MODEINTERUP", "0"}, 
{"Global", "MODEDETECTEUR", "1"}})

----Mode detecteur

GEA.add({{"Value",  id["DETTEC_COUL"], 1}, {"Global", "MODEINTERUP", "0"}, {"Global", "MODEDETECTEUR", "1"}}, -1, "",   {
{"turnOn", id["PLAFONNIER_CUISINE"]}, tempo, {"Global", "MODEINTERUP", "0"}, {"Global", "MODEDETECTEUR", "1"}})

---- AUTO OFF SOUS MODE DETECTEUR

GEA.add({{"Global", "MODEINTERUP", "0"}, {"Global", "MODEDETECTEUR", "1"}}, 30, "",   {{"turnOff", id["PLAFONNIER_CUISINE"]},  {"Repeat"}}

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 21/11/2016 à 14:19, 971jmd a dit :

Hola

 

Se me ocurrieron dos variables globales

 

si presiono el interruptor, enciendo mi lámpara y no permito la detección de movimiento 

y cuando apago la lámpara, cambio al modo AUTO 

 

Puede que no sea más simple y   ¿podemos reemplazar una variable global con una variable local? 

 








 

Bonjour mon cher.
J'essaie juste de développer quelque chose comme ça. Surtout dans la salle de bain.
Je voudrais développer cette scène:
Capteur de mouvement ID: 91
Id Dimmer 74
Ce que je voudrais faire, c'est ceci:
J'entre dans la salle de bain, le capteur de mouvement me détecte, la lumière s'allume, s'il ne détecte pas de mouvement, il s'éteint en 5 minutes. Mais si je veux prendre un bain je clique sur la touche et désactive la scène et la mets en manuel. Je sors de la salle de bain, j'appuie à nouveau sur le bouton poussoir et il revient automatiquement.
Merci beaucoup

Partager ce message


Lien à poster
Partager sur d’autres sites

×