Simulation de présence - Fonction Random
#1
Existe-t-il une fonction capable de renvoyer un nombre aléatoire? J'aimerai utiliser cette fonction pour simuler une présence dans la maison, en allumant et éteignant aléatoirement les lumières.
Répondre
#2
Tu peux facilement utiliser une des formules mathématiques de génération de nombres (pseudo)aléatoires telle que:

X = 16807 * old_X MOD 2147483647

Voir ici pour les explications
http://www.alrj.org/docs/algo/random.php (j'ai pris celle du point I.3.1)

Ou alors tu utilises la fonction Math.random() du Javascript avec un équipement universel.

Les deux fonctionnent, testé et approuvé :)[ATTACH=CONFIG]313[/ATTACH]


Pièces jointes Image(s)
   
www.osmotiq.com, domotique, développement logiciel et web -- tests & tutoriels KNX, Lifedomus, ZWave, etc.
Twitter: osmotiq
Répondre
#3
Merci tilleul, je vais regarder ça de plus près :D
Répondre
#4
Bonjour,

Malgré la gentille aide de Tilleul j'ai été incapable de parvenir à déclencher la fonction Math.random() du JavaScript.
Il m'a fallu donc faire avec ma médiocrité et me contenter du générateur de nombres pseudo-aléatoires.
A présent que ce générateur fonctionne je me pose des questions sur l'implémentation du simulateur de présence. Pour l'instant je n'ai pas d'idée géniale qui permette d'éviter l'usine à gaz, et, plus embêtant, je ne sais même pas comment faire un wait sur une durée variable issue du générateur aléatoire.
Je suis preneur de toutes idées...
à vot' bon cœur Msieurs dames... ;-)

Thierry
Répondre
#5
Il va falloir utiliser le nombre aléatoire généré comme un compteur et pas comme un temps d'attente puisqu'il n'est pas (encore ?) possible d'utiliser une variable dans un WAIT ...

En imaginant que X contienne ton nombre aléatoire et qu'il représente des minutes tu peux (par ex) faire un WHILE qui ressemble à ceci
WHILE x > 0
WAIT 1 minute
x = x - 1
(fin du bloc WHILE)

si X représente un multiple de 15 secondes (si x = 4 alors attendre 1 min), tu feras un WAIT 15 sec dans le WHILE etc.

Ce n'est qu'une solution parmi d'autres car on peut aussi utiliser un déclencheur avec un WAIT, compter en positif, etc etc.
www.osmotiq.com, domotique, développement logiciel et web -- tests & tutoriels KNX, Lifedomus, ZWave, etc.
Twitter: osmotiq
Répondre
#6
Hum... c'est tellement évident... la fatigue, sans doute... :o
Je m'étais bêtement bloqué sur le Wait qui ne peut pas prendre de variable...
Merci de ta réponse, Tilleul !
Répondre
#7
En effet une opération de type random(min,max) serait bien pratique dans le module logique avancé.

J'ai essayé de l'implémenter à partir du lien donné:
Pour info: X = (16807 * OLD_X ) MOD 2147483647
Et que x mob y = x - y * E(x/y) ou E(z)
est le plus grand entier inférieur ou égal à z, E(z) = la fonction FLOOR

Dans notre exemple cela donne : X =
[I](16807 * OLD_X ) - 2147483647 * FLOOR((16807 * OLD_X ) / 2147483647 )
[/I]Traduit en LD ça donne: (Sauf que j'ai pas trouvé la fonction FLOOR)
[ATTACH=CONFIG]396[/ATTACH]

Et en plus ça donne un chiffre entre 1 et 2147483647


Pièces jointes Image(s)
   
Répondre
#8
Salut Fred,

Comme il n'est malheureusement pas encore possible (sauf erreur de ma part) de faire d'import/export d'automates (siouplaît !!!),
Voici mon implémentation à moi, sachant que iAlea100 est le résultat sous la forme d'une variable publique qui vaut entre 0 et 100.

[ATTACH=CONFIG]398[/ATTACH]

... la formule en elle-même (3ème bloc) est la suivante :
[ATTACH=CONFIG]399[/ATTACH]

Désolé mais je ne vois plus comment augmenter la taille de l'image. Je suppose que tu pourras en lecture ?
@+

Thierry


Pièces jointes Image(s)
       
Répondre
#9
Il faut double cliquer sur l'image. Tu peux ré-éditer ton message, double cliquer sur l'image et choisir une nouvelle taille.
Répondre
#10
Ah ok. Je l'ai fait mais ça reste insuffisant apparemment. Je recommence l'insertion...
[ATTACH=CONFIG]399[/ATTACH][ATTACH=CONFIG]398[/ATTACH]*
... cette fois ci quand je double clique ça clignote un coup mais ça ne m'ouvre plus la fenêtre de paramétrage.... :(
Répondre


Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  Simulation de presence cybergui 4 7,050 03-30-2020, 10:01 AM
Dernier message: AucuneID
  Allumer une lampe de balisage en fonction de l'heure au lieu de la lampe du plafond com@home 19 22,815 12-19-2016, 10:58 PM
Dernier message: com@home
  Allumer une lampe de balisage en fonction de l'heure au lieu de la lampe du plafond com@home 15 17,927 08-27-2015, 09:24 AM
Dernier message: Domo
  Impossible de renommer une fonction AucuneID 3 5,819 01-14-2015, 07:13 PM
Dernier message: tilleul
  Démarrage automate en fonction d'une variable ngm47 4 7,394 06-02-2014, 01:50 PM
Dernier message: ngm47
  Lumière lors d'une présence extérieure [RESOLU] yanaka 4 7,518 01-08-2014, 03:28 PM
Dernier message: Olivier
  Erreur sur ma fonction WeekEnd ? AucuneID 4 6,460 12-31-2013, 06:16 PM
Dernier message: AucuneID
  Demande de fonction: reveil et retours de variables via appli smartphone/tablette! AucuneID 2 4,589 12-03-2013, 12:36 PM
Dernier message: Julien
  Fonction prenant des paramètres en entrée/sortie ? bizniouf 11 17,379 09-22-2013, 12:40 AM
Dernier message: bizniouf



Utilisateur(s) parcourant ce sujet : 1 visiteur(s)