Différences entre les versions de « Simulateur de présence »

De GCE Electronics
Aller à la navigation Aller à la recherche
 
(271 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
{{sommaire|niveau=3|flottant=left}}
{{sommaire|niveau=2|flottant=left}}
{{Infobox IPX800
{{Infobox IPX800
| titre = Simulateur de présence
| titre = Simulateur de présence
Ligne 5 : Ligne 5 :
| famille = IPX800 V4
| famille = IPX800 V4
| date-create = 26/03/2018
| date-create = 26/03/2018
| date-update = 26/03/2018
| date-update = 28/03/2018
| auteur = fgtoul
| auteur = fgtoul
}}
}}
Ligne 11 : Ligne 11 :
==Présentation==
==Présentation==


L'IPX800 V4 vous permet d’allumer une lampe ou tout appareil électrique, d'ouvrir ou fermer les stores, tout en étant hors de chez vous. L'IPX800 V4 vous permet également de créer des programmes de façon à allumer et éteindre une lampe à des horaires variables en fonction des jours de la semaine. Si Dans la vie courante, il n'est pas rare de constater que les volets d'une habitation s'ouvrent ou se ferment à heures plus ou moins fixes tout au long de l'année, il est donc tout à fait envisageable de les programmer en fonction de la luminosité extérieure.
L'[[IPX800_V4|IPX800 V4]] vous permet d’allumer manuellement une lampe ou tout appareil électrique, d'ouvrir ou fermer les stores, tout en étant hors de chez vous ou encore automatiquement à des horaires variables en fonction des jours de la semaine.
Cependant, allumer la TV, la radio ou les lampes dans l'habitation ne devraient pas se faire avec des plages horaires, même si elles sont différenciées en fonction des jours de la semaine.
Un observateur constaterait vite que les lundis ressemblent aux lundis, que tous les mardis sont semblables, etc.


Nous avons deux types d'activités à simuler dans la maison.
Dans la vie courante, il n'est pas rare de constater que les volets d'une habitation s'ouvrent ou se ferment à heures plus ou moins fixes tout au long de l'année, il est donc tout à fait envisageable de les programmer en fonction de la luminosité extérieure, donc à des horaires plus ou moins réguliers.  
Les activités liées à nos habitudes ou nos contraintes (départ / retour travail, le journal de 20h00, le radio réveil le matin, etc). Les plages horaires nous aideront à planifier tout cela, mais il est nécessaire d'y ajouter des délais ou retards aléatoires entre les différentes scènes, afin de simuler au mieux une présence dans l'habitation.


1. Bien définir vos habitudes
Au contraire, allumer le téléviseur, le poste de radio ou les lampes dans l'habitation ne devrait pas se faire avec seulement des plages horaires, même si elles sont différenciées en fonction des jours de la semaine. Un observateur constaterait vite que les lundis ressemblent aux lundis, que tous les mardis sont semblables, etc.
Avant de vouloir programmer l'IPX800 V4, il est important de bien définir les besoins en fonction de vos habitudes.
 
Nous avons deux types d'activités à simuler dans la maison :
* Les activités liées à nos habitudes ou nos contraintes (départ / retour travail, le journal Télévisé de 20h00, le radio réveil le matin, etc).
* Le mouvement. Il est possible d'allumer et éteindre des lampes, une radio, dans une pièce puis une autre, à des horaires variés tout au long de la journée et/ou de la soirée.
 
Les plages horaires nous aideront à planifier tout cela, mais il est nécessaire d'y ajouter des délais ou retards aléatoires entre les différentes scènes, afin de simuler au mieux une présence dans l'habitation. Nous allons voir plusieurs méthodes pour randomiser<sup>(a)</sup> les horaires de simulation.
 
(a) '': Randomiser : (de l'anglais random, signifiant hasard) Ajouter un élément aléatoire dans un calcul ou un raisonnement.''
 
==Bien définir vos besoins==
Avant de vouloir programmer l'[[IPX800_V4|IPX800 V4]], il est important de bien définir les besoins en fonction de vos habitudes.
A partir de là, vous pourrez définir les plages horaires qui serviront de base à vos programmes, ainsi que les activités à simuler pour être le plus réaliste possible.
A partir de là, vous pourrez définir les plages horaires qui serviront de base à vos programmes, ainsi que les activités à simuler pour être le plus réaliste possible.
Il est clair que si vous n'ouvrez pas les volets du salon, il est totalement inutile de programmer des effets d'ombres et de lumières dans cette pièce. Par contre, il sera plus judicieux d'y allumer une radio ou d'activer des effets sonores (discussion, aboiements, ...). Si les toilettes ont "fenêtre sur cour", La lumière pourra être allumée et éteinte à des heures totalement aléatoires (n'en abusez pas, il faut rester réaliste, ;).
Il est clair que si vous n'ouvrez pas les volets du salon, il est totalement inutile de programmer des effets d'ombres et de lumières dans cette pièce. Par contre, il sera plus judicieux d'y allumer un poste de radio ou d'activer des effets sonores (voix , aboiements, claquements, ...).<br>
-------------------------------------------------------------
Si les toilettes ont "fenêtre sur cour", la lumière pourra être allumée et éteinte à des heures totalement aléatoires (n'en abusez pas, il faut rester réaliste <span style="font-size:150%">😉</span>).
2. Les outils à votre disposition.
 
==Les outils à votre disposition==
L'IPX800 V4 offre quelques outils pour la gestion du temps.
L'IPX800 V4 offre quelques outils pour la gestion du temps.
* les plages horaires, répétitives ou pas.  
* les [[IPX800_V4#Plages_Horaires|plages horaires]], répétitives ou pas.  
* les sorties virtuelles avec leurs précieux paramètres Ta et Tb
* les [[IPX800_V4#Sorties_Virtuelles|sorties virtuelles]] avec leurs précieux paramètres Ta et Tb
* les compteurs, pouvant être utilisés pour créer des chronomètres ou comptes à rebours.
* les [[IPX800_V4#Compteurs|compteurs]], pouvant être utilisés pour créer des chronomètres ou comptes à rebours.
-------------------------------------------------------------
 
3. Les plages horaires
Tout au long de ce tutoriel, nous utiliserons une sortie virtuelle nommée "''Simulateur''".<br>
Vous pourrez gérer cette sortie à partir de l'interface web de l'[[IPX800_V4|IPX800 V4]] ou par push, scénario, etc.<br>
Cette sortie Virtuelle sera supposée à l'état ON lorsque vous souhaitez le fonctionnement du Simulateur, et OFF lorsque vous souhaitez le désactiver.
 
 
=='''Méthode 1 :''' La planification simple ==
Efficience de la randomisation :  <span style="font-size:110%;color:green;">★☆☆☆☆</span> Difficulté de mise en oeuvre : <span style="font-size:110%;color:green;">★☆☆☆☆</span> Utilisation des ressources : <span style="font-size:110%;color:green;">★☆☆☆☆</span>
 
===Fonctionnement ===
 
Vous pouvez définir vos horaires en fonction des jours de la semaine, matin, midi, soir en fonction de vos habitudes.
Vous pouvez définir vos horaires en fonction des jours de la semaine, matin, midi, soir en fonction de vos habitudes.
Par exemple, les jours de la semaine, vous ouvrez les volets vers 6h30, passez à la salle de bain, puis prenez le petit déjeuner dans la cuisine avant de partir au travail.
Par exemple, les jours de la semaine, vous ouvrez les volets vers 6h30, passez à la salle de bain, puis prenez le petit déjeuner dans la cuisine avant de partir au travail.
Vous pourriez alors facilement créer une plage horaire à 6h30 du lundi au vendredi, des plages horaires plus tardives pour le Week-end et enchaîner les différentes activités.
 
Vous pourriez alors facilement créer une plage horaire répétée à 6h30 du lundi au vendredi, des plages horaires plus tardives pour le Week-end et enchaîner les différentes activités.
 
Mais cela serait trop répétitif, trop régulier, les éventuels observateurs décèleraient très vite la présence d'un automate.
Mais cela serait trop répétitif, trop régulier, les éventuels observateurs décèleraient très vite la présence d'un automate.
Il convient donc de semer un peu le chaos. Il est donc préférable de créer une plage différente chaque jour (7 plages) pour le lever et les activités du soir, en les décalant de quelques minutes à chaque fois.
 
exemples : Lundi : 6h31 - 18h15 / Mardi : 6h42 - 17:58/ Mercredi : 6h33 - 18:06 / Jeudi : 6h39 - 18:12/ Vendredi : 6h36 - 17:31 / Samedi : 7h25 - 18:35 / Dimanche : 8h32 - 18:45
Il convient donc de semer un peu le chaos. Il est donc préférable de créer une plage différente chaque jour (7 plages) pour le lever et les activités du soir, en les décalant arbitrairement de quelques minutes à chaque fois.
Si vous devez simuler une activité en milieu de journée, prevoyez également plusieurs plages horaires.
 
------------------------------------------------------------
'''Exemple :'''
4. Méthode 1 : Le chaos avec les sorties virtuelles
:{|
L'IPX800 V4 permet de faire "clignoter" les sorties virtuelles, grâce à leurs paramètres Ta et Tb.
|-
|&#8226; Lundi :  
|6h31 - 18h15
|-
|&#8226; Mardi :  
|6h42 - 17:58
|-
|&#8226; Mercredi :  
|6h33 - 18:06
|-
|&#8226; Jeudi :  
|6h39 - 18:12
|-
|&#8226; Vendredi :  
|6h36 - 17:31
|-
|&#8226; Samedi :  
|7h25 - 18:35
|-
|&#8226; Dimanche :
|8h32 - 18:45
|}
 
Si vous devez simuler une activité en milieu de journée, prevoyez également plusieurs plages horaires supplémentaires.
 
===Programmation===
 
Pour déclencher vos activités en fonction de vos plages horaires, vous devez ajouter des scenarii.
 
Par exemple :
 
Evènement : PlageHoraireLundi [ET] Simulateur
Action : [ON/OFF]
Résultat : Activité du lundi
Evènement : PlageHoraireMardi [ET] Simulateur
Action : [ON/OFF]
Résultat : Activité du mardi
 
===inconvénients de la méthode===
Les semaines se suivent et se ressemblent. Je vous ai présenté cette méthode simple pour la compréhesion du tutoriel, mais je ne conseille pas son utilisation telle quelle.
 
=='''Méthode 2 :''' Forte randomisation avec les sorties virtuelles==
Efficience de la randomisation : <span style="font-size:110%;color:green;">★★★★☆</span> Difficulté de mise en oeuvre : <span style="font-size:110%;color:green;">★★☆☆☆</span>  Utilisation des ressources : <span style="font-size:110%;color:green;">★★☆☆☆</span>
 
===Principe===
Nous allons reprendre la programmation par plages horaires, décrite en méthode 1, mais nous renforcerons la randomisation des horaires grâce à des sorties virtuelles.
 
===Fonctionnement===
L'IPX800 V4 permet de faire "clignoter" les sorties virtuelles. Grâce à leurs paramètres Ta et Tb, nous pourrons créer une alternance d'état ON et OFF à intervalles réguliers.
 
Selon les paramètres de votre IPX800 V4, ces temporisations sont exprimées en dixièmes de secondes, ou en secondes (par défaut).
Selon les paramètres de votre IPX800 V4, ces temporisations sont exprimées en dixièmes de secondes, ou en secondes (par défaut).
Pour ce tutoriel, nous nous exprimerons en secondes, il vous suffira de multiplier les valeurs par 10 si nécessaire.
Pour ce tutoriel, nous nous exprimerons en secondes, il vous suffira de multiplier les valeurs par 10 si nécessaire.
Ta et Tb acceptent 13743 comme valeur maximale, ce qui représente 13743 secondes (soit 3h49 environ) ou 13743 dixièmes de secondes (soit environ 23 minutes) selon vos paramètres.
 
Ta et Tb acceptent le nombre 13743 comme valeur maximale, ce qui représente 13743 secondes (soit 3h49 environ) ou 13743 dixièmes de secondes (soit environ 23 minutes) selon votre configuration.
 
Dans un cas comme dans l'autre, c'est amplement suffisant pour nos besoins qui se limiteront à quelques minutes.
Dans un cas comme dans l'autre, c'est amplement suffisant pour nos besoins qui se limiteront à quelques minutes.


Nous allons faire clignoter nos sorties virtuelles en utilisant des valeurs qui ne sont
Nous allons faire clignoter nos sorties virtuelles en utilisant des valeurs qui ne sont
* ni des sous-multiples de soixante
* ni des sous-multiples de soixante
* ni des sous-multiples l'un de l'autre
* ni des sous-multiples l'un de l'autre
ceci afin d'éviter que nos sorties virtuelles ne se mettent à clignoter trop souvent à l'unisson après leur activation.
ceci afin d'éviter que nos sorties virtuelles ne se mettent à clignoter trop souvent à l'unisson après leur activation.
Pour ma part, je choisis de sélectionner mes valeurs parmi les nombres premiers (7, 11, 13, 17, 19, 23, ...). Vous remarquerez que je n'utiliserai pas les valeurs 2, 3, 5,..  puisque ce sont des nombres diviseurs de soixante.
 
Le nombre de sorties virtuelles à utiliser dépendra du nombre d'activités à simuler. Il en faudra tout de même deux au minimum.
Pour ma part, je décide de sélectionner mes valeurs parmi les nombres premiers (7, 11, 13, 17, 19, 23, ...). Vous remarquerez que je n'utiliserai pas les valeurs 2, 3, 5,..  puisque ce sont des [https://fr.wikipedia.org/wiki/Table_des_diviseurs nombres diviseurs de soixante].
 
Le nombre de sorties virtuelles à utiliser dépendra du nombre d'activités à simuler. Nous en utiliserons 2.
 
Soit  
Soit  
* SV1 la première sortie virtuelle avec Ta=17*60, Tb=17*60
* SV1 la première sortie virtuelle avec Ta=1020, Tb=1020<sup> (1)</sup>
* SV2 la seconde sortie virtuelle avec Ta=23*60, Tb=23*60
* SV2 la seconde sortie virtuelle avec Ta=1380, Tb=1380<sup> (2)</sup>
 
Notes :
(1) 1020 secondes = 17 * 60 soit 17 minutes
(2) 1380 secondes = 23 * 60 soit 23 minutes
 
Les 2 figures ci-dessous montrent comment les activités 1 et 2 peuvent être retardées de manière aléatoire en fonction de la plage horaire, de l'heure de démarrage de l'IPX800 et de l'état des sorties virtuelles SV1 et SV2. Retardons l'activité 1 selon l'état de SV1 et l'activité 2 selon l'état de SV2.
 
* '''Figure 1 :'''
 
[[Fichier:RandomSV1.png]]
 
''Au moment de la demande de lancement des activités, SV1 est OFF.<br> Pendant un délai T1, l'activité 1 est mise en attente du passage à l'état ON de SV1. Elle subit donc un retard T1.<br>L'activité 2 est exécutée immédiatement puisque SV2 est déjà ON.''
 
* '''Figure 2 :'''
 
[[Fichier:RandomSV3.png]]
 
''Au moment de la demande de lancement des activités, SV1 et SV2 sont OFF.<br>Pendant un délai T, l'activité 1 est mise en attente du passage à l'état ON de SV1.<br>L'activité 2 est mise en attente du passage à l'état ON de SV2 pendant un délai T2.''
 
====La périodicité====
 
Mesurons l'efficience de notre randomisation en déterminant la périodicité de nos sorties virtuelles sur une journée de 24h (1440 minutes).
 
Nous ferons nos calculs à l'aide du "Plus Grand Commun Diviseur" et du "Plus Petit Commun Multiple" [https://fr.wikipedia.org/wiki/Plus_petit_commun_multiple (PGCD et PPCM)].
 
'''Périodicité de SV1 :'''<br>
Nous avons choisi Ta=17 minutes et Tb=17 minutes, soit une durée totale de 34 minutes.<br>
PGCD(34,1440)=2<br>
PPCM(34,1440)=(34 * 1440) / PGCD = 24480<br>
Une activité conditionnée sur SV1 se reproduit donc à la même heure (mais pas le même jour de la semaine) toutes les 24480 minutes soit 17 jours.<br>
Pour qu'une activité planifiée le mardi, par exemple, se reproduise à la même heure un mardi, il faudra attendre PPCM(17,7)=119 jours<br>
=> Pendant 119 jours (17 semaines), nos semaines ne se ressemblent pas.
 
'''Périodicité de SV2 :'''<br>
Nous avons choisi Ta=23 minutes et Tb=23 minutes, soit une durée totale de 46 minutes.<br>
PGCD(46,1440)=2<br>
PPCM(46,1440)=(46 * 1440) / PGCD = 33120<br>
Une activité conditionnée sur SV2 se reproduit donc à la même heure (mais pas le même jour de la semaine) tous les 23 jours.<br>
Pour qu'une activité planifiée le jeudi, par exemple, se reproduise à la même heure un jeudi, il faudra attendre  PPCM(23,7)=161 jours.<br>
=> Pendant 161 jours (23 semaines), nos semaines ne se ressemblent pas.
 
'''Périodicité du système SV1 ET SV2 :'''<br>
Pour calculer la périodicité d'un système composé de nos 2 sorties virtuelles, voyons d'abord combien il leur faut de temps pour se resynchroniser mutuellement (dans le cas où nous conditionnons des activités en fonction de SV1 ET SV2)<br>
PGCD (17,23) = 1<br>
PPCM (17,23) = 17 * 23 = 391<br>
Recherchons la périodicité de notre ensemble de sorties virtuelles :<br>
PGCD(391,1440)=1<br>
PPCM(391,1440)=391 × 1440 soit 563040 minutes, soit 391 jours.<br>
Il faudra donc attendre plus d'un an pour que notre activité conditionnée par les 2 sorties virtuelles se reproduise rigoureusement à la même heure (mais pas forcément le même jour de la semaine). Il faudra près de 7 ans et demi pour que notre activité se reproduise à la même heure, le même jour de la semaine.<br>
 
Nous voyons qu'avec seulement 2 sorties virtuelles, nous avons la possibilité de créer une randomisation extrêmement efficiente.
 
Une activité conditionnée sur SV1 subira des retards aléatoires allant de 0 à 17 minutes.
 
Une activité conditionnée sur SV2 subira des retards aléatoires allant de 0 à 23 minutes.
 
Une activité conditionnée sur SV1 ET SV2 subira des ratards allant jusqu'à 51 minutes.
 
===Programmation===
====Ce qu'il faut savoir avant de continuer====


Avec l'application des retards, voici ce qu'il faut retenir avant de continuer :
:* une tâche programmée pour s'exécuter au début d'une plage horaire, sera exécutée avec un certain retard.<br>La durée de la plage horaire devra être supérieure au retard maximal.


[IMAGE SORTIES VIRTUELLES]
:::[[Fichier:Simul_retard1b.PNG|700px]]


Nous allons maintenant créer les scènes qui permettront l'activation de nos sorties virtuelles
:* une tâche censée prendre fin au bout d'une plage horaire, sera certainement prolongée au delà pendant un temps variable.


Evènement : NON SV1
:::[[Fichier:Simul_retard2c.PNG|700px]]
Action : ON
Résultat : SV1


Evènement : NON SV2
:* une tâche, censée démarrer à la fin de la plage horaire, sera probablement exécutée plus tard.<br>
Action : ON
Résultat : SV2


Dès le démarrage de l'IPX800 V4, nos 2 sorties virtuelles seront activées et clignoteront 24/24
:::[[Fichier:Simul_retard3c.PNG|700px]]
Chaque jour, A la même heure, l'état de ces 2 sorties virtuelles sera différent, car nous avons bien pris soin de ne pas choisir des paramètres diviseurs de 60. Nous commençons à entrevoir les effets aléatoires.


====Activation des sorties virtuelles clignotantes====


Maintenant programmez votre simulateur de présence :
Nous allons créer les scènes qui permettront l'activation de nos sorties virtuelles


pour chaque activité planifiée par plage horaire, ajoutez une scène
Evènement : [NON] SV1
Action : [ON]
Résultat : SV1
Evènement : [NON] SV2
Action : [ON]
Résultat : SV2
 
Dès la création des scènes et à chaque redémarrage de l'IPX800 V4, nos 2 sorties virtuelles seront immédiatement activées et clignoteront 24/24. <br>Chaque jour, à la même heure, l'état de ces 2 sorties virtuelles sera différent, car nous avons bien pris soin de ne pas choisir des [https://fr.wikipedia.org/wiki/Table_des_diviseurs nombres diviseurs] de 60 (1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60).


Exemple 1 : Simulation matinale pour le lundi :
====Lancement des tâches programmées====
Evènement : PlageHoraireLundi ET SV1
Action : ON
Résultat : Activité 1 (ce que vous voulez)


Evènement : PlageHoraireLundi ET SV2
Action : ON
Résultat : Activité 2 (ce que vous voulez)


Evènement : PlageHoraireLundi ET NON SV2
pour chaque activité planifiée par plage horaire, ajoutez une scène
Action : ON
Résultat : Activité 3 (ce que vous voulez)


Exemple 2 : Simulation vespérale du lundi:
'''Exemple 1 : des tâches doivent s'exécuter en début de plage horaire.'''<br>
Evènement : NON PlageHoraireLundi ET SV1
La plage horaire doit avoir une durée supérieure aux retard maximal.
Action : ON
Résultat : Activité 4 (ce que vous voulez)


Evènement : NON PlageHoraireLundi ET SV2
Evènement : PlageHoraireLundi [ET] SV1 [ET] Simulateur
Action : ON
Action : [ON]
Résultat : Activité 5 (ce que vous voulez)
Résultat : Activité 1 (ce que vous voulez)
Evènement : PlageHoraireLundi [ET] SV2 [ET] Simulateur
Action : [ON]
Résultat : Activité 2 (ce que vous voulez)
Evènement : PlageHoraireLundi [ET] [NON] SV2 [ET] Simulateur
Action : [ON]
Résultat : Activité 3 (ce que vous voulez)
Ici nous déduisons que PlageHoraireLundi doit avoir une durée supérieure à 46 minutes.<br>En effet, la clause [NON] SV2 dans la troisième scène induit le fait que le retard peut être égal à Ta<sub>SV2</sub> + Tb<sub>SV2</sub>


Evènement : NON PlageHoraireLundi ET NON SV1
'''Exemple 2 : des tâches doivent prendre fin au bout de la plage horaire.'''
Action : ON
Résultat : Activité 6 (ce que vous voulez)


Evènement : [NON] PlageHoraireLundi [ET] SV1 [ET] Simulateur
Action : [OFF]
Résultat : Activité 1 (ce que vous voulez)
Evènement : [NON] PlageHoraireLundi [ET] SV2 [ET] Simulateur
Action : [OFF]
Résultat : Activité 2 (ce que vous voulez)
Evènement : [NON] PlageHoraireLundi [ET] [NON] SV1 [ET] Simulateur
Action : [OFF]
Résultat : Activité 3 (ce que vous voulez)


Vous l'aurez compris, vous pouvez combiner ainsi autant de sorties virtuelles et de plages horaires que vous voulez.
'''Exemple 3 : des tâches doivent démarrer au bout de la plage horaire.'''


Il est à noter que si vous démarrez une simulation en fonction de l'état d'une sortie virtuelle, évitez d'y mettre fin en fonction de l'état de la même sortie.
'''démarrage d'une activité en fonction de SV1'''
Cela aura un effet de durée aléatoire de l'activité.
    Evènement : [NON] PlageHoraireLundi [ET] SV1 [ET] Simulateur
    Action : [ON]
    Résultat : Activité 1 (ce que vous voulez)
'''démarrage d'une activité en fonction de SV2'''
    Evènement : [NON] PlageHoraireLundi [ET] SV2 [ET] Simulateur
    Action : [ON]
    Résultat : Activité 2 (ce que vous voulez)
'''démarrage d'une activité en fonction du système SV1 ET SV2'''
    Evènement : [NON] PlageHoraireLundi [ET] SV1 [ET] SV2 [ET] Simulateur
    Action : [ON]
    Résultat : Activité 3 (ce que vous voulez)
Pour mettre fin à ces tâches, vous pouvez utiliser une autre plage horaire, une temporisation ou un évènement.


Exemple :
Evènement : PlageHoraireLundi ET SV1
Action : ON
Résultat : Ouverture Stores


Evènement : NON PlageHoraireLundi ET NON SV2
Vous l'aurez compris, vous pouvez combiner ainsi autant de sorties virtuelles et de plages horaires que vous voulez, tout dépend de la complexité de vos besoins.
Action : ON
Résultat : fermeture stores


Si vous avez paramétré des plages pour des activités annexes durant la journée, procédez de la même façon.
Si vous avez paramétré des plages pour des activités annexes durant la journée, procédez de la même façon.
Notez que vous pouvez encore augmenter les irrégularités en démarrant une activité en fonction d'une sortie virtuelle, puis en y mettant fin en fonction d'une autre .


  Exemple : la radio le matin dans la salle de bain
  Exemple : la radio le matin dans la salle de bain
    
    
  Evènement : PlageHoraireRadio ET SV1
  Evènement : PlageHoraireRadio [ET] SV1 [ET] Simulateur
  Action : ON
  Action : [ON]
  Résultat : Radio SDB
  Résultat : Radio SDB
   
   
  Evènement : NON PlageHoraireRadio ET NON SV2
  Evènement : [NON] PlageHoraireRadio [ET] [NON] SV2 [ET] Simulateur
  Action : OFF
  Action : [OFF]
  Résultat : Radio SDB
  Résultat : Radio SDB


===Inconvénients de la méthode===
Si l'[[IPX800_V4|IPX800 V4]] est redémarrée chaque jour de manière programmée, les sorties virtuelles seront réinitialisées également.
Les journées se ressembleront


=='''Méthode 3 :''' Randomisation modérée avec un compteur==
Efficience de la randomisation :  <span style="font-size:110%;color:green;">★★★☆☆</span>
Difficulté de mise en oeuvre :  <span style="font-size:110%;color:green;">★★★☆☆</span> Utilisation des ressources :  <span style="font-size:110%;color:green;">★★★☆☆</span><br>


===Principe===
Précédemment, nous avons vu comment faire clignoter 2 sorties virtuelles afin d'obtenir des états ON ou OFF de manière aléatoire en fonction de nos plages horaires.
Vous comprendrez facilement que ce principe n'est valable que si l'IPX800 n'est pas redémarrée quotidiennement à heure fixe, de manière programmée.
Dans ce cas, nos sorties virtuelles seraient toujours activées à la même heure, et présenteraient toujours le même état au moment du besoin (selon plages horaires).
Ainsi, les sorties virtuelles perdraient toute leur efficacité dans la randomisation de nos horaires.<br>
Nous allons utiliser un [[IPX800_V4#Compteurs|compteur]]. Nous l'incrémenterons 1 fois par jour grâce à une plage horaire, et lui fixerons une valeur maximale. Il sera donc régulièrement remis à 1 à chaque fois qu'il atteindra ce maximum.
Au démarrage de chaque activité par notre simulateur, nous ajouterons un retard à nos horaires planifiés, en fonction de la valeur de ce [[IPX800_V4#Compteurs|compteur]].
Pour ce faire, nous utiliserons le principe du compte à rebours variable proposé par @Teebex.<br>
Vous pourrez en retrouver le principe [http://gce-electronics.com/wiki/index.php?title=Compte_%C3%A0_rebours_variable ici]
===Fonctionnement===
====La valeur maximale====
En fonction de la valeur maximale choisie pour le [[IPX800_V4#Compteurs|compteur]], nous allons obtenir des cycles différents, mais au bout d'un certain nombre de jours, le cycle redémarre.
En effet, imaginons que la toute première fois, notre compteur est incrémenté un mardi et que la valeur maximale est 4.
nous obtiendrions le tableau de valeurs suivant
{| class="wikitable"
!Semaine
!Jour
!
!Index
|-
|semaine 1
|J1
| style="color:red;font-weight:bold;"|Mardi
| style="color:red;font-weight:bold;"|1
|-
|semaine 1
|J2
|Mercredi
|2
|-
|semaine 1
|J3
|Jeudi
|3
|-
|semaine 1
|J4
|Vendredi
|4
|-
|semaine 1
|J5
|Samedi
|1
|-
|semaine 1
|J6
|Dimanche
|2
|-
|semaine 1
|J7
|Lundi
|3
|-
|semaine 2
|J1
|Mardi
|4
|-
|...
|...
|...
|...
|-
|semaine 5
|J1
| style="color:red;font-weight:bold;"|Mardi
| style="color:red;font-weight:bold;"|1
|}
La cinquième semaine, nous retrouverions un index 1 pour le mardi. Le cycle recommencerait donc comme au premier jour et nous appliquerions donc les mêmes retards à notre simulateur de présence.
====Exemples de cycles en fonction de la valeur maximale====
Illustrons le cycle des réinitialisations de notre compteur en fonction de sa valeur maximale afin d'en déterminer la périodicité, sur des périodes glissantes de 7 jours que nous appellerons "semaines"
''soit x la valeur maximale attribuée au compteur''
'''1er cas, x < 7'''
* Si nous choisissons de réinitialiser notre compteur tous les 2 jours, le plus petit commun multiple PPCM (7;2)= 14.<br>Si la première réinitialisation a lieu un Mardi, il ne faudra attendre que la troisième semaine pour qu'une réinitialisation du compteur retombe un mardi, cela revient à dire qu'il faudra donc attendre 14 jours pour qu'un même délai soit appliqué le même jour de la semaine.
[[Fichier:PGCM7-2p.PNG]]


-------------------------------------------------------------
4. Méthode 2 : Un plus grand chaos.
Précédemment, nous avons vu comment faire clignoter 2 sorties virtuelles afin d'obtenir des états ON ou OFF de manière aléatoire en fonction de nos plages horaires.
Vous aurez vite compris que ce principe n'est valable qu'à la condition que l'IPX800 ne soit pas redémarrée quotidiennement à heure fixe, de manière programmée.
Dans ce cas, nos sorties virtuelles seraient toujours activées à la même heure, et présenteraient toujours le même état au moment où nous avons programmé nos plages horaires.
Ainsi, les sorties virtuelles perdent toute leur efficacité dans la randomisation de nos horaires.
Nous allons donc instaurer un autre principe pour établir le chaos.


* Si nous choisissons de réinitialiser notre compteur tous les 3 jours, le plus petit commun multiple PPCM(7;3)= 21, soit 3 semaines.<br>Si la première réinitialisation a lieu un Mercredi, il ne faudra attendre que 3 semaines pour qu'une réinitialisation du compteur retombe un mercredi, cela revient à dire qu'il faudra donc attendre 3 semaines pour qu'un même délai soit appliqué le même jour de la semaine.


Nous allons utiliser un compteur. Nous l'incrémenterons 1 fois par jour et lui fixerons une valeur maximale. Il sera donc régulièrement remis à 1.
[[Fichier:PGCM7-3p.PNG]]
En fonction de la valeur de ce compteur, nous ajouterons un certain retard à nos simulations. Nous utiliserons le principe du compte à rebours proposé par @Teebex, que vous pouvez retrouver ici
(lien WIKI)


Une semaine compte 7 jours. Si nous réinitialisons notre compteur au bout de x jours, il faudra x semaines pour que le cycle recommence à l'identique (si x<7).
'''2ème cas : x = 7'''
Exemples :
* Si nous choisissons de réinitialiser notre compteur tous les 7 jours, toutes les semaines se ressembleront. Notre compteur aura toujours la même valeur les lundis, une autre valeur tous les mardis, et ainsi de suite.<br>
* Si nous choisissons de réinitialiser notre compteur tous les 2 jours, le plus petit commun multiple (PPCM)  de 7 et 2, c'est 14. Si la première réinitialisation a lieu un Mardi, il ne faudra attendre que 2 semaines pour qu'une réinitialisation du compteur retombe un mardi.
Les délais liés au compteur, fixés par scénario, seront donc identiques chaque semaine. C'est donc une valeur à éviter.


* Si nous choisissons de réinitialiser notre compteur tous les 3 jours, le plus petit commun multiple (PPCM)  de 7 et 3, c'est 21, soit 3 semaines. Si la première réinitialisation a lieu un Mercredi, il ne faudra attendre que 3 semaines pour qu'une réinitialisation du compteur retombe un mercredi.
[[Fichier:PGCM7-7p.PNG]]


Au lieu de fixer la valeur maximale de notre compteur avec un nombre inférieur à 7, essayons avec des nombres plus grands :
'''3ème cas : x > 7'''
Choisissons la valeur 8. Le PGCM de 7 et de 8, c'est 56. Il faudra donc 56 jours pour qu'un même délai soit appliqué le même jour de la semaine.
* Exemple avec la valeur 8. Le PPCM(7;8) = 56. Il faudra donc attendre 56 jours pour qu'un même délai soit appliqué le même jour de la semaine.
* Exemple avec la valeur 10. Le PPCM(7;10) = 70. Il faudra donc attendre 70 jours pour qu'un même délai soit appliqué le même jour de la semaine.


===Programmation===


====Gestion du compteur journalier====
Créons d'abord une plage horaire se répétant quotidiennement, à un horaire quelconque, d'une durée de 30 minutes environ.
Créons d'abord une plage horaire se répétant quotidiennement, à un horaire quelconque, d'une durée de 30 minutes environ.
[Image plage horaire]


Afin d'allonger la période du cycle, nous n'allons pas réinitialiser notre compteur à heure fixe. Nous allons donc combiner notre plage horaire à l'état de l'une de nos 2 sorties virtuelles créées précédemment et glignotant H24
Afin de rendre notre randomisation plus efficace et d'allonger la période du cycle, nous n'allons pas réinitialiser notre compteur journalier à heure fixe.<br>
Nommons CPTJ notre compteur, PlageHoraireJ notre plage horaire et écrivons 2 scènes :
Nous combinerons notre plage horaire à l'état de l'une de nos 2 sorties virtuelles créées précédemment et clignotant H24 (SV1 ou SV2)


scène 1 :
Nommons CPTJ notre compteur journalier, PlageHoraireJ notre plage horaire quotidienne et écrivons 2 scènes :
Evènement : PlageHoraireJ ET SV1
Action : ON
Résultat : CPTJ (Incrémentation valeur=1)


scène 2 :
Evènement : PlageHoraireJ [ET] SV1
Evènement : CPTJ (valeur=6)
Action : [ON]
Action : ON
Résultat : CPTJ (Incrémentation valeur=1)
Résultat : CPTJ (SET valeur=1)
Evènement : CPTJ (valeur=7)
Action : [ON]
Résultat : CPTJ (SET valeur=1)
''* En scène 1, malgré l'utilisation d'une plage horaire, nous voyons que notre compteur est incrémenté à heure différente chaque jour (car dépend de l'état de SV1. Il y a donc une temporisation variable de 0 à 17 minutes). Si PlageHoraireJ est en milieu de journée, vous pourrez alors appliquer des temporisations différentes en première et seconde partie de journée.
* Dans la scène 2, vous remarquerez qu'aussitôt passé à la valeur 7, CPTJ est réinitialisé à 1. Ses valeurs sont donc comprises dans l'intervalle fermé [1;6]
  ''


Nous voyons que notre compteur est incrémenté à heure différente chaque jour (car dépend de l'état de SV1. Il y a donc une temporisation variable de 0 à 17 minutes)
==== Gestion des plages horaires d'activités====
 
Pour simuler une activité en fonction des plages horaires programmées, nous allons devoir écrire des scenarii avec lesdites plages en évènement.
Vu que ces plages horaires peuvent être nombreuses, l'écriture des scènes peut s'avérer légèrement ardue.
Pour simplifier l'écriture des scènes et en faciliter la compréhension, nous utiliserons 2 sorties virtuelles avec Ta=0 et Tb=0. Elles seront nommées ActiviteSemaine et ActiviteWE. Elles permettront de créer une condition simple en fonction de l'état des nombreuses plages horaires.
 
Evènement : PlageHoraireLundi [OU] PlageHoraireMardi [OU] PlageHoraireMerc [OU] PlageHoraireJeudi [OU] PlageHoraireVend
Action : [ON/OFF]
Resultat : ActiviteSemaine
Evènement : PlageHoraireSamedi [OU] PlageHoraireDimanche [OU] PlageHoraireSamediMidi [OU] PlageHoraireDimancheMidi
Action : [ON/OFF]
Resultat : ActiviteWE
 
====Mise en place du compte à rebours variable====


Nous allons utiliser un autre compteur pour le compte à rebours (C2) et une sortie virtuelle VO31 (vérifie que l'incrémentation ne se produit qu'une fois)
Nous allons utiliser un autre compteur pour le compte à rebours (C2) et une sortie virtuelle VO31 (vérifie que l'incrémentation ne se produit qu'une fois)
Ligne 182 : Ligne 454 :
Voici les scènes :
Voici les scènes :
Dès que C2 est supérieur ou égal à 1, le décompte se fait minute après minute.
Dès que C2 est supérieur ou égal à 1, le décompte se fait minute après minute.
Pour démarrer / arrêter le compte à rebours :


                Evènement : C2 (Valeur >= 1)
Pour démarrer / arrêter le compte à rebours :
                Action : [On/Off]
                Résultat : VO20
Evènement : C2 (Valeur >= 1)
Action : [ON/OFF]
Evènement : NON C2 (Valeur >= 1)
Résultat : VO20
                Action : [Off]
                Résultat : VO31
Evènement : [NON] C2 (Valeur >= 1)
Action : [OFF]
Résultat : VO31
 
Pour égrainer les minutes :
Evènement :[NON] VO10 [ET] VO20
Action :[ON]
Résultat : C2 (Décrémentation 1) ; VO10
 
====Application des délais liés à la valeur du compteur====


            Pour égrainer les minutes :
Initialisons le compte à rebours variable en fonction de notre compteur CPTJ si une activité doit démarrer.
En fonction de l'index, nous ajouterons un délai de 4, 12, 6, 8 ou encore 5 minutes à nos plages Horaires.


                Evènement :[NON] VO10 [ET] VO20
Remarque :
                Action :[On]
Plus la valeur maximale choisie sera grande, plus il faudra écrire de scènes pour sa gestion. C'est pourquoi pour notre tutoriel, nous avons choisi le nombre 6 comme valeur maximale, ce qui donne une périodicité de 6 semaines.
                Résultat : C2 (Décrémentation 1) ; VO10
[[Fichier:PGCM7-6p.PNG]]
 


Nous utiliserons également 2 autres sorties virtuelles avec Ta=0, Tb=0. Elles seront nommées ActiviteSemaine et ActiviteWE
Elles permettront la simplification des scènes en créant une condition simple en fonction de l'état des plages horaires.
Evènement : ActiviteSemaine [OU] ActiviteWE [ET] CPTJ (Valeur >= 5) [ET] [NON] VO31 [ET] Simulateur
Action : [ON]
Résultat : C2 (Incrémentation 4) ; VO31
Evènement : ActiviteSemaine [OU] ActiviteWE [ET] CPTJ (Valeur >= 4) [ET] [NON] VO31 [ET] Simulateur
Action : [ON]
Résultat : C2 (Incrémentation 12) ; VO31
 
Evènement : ActiviteSemaine [OU] ActiviteWE [ET] CPTJ (Valeur >= 3) [ET] [NON] VO31 [ET] Simulateur
Action : [ON]
Résultat : C2 (Incrémentation 6) ; VO31
Evènement : ActiviteSemaine [OU] ActiviteWE [ET] CPTJ (Valeur >= 2) [ET] [NON] VO31 [ET] Simulateur
Action : [ON]
  Résultat : C2 (Incrémentation 8) ; VO31
Evènement : ActiviteSemaine [OU] ActiviteWE [ET] CPTJ (Valeur >= 1) [ET] [NON] VO31 [ET] Simulateur
Action : [ON]
Résultat : C2 (Incrémentation 5) ; VO31


Evènement : PlageHoraireLundi OU PlageHoraireMardi OU PlageHoraireMerc OU PlageHoraireJeudi OU PlageHoraireVend
Dans les scènes précédentes, nous voyons tout l'intérêt de l'utilisation des sorties virtuelles ActiviteSemaine et ActiviteWE.
Action : ON/OFF
Resultat : ActiviteSemaine


Evènement : PlageHoraireSamedi OU PlageHoraireDimanche OU PlageHoraireSamediMidi OU PlageHoraireDimancheMidi
Dans un scénario, le bloc évènement ne peut contenir que 6 éléments de type plage horaire. Les 2 sorties virtuelles nous permettent donc d'outrepasser ces limites.
Action : ON/OFF
Resultat : ActiviteWE


Initialisons le compte à rebours variable en fonction de notre compteur si une activité doit démarrer.
==== Simulation des activités====
En fonction de l'index, nous ajouterons un délai de 4, 12, 6, 8 ou encore 5 minutes à nos plages Horaires.
Evènement : ActiviteSemaine OU ActiviteWE ET CPTJ (Valeur >= 5) ET NON VO31
Action : [On]
Résultat : C2 (Incrémentation 4) ; VO31
Evènement : ActiviteSemaine OU ActiviteWE ET CPTJ (Valeur >= 4) ET NON VO31
Action : [On]
Résultat : C2 (Incrémentation 12) ; VO31
Evènement : ActiviteSemaine OU ActiviteWE ET CPTJ (Valeur >= 3) ET NON VO31
Action : [On]
Résultat : C2 (Incrémentation 6) ; VO31
Evènement : ActiviteSemaine OU ActiviteWE ET CPTJ (Valeur >= 2) ET NON VO31
Action : [On]
Résultat : C2 (Incrémentation 8) ; VO31
Evènement : ActiviteSemaine OU ActiviteWE ET CPTJ (Valeur >= 1) ET NON VO31
Action : [On]
Résultat : C2 (Incrémentation 5) ; VO31


Déclenchons nos simulations lorsque le compte à rebours arrive à 0
Déclenchons nos simulations lorsque le compte à rebours arrive à 0


                Evènement : :[NON] VO20 ET PlageHoraireLundi
Evènement : :[NON] VO20 [ET] PlageHoraireLundi
                Action : [On]
Action : [ON]
                Résultat : Ouverture Stores
Résultat : Ouverture Stores
                Evènement : :[NON] VO20 ET NON PlageHoraireLundi
Evènement : [NON] VO20 [ET] [NON] PlageHoraireLundi
                Action : [On]
Action : [ON]
                Résultat : Fermeture Stores
Résultat : Fermeture Stores
Evènement : [NON] VO20 [ET] PlageHoraireRadio
Action : [ON]
Résultat : Radio SDB
Evènement : [NON] VO20 [ET] [NON] PlageHoraireRadio
Action : [OFF]
Résultat : Radio SDB
 
===Inconvénients de la méthode===
* Cette méthode nécessite plus de ressources (compteurs, compte à rebours, sorties virtuelles),
* moins grande efficacité qu'avec la méthode précédente,
* en fonction de la complexité, il faudra parfois utiliser plusieurs comptes à rebours distincts si plusieurs activités doivent être simulées dans le même créneau horaire.


 
=='''Conclusion'''==
Evènement : [NON] VO20 ET PlageHoraireRadio
Je vous ai présenté 3 méthodes pour simuler une présence avec l'[[IPX800_V4|IPX800 V4]] dans une habitation.<br>
Action : ON
Vous pouvez choisir l'une ou l'autre méthode en fonction
Résultat : Radio SDB
:- de vos besoins,
:- des ressources disponibles sur l'[[IPX800_V4|IPX800 V4]],
Evènement : [NON] VO20 ET NON PlageHoraireRadio
Vous pouvez également mixer plusieurs méthodes.
Action : OFF
 
Résultat : Radio SDB
Pour simuler les activités, vous aurez certainement besoin d'un peu de matériel suppplémentaire :<br>
:- des extensions [[X-4VR]], [[X-8R]], ... pour l'[[IPX800_V4|IPX800 V4]] afin d'actionner les stores, l'éclairage, ...<br>
:- des prises commandées (poste de radio, lampe, bandeau LED, ...),
:- d'autres petits matériels comme les astucieux projecteurs LEDs qui simulent la lueur changeante d'un téléviseur .
 
Vous pourrez également trouver sur des boutiques spécialisées en ligne, des modules de prises commandées compatibles avec [https://ifttt.com/applets/147135p-pull-random-time-for-wemo-switch IFTTT Random Time].<br>
Vous pourrez utiliser ces appareils en complément de l'IPX800 V4, ou encore en les connectant à une entrée digitale ([[IPX800_V4|IPX800 V4]], [[X-8D]], [[X-24D]]) au travers d'un contacteur (création d'un contact sec).<br>Avec un peu de programmation sur l'IPX800 V4, vous aurez un simulateur très performant.

Version actuelle datée du 6 juin 2018 à 11:10

Simulateur de présence

Contribution.png
Nom Simulateur de présence
Famille IPX800 V4
Wiki créé le 26/03/2018
Wiki mis à jour le 28/03/2018
Auteur fgtoul

Présentation

L'IPX800 V4 vous permet d’allumer manuellement une lampe ou tout appareil électrique, d'ouvrir ou fermer les stores, tout en étant hors de chez vous ou encore automatiquement à des horaires variables en fonction des jours de la semaine.

Dans la vie courante, il n'est pas rare de constater que les volets d'une habitation s'ouvrent ou se ferment à heures plus ou moins fixes tout au long de l'année, il est donc tout à fait envisageable de les programmer en fonction de la luminosité extérieure, donc à des horaires plus ou moins réguliers.

Au contraire, allumer le téléviseur, le poste de radio ou les lampes dans l'habitation ne devrait pas se faire avec seulement des plages horaires, même si elles sont différenciées en fonction des jours de la semaine. Un observateur constaterait vite que les lundis ressemblent aux lundis, que tous les mardis sont semblables, etc.

Nous avons deux types d'activités à simuler dans la maison :

  • Les activités liées à nos habitudes ou nos contraintes (départ / retour travail, le journal Télévisé de 20h00, le radio réveil le matin, etc).
  • Le mouvement. Il est possible d'allumer et éteindre des lampes, une radio, dans une pièce puis une autre, à des horaires variés tout au long de la journée et/ou de la soirée.

Les plages horaires nous aideront à planifier tout cela, mais il est nécessaire d'y ajouter des délais ou retards aléatoires entre les différentes scènes, afin de simuler au mieux une présence dans l'habitation. Nous allons voir plusieurs méthodes pour randomiser(a) les horaires de simulation.

(a) : Randomiser : (de l'anglais random, signifiant hasard) Ajouter un élément aléatoire dans un calcul ou un raisonnement.

Bien définir vos besoins

Avant de vouloir programmer l'IPX800 V4, il est important de bien définir les besoins en fonction de vos habitudes. A partir de là, vous pourrez définir les plages horaires qui serviront de base à vos programmes, ainsi que les activités à simuler pour être le plus réaliste possible. Il est clair que si vous n'ouvrez pas les volets du salon, il est totalement inutile de programmer des effets d'ombres et de lumières dans cette pièce. Par contre, il sera plus judicieux d'y allumer un poste de radio ou d'activer des effets sonores (voix , aboiements, claquements, ...).
Si les toilettes ont "fenêtre sur cour", la lumière pourra être allumée et éteinte à des heures totalement aléatoires (n'en abusez pas, il faut rester réaliste 😉).

Les outils à votre disposition

L'IPX800 V4 offre quelques outils pour la gestion du temps.

Tout au long de ce tutoriel, nous utiliserons une sortie virtuelle nommée "Simulateur".
Vous pourrez gérer cette sortie à partir de l'interface web de l'IPX800 V4 ou par push, scénario, etc.
Cette sortie Virtuelle sera supposée à l'état ON lorsque vous souhaitez le fonctionnement du Simulateur, et OFF lorsque vous souhaitez le désactiver.


Méthode 1 : La planification simple

Efficience de la randomisation : ★☆☆☆☆ Difficulté de mise en oeuvre : ★☆☆☆☆ Utilisation des ressources : ★☆☆☆☆

Fonctionnement

Vous pouvez définir vos horaires en fonction des jours de la semaine, matin, midi, soir en fonction de vos habitudes.

Par exemple, les jours de la semaine, vous ouvrez les volets vers 6h30, passez à la salle de bain, puis prenez le petit déjeuner dans la cuisine avant de partir au travail.

Vous pourriez alors facilement créer une plage horaire répétée à 6h30 du lundi au vendredi, des plages horaires plus tardives pour le Week-end et enchaîner les différentes activités.

Mais cela serait trop répétitif, trop régulier, les éventuels observateurs décèleraient très vite la présence d'un automate.

Il convient donc de semer un peu le chaos. Il est donc préférable de créer une plage différente chaque jour (7 plages) pour le lever et les activités du soir, en les décalant arbitrairement de quelques minutes à chaque fois.

Exemple :

• Lundi : 6h31 - 18h15
• Mardi : 6h42 - 17:58
• Mercredi : 6h33 - 18:06
• Jeudi : 6h39 - 18:12
• Vendredi : 6h36 - 17:31
• Samedi : 7h25 - 18:35
• Dimanche : 8h32 - 18:45

Si vous devez simuler une activité en milieu de journée, prevoyez également plusieurs plages horaires supplémentaires.

Programmation

Pour déclencher vos activités en fonction de vos plages horaires, vous devez ajouter des scenarii.

Par exemple :

Evènement : PlageHoraireLundi [ET] Simulateur
Action : [ON/OFF]
Résultat : Activité du lundi

Evènement : PlageHoraireMardi [ET] Simulateur
Action : [ON/OFF]
Résultat : Activité du mardi

inconvénients de la méthode

Les semaines se suivent et se ressemblent. Je vous ai présenté cette méthode simple pour la compréhesion du tutoriel, mais je ne conseille pas son utilisation telle quelle.

Méthode 2 : Forte randomisation avec les sorties virtuelles

Efficience de la randomisation : ★★★★☆ Difficulté de mise en oeuvre : ★★☆☆☆ Utilisation des ressources : ★★☆☆☆

Principe

Nous allons reprendre la programmation par plages horaires, décrite en méthode 1, mais nous renforcerons la randomisation des horaires grâce à des sorties virtuelles.

Fonctionnement

L'IPX800 V4 permet de faire "clignoter" les sorties virtuelles. Grâce à leurs paramètres Ta et Tb, nous pourrons créer une alternance d'état ON et OFF à intervalles réguliers.

Selon les paramètres de votre IPX800 V4, ces temporisations sont exprimées en dixièmes de secondes, ou en secondes (par défaut).

Pour ce tutoriel, nous nous exprimerons en secondes, il vous suffira de multiplier les valeurs par 10 si nécessaire.

Ta et Tb acceptent le nombre 13743 comme valeur maximale, ce qui représente 13743 secondes (soit 3h49 environ) ou 13743 dixièmes de secondes (soit environ 23 minutes) selon votre configuration.

Dans un cas comme dans l'autre, c'est amplement suffisant pour nos besoins qui se limiteront à quelques minutes.

Nous allons faire clignoter nos sorties virtuelles en utilisant des valeurs qui ne sont

  • ni des sous-multiples de soixante
  • ni des sous-multiples l'un de l'autre

ceci afin d'éviter que nos sorties virtuelles ne se mettent à clignoter trop souvent à l'unisson après leur activation.

Pour ma part, je décide de sélectionner mes valeurs parmi les nombres premiers (7, 11, 13, 17, 19, 23, ...). Vous remarquerez que je n'utiliserai pas les valeurs 2, 3, 5,.. puisque ce sont des nombres diviseurs de soixante.

Le nombre de sorties virtuelles à utiliser dépendra du nombre d'activités à simuler. Nous en utiliserons 2.

Soit

  • SV1 la première sortie virtuelle avec Ta=1020, Tb=1020 (1)
  • SV2 la seconde sortie virtuelle avec Ta=1380, Tb=1380 (2)
Notes :
(1) 1020 secondes = 17 * 60 soit 17 minutes
(2) 1380 secondes = 23 * 60 soit 23 minutes

Les 2 figures ci-dessous montrent comment les activités 1 et 2 peuvent être retardées de manière aléatoire en fonction de la plage horaire, de l'heure de démarrage de l'IPX800 et de l'état des sorties virtuelles SV1 et SV2. Retardons l'activité 1 selon l'état de SV1 et l'activité 2 selon l'état de SV2.

  • Figure 1 :

RandomSV1.png

Au moment de la demande de lancement des activités, SV1 est OFF.
Pendant un délai T1, l'activité 1 est mise en attente du passage à l'état ON de SV1. Elle subit donc un retard T1.
L'activité 2 est exécutée immédiatement puisque SV2 est déjà ON.

  • Figure 2 :

RandomSV3.png

Au moment de la demande de lancement des activités, SV1 et SV2 sont OFF.
Pendant un délai T, l'activité 1 est mise en attente du passage à l'état ON de SV1.
L'activité 2 est mise en attente du passage à l'état ON de SV2 pendant un délai T2.

La périodicité

Mesurons l'efficience de notre randomisation en déterminant la périodicité de nos sorties virtuelles sur une journée de 24h (1440 minutes).

Nous ferons nos calculs à l'aide du "Plus Grand Commun Diviseur" et du "Plus Petit Commun Multiple" (PGCD et PPCM).

Périodicité de SV1 :

Nous avons choisi Ta=17 minutes et Tb=17 minutes, soit une durée totale de 34 minutes.
PGCD(34,1440)=2
PPCM(34,1440)=(34 * 1440) / PGCD = 24480
Une activité conditionnée sur SV1 se reproduit donc à la même heure (mais pas le même jour de la semaine) toutes les 24480 minutes soit 17 jours.
Pour qu'une activité planifiée le mardi, par exemple, se reproduise à la même heure un mardi, il faudra attendre PPCM(17,7)=119 jours
=> Pendant 119 jours (17 semaines), nos semaines ne se ressemblent pas.

Périodicité de SV2 :

Nous avons choisi Ta=23 minutes et Tb=23 minutes, soit une durée totale de 46 minutes.
PGCD(46,1440)=2
PPCM(46,1440)=(46 * 1440) / PGCD = 33120
Une activité conditionnée sur SV2 se reproduit donc à la même heure (mais pas le même jour de la semaine) tous les 23 jours.
Pour qu'une activité planifiée le jeudi, par exemple, se reproduise à la même heure un jeudi, il faudra attendre PPCM(23,7)=161 jours.
=> Pendant 161 jours (23 semaines), nos semaines ne se ressemblent pas.

Périodicité du système SV1 ET SV2 :

Pour calculer la périodicité d'un système composé de nos 2 sorties virtuelles, voyons d'abord combien il leur faut de temps pour se resynchroniser mutuellement (dans le cas où nous conditionnons des activités en fonction de SV1 ET SV2)
PGCD (17,23) = 1
PPCM (17,23) = 17 * 23 = 391
Recherchons la périodicité de notre ensemble de sorties virtuelles :
PGCD(391,1440)=1
PPCM(391,1440)=391 × 1440 soit 563040 minutes, soit 391 jours.
Il faudra donc attendre plus d'un an pour que notre activité conditionnée par les 2 sorties virtuelles se reproduise rigoureusement à la même heure (mais pas forcément le même jour de la semaine). Il faudra près de 7 ans et demi pour que notre activité se reproduise à la même heure, le même jour de la semaine.

Nous voyons qu'avec seulement 2 sorties virtuelles, nous avons la possibilité de créer une randomisation extrêmement efficiente.

Une activité conditionnée sur SV1 subira des retards aléatoires allant de 0 à 17 minutes.

Une activité conditionnée sur SV2 subira des retards aléatoires allant de 0 à 23 minutes.

Une activité conditionnée sur SV1 ET SV2 subira des ratards allant jusqu'à 51 minutes.

Programmation

Ce qu'il faut savoir avant de continuer

Avec l'application des retards, voici ce qu'il faut retenir avant de continuer :

  • une tâche programmée pour s'exécuter au début d'une plage horaire, sera exécutée avec un certain retard.
    La durée de la plage horaire devra être supérieure au retard maximal.
Simul retard1b.PNG
  • une tâche censée prendre fin au bout d'une plage horaire, sera certainement prolongée au delà pendant un temps variable.
Simul retard2c.PNG
  • une tâche, censée démarrer à la fin de la plage horaire, sera probablement exécutée plus tard.
Simul retard3c.PNG

Activation des sorties virtuelles clignotantes

Nous allons créer les scènes qui permettront l'activation de nos sorties virtuelles

Evènement : [NON] SV1
Action : [ON]
Résultat : SV1

Evènement : [NON] SV2
Action : [ON]
Résultat : SV2

Dès la création des scènes et à chaque redémarrage de l'IPX800 V4, nos 2 sorties virtuelles seront immédiatement activées et clignoteront 24/24.
Chaque jour, à la même heure, l'état de ces 2 sorties virtuelles sera différent, car nous avons bien pris soin de ne pas choisir des nombres diviseurs de 60 (1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60).

Lancement des tâches programmées

pour chaque activité planifiée par plage horaire, ajoutez une scène

Exemple 1 : des tâches doivent s'exécuter en début de plage horaire.
La plage horaire doit avoir une durée supérieure aux retard maximal.

Evènement : PlageHoraireLundi [ET] SV1 [ET] Simulateur
Action : [ON]
Résultat : Activité 1 (ce que vous voulez)

Evènement : PlageHoraireLundi [ET] SV2 [ET] Simulateur
Action : [ON]
Résultat : Activité 2 (ce que vous voulez)

Evènement : PlageHoraireLundi [ET] [NON] SV2 [ET] Simulateur
Action : [ON]
Résultat : Activité 3 (ce que vous voulez)

Ici nous déduisons que PlageHoraireLundi doit avoir une durée supérieure à 46 minutes.
En effet, la clause [NON] SV2 dans la troisième scène induit le fait que le retard peut être égal à TaSV2 + TbSV2

Exemple 2 : des tâches doivent prendre fin au bout de la plage horaire.

Evènement : [NON] PlageHoraireLundi [ET] SV1 [ET] Simulateur
Action : [OFF]
Résultat : Activité 1 (ce que vous voulez)

Evènement : [NON] PlageHoraireLundi [ET] SV2 [ET] Simulateur
Action : [OFF]
Résultat : Activité 2 (ce que vous voulez)

Evènement : [NON] PlageHoraireLundi [ET] [NON] SV1 [ET] Simulateur
Action : [OFF]
Résultat : Activité 3 (ce que vous voulez)

Exemple 3 : des tâches doivent démarrer au bout de la plage horaire.

démarrage d'une activité en fonction de SV1
   Evènement : [NON] PlageHoraireLundi [ET] SV1 [ET] Simulateur
   Action : [ON]
   Résultat : Activité 1 (ce que vous voulez)

démarrage d'une activité en fonction de SV2
   Evènement : [NON] PlageHoraireLundi [ET] SV2 [ET] Simulateur
   Action : [ON]
   Résultat : Activité 2 (ce que vous voulez)

démarrage d'une activité en fonction du système SV1 ET SV2
   Evènement : [NON] PlageHoraireLundi [ET] SV1 [ET] SV2 [ET] Simulateur
   Action : [ON]
   Résultat : Activité 3 (ce que vous voulez)

Pour mettre fin à ces tâches, vous pouvez utiliser une autre plage horaire, une temporisation ou un évènement.


Vous l'aurez compris, vous pouvez combiner ainsi autant de sorties virtuelles et de plages horaires que vous voulez, tout dépend de la complexité de vos besoins.

Si vous avez paramétré des plages pour des activités annexes durant la journée, procédez de la même façon.

Notez que vous pouvez encore augmenter les irrégularités en démarrant une activité en fonction d'une sortie virtuelle, puis en y mettant fin en fonction d'une autre .

Exemple : la radio le matin dans la salle de bain
 
Evènement : PlageHoraireRadio [ET] SV1 [ET] Simulateur
Action : [ON]
Résultat : Radio SDB

Evènement : [NON] PlageHoraireRadio [ET] [NON] SV2 [ET] Simulateur
Action : [OFF]
Résultat : Radio SDB

Inconvénients de la méthode

Si l'IPX800 V4 est redémarrée chaque jour de manière programmée, les sorties virtuelles seront réinitialisées également. Les journées se ressembleront

Méthode 3 : Randomisation modérée avec un compteur

Efficience de la randomisation : ★★★☆☆ Difficulté de mise en oeuvre : ★★★☆☆ Utilisation des ressources : ★★★☆☆

Principe

Précédemment, nous avons vu comment faire clignoter 2 sorties virtuelles afin d'obtenir des états ON ou OFF de manière aléatoire en fonction de nos plages horaires. Vous comprendrez facilement que ce principe n'est valable que si l'IPX800 n'est pas redémarrée quotidiennement à heure fixe, de manière programmée. Dans ce cas, nos sorties virtuelles seraient toujours activées à la même heure, et présenteraient toujours le même état au moment du besoin (selon plages horaires). Ainsi, les sorties virtuelles perdraient toute leur efficacité dans la randomisation de nos horaires.

Nous allons utiliser un compteur. Nous l'incrémenterons 1 fois par jour grâce à une plage horaire, et lui fixerons une valeur maximale. Il sera donc régulièrement remis à 1 à chaque fois qu'il atteindra ce maximum.

Au démarrage de chaque activité par notre simulateur, nous ajouterons un retard à nos horaires planifiés, en fonction de la valeur de ce compteur.

Pour ce faire, nous utiliserons le principe du compte à rebours variable proposé par @Teebex.
Vous pourrez en retrouver le principe ici

Fonctionnement

La valeur maximale

En fonction de la valeur maximale choisie pour le compteur, nous allons obtenir des cycles différents, mais au bout d'un certain nombre de jours, le cycle redémarre.

En effet, imaginons que la toute première fois, notre compteur est incrémenté un mardi et que la valeur maximale est 4.

nous obtiendrions le tableau de valeurs suivant

Semaine Jour Index
semaine 1 J1 Mardi 1
semaine 1 J2 Mercredi 2
semaine 1 J3 Jeudi 3
semaine 1 J4 Vendredi 4
semaine 1 J5 Samedi 1
semaine 1 J6 Dimanche 2
semaine 1 J7 Lundi 3
semaine 2 J1 Mardi 4
... ... ... ...
semaine 5 J1 Mardi 1

La cinquième semaine, nous retrouverions un index 1 pour le mardi. Le cycle recommencerait donc comme au premier jour et nous appliquerions donc les mêmes retards à notre simulateur de présence.

Exemples de cycles en fonction de la valeur maximale

Illustrons le cycle des réinitialisations de notre compteur en fonction de sa valeur maximale afin d'en déterminer la périodicité, sur des périodes glissantes de 7 jours que nous appellerons "semaines"

soit x la valeur maximale attribuée au compteur 

1er cas, x < 7

  • Si nous choisissons de réinitialiser notre compteur tous les 2 jours, le plus petit commun multiple PPCM (7;2)= 14.
    Si la première réinitialisation a lieu un Mardi, il ne faudra attendre que la troisième semaine pour qu'une réinitialisation du compteur retombe un mardi, cela revient à dire qu'il faudra donc attendre 14 jours pour qu'un même délai soit appliqué le même jour de la semaine.

PGCM7-2p.PNG


  • Si nous choisissons de réinitialiser notre compteur tous les 3 jours, le plus petit commun multiple PPCM(7;3)= 21, soit 3 semaines.
    Si la première réinitialisation a lieu un Mercredi, il ne faudra attendre que 3 semaines pour qu'une réinitialisation du compteur retombe un mercredi, cela revient à dire qu'il faudra donc attendre 3 semaines pour qu'un même délai soit appliqué le même jour de la semaine.

PGCM7-3p.PNG

2ème cas : x = 7

  • Si nous choisissons de réinitialiser notre compteur tous les 7 jours, toutes les semaines se ressembleront. Notre compteur aura toujours la même valeur les lundis, une autre valeur tous les mardis, et ainsi de suite.

Les délais liés au compteur, fixés par scénario, seront donc identiques chaque semaine. C'est donc une valeur à éviter.

PGCM7-7p.PNG

3ème cas : x > 7

  • Exemple avec la valeur 8. Le PPCM(7;8) = 56. Il faudra donc attendre 56 jours pour qu'un même délai soit appliqué le même jour de la semaine.
  • Exemple avec la valeur 10. Le PPCM(7;10) = 70. Il faudra donc attendre 70 jours pour qu'un même délai soit appliqué le même jour de la semaine.

Programmation

Gestion du compteur journalier

Créons d'abord une plage horaire se répétant quotidiennement, à un horaire quelconque, d'une durée de 30 minutes environ.

Afin de rendre notre randomisation plus efficace et d'allonger la période du cycle, nous n'allons pas réinitialiser notre compteur journalier à heure fixe.
Nous combinerons notre plage horaire à l'état de l'une de nos 2 sorties virtuelles créées précédemment et clignotant H24 (SV1 ou SV2)

Nommons CPTJ notre compteur journalier, PlageHoraireJ notre plage horaire quotidienne et écrivons 2 scènes :

Evènement : PlageHoraireJ [ET] SV1
Action : [ON]
Résultat : CPTJ (Incrémentation valeur=1)

Evènement : CPTJ (valeur=7)
Action : [ON]
Résultat : CPTJ (SET valeur=1)

* En scène 1, malgré l'utilisation d'une plage horaire, nous voyons que notre compteur est incrémenté à heure différente chaque jour (car dépend de l'état de SV1. Il y a donc une temporisation variable de 0 à 17 minutes). Si PlageHoraireJ est en milieu de journée, vous pourrez alors appliquer des temporisations différentes en première et seconde partie de journée.
* Dans la scène 2, vous remarquerez qu'aussitôt passé à la valeur 7, CPTJ est réinitialisé à 1. Ses valeurs sont donc comprises dans l'intervalle fermé [1;6]
 

Gestion des plages horaires d'activités

Pour simuler une activité en fonction des plages horaires programmées, nous allons devoir écrire des scenarii avec lesdites plages en évènement. Vu que ces plages horaires peuvent être nombreuses, l'écriture des scènes peut s'avérer légèrement ardue. Pour simplifier l'écriture des scènes et en faciliter la compréhension, nous utiliserons 2 sorties virtuelles avec Ta=0 et Tb=0. Elles seront nommées ActiviteSemaine et ActiviteWE. Elles permettront de créer une condition simple en fonction de l'état des nombreuses plages horaires.

Evènement : PlageHoraireLundi [OU] PlageHoraireMardi [OU] PlageHoraireMerc [OU] PlageHoraireJeudi [OU] PlageHoraireVend
Action : [ON/OFF]
Resultat : ActiviteSemaine

Evènement : PlageHoraireSamedi [OU] PlageHoraireDimanche [OU] PlageHoraireSamediMidi [OU] PlageHoraireDimancheMidi
Action : [ON/OFF]
Resultat : ActiviteWE

Mise en place du compte à rebours variable

Nous allons utiliser un autre compteur pour le compte à rebours (C2) et une sortie virtuelle VO31 (vérifie que l'incrémentation ne se produit qu'une fois)

Pour notre compte à rebours, nous avons besoin

  • d'une sortie virtuelle (VO10) avec TA =0 et TB=60 (le décompte se fait en minutes)
  • d'une 2ème sortie virtuelle (VO20) avec TA =0 et TB=0
  • d'une autre sortie virtuelle (V030) avec TA=0 et TB=10

Voici les scènes : Dès que C2 est supérieur ou égal à 1, le décompte se fait minute après minute.

Pour démarrer / arrêter le compte à rebours :

Evènement : C2 (Valeur >= 1)
Action : [ON/OFF]
Résultat : VO20
				
Evènement : [NON] C2 (Valeur >= 1)
Action : [OFF]
Résultat : VO31

Pour égrainer les minutes :

Evènement :[NON] VO10 [ET] VO20 
Action :[ON]
Résultat : C2 (Décrémentation 1) ; VO10

Application des délais liés à la valeur du compteur

Initialisons le compte à rebours variable en fonction de notre compteur CPTJ si une activité doit démarrer. En fonction de l'index, nous ajouterons un délai de 4, 12, 6, 8 ou encore 5 minutes à nos plages Horaires.

Remarque :
Plus la valeur maximale choisie sera grande, plus il faudra écrire de scènes pour sa gestion. C'est pourquoi pour notre tutoriel, nous avons choisi le nombre 6 comme valeur maximale, ce qui donne une périodicité de 6 semaines.

PGCM7-6p.PNG
 


Evènement : ActiviteSemaine [OU] ActiviteWE [ET] CPTJ (Valeur >= 5) [ET] [NON] VO31 [ET] Simulateur
Action : [ON]
Résultat : C2 (Incrémentation 4) ; VO31
	
Evènement : ActiviteSemaine [OU] ActiviteWE [ET] CPTJ (Valeur >= 4) [ET] [NON] VO31 [ET] Simulateur
Action : [ON]
Résultat : C2 (Incrémentation 12) ; VO31
 
Evènement : ActiviteSemaine [OU] ActiviteWE [ET] CPTJ (Valeur >= 3) [ET] [NON] VO31 [ET] Simulateur
Action : [ON]
Résultat : C2 (Incrémentation 6) ; VO31	

Evènement : ActiviteSemaine [OU] ActiviteWE [ET] CPTJ (Valeur >= 2) [ET] [NON] VO31 [ET] Simulateur
Action : [ON]
Résultat : C2 (Incrémentation 8) ; VO31
	
Evènement : ActiviteSemaine [OU] ActiviteWE [ET] CPTJ (Valeur >= 1) [ET] [NON] VO31 [ET] Simulateur
Action : [ON]
Résultat : C2 (Incrémentation 5) ; VO31

Dans les scènes précédentes, nous voyons tout l'intérêt de l'utilisation des sorties virtuelles ActiviteSemaine et ActiviteWE.

Dans un scénario, le bloc évènement ne peut contenir que 6 éléments de type plage horaire. Les 2 sorties virtuelles nous permettent donc d'outrepasser ces limites.

Simulation des activités

Déclenchons nos simulations lorsque le compte à rebours arrive à 0

Evènement : :[NON] VO20 [ET] PlageHoraireLundi
Action : [ON]
Résultat : Ouverture Stores
				
Evènement : [NON] VO20 [ET] [NON] PlageHoraireLundi
Action : [ON]
Résultat : Fermeture Stores				

Evènement : [NON] VO20 [ET] PlageHoraireRadio
Action : [ON]
Résultat : Radio SDB
				 
Evènement : [NON] VO20 [ET] [NON] PlageHoraireRadio
Action : [OFF]
Résultat : Radio SDB

Inconvénients de la méthode

  • Cette méthode nécessite plus de ressources (compteurs, compte à rebours, sorties virtuelles),
  • moins grande efficacité qu'avec la méthode précédente,
  • en fonction de la complexité, il faudra parfois utiliser plusieurs comptes à rebours distincts si plusieurs activités doivent être simulées dans le même créneau horaire.

Conclusion

Je vous ai présenté 3 méthodes pour simuler une présence avec l'IPX800 V4 dans une habitation.
Vous pouvez choisir l'une ou l'autre méthode en fonction

- de vos besoins,
- des ressources disponibles sur l'IPX800 V4,

Vous pouvez également mixer plusieurs méthodes.

Pour simuler les activités, vous aurez certainement besoin d'un peu de matériel suppplémentaire :

- des extensions X-4VR, X-8R, ... pour l'IPX800 V4 afin d'actionner les stores, l'éclairage, ...
- des prises commandées (poste de radio, lampe, bandeau LED, ...),
- d'autres petits matériels comme les astucieux projecteurs LEDs qui simulent la lueur changeante d'un téléviseur .

Vous pourrez également trouver sur des boutiques spécialisées en ligne, des modules de prises commandées compatibles avec IFTTT Random Time.
Vous pourrez utiliser ces appareils en complément de l'IPX800 V4, ou encore en les connectant à une entrée digitale (IPX800 V4, X-8D, X-24D) au travers d'un contacteur (création d'un contact sec).
Avec un peu de programmation sur l'IPX800 V4, vous aurez un simulateur très performant.