Opérateur MODULO et simulateur de présence

Bonjour à tous,

il y a quelques temps déjà, j’avais expliqué comment créer un petit simulateur de présence sur V5 avec des objets type Faders.

Pour créer un simulateur de présence sur IPX800 V5, nous avons d’autres ressources moins gourmandes en processeur et en traitement que les objets basés sur le temps (clignotant, fader, …)
J’ai donc cherché un moyen plus économe pour obtenir des horaires apparemment aléatoires, et cela m’a conduit à la conception de la fonction Modulo.

  1. Modulo
    Tout matheux ou développeur connait l’opérateur Modulo, bien pratique pour réduire un nombre dans un intervalle donné.

    A mod B retourne le reste de la division entière A/B.

    L’ipx800 V5 ne propose pas cet opérateur. Nous devons le construire

    Fonctionnement : un nombre quelconque est tronqué à sa partie entière (fonction plancher ou floor en anglais) par une conversion en unité RAW puis divisé par 1800.

    floor(3.7)=3

La dernière fonction détermine le reste de la division entière.

  • Modulo variable :

    Fonctionnement : Un widget Curseur permet de sélectionner la limite supérieur de l’intervalle (1800 dans notre cas). Ce nombre doit être un entier. Si ce n’est pas le cas, il suffit de l’injecter dans une autre variable analogique définie en RAW pour qu’il soit tronqué à sa partie entière.

  1. Mise en application dans un petit simulateur de présence :
    L’élément variable le plus connu sur l’IPX800, c’est bien entendu la date et l’heure du système (Timestamp). Pour obtenir un nombre variable tous les jours, il suffirait d’appliquer une simple formule arithmétique pour réduire la valeur sous forme d’un entier contraint dans un intervalle donné.
    Ce nombre sera alors additionné à l’heure souhaitée de la simulation afin de rendre la vie apparente du domicile un peu plus crédible.

    Exemple : calculons un nombre compris entre 0 et 1800.
    Notre calcul sur Timestamp (heure système de l’ipx800) est également transformé en entier puis injecté dans une division entière. Un second objet Fonction nommée Modulo calcule le reste de la division entière. Nous obtenons donc A mod B.

    Par exemple, prenons la valeur de base Timestamp / 3600 et calculons son modulo 1800.

Nous pouvons malheureusement constater que le résultat de formules arithmétiques appliquées au Timestamp sera toujours croissant et linéaire dans le temps, puis retombant à 0 avant de croître à nouveau jusqu’au point maximum. La variabilité n’est pas suffisante pour un simulateur de présence.
Nous devons utiliser des éléments beaucoup plus variables.

Amélioration de la variabilité
Parmi les nombreuses fonctionnalités disponibles sur la V5, mon choix s’est porté sur le plugin Weather.
En effet, quoi de plus changeant que la météo ? humidité, température, pression, vent, …

Nous pouvons donc calculer un nombre à partir de ces valeurs très variables et le contraindre lui aussi avec la fonction modulo.
Par exemple : (Température+pression+vent+humidité)*3.7 mod 1800

L’inconvénient du plugin météo, c’est qu’il est dépendant du cloud. En cas de perte du réseau, les valeurs ne sont plus mises à jour et la variabilité des résultats est réduite.

Nous pouvons donc joindre les 2 méthodes pour obtenir une variabilité basée à la fois sur la date et la météo. La variabilité sera bien suffisante.

Exemple : calculons un nombre dérivé de la météo et appliquons un modulo 900. Faisons de même avec le calcul basé sur le timestamp. En les additionnant, nous aurons un résultat compris entre 0 et 1800. Il suffira d’appliquer ce délai supplémentaire lors de la programmation d’une simulation pour que son heure d’exécution varie tous les jours.

Voici un exemple avec l’ouverture des volets selon un planning. Un retard variable compris entre 0 et 1800 secondes est appliqué à chaque démarrage.

Astuces :
Vous pouvez ajouter un élément variable en fonction du jour de la semaine et de l’heure en utilisant un planning analogique.
Vous pouvez en effet créer des plages horaires (14 maximum) qui feront varier la valeur de l’objet Planning AnA.
La valeur de la sortie du planning analogique pourra alors être utilisée dans les calculs du retard variable (sous forme de coefficient par exemple). Ce principe offre une faible variabilité puisque redondant toutes les semaines, mais cumulé aux autres méthodes, sont efficacité n’en sera que plus grande.

Ce n’est qu’une base de réflexion. Je vous ai présenté plusieurs méthodes pour générer des nombres pseudo-aléatoires, Je vous laisse améliorer le principe.

Bonne journée

2 « J'aime »