Added mDNS Daemon which will resolve hal.local domain
This commit is contained in:
parent
68c7755e7e
commit
291c4cb42a
11 changed files with 46 additions and 16 deletions
|
|
@ -124,7 +124,6 @@ public class HalServer {
|
||||||
logger.info("External https server up and running at: " + externalServerUrl);
|
logger.info("External https server up and running at: " + externalServerUrl);
|
||||||
} else {
|
} else {
|
||||||
logger.warning("Missing '" + CONFIG_HTTP_EXTERNAL_PORT + "' and '" + CONFIG_HTTP_EXTERNAL_DOMAIN + "' configuration, will not setup external http server.");
|
logger.warning("Missing '" + CONFIG_HTTP_EXTERNAL_PORT + "' and '" + CONFIG_HTTP_EXTERNAL_DOMAIN + "' configuration, will not setup external http server.");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------
|
// ------------------------------------
|
||||||
|
|
|
||||||
30
hal-core/src/se/hal/daemon/HalMulticastDnsDaemon.java
Normal file
30
hal-core/src/se/hal/daemon/HalMulticastDnsDaemon.java
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
package se.hal.daemon;
|
||||||
|
|
||||||
|
import se.hal.intf.HalDaemon;
|
||||||
|
import zutil.log.LogUtil;
|
||||||
|
import zutil.net.dns.MulticastDnsServer;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
|
||||||
|
public class HalMulticastDnsDaemon implements HalDaemon {
|
||||||
|
private static final Logger logger = LogUtil.getLogger();
|
||||||
|
|
||||||
|
private MulticastDnsServer server;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initiate(ScheduledExecutorService executor) {
|
||||||
|
try {
|
||||||
|
server = new MulticastDnsServer();
|
||||||
|
server.addEntry("hal.local", InetAddress.getLocalHost());
|
||||||
|
server.start();
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.log(Level.SEVERE, "Was unable to start mDNS Server.", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -26,7 +26,7 @@ import java.util.concurrent.TimeUnit;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
public class SensorDataAggregatorDaemon implements HalDaemon {
|
public class SensorDataAggregatorDaemon implements HalDaemon, Runnable {
|
||||||
private static final Logger logger = LogUtil.getLogger();
|
private static final Logger logger = LogUtil.getLogger();
|
||||||
|
|
||||||
public enum AggregationPeriodLength{
|
public enum AggregationPeriodLength{
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ import java.util.concurrent.TimeUnit;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
public class SensorDataCleanupDaemon implements HalDaemon {
|
public class SensorDataCleanupDaemon implements HalDaemon, Runnable {
|
||||||
private static final Logger logger = LogUtil.getLogger();
|
private static final Logger logger = LogUtil.getLogger();
|
||||||
|
|
||||||
public void initiate(ScheduledExecutorService executor){
|
public void initiate(ScheduledExecutorService executor){
|
||||||
|
|
@ -54,10 +54,10 @@ public class SensorDataCleanupDaemon implements HalDaemon {
|
||||||
* Will clear periods if they are too old.
|
* Will clear periods if they are too old.
|
||||||
*
|
*
|
||||||
* @param sensorId
|
* @param sensorId
|
||||||
* @Param clearPeriodlength Will clear periods with this length
|
* @Param cleanupPeriodLength Will clear periods with this length
|
||||||
* @param olderThan Data must be older than this many ms to be cleared from the DB
|
* @param olderThan Data must be older than this many ms to be cleared from the DB
|
||||||
*/
|
*/
|
||||||
private void cleanupSensorData(long sensorId, AggregationPeriodLength cleanupPeriodlength, long olderThan){
|
private void cleanupSensorData(long sensorId, AggregationPeriodLength cleanupPeriodLength, long olderThan){
|
||||||
DBConnection db = HalContext.getDB();
|
DBConnection db = HalContext.getDB();
|
||||||
PreparedStatement stmt = null;
|
PreparedStatement stmt = null;
|
||||||
try {
|
try {
|
||||||
|
|
@ -67,7 +67,7 @@ public class SensorDataCleanupDaemon implements HalDaemon {
|
||||||
+ "AND timestamp_end-timestamp_start == ?"
|
+ "AND timestamp_end-timestamp_start == ?"
|
||||||
+ "AND timestamp_end < ?");
|
+ "AND timestamp_end < ?");
|
||||||
stmt.setLong(1, sensorId);
|
stmt.setLong(1, sensorId);
|
||||||
switch(cleanupPeriodlength){
|
switch(cleanupPeriodLength){
|
||||||
case SECOND: stmt.setLong(2, UTCTimeUtility.SECOND_IN_MS-1); break;
|
case SECOND: stmt.setLong(2, UTCTimeUtility.SECOND_IN_MS-1); break;
|
||||||
case MINUTE: stmt.setLong(2, UTCTimeUtility.MINUTE_IN_MS-1); break;
|
case MINUTE: stmt.setLong(2, UTCTimeUtility.MINUTE_IN_MS-1); break;
|
||||||
case FIVE_MINUTES: stmt.setLong(2, UTCTimeUtility.FIVE_MINUTES_IN_MS-1); break;
|
case FIVE_MINUTES: stmt.setLong(2, UTCTimeUtility.FIVE_MINUTES_IN_MS-1); break;
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import java.util.concurrent.ScheduledExecutorService;
|
||||||
/**
|
/**
|
||||||
* Defines a standalone process that will run parallel to the main application
|
* Defines a standalone process that will run parallel to the main application
|
||||||
*/
|
*/
|
||||||
public interface HalDaemon extends Runnable {
|
public interface HalDaemon {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setup the execution of the daemon with the provided executor.
|
* Setup the execution of the daemon with the provided executor.
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
{"se.hal.intf.HalAbstractControllerManager": "se.hal.EventControllerManager"},
|
{"se.hal.intf.HalAbstractControllerManager": "se.hal.EventControllerManager"},
|
||||||
{"se.hal.intf.HalAbstractControllerManager": "se.hal.SensorControllerManager"},
|
{"se.hal.intf.HalAbstractControllerManager": "se.hal.SensorControllerManager"},
|
||||||
|
|
||||||
|
{"se.hal.intf.HalDaemon": "se.hal.daemon.HalMulticastDnsDaemon"},
|
||||||
{"se.hal.intf.HalDaemon": "se.hal.daemon.SensorDataAggregatorDaemon"},
|
{"se.hal.intf.HalDaemon": "se.hal.daemon.SensorDataAggregatorDaemon"},
|
||||||
{"se.hal.intf.HalDaemon": "se.hal.daemon.SensorDataCleanupDaemon"},
|
{"se.hal.intf.HalDaemon": "se.hal.daemon.SensorDataCleanupDaemon"},
|
||||||
|
|
||||||
|
|
@ -29,6 +30,7 @@
|
||||||
{"se.hal.intf.HalTrigger": "se.hal.trigger.EventTrigger"},
|
{"se.hal.intf.HalTrigger": "se.hal.trigger.EventTrigger"},
|
||||||
{"se.hal.intf.HalTrigger": "se.hal.trigger.SensorTrigger"},
|
{"se.hal.intf.HalTrigger": "se.hal.trigger.SensorTrigger"},
|
||||||
{"se.hal.intf.HalTrigger": "se.hal.trigger.TimerTrigger"},
|
{"se.hal.intf.HalTrigger": "se.hal.trigger.TimerTrigger"},
|
||||||
|
|
||||||
{"se.hal.intf.HalAction": "se.hal.action.SendEventAction"}
|
{"se.hal.intf.HalAction": "se.hal.action.SendEventAction"}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ java.util.logging.FileHandler.formatter = zutil.log.CompactLogFormatter
|
||||||
zutil.level = ALL
|
zutil.level = ALL
|
||||||
zutil.db.bean.level = INFO
|
zutil.db.bean.level = INFO
|
||||||
zutil.net.http.page.HttpFilePage.level = INFO
|
zutil.net.http.page.HttpFilePage.level = INFO
|
||||||
|
zutil.net.dns.MulticastDnsServer.level = FINE
|
||||||
|
|
||||||
# Hal Core
|
# Hal Core
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,4 @@ public class SmartHomeDaemon implements HalDaemon {
|
||||||
HalServer.registerExternalPage(ENDPOINT_SMARTHOME, new SmartHomePage(smartHome));
|
HalServer.registerExternalPage(ENDPOINT_SMARTHOME, new SmartHomePage(smartHome));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() { }
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,7 @@ public class SmartHomeImpl extends SmartHomeApp implements TokenRegistrationList
|
||||||
*
|
*
|
||||||
* TODO: https://developers.google.com/assistant/smarthome/traits/temperaturesetting
|
* TODO: https://developers.google.com/assistant/smarthome/traits/temperaturesetting
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public SyncResponse onSync(SyncRequest syncRequest, Map<?, ?> headers) {
|
public SyncResponse onSync(SyncRequest syncRequest, Map<?, ?> headers) {
|
||||||
logger.fine("Received sync request.");
|
logger.fine("Received sync request.");
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ import java.util.logging.Logger;
|
||||||
|
|
||||||
import static zutil.ui.UserMessageManager.*;
|
import static zutil.ui.UserMessageManager.*;
|
||||||
|
|
||||||
public class PCDataSynchronizationClient implements HalDaemon {
|
public class PCDataSynchronizationClient implements HalDaemon, Runnable {
|
||||||
private static final Logger logger = LogUtil.getLogger();
|
private static final Logger logger = LogUtil.getLogger();
|
||||||
private static final long SYNC_INTERVAL = 5 * 60 * 1000; // 5 min
|
private static final long SYNC_INTERVAL = 5 * 60 * 1000; // 5 min
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ import java.util.concurrent.TimeUnit;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
public class ZigbeeAttributeUpdateDaemon implements HalDaemon {
|
public class ZigbeeAttributeUpdateDaemon implements HalDaemon, Runnable {
|
||||||
private static final Logger logger = LogUtil.getLogger();
|
private static final Logger logger = LogUtil.getLogger();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue