IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Simulateur données capteurs


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Points : 31
    Points
    31
    Par défaut Simulateur données capteurs
    Bonjour ,
    je veux créer un générateur de données capteurs de température pendant 24heurs ,pour cela je souhaite alors a partir d'un fichier texte récupéré mes température et les tester.
    contenue de mon fichier texte :
    Id_Cap_T Date de début L’heure_début L’heure_Fin Température
    010001 2013-12-18 00:00:00 01:00:00 15
    010001 2013-12-18 01:00:00 02:00:00 14
    010001 2013-12-18 02:00:00 03:00:00 13
    010001 2013-12-18 03:00:00 04:00:00 13
    010001 2013-12-18 04:00:00 05:00:00 12
    ... .... .... ..... .......
    010001 2013-12-18 23:00:00 00:00:00 15
    je veux alors tester 15>14 donc la température va diminuer d'un nombre aléatoire chaque 5seconde jusqu’à le 14
    quelqu’un peut m'aider pour monter ce programme .
    merci a vous
    cordialement

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    je veux alors tester 15>14 donc la température va diminuer d'un nombre aléatoire chaque 5seconde jusqu’à le 14
    mais encore ???
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Effectivement c'est un peu incompréhensible, peux-tu reformuler ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Bonjour ;
    je m'excuse peut être j'étais un peu ambigue dans mon explication ,
    j'explique :
    Mon fichier c'est le suivant :

    Id_Cap_T Date de début L’heure_début L’heure_Fin Température
    010001 2013-12-18 00:00:00 01:00:00 15
    010001 2013-12-18 01:00:00 02:00:00 14
    010001 2013-12-18 02:00:00 03:00:00 13
    010001 2013-12-18 03:00:00 04:00:00 13
    010001 2013-12-18 04:00:00 05:00:00 12
    ... .... .... ..... .......

    010001 2013-12-18 23:00:00 00:00:00 15
    On suppose que le délai entre deux prises de mesures = 5 Secondes
    on parcourant mon fichier je teste la température
    si Température_début>Température_Fin ici c'est le cas 15>14 alors dans ce cas je démuni ma température un nombre alétoire pour générer des donnée chaque 5seconde jusqu'a atteindre le 14
    par exemple:

    010001 2013-12-18 00:00:00 15
    010001 2013-12-18 00:00:05 14.95
    010001 2013-12-18 00:00:10 14.83
    010001 2013-12-18 00:00:15 14.60
    ... .... .... ....
    010001 2013-12-18 00:00:55 14.20
    010001 2013-12-18 01:00:00 14

    sion si Température_début<Température_Fin j'ajoute une valeur alétoire ainsi de suite .
    j'espère j'étais claire cette fois-ci
    merci a vous

  5. #5
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Ta demandes c'est : "comment faire une interpolation (avec eventuellement un peu de random) entre 2 chiffres" ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Ta demandes c'est : "comment faire une interpolation (avec eventuellement un peu de random) entre 2 chiffres" ?
    oui exactement ,je veux que mes valeurs seront proche de la réalité

  7. #7
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Bah, pour une interpolation basique entre 2 valeurs (ici 15 et 14) et avec un step 60/5 (donc une heure / 5 "minutes") tu peux faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int V1 = 14;
    int V2 = 15;
    int step = 60/5;
    for (int i = 1; i < step; i++)
    {
    	float interpol = (float)(i)/step;
    	float val = V1 * (1-interpol) + V2 * (interpol);
    	System.err.println("=="+val);
    }
    Après faire une interpolation ne rendras pas ca plus réel ...
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    d'accord ,merci
    je vais essayer et je vais vous dire ce qui me donne comme résulat

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    ==14.916667
    ==14.833334
    ==14.75
    ==14.666666
    ==14.583334
    ==14.5
    ==14.416666
    ==14.333334
    ==14.25
    ==14.166666
    ==14.083334
    ==14.916667
    ==14.833334
    ==14.75
    ==14.666666
    ==14.583334
    ==14.5
    ==14.416666
    ==14.333334
    ==14.25
    ==14.166666
    ==14.083334
    ==14.916667
    ==14.833334
    ==14.75
    ==14.666666
    ==14.583334
    ==14.5
    ==14.416666
    ==14.333334
    ==14.25
    ==14.166666
    ==14.083334
    oui ça marche mais ça ressemble pas a la réalité c'est vrai ,donc je cherche une façon a simuler des données un peut proche a la réalité ou le changement ne se fait pas a chaque fois genre un aléatoire contrôlé,c'est a dire je cherche a avoir ce journal par exemple :

    14
    14.10
    14.15
    14.15
    15.15
    14.15
    14.2
    ...
    ...
    14.7
    14.7
    14.8
    14.9
    14.9
    14.9
    ...
    tout simplement des données qui ressemble a des donnée température ,est ce qu'il y a une fonction en java qui va me permette faire ça ?
    merci

  10. #10
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Pour obtenir une valeur aléatoire il y'a

    Mais une documentation plus complète est disponible ici même
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Bonjour ,

    merci beaucoup wax78 je vais lire le tuto et revenir vert vous

    cordialement

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Bonsoir ,
    voila mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    float temperature[] = {15,14,13,13,12,11,11,12,14,16,18,20,21,22,22,22,22,21,20,19,18,17,16};//24 valeurs température pendant 24heurs
    	float random[] = new float[12];
    	for(int i=0;i<22;i++)
    	{
    		{
    		if(temperature[i]>temperature[i+1])
     
    			for(int j=0;j<12;j++)
    			{
    			random [j]= (float)(Math.random() * (temperature[i]-temperature[i+1])) + temperature[i+1];
    			System.out.printf("%.1f\n",random[j]);
     
    			}
     
     
    		else
     
    			for(int j=0;j<12;j++)
    			{
    			random[j] = (float)(Math.random() * (temperature[i+1]-temperature[i])) + temperature[i];
    			System.out.printf("%.1f\n",random[j]);
     
    			}
     
    		System.out.print("\n");
    		}				
    	}
    Résulat est la suivante :
    14,6
    14,4
    14,6
    14,4
    14,5
    14,4
    14,8
    14,3
    14,7
    14,3

    13,5
    13,4
    13,3
    13,4
    13,0
    13,7
    13,8
    13,2
    13,6
    13,5

    13,0
    13,0
    13,0
    13,0
    13,0
    13,0
    13,0
    13,0
    13,0
    13,0

    12,2
    12,0
    12,0
    12,7
    12,2
    12,2
    12,1
    12,2
    12,5
    12,6

    11,5
    12,0
    11,8
    11,4
    11,2
    11,8
    11,9
    11,7
    11,2
    11,6

    11,0
    11,0
    11,0
    11,0
    11,0
    11,0
    11,0
    11,0
    11,0
    11,0

    11,1
    11,5
    11,2
    11,1
    11,2
    11,0
    11,4
    11,7
    11,9
    11,2

    12,7
    13,1
    13,6
    12,0
    12,2
    13,2
    13,7
    13,0
    13,4
    13,2

    16,0
    15,9
    15,0
    15,4
    16,0
    15,1
    14,0
    15,2
    14,7
    15,5

    16,8
    17,7
    16,3
    16,3
    16,4
    17,1
    16,8
    16,8
    16,5
    16,8

    19,7
    18,1
    18,9
    19,7
    18,1
    20,0
    19,2
    18,8
    18,3
    19,4

    21,0
    20,7
    20,1
    20,0
    20,4
    20,4
    20,0
    20,5
    20,1
    20,2

    21,8
    21,6
    21,8
    21,8
    21,4
    21,8
    21,2
    21,5
    22,0
    21,5

    22,0
    22,0
    22,0
    22,0
    22,0
    22,0
    22,0
    22,0
    22,0
    22,0

    22,0
    22,0
    22,0
    22,0
    22,0
    22,0
    22,0
    22,0
    22,0
    22,0

    22,0
    22,0
    22,0
    22,0
    22,0
    22,0
    22,0
    22,0
    22,0
    22,0

    21,3
    21,3
    22,0
    21,6
    21,9
    21,9
    21,6
    21,1
    22,0
    21,9

    20,1
    20,8
    20,4
    20,4
    20,7
    20,3
    20,7
    20,6
    21,0
    20,1

    19,9
    19,3
    19,7
    19,5
    19,1
    19,9
    19,7
    19,2
    19,9
    19,4

    18,9
    18,8
    18,7
    18,7
    18,6
    18,4
    18,7
    19,0
    18,9
    18,9

    17,4
    17,5
    17,7
    17,4
    17,5
    17,3
    17,6
    17,9
    18,0
    17,2

    16,2
    16,9
    16,5
    16,0
    16,3
    16,1
    16,1
    16,5
    16,1
    16,7
    pas mal comme résultat ,maintenant comment ajouter la notion de temps je veux que chaque 5seconde on me génère une donnée ,comment récupéré l'heur système puis sauvegarder chaque valeur généré chaque 5seconde de la manière suivante :
    Id_capteur Date L’heure de début Le température
    010001 2013-11-01 00:00:00 15
    010001 2013-11-01 00:00:05 15
    010001 2013-11-01 00:00:10 15
    010001 2013-11-01 00:00:20 15
    010001 2013-11-01 00:00:25 15
    010001 2013-11-01 00:00:30 15
    010001 2013-11-01 00:00:35 15
    010001 2013-11-01 00:00:40 14.95
    010001 2013-11-01 00:00:45 14.95
    010001 2013-11-01 00:00:50 14.95
    010001 2013-11-01 00:00:55 14.85
    010001 2013-11-01 00:01:00 14.85
    010001 2013-11-01 00:01:05 14.85
    010001 2013-11-01 00:01:10 14.85
    010001 2013-11-01 00:01:15 14.85
    010001 2013-11-01 00:01:20 14.85
    010001 2013-11-01 00:01:25 14.85
    010001 2013-11-01 00:01:30 14.85
    010001 2013-11-01 00:01:35 14.85
    010001 2013-11-01 00:00:40 14.85
    010001 2013-11-01 00:00:45 14.75
    … … … …
    … … … …
    … … … …
    010001 2013-11-01 01:00:00 14


    merci pour votre aide
    cordialement

  13. #13
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par miss_ana Voir le message
    Bonsoir ,
    voila mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float temperature[] = {15,14,13,13,12,11,11,12,14,16,18,20,21,22,22,22,22,21,20,19,18,17,16};//24 valeurs température pendant 24heurs
    Tu es au courant que tu as 23 valeurs là, pas 24?


    Citation Envoyé par miss_ana Voir le message
    comment récupéré l'heur système
    simplement en faisant un new Date()
    Citation Envoyé par miss_ana Voir le message
    puis sauvegarder chaque valeur générée chaque 5 secondes de la manière suivante :
    Pour changer les minutes / secondes : Passer par un Calendar et utiliser ses méthodes get/set
    Pour formater la date, utiliser SimpleDateFormat
    Pour écrire dans le fichier, utiliser un Writer

    Ps: ton code ne génère pas toutes les 5 secondes mais toutes les 5 minutes pour le moment. Il ne correspond pas à ton critère de base qui était une progression entre tes deux valeurs. Là tu te contente d'osciller entre les valeurs. Tu simule donc seulement un capteur instable.

  14. #14
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Tu es au courant que tu as 23 valeurs là, pas 24?
    j'ai oublié une valeur de l'intervalle [23h-00h] merci pour votre attention

    Pour changer les minutes / secondes : Passer par un Calendar et utiliser ses méthodes get/set
    est ce que vous pouvez si c'est possible me faire un petit exemple.


    Ps: ton code ne génère pas toutes les 5 secondes mais toutes les 5 minutes pour le moment.
    oui juste pour simplifier l'affichage.
    Il ne correspond pas à ton critère de base qui était une progression entre tes deux valeurs. Là tu te contente d'osciller entre les valeurs.
    justement j'ai pas trouvé une autre manière de la faire ,et pire je dois simuler plusieur capteur donc je commence a douté de ma solution ,donc si vous avez des suggestions ,des idée n'hésitez pas surtout a me les partager.

    Tu simule donc seulement un capteur instable.
    j'ai pas compris :s tu peux m'expliquer stp

    merci beaucoup

  15. #15
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par miss_ana Voir le message
    est ce que vous pouvez si c'est possible me faire un petit exemple.
    Il y a tout ce qu'il faut comme exemple dans la javadoc du Calendar.


    justement j'ai pas trouvé une autre manière de la faire ,et pire je dois simuler plusieur capteur donc je commence a douté de ma solution ,donc si vous avez des suggestions ,des idée n'hésitez pas surtout a me les partager.
    Commence par prendre des mesures réelles d'un capteur toutes les 5 secondes, et compare les à des mesures toutes les heures, et regarde comment l'un se comporte par rapport à l'autre. Après seulement, tu pourra avoir une vague idée de comment simuler l'un à partir de l'autre.... Ca dépend de beaucoup de paramètres: la latence du capteur que tu veux simuler, la manière dont les données horaires ont été obtenues (mesure ponctuelle, ou moyenne sur la période...), le biais temporel du capteur, sa précision, ...

    A noter que si ce sont des mesures de températures extérieures, tu peux très bien avoir des pics (vers les haut ou vers les bas) de courte durée lors du passage d'un front orageux, par exemple.

    j'ai pas compris :s tu peux m'expliquer stp

    merci beaucoup
    Ben quelque chose qui oscille (fortement) autour d'une moyenne de manière chaotique, c'est un capteur qui n'a aucune stabilité dans le temps.

  16. #16
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Commence par prendre des mesures réelles d'un capteur toutes les 5 secondes, et compare les à des mesures toutes les heures, et regarde comment l'un se comporte par rapport à l'autre.
    au faite les capteurs ne représente pas mon domaine ,J’ai un projet à réaliser qui se base sur des données temps réel issues de capteur puisque je ne possède pas la possibilité d’avoir accès au données capteur je souhaite les simuler et les récupérés sur un fichier texte (type capteur ,date,heure,longitude-latitude,température,humidité,pression atmosphère,pluie,vitesse de vent)
    pour cela j'ai besoin de créer un générateur de donnée capteurs donc je sais pas s c'est nécessaire de mettre en considérations les paramètres que tu viens de dire.

    simplement ,ce que je veux comment extraire une quantité de données en temps réel ,un programme qui lit mes donnée, et "attende" un certain temps (5secondes) pour générer une autre données .
    j'espère que j'étais assez claire et merci beaucoup pour votre aide

  17. #17
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while(onTourne){
         genererUneDonnee()
         Thread.sleep(5*1000);
    }
    En gros.

Discussions similaires

  1. Simulation d'importation de données capteurs
    Par number9 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/03/2012, 13h40
  2. utiliser des données de capteur
    Par francois baret dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 15/04/2010, 17h04
  3. le simulateur simgrid pour la distribution de données
    Par ch_amina dans le forum Réseau
    Réponses: 0
    Dernier message: 14/04/2010, 10h41
  4. [VBA-E] Récupérer les données d'un capteur en USB
    Par $p00ky dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/05/2006, 15h29
  5. Utiliser le C pour récuperer données d'un capteur
    Par Malek_BAKLOUTI dans le forum C
    Réponses: 12
    Dernier message: 05/10/2005, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo