[Tuto] Gestion de lumière avec interrupteur ET détecteur de mouvement

Bonjour à tous !
J’ai vu plein de sujets passer là dessus avec des questions, et des réponses, et plein de choses.
Plutôt que de répondre à chaque sujet, et puisque j’y ai passé beaucoup de temps, je vous indique ma technique pas à pas pour gérer vos lumières sur détecteur de mouvement ET sur interrupteur, sans que les deux n’interfèrent l’un à l’autre.

SI VOUS VOULEZ LE METTRE EN PLACE CHEZ VOUS, JE VOUS CONSEILLE DE PASSER DIRECT À LA DERNIÈRE SECTION QUI EXPLIQUE ÉTAPE PAR ÉTAPE, PLUS SIMPLE ET RAPIDE À METTRE EN PLACE.

C’est parti…

Introduction
Quand j’ai commencé la domotique, je voulais avoir des lumières qui s’allument toutes seules. Sauf que parfois (en cas de présence d’invités, ou quand je zone sur mon canapé sans bouger), je voulais aussi que ça puisse être contrôlé manuellement.
Je vais vous présenter deux approches, similaires certes, mais qui changent un peu. On va faire le V1 et le V2 (j’ai tout mis à jour récemment pour plus de simplicité).

En matériel, c’est compatible avec absolument tout ! Tant que vous avez des ampoules pilotables, des détecteurs de présence, et des interrupteurs.
Pour ma part j’utilise des doubles interrupteurs, vous verrez pourquoi :wink: Mais la V2 fonctionne aussi très bien avec un seul bouton.

Le principe de fonctionnement
En gros je me base sur l’utilisation de virtuels de « mode » (pas au sens Jeedomien du terme) automatique ou manuel, l’utilisation d’un virtuel Jour/Nuit pour l’intensité de la lumière et le petit secret… l’utilisation de Tags lors de mes déclenchements.
En gros, j’ai un scénario de lumière par pièce (c’est possible de faire avec un seul scénario pour toute la maison, j’aborderai ça en fin de tuto), et mes appareils qui selon leur activation déclenchent ce scénario avec plusieurs Tags.

V1 2018
NIVEAU SCENARIO
Donc avant, mes scénarios partaient de l’action souhaitée.
Soit l’action était d’allumer la lumière, soit de l’éteindre, soit le double clic (très spécifique, ça va être vu rapidement).

Donc en premier niveau de scénario, j’avais trois blocs régis par des tags, à savoir #action# = « on », #action# = « off » et #action# = « double ».

Le #action# = « double » me permettait à n’importe quel moment lorsque j’appuie sur les deux boutons de mon interrupteur d’allumer la lumière en blanc à fond. C’est la partie la plus simple.

Le #action# = « on » lui, il vérifie si le scénario a été lancé par un détecteur de mouvement (#trigger# = « detect ») et si on est en mode manuel (Etat du virtuel : Manu). Si c’est le cas, il ne fait rien.
Sinon (soit il a été activé par l’interrupteur, soit il est en Auto), il m’allume la lumière (selon mes modes et selon s’il fait jour ou nuit).
Puis, s’il a été allumé par le détecteur ET qu’on est en Auto, dans 10min s’il n’y a pas eu de mouvement depuis 7min, il éteint. S’il y a eu du mouvement, il relance le scénario d’allumage.

Le #action# = « off » lui il éteint la lumière sans poser de question.
Et j’avais un bout de scénario qui indiquait si le virtuel auto/manu avait été modifié par programmation (genre j’appuie sur l’interrupteur) ou si c’était moi qui l’avais défini depuis mon Dashboard ou mon Design. Je ne me souviens plus exactement ce qu’il faisait, ce dont je me souviens, ce sont les heures de prise de tête à faire fonctionner ça comme je voulais. C’est d’ailleurs ça qui m’a poussé à mettre à jour pour simplifier l’ensemble.

Voici donc à quoi ça ressemblait à peu près en terme de scénario :

NIVEAU MATERIEL
Niveau matériel, ça devenait super simple :

  • Si le détecteur s’activait, il lançait le scénario avec les tags « action=on trigg=detect »
  • Si j’appuyais sur le premier interrupteur, ça lançait le scénario avec les tags « action=on trigg=interr »
  • Si j’appuyais sur le second interrupteur, ça lançait le scénario avec les tags « action=off trigg=interr »
  • Si j’appuyais sur les deux interrupteurs, ça lançait le scénario avec les tags « action=double trigg=interr »

