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.scene.text.Text;
import javafx.stage.Stage; import javafx.stage.Stage;
import model.Capteur; import model.Capteur;
import model.CapteurIntervalle;
import model.CapteurRealiste;
import view.CapteurView; import view.CapteurView;
import view.ImageCtrlView; import view.ImageCtrlView;
import view.ThermostatView; import view.ThermostatView;
@ -28,26 +30,35 @@ public class Launch extends Application {
@Override @Override
public void start(Stage primaryStage) throws IOException, InterruptedException { 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(); /*Stage thermostatStage = new Stage();
CapteurView capteurView = new ImageCtrlView(captor,"view/Image.fxml","mon titre"); CapteurView capteurView = new ImageCtrlView(captor,"view/Image.fxml","mon titre");
ThermostatView thermostatView = new ThermostatView(captor,"view/Thermostat.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() { Thread t = new Thread() {
public void run() { public void run() {
while (true) { while (true) {
captor.setTemp(random.nextInt(30)); captorS.genTemp();
captorI.genTemp();
captorR.genTemp();
try { 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) { } catch (InterruptedException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
} }
}; };
t.start();*/ t.start();
} }
} }

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

@ -8,13 +8,14 @@ public abstract class CapteurAbstrait {
private String nom; private String nom;
private ObjectProperty<Double> temp = new SimpleObjectProperty<>(); private ObjectProperty<Double> temp = new SimpleObjectProperty<>();
CapteurAbstrait(int id, String nom, Double temp){ CapteurAbstrait(int id, String nom){
this.id = id; this.id = id;
this.nom = nom; this.nom = nom;
this.temp.setValue(temp); this.temp.setValue(0.0);
} }
public abstract ObjectProperty<Double> genTemp(); public abstract ObjectProperty<Double> genTemp();
/* Getters - Setters */
public int getId() { public int getId() {
return id; return id;
} }
@ -35,7 +36,8 @@ public abstract class CapteurAbstrait {
return temp; return temp;
} }
public void setTemp(int pTemp) { public void setTemp(double pTemp) {
this.temp.set((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; private List<CapteurAbstrait> capteurs;
CapteurVirtuel(List<CapteurAbstrait> cs, int id, String nom, Double temp){ CapteurVirtuel(List<CapteurAbstrait> cs, int id, String nom){
super(id, nom, temp); super(id, nom);
this.capteurs = cs; this.capteurs = cs;
} }
public void addCapteur(CapteurAbstrait c){ public void addCapteur(CapteurAbstrait c){
@ -22,6 +22,7 @@ public class CapteurVirtuel extends CapteurAbstrait {
} }
@Override @Override
// calcule la temperature moyenne des capteurs sa collection de capteurs
public ObjectProperty<Double> genTemp() { public ObjectProperty<Double> genTemp() {
ObjectProperty<Double> avg = new SimpleObjectProperty<>(); ObjectProperty<Double> avg = new SimpleObjectProperty<>();
avg.setValue((double) 0); avg.setValue((double) 0);

Loading…
Cancel
Save