1
0

fix everything for merge Field

This commit is contained in:
Rémi Heredero 2023-06-07 13:42:14 +02:00
parent d88329a50b
commit 5878750109
7 changed files with 31 additions and 13 deletions

View File

@ -1,6 +1,7 @@
package ch.hevs.isi; package ch.hevs.isi;
import ch.hevs.isi.db.DatabaseConnector; import ch.hevs.isi.db.DatabaseConnector;
import ch.hevs.isi.field.FieldConnector;
import ch.hevs.isi.utils.Utility; import ch.hevs.isi.utils.Utility;
import ch.hevs.isi.web.WebConnector; import ch.hevs.isi.web.WebConnector;
@ -87,18 +88,22 @@ public class MinecraftController {
} }
// Initialize the database connector // Initialize the database connector
if((dbProtocol != null) && (dbHostName != null)){
DatabaseConnector.url = dbProtocol+ "://" + dbHostName;
DatabaseConnector.getMySelf().initialize(dbProtocol+ "://" + dbHostName);
}
if(dbName != null){ if(dbName != null){
DatabaseConnector.org = dbName; DatabaseConnector.org = dbName;
} }
if(dbUserName != null){ if(dbUserName != null){
DatabaseConnector.bucket = dbUserName; DatabaseConnector.bucket = dbUserName;
} }
if((dbProtocol != null) && (dbHostName != null)){
DatabaseConnector.url = dbProtocol+ "://" + dbHostName;
Utility.pDebug("Database URL: " + DatabaseConnector.url);
Utility.pDebug("Config: " + properties.getProperty("DB.URL"));
DatabaseConnector.getMySelf().initialize(DatabaseConnector.url);
}
// Initialize the Modbus TCP connector // Initialize the Modbus TCP connector
FieldConnector.getMySelf().initialize(modbusTcpHost, modbusTcpPort,"src/main/resources/ModbusMap.csv");
// Initialize the web server // Initialize the web server

View File