POURQUOI J’AI CHANGE
Cette fin d’année j’ai voulu faire un tout nouveau design (encore en cours de développement) du coup j’en ai profité pour simplifier un peu les choses. Le fait de parois me rendre compte qu’une pièce n’est pas dans le bon mode m’obligeait à revenir à la tablette dans l’entrée. Du coup j’ai modifié ça pour passer à la version d’après.
Egalement, j’avais une formule qui calculait la luminosité et qui gérait l’intensité de l’allumage en fonction.
Dans les faits dans la vie de tous les jours c’est assez peu pratique, du moins dans mon habitat. Je préfère avoir la même intensité à chaque fois. Mais ça je m’en suis rendu compte avec le recul !

V2 2019
NIVEAU SCENARIO
En terme de fonctionnement, j’ai gardé l’appui sur les deux boutons qui allument la lumière à fond.
Le bouton 1 allume ou éteint la lumière.
Le bouton 2 passe du mode manuel à automatique et vice-versa, avec une notification en TTS sur ma Google Home pour me prévenir.

Maintenant je n’ais plus qu’un seul virtuel, beaucoup plus simple à mettre en place.
Si le détecteur active le scénario est qu’on est bien en auto, allume la lumière. Dans 10min, s’il n’y a pas eu de mouvement depuis 7 minutes, éteint. Sinon, relance le scénario (et donc « rallume »).

Si c’est l’interrupteur qui a lancé le scénario, soit la lumière est allumée et donc on l’éteint, soit elle est éteinte et on l’allume, simple et efficace.
Et si on est en automatique, et bien dans 10min on vérifie si quelqu’un est encore dans la pièce.

NIVEAU EQUIPEMENT
Rien ne change, on lance le scénario par activation du matériel (dans l’objet > Commandes > roue crantée sur la commande en question > Configuration > Action sur la valeur) avec comme unique Tag « trigg ».

Avantages et inconvénients de cette nouvelle version
C’est beaucoup plus simple à mettre en place, ça fonctionne tout aussi bien !
Par contre, je dois créer mes commandes d’allumage de lumière deux fois, mais c’est un mini-inconvénient.

Pour aller plus loin
Si on veut faire encore plus efficace, on pourrait n’avoir qu’un seul scénario pour toute la maison.
Pour ma part j’ai préféré les multiplier car je n’ai pas les mêmes timings ni les mêmes couleurs partout.
Par exemple dans la salle de bain, je n’ai pas de fenêtre, et je prend un peu de temps parfois sous la douche sans être devant le détecteur de mouvement, donc je me suis souvent retrouvé dans le noir en pleine douche avec l’obligation d’ouvrir la porte et gigoter ma main ridiculeusement.

Pour n’avoir qu’un scénario, on peut mettre en tag le nom exact de la pièce, et le mettre dans sa commande d’allumage de la lumière. Peu important ni efficace pour moi.

MISE EN PLACE PAS À PAS
1 - On installe ses ampoules, ses interrupteurs, et ses détecteurs de mouvement

2 - On créé des virtuels Auto/Manu pour chaque pièce, voici à quoi doit ressembler la configuration :

3 - On créé un scénario pour chaque pièce, voilà à quoi il va ressembler selon mon explication ci-dessus :

Rafraîchir l’état du mode auto/manu et rafraîchir l’état des décteurs de mouvement
Si mouvement et mode auto

Allumage de la lumière
Dans *min :

Si pas de mouvement depuis *min, on éteint

Sinon, on relance le scénario pour allumer

Si interrupteur

Si lumière éteinte, on allume

Sinon on éteint
Si on est en automatique, dans 10min on vérifie s’il y a eu du mouvement
Sinon, on relance le scénario pour allumer

4 - Dans chaque équipement, dans la commande qui nous intéresse (appui sur un bouton ou mouvement), on va dans les paramètre (petite roue crantée), puis dans Configuration.
Ici, dans « Action sur la valeur » on lance le scénario de la pièce qui nous intéresse avec les tags qui nous intéressent (dans mon image, j’ai bien plus de tags que nécessaire, dans cette V2 seulement le tag « trigg » nous importe) :

5 - On teste et on me dit si ça fonctionne :wink:

Voilà ! Un post ULTRA LONG mais je voulais bien tout détailler.
Si jamais vous avez des questions n’hésitez pas !
Bon geekage à vous !

2 « J'aime »

Salut,

J’ai lu en diagonale j’avoue🙂
Mais je pense qu’il y a moyen de faire plus simple (à moins que j’ai loupé des subtilités sur ce que tu veux obtenir, ce qui est aussi possible car pas évident de rentrer dans un scénario de ce type)

