Simulation de présence - Fonction Random
#12
Les amis vous cherchez inutilement la complication...

La fonction "MOD" (c'est-à-dire "Modulo" ou en français "Reste de la division") existe déjà: c'est l'item "%" ...
quelque chose du genre suffit (cliquer sur l'image pour l'agrandir):
[ATTACH=CONFIG]402[/ATTACH]
Vous obtenez ainsi un nombre N entre 1 et 2^31-2, soit 2147483646.
Pour ramener N dans une gamme de 0 à 100 par ex, vous faites un truc comme
A = 100*(N-1)/2147483645
(éventuellement vous pouvez l'arrondir tout dépend de ce que vous cherchez à faire) ...

Mais comme je l'ai dit c'est encore plus facile avec du javascript ...

Vous créez un équipement (dans n'importe quel connecteur qui accepte du JS), avec :
- un retour d'état X (double)
- une commande JS que vous appelez Aleatoire (par ex.) et qui contient comme seul et unique code:
Code PHP :
Math.random(); 

Vous pouvez ensuite appeler la commande "Aleatoire" de l'équipement depuis n'importe quel automate et lire le résultat dans son état "X" ...

Si vous voulez vraiment faire une commande plus pratique encore en JS avec un min et un max (en entiers) vous mettez dans la commande "Aleatoire" un code du genre:

Code PHP :
min parseInt('{valeurMin}')|0;    // la commande accepte en paramètres une "valeurMin" et une "valeurMax". Attention, dans les automates ca doit être des "chaines" ...
max parseInt('{valeurMax}')|0;    // la fonction parseInt transforme la chaine en nombre entier. 
// Le "|0" sert juste à dire que si la conversion chaine->nombre a échoué, alors on utilise 0 (ca évite bien des soucis à la sauvegarde du JS)

=  Math.floor(Math.random() * (max min 1)) + min

Références:
http://stackoverflow.com/questions/15278...ific-range

Attention à bien laisser le temps à la commande JS de s'exécuter (ca va très vite normalement mais tout dépend de la charge de la LD) ... soit vous attendez x msec entre la commande et l'utilisation de l'état X (bof), soit vous synchronisez l'automate avec le JS (bien mieux): par ex. vous "attendez" que le JS renvoie dans un X une valeur différente de celle qui était connue juste avant d'appeler la commande "Aleatoire":

- VAR ancienX = monEquipementJS->Etat "X"
- ACTION monEquipementJS->Aleatoire
- WAIT Jusqu'à ce que: monEquipementJS->Etat "X" <> ancienX
- (utiliser la nouvelle valeur de monEquipementJS->Etat "X")


Pièces jointes Image(s)
   
www.osmotiq.com, domotique, développement logiciel et web -- tests & tutoriels KNX, Lifedomus, ZWave, etc.
Twitter: osmotiq
Répondre


Messages dans ce sujet
Simulation de présence - Fonction Random - par tilleul - 12-23-2014, 12:05 AM
Simulation de présence - Fonction Random - par Jlr - 11-24-2015, 04:19 PM

Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  Simulation de presence cybergui 4 7,159 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 23,118 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 18,179 08-27-2015, 09:24 AM
Dernier message: Domo
  Impossible de renommer une fonction AucuneID 3 5,908 01-14-2015, 07:13 PM
Dernier message: tilleul
  Démarrage automate en fonction d'une variable ngm47 4 7,471 06-02-2014, 01:50 PM
Dernier message: ngm47
  Lumière lors d'une présence extérieure [RESOLU] yanaka 4 7,602 01-08-2014, 03:28 PM
Dernier message: Olivier
  Erreur sur ma fonction WeekEnd ? AucuneID 4 6,541 12-31-2013, 06:16 PM
Dernier message: AucuneID
  Demande de fonction: reveil et retours de variables via appli smartphone/tablette! AucuneID 2 4,641 12-03-2013, 12:36 PM
Dernier message: Julien
  Fonction prenant des paramètres en entrée/sortie ? bizniouf 11 17,512 09-22-2013, 12:40 AM
Dernier message: bizniouf



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