Enabled ControllerManager and med startup more robust

Former-commit-id: f5aade38ed8bd352c12d00046ce38c99e6147216
This commit is contained in:
Ziver Koc 2015-12-31 00:27:42 +01:00
parent 27c5204ec1
commit a63f34641f
5 changed files with 30 additions and 8 deletions

View file

@ -1,5 +1,6 @@
package se.koc.hal;
import net.didion.jwnl.data.Exc;
import se.koc.hal.intf.HalSensorController;
import se.koc.hal.struct.Sensor;
import zutil.log.LogUtil;
@ -10,6 +11,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
@ -27,17 +29,22 @@ public class ControllerManager {
public void register(Sensor sensor) throws IllegalAccessException, InstantiationException {
Class<? extends HalSensorController> c = sensor.getController();
HalSensorController controller;
HalSensorController controller = null;
if (controllerMap.containsKey(c))
controller = controllerMap.get(c);
else {
// Instantiate controller
logger.fine("Instantiating new controller: " + c.getName());
controller = c.newInstance();
controllerMap.put(c, controller);
try {
controller = c.newInstance();
controllerMap.put(c, controller);
} catch (Exception e){
logger.log(Level.SEVERE, "Unable to instantiate controller: "+c.getName(), e);
}
}
controller.register(sensor);
if(controller != null)
controller.register(sensor);
}
public void deregister(Sensor sensor){

View file

@ -54,7 +54,7 @@ public class HalClient {
bot.initialize();
/********************************************************************/
NexaSelfLearning nexa1 = new NexaSelfLearning();
/* NexaSelfLearning nexa1 = new NexaSelfLearning();
nexa1.setHouse(15087918);
nexa1.setUnit(0);
switches.put("livingroom", new SwitchEvent("livingroom", nexa1));
@ -82,7 +82,7 @@ public class HalClient {
}
}
});
*/
System.out.println("Listening...");
while(true){

View file

@ -45,11 +45,11 @@ public class PowerChallenge {
DBConnection db = HalContext.getDB();
// Init sensors and controllers
/* ControllerManager.initialize();
ControllerManager.initialize();
for(Sensor sensor : Sensor.getLocalSensors(db)){
ControllerManager.getInstance().register(sensor);
}
*/
// init daemons
daemons = new HalDaemon[]{
new DataAggregatorDaemon(),

View file

@ -1,5 +1,6 @@
package se.koc.hal.page;
import se.koc.hal.ControllerManager;
import se.koc.hal.HalContext;
import se.koc.hal.intf.HalHttpPage;
import se.koc.hal.struct.Sensor;
@ -7,13 +8,25 @@ import se.koc.hal.struct.User;
import zutil.db.DBConnection;
import zutil.io.file.FileUtil;
import zutil.parser.Templator;
import zutil.ui.Configurator;
import java.lang.reflect.Array;
import java.util.Map;
public class PCConfigureHttpPage extends HalHttpPage {
private Configurator[] sensorConfigurations;
public PCConfigureHttpPage() {
super("Configuration", "config");
sensorConfigurations = new Configurator[
ControllerManager.getInstance().getAvailableSensors().size()];
int i=0;
for(Class c : ControllerManager.getInstance().getAvailableSensors()){
sensorConfigurations[i++] = new Configurator(c);
}
}
@Override
@ -101,6 +114,7 @@ public class PCConfigureHttpPage extends HalHttpPage {
Templator tmpl = new Templator(FileUtil.find("web-resource/configure.tmpl"));
tmpl.set("user", localUser);
tmpl.set("localSensor", Sensor.getLocalSensors(db));
tmpl.set("localSensorConf", sensorConfigurations);
tmpl.set("extUsers", User.getExternalUsers(db));
tmpl.set("extSensor", Sensor.getExternalSensors(db));

View file

@ -241,6 +241,7 @@
<option>RPiLocalController</option>
</select>
</div>
<hr>
<div class="form-group">
<label class="control-label">Config:</label> <!-- Should be improved, dynamic forms? -->
<input type="text" class="form-control" name="config">