Avant le fond du scénario :

  • utilise plutôt tag(nomDuTag) plutôt que #nomDuTag# qui est l’ancienne notation et qui ne devrait plus fonctionner (je ne sais pas en quelle version tu es)
  • « Action sur la valeur » est aussi à éviter car il pourrait disparaître selon Loïc car lourd à maintenir : il faut mieux déclarer tes 2 déclencheurs (détection de mouvement et appui sur interrupteur) directement dans ton scénario (et plus lisible pour s’y retrouver plus tard quand tu voudras reprendre tes scénarios). Tu testes ensuite la valeur du trigger au lieu de ton tag trigg.

Sinon, à chaud (et en fonction de mes souvenirs quand j’ai codé ce comportement)

  • je pense que tu peux éviter ton test : dans 10 mns, regarder si pas de mvt depuis plus de 8 mns. Pour ma part, pour bien séparer les comportements souhaités (allumer la lumière et l’éteindre), je remplace ce test par l’activation dun 2ème scénario « Extinction lumière » qui éteindra juste la lumière quand nécessaire :
    Ce scénario sera déclenché par « absence de mouvement de plus de X mns ». Si la lumière est allumée, il l’éteint. Ensuite, il se désactive.
    L’intérêt, à part bien séparer les événements, c’est que tu ne gères pas le besoin de rallumer comme tu fais en rappelant le scénario : tu demandes juste à allumer, pas besoin de rallumer régulièrement (ça ne s’éteindra que si nécessaire). Ca évite aussi les temps d’attente pour se rallumer sur mouvement si la lumière vient juste de s’éteindre.
  • Ce qui m’embête, c’est que tu dupliques le même code dans le cas du « detect » et de « interr » : tu peux voir pour créer un scénario 3 pour les actions pour allumer la lumière.

En gros :

  • « scénario 1 » : trigger 1=détection de mouvement, trigger 2=clic sur interrupteur
    – SI mouvement et mode auto
    – - allumage de la lumière
    – - activation du scénario 2
    – SI interrupteur
    – si lumière éteinte, on allume et (si mode AUTO ?) on active le scénario 2
    – sinon on éteint la lumière

  • scénario 2 : trigger = absence de mouvement > X minutes
    – si lumière allumée, on l’éteint
    – désactivation du scénario 2

2 « J'aime »

Super bonnes remarques ! Effectivement il y a des améliorations à y apporter et on peut faire plus simple :slight_smile: je vais mettre à jour les commandes et essayer ça quand j’aurai fini mon design.

L’idée était surtout de présenter le fonctionnement à des personnes qui n’ont pas réussi à s’en sortir (a l’époque j’ai passé deux semaines à arriver à mes fins, si je peux faire gagner du temps à au moins 1 personne j’aurais gagné :partying_face:)

C’est un bon projet à améliorer en tout cas, merci pour tes conseils !!

Hello @noodom !

Suite à ton commentaire, et dans le but d’améliorer ce tuto, j’ai améliorer un scénario pour tester.
Effectivement, j’arrive à quelque chose de BEAUCOUP plus compact !

  • J’ai gardé le « DANS 10min… » pour le moment, l’objectif étant d’avoir un seul scénario pour gérer la lumière dans une pièce.
  • J’ai bien remplacé les tags !
  • Pour l’action sur la valeur, je ne vois pas où elle se trouve ??
  • J’ai réuni les deux fonctions d’allumage qu’on soit en détection ou en interrupteur, en ajoutant un second « SI » qui reprend les paramètres du premier SI mais en y ajoutant la notion de « lumière allumée ou pas »

Ce qui nous donne :

ACTION

Rafraichir le détecteur de mouvement
Rafraichir le statut de lumière auto/manuelle

SI (détecteur ET lumière auto) OU (interrupteur)

SI (détecteur ET lumière auto) OU (interrupteur ET lumière éteinte)

Allume la lumière

SINON
Eteint la lumière

SI mode auto

Dans 10min, vérifie s’il n’y a pas de mouvement depuis 7min si c’est le cas, éteint, sinon relance la boucle

Et en image :
33`

Avant de le poster et de refaire mon tuto en retirant tout le superflu pour être + efficace, j’aimerai ton avis sur cette nouvelle mouture.
Je trouve qu’elle permet de balayer pas mal de fonctionnalités des scénarios de manière condensée et de résoudre un problème que beaucoup de personnes rencontrent lors de leur démarrage sur Jeedom :innocent:

Merci !

1 « J'aime »