@ -178,7 +178,7 @@ public class DatabaseConnector implements DataPointListener {
*/ */
@Override @Override
public void onNewValue(DataPoint dp) { public void onNewValue(DataPoint dp) {
if(dp.getLabel().equals("CLOAK_FLOAT")) { if(dp.getLabel().equals("CLOCK_FLOAT")) {
FloatDataPoint fdp = (FloatDataPoint) dp; FloatDataPoint fdp = (FloatDataPoint) dp;
_timeManager.setTimestamp(fdp.getValue()); _timeManager.setTimestamp(fdp.getValue());
_timestamp = _timeManager.getNanosForDB(); _timestamp = _timeManager.getNanosForDB();

View File

@ -20,6 +20,9 @@ public class BooleanRegister extends ModbusRegister{
} }
@Override @Override
public void read() { public void read() {
if(bdp.isOutput()){
return; //if it is an output datapoint, it is not read
}
bdp.setValue(ModbusAccessor.getMySelf().readBoolean(this.getAddress())); //read the value bdp.setValue(ModbusAccessor.getMySelf().readBoolean(this.getAddress())); //read the value
} }

View File

@ -15,6 +15,7 @@ public class FieldConnector implements DataPointListener {
private FieldConnector(){ private FieldConnector(){
initialize("LocalHost",1502, "src/main/resources/ModbusMap.csv"); initialize("LocalHost",1502, "src/main/resources/ModbusMap.csv");
DataPointListener.subscribeUpdate(this);
} }
/** /**
@ -44,10 +45,10 @@ public class FieldConnector implements DataPointListener {
String[] splitLine = line.split(";"); // split line between ";" String[] splitLine = line.split(";"); // split line between ";"
String label = splitLine[0]; // first split is the label of the register String label = splitLine[0]; // first split is the label of the register
boolean isOutput = splitLine[3].equals("N"); // third split declares if it is an output boolean isOutput = splitLine[3].equals("Y"); // third split declares if it is an output
int address = new Integer((splitLine[4])); // fourth split is the address of the register int address = new Integer((splitLine[4])); // fourth split is the address of the register
float range = new Float(splitLine[5]); // if it is a floatDatapoint, the fifth split is the range of the data int range = new Integer(splitLine[5]); // if it is a floatDatapoint, the fifth split is the range of the data
float offset = new Float(splitLine[6]); // if it is a floatDatapoint, the sixth split is the offset of the data int offset = new Integer(splitLine[6]); // if it is a floatDatapoint, the sixth split is the offset of the data
// create a float or a boolean register and put it in the map of registers // create a float or a boolean register and put it in the map of registers

View File

@ -8,6 +8,8 @@ import java.util.HashMap;
public class FloatRegister extends ModbusRegister{ public class FloatRegister extends ModbusRegister{
private Float value; private Float value;
private FloatDataPoint fdp; private FloatDataPoint fdp;
private int range;
private int offset;
/** /**
* public constructor of the Float Register * public constructor of the Float Register
@ -18,14 +20,22 @@ public class FloatRegister extends ModbusRegister{
* @param range range of the datapoint value * @param range range of the datapoint value
* @param offset offset of the datapoint value * @param offset offset of the datapoint value
*/ */
public FloatRegister(String label, boolean isOutPut, int address, float range, float offset) { public FloatRegister(String label, boolean isOutPut, int address, int range, int offset) {
this.fdp = new FloatDataPoint(label, isOutPut); //create an empty datapoint for the NullPointerException this.fdp = new FloatDataPoint(label, isOutPut); //create an empty datapoint for the NullPointerException
updateMapOfRegisters(label,address); //add the address to the map updateMapOfRegisters(label,address); //add the address to the map
this.range = range;
this.offset = offset;
} }
@Override @Override
public void read() { public void read() {
fdp.setValue(ModbusAccessor.getMySelf().readFloat(this.getAddress())); //read the value if(fdp.isOutput()){
return; //if it is an output datapoint, it is not read
}
Float value = ModbusAccessor.getMySelf().readFloat(this.getAddress()); //read the value
value = value * range;
value = value + offset;
fdp.setValue(value);
} }
@Override @Override

View File

@ -13,7 +13,7 @@ BUNKER_P_FLOAT;F;Y;N;93;500;0
WIND_FLOAT;F;Y;N;301;1;0 WIND_FLOAT;F;Y;N;301;1;0
WEATHER_FLOAT;F;Y;N;305;1;0 WEATHER_FLOAT;F;Y;N;305;1;0
WEATHER_FORECAST_FLOAT;F;Y;N;309;1;0 WEATHER_FORECAST_FLOAT;F;Y;N;309;1;0
WEATHER_COUNTDOWN_FLOAT;F;Y;;313;600;0 WEATHER_COUNTDOWN_FLOAT;F;Y;N;313;600;0
CLOCK_FLOAT;F;Y;N;317;1;0 CLOCK_FLOAT;F;Y;N;317;1;0
REMOTE_COAL_SP;F;Y;Y;209;1;0 REMOTE_COAL_SP;F;Y;Y;209;1;0
REMOTE_FACTORY_SP;F;Y;Y;205;1;0 REMOTE_FACTORY_SP;F;Y;Y;205;1;0

1 Label Type [FLOAT|Boolean] Input Output Address Range Offset
13 WIND_FLOAT F Y N 301 1 0
14 WEATHER_FLOAT F Y N 305 1 0
15 WEATHER_FORECAST_FLOAT F Y N 309 1 0
16 WEATHER_COUNTDOWN_FLOAT F Y N 313 600 0
17 CLOCK_FLOAT F Y N 317 1 0
18 REMOTE_COAL_SP F Y Y 209 1 0
19 REMOTE_FACTORY_SP F Y Y 205 1 0

View File

@ -8,12 +8,11 @@ import ch.hevs.isi.web.WebConnector;
public class Database { public class Database {
public static void main(String[] args) { public static void main(String[] args) {
MinecraftController.ERASE_PREVIOUS_DATA_INB_DB = true; MinecraftController.ERASE_PREVIOUS_DATA_INB_DB = true;
FloatDataPoint clock = new FloatDataPoint("CLOAK_FLOAT", false); FloatDataPoint clock = new FloatDataPoint("CLOCK_FLOAT", false);
FloatDataPoint gridVoltage = new FloatDataPoint("GRID_U_FLOAT", true); FloatDataPoint gridVoltage = new FloatDataPoint("GRID_U_FLOAT", true);
BooleanDataPoint solarPanel = new BooleanDataPoint("REMOTE_SOLAR_SW", true); BooleanDataPoint solarPanel = new BooleanDataPoint("REMOTE_SOLAR_SW", true);
DatabaseConnector.getMySelf().initialize(null); DatabaseConnector.getMySelf().initialize(null);
WebConnector.getMySelf().initialize(null, 0);
clock.setValue(0f); clock.setValue(0f);