ajout de 3 nouveau capteurs

multiple-captors
Nicolas FRANCO 2 years ago
parent 458907da11
commit 1ff0612e7a

@ -12,6 +12,8 @@ import javafx.scene.layout.StackPane;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import model.Capteur;
import model.CapteurIntervalle;
import model.CapteurRealiste;
import view.CapteurView;
import view.ImageCtrlView;
import view.ThermostatView;
@ -28,26 +30,35 @@ public class Launch extends Application {
@Override
public void start(Stage primaryStage) throws IOException, InterruptedException {
Capteur captor = new Capteur(1,"CapteurIncroyable", 15);
Capteur captorS = new Capteur(1,"Capteur Simple");
CapteurIntervalle captorI = new CapteurIntervalle(2,"Capteur Intervalle",0.0,10.0);
CapteurRealiste captorR = new CapteurRealiste(2,"Capteur Realiste", 5.0, 10.0);
// FXML NOT WORKING
/*Stage thermostatStage = new Stage();
CapteurView capteurView = new ImageCtrlView(captor,"view/Image.fxml","mon titre");
ThermostatView thermostatView = new ThermostatView(captor,"view/Thermostat.fxml","mon titre");
Random random = new Random();
*/
//Random random = new Random();
Thread t = new Thread() {
public void run() {
while (true) {
captor.setTemp(random.nextInt(30));
captorS.genTemp();
captorI.genTemp();
captorR.genTemp();
try {
sleep(1000);
System.out.println(captorS.getNom() + ": " + captorS.getTemp().getValue() + " °C");
System.out.println(captorI.getNom() + ": " + captorI.getTemp().getValue() + " °C");
System.out.println(captorR.getNom() + ": " + captorR.getTemp().getValue() + " °C");
sleep(4000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
};
t.start();*/
t.start();
}
}

@ -8,8 +8,8 @@ import java.util.Random;
public class Capteur extends CapteurAbstrait {
public Capteur(int id, String nom, double pTemp){
super(id,nom,pTemp);
public Capteur(int id, String nom){
super(id,nom);
}
@Override

@ -8,13 +8,14 @@ public abstract class CapteurAbstrait {
private String nom;
private ObjectProperty<Double> temp = new SimpleObjectProperty<>();
CapteurAbstrait(int id, String nom, Double temp){
CapteurAbstrait(int id, String nom){
this.id = id;
this.nom = nom;
this.temp.setValue(temp);
this.temp.setValue(0.0);
}
public abstract ObjectProperty<Double> genTemp();
/* Getters - Setters */
public int getId() {
return id;
}
@ -35,7 +36,8 @@ public abstract class CapteurAbstrait {
return temp;
}
public void setTemp(int pTemp) {
this.temp.set((double)pTemp);
public void setTemp(double pTemp) {
this.temp.setValue(pTemp);
}
}

@ -0,0 +1,14 @@
package model;
import javafx.beans.property.ObjectProperty;
public class CapteurCPU extends CapteurAbstrait {
CapteurCPU(int id, String nom) {
super(id, nom);
}
@Override
public ObjectProperty<Double> genTemp() {
return null;
}
}

@ -0,0 +1,34 @@
package model;
import javafx.beans.property.ObjectProperty;
import java.util.Random;
public class CapteurIntervalle extends CapteurAbstrait{
/*
Un capteur peut générer une température dont la valeur est aléatoire;
Les températures ne pouvant descendre sous un certain seuil, on veut
aussi un capteur plus réaliste qui génère des températures dont la valeur
est comprise dans un certain intervalle défini à la création (et dont le
minimum ne peut être inférieur à 0°K);
*/
public CapteurIntervalle(int id, String nom, Double minVal, Double maxVal){
super(id,nom);
// si min inférieur a zero, alors passe a 0
if(minVal < 0){
minVal = (double) 0;
}
this.minVal = minVal;
this.maxVal = maxVal;
}
private Double minVal;
private Double maxVal;
@Override
public ObjectProperty<Double> genTemp() {
Random rand = new Random();
double randomValue = rand.nextDouble(this.maxVal - this.minVal) + minVal;
this.setTemp(randomValue);
return this.getTemp();
}
}

@ -0,0 +1,40 @@
package model;
import javafx.beans.property.ObjectProperty;
import java.util.Random;
public class CapteurRealiste extends CapteurAbstrait{
/*
Pour rendre les variations plus réalistes on veut un capteur qui génère des
températures dont la variation est bornée en fonction d'un intervalle [-d;+d]
et d'une température initiale T (tous deux définis à la création)
t0 = T
ti+1 = ti + random(-d,+d)
*/
public CapteurRealiste(int id, String nom, double tZero, double borne) {
super(id, nom);
this.borne = borne;
this.tZero = tZero;
this.setTemp(tZero);
}
private Double borne;
private Double tZero;
@Override
public ObjectProperty<Double> genTemp() {
Random rand = new Random();
double randomValue = rand.nextDouble() * 2 * this.borne - this.borne;
/* rand.nextDouble fait un double entre 0 et 1.
* Ensuite on fait * 2*borne pour que l'intervale soit entre 0 et 2*borne.
* On soustrait borne après comme ça on a un nombre entre -borne et borne.
*/
double newTemp = this.getTemp().getValue() + randomValue; //tzero + random entre -borne et borne
this.setTemp(newTemp);
return this.getTemp();
}
}

@ -9,8 +9,8 @@ public class CapteurVirtuel extends CapteurAbstrait {
private List<CapteurAbstrait> capteurs;
CapteurVirtuel(List<CapteurAbstrait> cs, int id, String nom, Double temp){
super(id, nom, temp);
CapteurVirtuel(List<CapteurAbstrait> cs, int id, String nom){
super(id, nom);
this.capteurs = cs;
}
public void addCapteur(CapteurAbstrait c){
@ -22,6 +22,7 @@ public class CapteurVirtuel extends CapteurAbstrait {
}
@Override
// calcule la temperature moyenne des capteurs sa collection de capteurs
public ObjectProperty<Double> genTemp() {
ObjectProperty<Double> avg = new SimpleObjectProperty<>();
avg.setValue((double) 0);

Loading…
Cancel
Save