import java.util.Vector; import oakRH.OakUsbRH; import oakSensor.OakMemoryMode; import oakSensor.OakReportMode; public class TempHumSensor implements Runnable{ private int time; private OakUsbRH rhSensor; private float humidity; private float temperature; private float oldTemperature; private Vector<TemperatureListener> vectTempListener; private Boolean first; public TempHumSensor(int t, OakUsbRH rhSensor) { this.time = t; this.rhSensor = rhSensor; this.vectTempListener = new Vector<TemperatureListener>(); this.first = true; try { rhSensor.openSensor(); rhSensor.setReportMode(OakReportMode.REPORT_MODE_FIXED_RATE, OakMemoryMode.RAM); rhSensor.setReportRate(500, OakMemoryMode.RAM); } catch (Exception e) { e.printStackTrace(); } } public void run() { try { while (rhSensor.isOpened()) { byte[] data = null; data = rhSensor.readData(); this.oldTemperature = this.temperature; setHumidity(Math.round(rhSensor.getHumidity(data)*1e-4*100)); setTemperature(Math.round(rhSensor.getTemperature(data)*1e-2-273.15)); if (this.first) { System.out.println("Première température :" + this.temperature); this.first = false; } if ((this.oldTemperature < 30) && (this.temperature >= 30)) { fireTemperatureEvent(); } if ((this.oldTemperature > 27) && (this.temperature <= 27)) { fireTemperatureEvent(); } Thread.sleep(time); } } catch (Exception e) { e.printStackTrace(); } } public void fireTemperatureEvent() { if(!vectTempListener.isEmpty()) { TemperatureEvent te = new TemperatureEvent(this, this.temperature); for (TemperatureListener tl : vectTempListener) { tl.temperatureAlarm(te); } } } public void stop() { } public float getHumidity() { return humidity; } private void setHumidity(float humidity) { this.humidity = humidity; } public float getTemperature() { return temperature; } private void setTemperature(float temperature) { this.temperature = temperature; } public void addTemperatureListener(TemperatureListener tl) { this.vectTempListener.add(tl); } public void removeTemperatureListener(TemperatureListener tl) { this.vectTempListener.remove(tl); } }