Oregon is now registering unregistered reception
This commit is contained in:
parent
3574f7a433
commit
5351e56be7
3 changed files with 36 additions and 16 deletions
|
|
@ -229,8 +229,13 @@ public class TellstickSerialComm implements Runnable,
|
||||||
"Device config is not an instance of "+TellstickDevice.class+": "+sensor.getClass());
|
"Device config is not an instance of "+TellstickDevice.class+": "+sensor.getClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<TellstickDevice> getRegisteredDevices(){
|
public <T> List<T> getRegisteredDevices(Class<T> clazz){
|
||||||
return registeredDevices;
|
ArrayList<T> list = new ArrayList<>();
|
||||||
|
for (TellstickDevice device : registeredDevices){
|
||||||
|
if (clazz.isAssignableFrom(device.getClass()))
|
||||||
|
list.add((T) device);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,9 @@ public class Oregon0x1A2D implements HalSensorConfig,TellstickDevice {
|
||||||
|
|
||||||
|
|
||||||
public Oregon0x1A2D() { }
|
public Oregon0x1A2D() { }
|
||||||
public Oregon0x1A2D(int address) {
|
public Oregon0x1A2D(int address, OregonSensorType sensorType) {
|
||||||
this.address = address;
|
this.address = address;
|
||||||
|
this.sensorType = sensorType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,36 +63,50 @@ public class Oregon0x1A2DProtocol extends TellstickProtocol {
|
||||||
temperature = -temperature;
|
temperature = -temperature;
|
||||||
double humidity = (hum1 * 10.0) + hum2;
|
double humidity = (hum1 * 10.0) + hum2;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Create return objects
|
// Create return objects
|
||||||
|
boolean humidityFound=false, temperatureFound=false;
|
||||||
ArrayList<TellstickDecodedEntry> list = new ArrayList<>();
|
ArrayList<TellstickDecodedEntry> list = new ArrayList<>();
|
||||||
for (Oregon0x1A2D device : getSensorByAddress(address)) {
|
for (Oregon0x1A2D device : TellstickSerialComm.getInstance().getRegisteredDevices(Oregon0x1A2D.class)) {
|
||||||
|
if (device.getAddress() != address)
|
||||||
|
continue;
|
||||||
HalSensorData dataObj;
|
HalSensorData dataObj;
|
||||||
OregonSensorType sensorType = device.getSensorType();
|
OregonSensorType sensorType = device.getSensorType();
|
||||||
if (sensorType == null)
|
if (sensorType == null)
|
||||||
sensorType = OregonSensorType.POWER;
|
sensorType = OregonSensorType.POWER;
|
||||||
switch (sensorType){
|
switch (sensorType){
|
||||||
case HUMIDITY:
|
case HUMIDITY:
|
||||||
dataObj = new HumiditySensorData(humidity); break;
|
dataObj = new HumiditySensorData(humidity);
|
||||||
|
humidityFound = true;
|
||||||
|
break;
|
||||||
case LIGHT:
|
case LIGHT:
|
||||||
dataObj = new LightSensorData(temperature); break;
|
dataObj = new LightSensorData(temperature);
|
||||||
|
temperatureFound = true;
|
||||||
|
break;
|
||||||
case TEMPERATURE:
|
case TEMPERATURE:
|
||||||
dataObj = new TemperatureSensorData(temperature); break;
|
dataObj = new TemperatureSensorData(temperature);
|
||||||
|
temperatureFound = true;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
case POWER:
|
case POWER:
|
||||||
dataObj = new PowerConsumptionSensorData(temperature); break;
|
dataObj = new PowerConsumptionSensorData(temperature);
|
||||||
|
temperatureFound = true;
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
list.add(new TellstickDecodedEntry(device, dataObj));
|
list.add(new TellstickDecodedEntry(device, dataObj));
|
||||||
}
|
}
|
||||||
return list;
|
// Add new sensors if we did not find a registered one
|
||||||
}
|
if (!temperatureFound)
|
||||||
|
list.add(new TellstickDecodedEntry(
|
||||||
|
new Oregon0x1A2D(address, OregonSensorType.TEMPERATURE),
|
||||||
|
new TemperatureSensorData(temperature)));
|
||||||
|
if (!humidityFound)
|
||||||
|
list.add(new TellstickDecodedEntry(
|
||||||
|
new Oregon0x1A2D(address, OregonSensorType.HUMIDITY),
|
||||||
|
new HumiditySensorData(humidity)));
|
||||||
|
|
||||||
private List<Oregon0x1A2D> getSensorByAddress(int address){
|
|
||||||
ArrayList<Oregon0x1A2D> list = new ArrayList<>();
|
|
||||||
for (TellstickDevice device : TellstickSerialComm.getInstance().getRegisteredDevices()){
|
|
||||||
if (device instanceof Oregon0x1A2D && ((Oregon0x1A2D) device).getAddress() == address)
|
|
||||||
list.add((Oregon0x1A2D) device);
|
|
||||||
}
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue