diff --git a/.gitignore b/.gitignore index ec0cf5ed..bb0f511d 100755 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,3 @@ /hal.db* /build/ /lib/Zutil.jar -/tellstick.conf diff --git a/hal.conf b/hal.conf index 93ddf342..7d8cb831 100755 --- a/hal.conf +++ b/hal.conf @@ -1,2 +1,3 @@ http_port=8080 -sync_port=6666 \ No newline at end of file +sync_port=6666 +tellstick.com_port=COM5 \ No newline at end of file diff --git a/lib/jSerialComm-1.3.10.jar b/lib/jSerialComm-1.3.10.jar new file mode 100755 index 00000000..75156f34 Binary files /dev/null and b/lib/jSerialComm-1.3.10.jar differ diff --git a/lib/jSerialComm-1.3.4.jar b/lib/jSerialComm-1.3.4.jar deleted file mode 100755 index 159fbaab..00000000 Binary files a/lib/jSerialComm-1.3.4.jar and /dev/null differ diff --git a/src/se/koc/hal/ControllerManager.java b/src/se/koc/hal/ControllerManager.java index 07b2a323..c6074a1a 100755 --- a/src/se/koc/hal/ControllerManager.java +++ b/src/se/koc/hal/ControllerManager.java @@ -182,10 +182,15 @@ public class ControllerManager implements HalSensorReportListener, HalEventRepor logger.fine("Instantiating new controller: " + c.getName()); try { controller = c.newInstance(); - if(controller instanceof HalSensorController) + if(controller instanceof HalSensorController) { ((HalSensorController) controller).setListener(this); - if(controller instanceof HalEventController) + ((HalSensorController) controller).initialize(); + } + if(controller instanceof HalEventController) { ((HalEventController) controller).setListener(this); + if( ! (controller instanceof HalSensorController)) + ((HalEventController) controller).initialize(); + } controllerMap.put(c, controller); } catch (Exception e){ diff --git a/src/se/koc/hal/HalContext.java b/src/se/koc/hal/HalContext.java index 6066b088..55ea9e79 100755 --- a/src/se/koc/hal/HalContext.java +++ b/src/se/koc/hal/HalContext.java @@ -45,9 +45,12 @@ public class HalContext { try { // Read conf fileConf = new Properties(defaultFileConf); - FileReader in = new FileReader(CONF_FILE); - fileConf.load(in); - in.close(); + if (FileUtil.find(CONF_FILE).exists()) { + FileReader in = new FileReader(CONF_FILE); + fileConf.load(in); + in.close(); + } + else logger.info("No hal.conf file found"); // Init DB File dbFile = FileUtil.find(DB_FILE); @@ -66,7 +69,7 @@ public class HalContext { Properties defaultDBConf = referenceDB.exec("SELECT * FROM conf", new PropertiesSQLResult()); // Check DB version - logger.fine("DB version: "+ dbConf.getProperty(PROPERTY_DB_VERSION)); + logger.info("DB version: "+ dbConf.getProperty(PROPERTY_DB_VERSION)); int defaultDBVersion = Integer.parseInt(defaultDBConf.getProperty(PROPERTY_DB_VERSION)); int dbVersion = (dbConf.getProperty(PROPERTY_DB_VERSION) != null ? Integer.parseInt(dbConf.getProperty(PROPERTY_DB_VERSION)) : @@ -123,8 +126,10 @@ public class HalContext { public static String getStringProperty(String key){ - String value = fileConf.getProperty(key); - if(value == null) + String value = null; + if (fileConf != null) + value = fileConf.getProperty(key); + if (dbConf != null && value == null) value = dbConf.getProperty(key); return value; } diff --git a/src/se/koc/hal/intf/HalEventController.java b/src/se/koc/hal/intf/HalEventController.java index 6cabf031..e9084df9 100755 --- a/src/se/koc/hal/intf/HalEventController.java +++ b/src/se/koc/hal/intf/HalEventController.java @@ -4,6 +4,9 @@ package se.koc.hal.intf; * Created by Ziver on 2015-12-15. */ public interface HalEventController { + + void initialize() throws Exception; + /** * Will register an event type to be handled by this controller */ diff --git a/src/se/koc/hal/intf/HalSensorController.java b/src/se/koc/hal/intf/HalSensorController.java index 6dec2389..d449ad77 100755 --- a/src/se/koc/hal/intf/HalSensorController.java +++ b/src/se/koc/hal/intf/HalSensorController.java @@ -5,6 +5,8 @@ package se.koc.hal.intf; */ public interface HalSensorController { + void initialize() throws Exception; + /** * Will register a sensor type to be handled by this controller */ diff --git a/src/se/koc/hal/plugin/tellstick/TellstickSerialComm.java b/src/se/koc/hal/plugin/tellstick/TellstickSerialComm.java index a1412b9d..d6519525 100755 --- a/src/se/koc/hal/plugin/tellstick/TellstickSerialComm.java +++ b/src/se/koc/hal/plugin/tellstick/TellstickSerialComm.java @@ -23,6 +23,7 @@ package se.koc.hal.plugin.tellstick; import com.fazecast.jSerialComm.SerialPort; +import se.koc.hal.HalContext; import se.koc.hal.intf.*; import zutil.io.file.FileUtil; import zutil.log.InputStreamLogger; @@ -58,33 +59,35 @@ public class TellstickSerialComm implements Runnable, HalSensorController, HalEv - public TellstickSerialComm() throws Exception { + public TellstickSerialComm() { set = new TimedHashSet(TRANSMISSION_UNIQUENESS_TTL); parser = new TellstickParser(); registeredObjects = 0; + } + @Override + public void initialize() throws Exception { // Read properties - Properties prop = new Properties(); - prop.setProperty("com_port", "COM6"); // defaults - if(FileUtil.find("tellstick.conf") != null) { - Reader reader = new FileReader("tellstick.conf"); - prop.load(reader); - reader.close(); - } - connect(prop.getProperty("com_port")); + String port = HalContext.getStringProperty("tellstick.com_port"); + if (port == null) + port = "COM1"; // defaults + + connect(port); } public void connect(String portName) throws Exception { + logger.info("Connecting to com port... ("+ portName +")"); serial = SerialPort.getCommPort(portName); serial.setBaudRate(9600); if(!serial.openPort()) throw new IOException("Could not open port: "+portName); serial.setComPortTimeouts( - SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 0, 0); + SerialPort.TIMEOUT_READ_BLOCKING, 0, 0); in = new BufferedReader(new InputStreamReader(new InputStreamLogger(serial.getInputStream()), "UTF-8")); out = new BufferedWriter(new OutputStreamWriter(new OutputStreamLogger(serial.getOutputStream()), "UTF-8")); - Executors.newSingleThreadExecutor().submit(this); + + Executors.newSingleThreadExecutor().execute(this); } public void close() { diff --git a/test/se/koc/hal/plugin/tellstick/TelstickSerialCommNexaOnOffTest.java b/test/se/koc/hal/plugin/tellstick/TelstickSerialCommNexaOnOffTest.java index f0685606..450908f2 100755 --- a/test/se/koc/hal/plugin/tellstick/TelstickSerialCommNexaOnOffTest.java +++ b/test/se/koc/hal/plugin/tellstick/TelstickSerialCommNexaOnOffTest.java @@ -12,9 +12,8 @@ public class TelstickSerialCommNexaOnOffTest { System.out.println("Connecting to db..."); TellstickSerialComm comm = new TellstickSerialComm(); // http://developer.telldus.com/doxygen/TellStick.html - System.out.println("Connecting to com port..."); - //comm.connect("COM5"); - comm.connect("/dev/ttyUSB1"); + comm.connect("COM5"); + //comm.connect("/dev/ttyUSB1"); Thread.sleep(1000); diff --git a/test/se/koc/hal/plugin/tellstick/TelstickSerialCommTest.java b/test/se/koc/hal/plugin/tellstick/TelstickSerialCommTest.java index e13715c1..770415be 100755 --- a/test/se/koc/hal/plugin/tellstick/TelstickSerialCommTest.java +++ b/test/se/koc/hal/plugin/tellstick/TelstickSerialCommTest.java @@ -1,5 +1,6 @@ package se.koc.hal.plugin.tellstick; +import se.koc.hal.HalContext; import se.koc.hal.intf.HalSensor; import se.koc.hal.intf.HalSensorController; import se.koc.hal.intf.HalSensorReportListener; @@ -24,8 +25,9 @@ public class TelstickSerialCommTest { LogUtil.setGlobalFormatter(new CompactLogFormatter()); LogUtil.setGlobalLevel(Level.FINEST); - logger.info("Connecting to db..."); - final DBConnection db = new DBConnection(DBConnection.DBMS.SQLite, "hal.db"); + logger.info("Initializing HalContext..."); + HalContext.initialize(); + final DBConnection db = HalContext.getDB(); logger.info("Setting up Tellstick listeners..."); TellstickSerialComm comm = new TellstickSerialComm(); @@ -47,8 +49,8 @@ public class TelstickSerialCommTest { } } }); - logger.info("Connecting to com port..."); - comm.connect("/dev/ttyUSB1"); + comm.connect("COM5"); + //comm.connect("/dev/ttyUSB1"); logger.info("Up and Running"); } catch (Exception e) {