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

@ -2,13 +2,25 @@ package model;
import javafx.beans.property.ObjectProperty;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class CapteurCPU extends CapteurAbstrait {
CapteurCPU(int id, String nom) {
public CapteurCPU(int id, String nom) {
super(id, nom);
}
@Override
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 java.util.List;
import java.util.Map;
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);
this.capteurs = cs;
}
public void addCapteur(CapteurAbstrait c){
capteurs.add(c);
public void addCapteur(CapteurAbstrait c, int p){
this.capteurs.put(c,p);
}
public void removeCapteur(CapteurAbstrait c){
capteurs.remove(c);
this.capteurs.remove(c);
}
@Override
// calcule la temperature moyenne des capteurs sa collection de capteurs
public ObjectProperty<Double> genTemp() {
ObjectProperty<Double> avg = new SimpleObjectProperty<>();
avg.setValue((double) 0);
for (CapteurAbstrait c: capteurs) {
avg.setValue(c.genTemp().getValue() + avg.getValue());
double sum = 0;
int count = 0;
for (Map.Entry<CapteurAbstrait, Integer> entry : capteurs.entrySet()) {
CapteurAbstrait c = entry.getKey();
int p = entry.getValue();
sum += c.getTemp().getValue() * p;
count += p;
}
avg.set(avg.getValue()/capteurs.size());
return avg;
double avg = sum / count;
ObjectProperty<Double> avgProp = new SimpleObjectProperty<>(avg);
return avgProp;
}
}

Loading…
Cancel
Save