capteur CPU done + ajout map dans capteur virtuel

multiple-captors
Nicolas FRANCO 2 years ago
parent 1ff0612e7a
commit 9b4b0e7180

@ -12,6 +12,7 @@ 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.CapteurCPU;
import model.CapteurIntervalle; import model.CapteurIntervalle;
import model.CapteurRealiste; import model.CapteurRealiste;
import view.CapteurView; import view.CapteurView;
@ -32,7 +33,8 @@ public class Launch extends Application {
public void start(Stage primaryStage) throws IOException, InterruptedException { public void start(Stage primaryStage) throws IOException, InterruptedException {
Capteur captorS = new Capteur(1,"Capteur Simple"); Capteur captorS = new Capteur(1,"Capteur Simple");
CapteurIntervalle captorI = new CapteurIntervalle(2,"Capteur Intervalle",0.0,10.0); CapteurIntervalle captorI = new CapteurIntervalle(2,"Capteur Intervalle",0.0,10.0);
CapteurRealiste captorR = new CapteurRealiste(2,"Capteur Realiste", 5.0, 10.0); CapteurRealiste captorR = new CapteurRealiste(3,"Capteur Realiste", 5.0, 10.0);
CapteurCPU captorC = new CapteurCPU(4,"Capteur CPU");
// FXML NOT WORKING // FXML NOT WORKING
/*Stage thermostatStage = new Stage(); /*Stage thermostatStage = new Stage();
@ -47,10 +49,12 @@ public class Launch extends Application {
captorS.genTemp(); captorS.genTemp();
captorI.genTemp(); captorI.genTemp();
captorR.genTemp(); captorR.genTemp();
captorC.genTemp();
try { try {
System.out.println(captorS.getNom() + ": " + captorS.getTemp().getValue() + " °C"); System.out.println(captorS.getNom() + ": " + captorS.getTemp().getValue() + " °C");
System.out.println(captorI.getNom() + ": " + captorI.getTemp().getValue() + " °C"); System.out.println(captorI.getNom() + ": " + captorI.getTemp().getValue() + " °C");
System.out.println(captorR.getNom() + ": " + captorR.getTemp().getValue() + " °C"); System.out.println(captorR.getNom() + ": " + captorR.getTemp().getValue() + " °C");
System.out.println(captorC.getNom() + ": " + captorC.getTemp().getValue() + " °C");
sleep(4000); sleep(4000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
throw new RuntimeException(e); throw new RuntimeException(e);

@ -2,13 +2,25 @@ package model;
import javafx.beans.property.ObjectProperty; import javafx.beans.property.ObjectProperty;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class CapteurCPU extends CapteurAbstrait { public class CapteurCPU extends CapteurAbstrait {
CapteurCPU(int id, String nom) { public CapteurCPU(int id, String nom) {
super(id, nom); super(id, nom);
} }
@Override @Override
public ObjectProperty<Double> genTemp() { public ObjectProperty<Double> genTemp() {
return null; try{
String temp = new String(Files.readAllBytes(Paths.get("/sys/class/thermal/thermal_zone0/temp")));
double tempClesius = Double.parseDouble(temp)/1000.0;
this.setTemp(tempClesius);
} catch (IOException e) {
throw new RuntimeException(e);
}
return this.getTemp();
} }
} }

@ -4,33 +4,37 @@ import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleObjectProperty;
import java.util.List; import java.util.List;
import java.util.Map;
public class CapteurVirtuel extends CapteurAbstrait { public class CapteurVirtuel extends CapteurAbstrait {
private List<CapteurAbstrait> capteurs; private Map<CapteurAbstrait, Integer> capteurs;
CapteurVirtuel(List<CapteurAbstrait> cs, int id, String nom){ CapteurVirtuel(Map<CapteurAbstrait, Integer> cs, int id, String nom){
super(id, nom); super(id, nom);
this.capteurs = cs; this.capteurs = cs;
} }
public void addCapteur(CapteurAbstrait c){ public void addCapteur(CapteurAbstrait c, int p){
capteurs.add(c); this.capteurs.put(c,p);
} }
public void removeCapteur(CapteurAbstrait c){ public void removeCapteur(CapteurAbstrait c){
capteurs.remove(c); this.capteurs.remove(c);
} }
@Override @Override
// calcule la temperature moyenne des capteurs sa collection de capteurs // calcule la temperature moyenne des capteurs sa collection de capteurs
public ObjectProperty<Double> genTemp() { public ObjectProperty<Double> genTemp() {
ObjectProperty<Double> avg = new SimpleObjectProperty<>(); double sum = 0;
avg.setValue((double) 0); int count = 0;
for (Map.Entry<CapteurAbstrait, Integer> entry : capteurs.entrySet()) {
for (CapteurAbstrait c: capteurs) { CapteurAbstrait c = entry.getKey();
avg.setValue(c.genTemp().getValue() + avg.getValue()); int p = entry.getValue();
sum += c.getTemp().getValue() * p;
count += p;
} }
avg.set(avg.getValue()/capteurs.size()); double avg = sum / count;
return avg; ObjectProperty<Double> avgProp = new SimpleObjectProperty<>(avg);
return avgProp;
} }
} }

Loading…
Cancel
Save