Логика симуляции сенсоров температуры и влажности

This commit is contained in:
2025-02-11 00:48:08 +03:00
parent 5b753c1dda
commit d8a6c256d5

View File

@@ -1,15 +1,50 @@
package ru.spbstu.telematics.java; package ru.spbstu.telematics.java;
import java.util.Random;
/* /*
* Симулирует работу сенсоров, установленных в комнате. * Симулирует работу сенсоров, установленных в комнате.
*/ */
public class Sensor implements Runnable { public class Sensor implements Runnable {
Room room; private Room room;
private double temperature;
private double humidity; public Sensor(Room room) {
this.room = room;
}
// Температура
private volatile double temperature;
public double getTemperature() {
return temperature;
}
// Влажность
private volatile double humidity;
public double getHumidity() {
return humidity;
}
// Частота считывания значений с сенсоров
private long updateIntervalMs = 1000;
// Параметры произвольной ошибки измерений сенсоров
private Random random = new Random();
private double maxTemperatureError = 0.5;
private double maxHumidityError = 0.02;
@Override @Override
public void run() { public void run() {
while (!Thread.interrupted()) {
temperature = room.getTemperature() + (random.nextDouble() - 0.5) * 2 * maxTemperatureError;
humidity = room.getHumidity() + (random.nextDouble() - 0.5) * 2 * maxHumidityError;
try {
Thread.sleep(updateIntervalMs);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
} }
} }