Added scanning button animation, detection of scannable controllers and scan start
This commit is contained in:
parent
6656882859
commit
a80a1c5cdc
26 changed files with 100 additions and 70 deletions
|
|
@ -132,4 +132,17 @@ body {
|
||||||
}
|
}
|
||||||
.c3-line {
|
.c3-line {
|
||||||
stroke-width: 2px;
|
stroke-width: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.anim-spin {
|
||||||
|
animation: spin 2s infinite linear;
|
||||||
|
}
|
||||||
|
@keyframes spin {
|
||||||
|
0% {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: rotate(359deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,15 +50,24 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{.getClass().getName()}}</td>
|
<td>{{.getClass().getName()}}</td>
|
||||||
<td>
|
<td>
|
||||||
|
{{#.isScannable()}}
|
||||||
<div class="btn-toolbar pull-right">
|
<div class="btn-toolbar pull-right">
|
||||||
<form method="POST">
|
<form method="POST">
|
||||||
<input type="hidden" name="action" value="controller_scan">
|
<input type="hidden" name="action" value="controller_scan">
|
||||||
<input type="hidden" name="controller" value="{{.getClass().getName()}}">
|
<input type="hidden" name="controller" value="{{.getClass().getName()}}">
|
||||||
|
|
||||||
|
{{#.isScanning()}}
|
||||||
|
<button type="submit" class="btn btn-primary btn-xs" style="padding: 1px 20px;" disabled>
|
||||||
|
<span class="glyphicon glyphicon-refresh anim-spin"></span>
|
||||||
|
</button>
|
||||||
|
{{/.isScanning()}}
|
||||||
|
{{^.isScanning()}}
|
||||||
<button type="submit" class="btn btn-primary btn-xs" style="padding: 1px 20px;">
|
<button type="submit" class="btn btn-primary btn-xs" style="padding: 1px 20px;">
|
||||||
<span class="glyphicon glyphicon-search"></span>
|
<span class="glyphicon glyphicon-search"></span>
|
||||||
</button>
|
</button>
|
||||||
|
{{/.isScanning()}}
|
||||||
</form>
|
</form>
|
||||||
|
{{/.isScannable()}}
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ public class EventControllerManager extends HalAbstractControllerManager<HalEven
|
||||||
}
|
}
|
||||||
|
|
||||||
Class<? extends HalEventController> c = event.getController();
|
Class<? extends HalEventController> c = event.getController();
|
||||||
HalEventController controller = controllerMap.get(c);
|
HalEventController controller = (HalEventController) controllerMap.get(c);
|
||||||
if (controller != null) {
|
if (controller != null) {
|
||||||
logger.info("Deregistering event(id: " + event.getId() + "): " + event.getDeviceConfig().getClass());
|
logger.info("Deregistering event(id: " + event.getId() + "): " + event.getDeviceConfig().getClass());
|
||||||
controller.deregister(event.getDeviceConfig());
|
controller.deregister(event.getDeviceConfig());
|
||||||
|
|
@ -175,14 +175,6 @@ public class EventControllerManager extends HalAbstractControllerManager<HalEven
|
||||||
logger.warning("No controller found for event id: "+ event.getId());
|
logger.warning("No controller found for event id: "+ event.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return all instantiated controllers.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Collection<HalEventController> getControllers() {
|
|
||||||
return controllerMap.values();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static EventControllerManager getInstance(){
|
public static EventControllerManager getInstance(){
|
||||||
return instance;
|
return instance;
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,8 @@ import zutil.ClassUtil;
|
||||||
import zutil.log.LogUtil;
|
import zutil.log.LogUtil;
|
||||||
import zutil.plugin.PluginManager;
|
import zutil.plugin.PluginManager;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
|
@ -19,7 +19,7 @@ public abstract class HalAbstractControllerManager<T extends HalAbstractControll
|
||||||
private static final Logger logger = LogUtil.getLogger();
|
private static final Logger logger = LogUtil.getLogger();
|
||||||
|
|
||||||
/** A map of all instantiated controllers **/
|
/** A map of all instantiated controllers **/
|
||||||
protected HashMap<Class, T> controllerMap = new HashMap<>();
|
protected static Map<Class, HalAbstractController> controllerMap = new ConcurrentHashMap<>();
|
||||||
/** All available sensor plugins **/
|
/** All available sensor plugins **/
|
||||||
protected List<Class<? extends C>> availableDeviceConfigs = new ArrayList<>();
|
protected List<Class<? extends C>> availableDeviceConfigs = new ArrayList<>();
|
||||||
|
|
||||||
|
|
@ -44,7 +44,7 @@ public abstract class HalAbstractControllerManager<T extends HalAbstractControll
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
Class<T> controllerClass = (Class<T>) deviceConfig.getDeclaredConstructor().newInstance().getDeviceControllerClass();
|
Class<T> controllerClass = (Class<T>) deviceConfig.getDeclaredConstructor().newInstance().getDeviceControllerClass();
|
||||||
|
|
||||||
if (controllerClass.isAssignableFrom(HalAutoScannableController.class)) {
|
if (controllerClass.isAssignableFrom(HalAutostartController.class)) {
|
||||||
getControllerInstance(controllerClass); // Instantiate controller
|
getControllerInstance(controllerClass); // Instantiate controller
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
@ -111,14 +111,14 @@ public abstract class HalAbstractControllerManager<T extends HalAbstractControll
|
||||||
/**
|
/**
|
||||||
* @return all active instantiated controllers.
|
* @return all active instantiated controllers.
|
||||||
*/
|
*/
|
||||||
public Collection<T> getControllers() {
|
public static List<HalAbstractController> getControllers() {
|
||||||
return controllerMap.values();
|
return new ArrayList<>(controllerMap.values());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Will return a singleton controller instance of the given class.
|
* Will return a singleton controller instance of the given class.
|
||||||
* If a instance does not exist yet the a new instance will be allocated
|
* If a instance does not exist yet the a new instance will be allocated
|
||||||
* depending on if the controller is ready thorough the {@link HalAutoScannableController#isAvailable()} method.
|
* depending on if the controller is ready thorough the {@link HalAutostartController#isAvailable()} method.
|
||||||
*
|
*
|
||||||
* @param clazz is the class of the wanted object instance wanted
|
* @param clazz is the class of the wanted object instance wanted
|
||||||
* @return A singleton instance of the input clazz or null if the class is unavailable or not ready to be instantiated.
|
* @return A singleton instance of the input clazz or null if the class is unavailable or not ready to be instantiated.
|
||||||
|
|
@ -127,14 +127,14 @@ public abstract class HalAbstractControllerManager<T extends HalAbstractControll
|
||||||
T controller;
|
T controller;
|
||||||
|
|
||||||
if (controllerMap.containsKey(clazz)) {
|
if (controllerMap.containsKey(clazz)) {
|
||||||
controller = controllerMap.get(clazz);
|
controller = (T) controllerMap.get(clazz);
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
// Instantiate controller
|
// Instantiate controller
|
||||||
controller = clazz.getDeclaredConstructor().newInstance();
|
controller = clazz.getDeclaredConstructor().newInstance();
|
||||||
|
|
||||||
if (controller instanceof HalAutoScannableController &&
|
if (controller instanceof HalAutostartController &&
|
||||||
! ((HalAutoScannableController) controller).isAvailable()) {
|
! ((HalAutostartController) controller).isAvailable()) {
|
||||||
logger.warning("Controller is not ready: " + clazz.getName());
|
logger.warning("Controller is not ready: " + clazz.getName());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
@ -162,7 +162,7 @@ public abstract class HalAbstractControllerManager<T extends HalAbstractControll
|
||||||
* @param controller is the controller instance.
|
* @param controller is the controller instance.
|
||||||
*/
|
*/
|
||||||
protected void removeControllerIfEmpty(HalAbstractController controller){
|
protected void removeControllerIfEmpty(HalAbstractController controller){
|
||||||
if (controller instanceof HalAutoScannableController)
|
if (controller instanceof HalAutostartController)
|
||||||
return; // Don't do anything if controller is scannable
|
return; // Don't do anything if controller is scannable
|
||||||
|
|
||||||
if (controller.size() < 0){
|
if (controller.size() < 0){
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ package se.hal.intf;
|
||||||
* A interface that indicates that the implementing
|
* A interface that indicates that the implementing
|
||||||
* controller can be auto started when HalServer starts up.
|
* controller can be auto started when HalServer starts up.
|
||||||
*/
|
*/
|
||||||
public interface HalAutoScannableController {
|
public interface HalAutostartController {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicates if the controller has all the configuration
|
* Indicates if the controller has all the configuration
|
||||||
|
|
@ -15,4 +15,13 @@ public interface HalScannableController {
|
||||||
* @return a boolean indication if a scan is still ongoing.
|
* @return a boolean indication if a scan is still ongoing.
|
||||||
*/
|
*/
|
||||||
boolean isScanning();
|
boolean isScanning();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function that can be used by template to identify a scannable controller.
|
||||||
|
*
|
||||||
|
* @return always true.
|
||||||
|
*/
|
||||||
|
default boolean isScannable() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package se.hal.page;
|
||||||
import se.hal.EventControllerManager;
|
import se.hal.EventControllerManager;
|
||||||
import se.hal.HalContext;
|
import se.hal.HalContext;
|
||||||
import se.hal.intf.HalWebPage;
|
import se.hal.intf.HalWebPage;
|
||||||
import se.hal.struct.ClassConfigurationData;
|
import se.hal.util.ClassConfigurationFacade;
|
||||||
import se.hal.struct.Event;
|
import se.hal.struct.Event;
|
||||||
import se.hal.struct.User;
|
import se.hal.struct.User;
|
||||||
import zutil.ObjectUtil;
|
import zutil.ObjectUtil;
|
||||||
|
|
@ -24,7 +24,7 @@ public class EventConfigWebPage extends HalWebPage {
|
||||||
private static final Logger logger = LogUtil.getLogger();
|
private static final Logger logger = LogUtil.getLogger();
|
||||||
private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/event_config.tmpl";
|
private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/event_config.tmpl";
|
||||||
|
|
||||||
private ArrayList<ClassConfigurationData> eventConfigurations = new ArrayList<>();
|
private ArrayList<ClassConfigurationFacade> eventConfigurations = new ArrayList<>();
|
||||||
|
|
||||||
|
|
||||||
public EventConfigWebPage() {
|
public EventConfigWebPage() {
|
||||||
|
|
@ -32,7 +32,7 @@ public class EventConfigWebPage extends HalWebPage {
|
||||||
super.getRootNav().createSubNav("Settings").createSubNav(this.getId(), "Event Settings").setWeight(200);
|
super.getRootNav().createSubNav("Settings").createSubNav(this.getId(), "Event Settings").setWeight(200);
|
||||||
|
|
||||||
for (Class c : EventControllerManager.getInstance().getAvailableDeviceConfigs())
|
for (Class c : EventControllerManager.getInstance().getAvailableDeviceConfigs())
|
||||||
eventConfigurations.add(new ClassConfigurationData(c));
|
eventConfigurations.add(new ClassConfigurationFacade(c));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import se.hal.HalContext;
|
||||||
import se.hal.HalServer;
|
import se.hal.HalServer;
|
||||||
import se.hal.intf.HalAbstractController;
|
import se.hal.intf.HalAbstractController;
|
||||||
import se.hal.intf.HalAbstractControllerManager;
|
import se.hal.intf.HalAbstractControllerManager;
|
||||||
|
import se.hal.intf.HalScannableController;
|
||||||
import se.hal.intf.HalWebPage;
|
import se.hal.intf.HalWebPage;
|
||||||
import zutil.ObjectUtil;
|
import zutil.ObjectUtil;
|
||||||
import zutil.io.file.FileUtil;
|
import zutil.io.file.FileUtil;
|
||||||
|
|
@ -52,25 +53,36 @@ public class PluginConfigWebPage extends HalWebPage {
|
||||||
|
|
||||||
case "controller_scan":
|
case "controller_scan":
|
||||||
String controllerName = request.get("controller");
|
String controllerName = request.get("controller");
|
||||||
|
|
||||||
|
HalAbstractController controller = null;
|
||||||
|
for (HalAbstractController c : HalAbstractControllerManager.getControllers()) {
|
||||||
|
if (c.getClass().getName().equals(controllerName)) {
|
||||||
|
controller = c;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (controller != null) {
|
||||||
|
if (controller instanceof HalScannableController) {
|
||||||
|
((HalScannableController) controller).startScan();
|
||||||
|
|
||||||
|
HalAlertManager.getInstance().addAlert(new UserMessage(
|
||||||
|
MessageLevel.SUCCESS, "Initiated scanning on controller: " + controllerName, MessageTTL.ONE_VIEW));
|
||||||
|
} else {
|
||||||
|
HalAlertManager.getInstance().addAlert(new UserMessage(
|
||||||
|
MessageLevel.ERROR, "Controller " + controllerName + " does not support scanning.", MessageTTL.ONE_VIEW));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
HalAlertManager.getInstance().addAlert(new UserMessage(
|
||||||
|
MessageLevel.ERROR, "Unable to find controller: " + controllerName, MessageTTL.ONE_VIEW));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<HalAbstractController> controllers = new LinkedList<>();
|
|
||||||
for (HalAbstractControllerManager manager : HalServer.getControllerManagers()) {
|
|
||||||
Collection<HalAbstractController> managerControllers = manager.getControllers();
|
|
||||||
|
|
||||||
if (!ObjectUtil.isEmpty(managerControllers)) {
|
|
||||||
for (HalAbstractController controller : managerControllers) {
|
|
||||||
if (!controllers.contains(controller))
|
|
||||||
controllers.add(controller);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Templator tmpl = new Templator(FileUtil.find(TEMPLATE));
|
Templator tmpl = new Templator(FileUtil.find(TEMPLATE));
|
||||||
tmpl.set("plugins", HalServer.getAllPlugins());
|
tmpl.set("plugins", HalServer.getAllPlugins());
|
||||||
tmpl.set("controllers", controllers);
|
tmpl.set("controllers", HalAbstractControllerManager.getControllers());
|
||||||
return tmpl;
|
return tmpl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package se.hal.page;
|
||||||
import se.hal.HalContext;
|
import se.hal.HalContext;
|
||||||
import se.hal.SensorControllerManager;
|
import se.hal.SensorControllerManager;
|
||||||
import se.hal.intf.HalWebPage;
|
import se.hal.intf.HalWebPage;
|
||||||
import se.hal.struct.ClassConfigurationData;
|
import se.hal.util.ClassConfigurationFacade;
|
||||||
import se.hal.struct.Sensor;
|
import se.hal.struct.Sensor;
|
||||||
import se.hal.struct.User;
|
import se.hal.struct.User;
|
||||||
import zutil.ObjectUtil;
|
import zutil.ObjectUtil;
|
||||||
|
|
@ -23,7 +23,7 @@ public class SensorConfigWebPage extends HalWebPage {
|
||||||
private static final Logger logger = LogUtil.getLogger();
|
private static final Logger logger = LogUtil.getLogger();
|
||||||
private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/sensor_config.tmpl";
|
private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/sensor_config.tmpl";
|
||||||
|
|
||||||
private ArrayList<ClassConfigurationData> sensorConfigurations;
|
private ArrayList<ClassConfigurationFacade> sensorConfigurations;
|
||||||
|
|
||||||
|
|
||||||
public SensorConfigWebPage() {
|
public SensorConfigWebPage() {
|
||||||
|
|
@ -32,7 +32,7 @@ public class SensorConfigWebPage extends HalWebPage {
|
||||||
|
|
||||||
sensorConfigurations = new ArrayList<>();
|
sensorConfigurations = new ArrayList<>();
|
||||||
for (Class c : SensorControllerManager.getInstance().getAvailableDeviceConfigs())
|
for (Class c : SensorControllerManager.getInstance().getAvailableDeviceConfigs())
|
||||||
sensorConfigurations.add(new ClassConfigurationData(c));
|
sensorConfigurations.add(new ClassConfigurationFacade(c));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import se.hal.HalContext;
|
||||||
import se.hal.TriggerManager;
|
import se.hal.TriggerManager;
|
||||||
import se.hal.intf.HalWebPage;
|
import se.hal.intf.HalWebPage;
|
||||||
import se.hal.struct.Action;
|
import se.hal.struct.Action;
|
||||||
import se.hal.struct.ClassConfigurationData;
|
import se.hal.util.ClassConfigurationFacade;
|
||||||
import se.hal.struct.Trigger;
|
import se.hal.struct.Trigger;
|
||||||
import se.hal.struct.TriggerFlow;
|
import se.hal.struct.TriggerFlow;
|
||||||
import zutil.ObjectUtil;
|
import zutil.ObjectUtil;
|
||||||
|
|
@ -23,8 +23,8 @@ public class TriggerWebPage extends HalWebPage {
|
||||||
private static final Logger logger = LogUtil.getLogger();
|
private static final Logger logger = LogUtil.getLogger();
|
||||||
private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/trigger.tmpl";
|
private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/trigger.tmpl";
|
||||||
|
|
||||||
private ArrayList<ClassConfigurationData> triggerConfigurators;
|
private ArrayList<ClassConfigurationFacade> triggerConfigurators;
|
||||||
private ArrayList<ClassConfigurationData> actionConfigurators;
|
private ArrayList<ClassConfigurationFacade> actionConfigurators;
|
||||||
|
|
||||||
|
|
||||||
public TriggerWebPage() {
|
public TriggerWebPage() {
|
||||||
|
|
@ -33,10 +33,10 @@ public class TriggerWebPage extends HalWebPage {
|
||||||
|
|
||||||
triggerConfigurators = new ArrayList<>();
|
triggerConfigurators = new ArrayList<>();
|
||||||
for (Class c : TriggerManager.getInstance().getAvailableTriggers())
|
for (Class c : TriggerManager.getInstance().getAvailableTriggers())
|
||||||
triggerConfigurators.add(new ClassConfigurationData(c));
|
triggerConfigurators.add(new ClassConfigurationFacade(c));
|
||||||
actionConfigurators = new ArrayList<>();
|
actionConfigurators = new ArrayList<>();
|
||||||
for (Class c : TriggerManager.getInstance().getAvailableActions())
|
for (Class c : TriggerManager.getInstance().getAvailableActions())
|
||||||
actionConfigurators.add(new ClassConfigurationData(c));
|
actionConfigurators.add(new ClassConfigurationFacade(c));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package se.hal.struct;
|
package se.hal.util;
|
||||||
|
|
||||||
import zutil.ui.conf.Configurator;
|
import zutil.ui.conf.Configurator;
|
||||||
import zutil.ui.conf.Configurator.ConfigurationParam;
|
import zutil.ui.conf.Configurator.ConfigurationParam;
|
||||||
|
|
@ -6,12 +6,12 @@ import zutil.ui.conf.Configurator.ConfigurationParam;
|
||||||
/**
|
/**
|
||||||
* A Data class used by the dynamic class configuration pages
|
* A Data class used by the dynamic class configuration pages
|
||||||
*/
|
*/
|
||||||
public class ClassConfigurationData {
|
public class ClassConfigurationFacade {
|
||||||
public Class clazz;
|
public Class clazz;
|
||||||
public ConfigurationParam[] params;
|
public ConfigurationParam[] params;
|
||||||
|
|
||||||
|
|
||||||
public ClassConfigurationData(Class clazz) {
|
public ClassConfigurationFacade(Class clazz) {
|
||||||
this.clazz = clazz;
|
this.clazz = clazz;
|
||||||
this.params = Configurator.getConfiguration(clazz);
|
this.params = Configurator.getConfiguration(clazz);
|
||||||
}
|
}
|
||||||
|
|
@ -39,7 +39,7 @@ import java.util.HashMap;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
public class HalMqttController implements HalAutoScannableController, MqttSubscriptionListener, HalEventController {
|
public class HalMqttController implements HalAutostartController, MqttSubscriptionListener, HalEventController {
|
||||||
private final Logger logger = LogUtil.getLogger();
|
private final Logger logger = LogUtil.getLogger();
|
||||||
|
|
||||||
private MulticastDnsServer mDns;
|
private MulticastDnsServer mDns;
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,6 @@
|
||||||
"version": 0.1,
|
"version": 0.1,
|
||||||
"name": "Hal-MQTT",
|
"name": "Hal-MQTT",
|
||||||
"interfaces": [
|
"interfaces": [
|
||||||
{"se.hal.intf.HalAutoScannableController": "se.hal.plugin.mqtt.HalMqttController"}
|
{"se.hal.intf.HalAutostartController": "se.hal.plugin.mqtt.HalMqttController"}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -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 NetScanController implements HalEventController, HalAutoScannableController, InetScanListener, Runnable {
|
public class NetScanController implements HalEventController, HalAutostartController, InetScanListener, Runnable {
|
||||||
public static Logger logger = LogUtil.getLogger();
|
public static Logger logger = LogUtil.getLogger();
|
||||||
private static final int NETWORK_SYNC_INTERVAL = 3 * 60 * 60 * 1000; // 3 hours
|
private static final int NETWORK_SYNC_INTERVAL = 3 * 60 * 60 * 1000; // 3 hours
|
||||||
private static final int PING_INTERVAL = 10 * 1000; // 10 sec
|
private static final int PING_INTERVAL = 10 * 1000; // 10 sec
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
"version": 1.0,
|
"version": 1.0,
|
||||||
"name": "Hal-Network Scanner",
|
"name": "Hal-Network Scanner",
|
||||||
"interfaces": [
|
"interfaces": [
|
||||||
{"se.hal.intf.HalAutoScannableController": "se.hal.plugin.netscan.NetScanController"},
|
{"se.hal.intf.HalAutostartController": "se.hal.plugin.netscan.NetScanController"},
|
||||||
{"se.hal.intf.HalEventConfig": "se.hal.plugin.netscan.NetworkDevice"}
|
{"se.hal.intf.HalEventConfig": "se.hal.plugin.netscan.NetworkDevice"}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -49,7 +49,7 @@
|
||||||
package se.hal.plugin.nutups;
|
package se.hal.plugin.nutups;
|
||||||
|
|
||||||
import se.hal.HalContext;
|
import se.hal.HalContext;
|
||||||
import se.hal.intf.HalAutoScannableController;
|
import se.hal.intf.HalAutostartController;
|
||||||
import se.hal.intf.HalDeviceConfig;
|
import se.hal.intf.HalDeviceConfig;
|
||||||
import se.hal.intf.HalDeviceReportListener;
|
import se.hal.intf.HalDeviceReportListener;
|
||||||
import se.hal.intf.HalSensorController;
|
import se.hal.intf.HalSensorController;
|
||||||
|
|
@ -64,7 +64,7 @@ import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
|
||||||
public class NutUpsController implements HalSensorController, HalAutoScannableController, Runnable {
|
public class NutUpsController implements HalSensorController, HalAutostartController, Runnable {
|
||||||
public static Logger logger = LogUtil.getLogger();
|
public static Logger logger = LogUtil.getLogger();
|
||||||
|
|
||||||
private static final int SYNC_INTERVAL = 60 * 1000;
|
private static final int SYNC_INTERVAL = 60 * 1000;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
"version": 1.0,
|
"version": 1.0,
|
||||||
"name": "Hal-NUT UPS",
|
"name": "Hal-NUT UPS",
|
||||||
"interfaces": [
|
"interfaces": [
|
||||||
{"se.hal.intf.HalAutoScannableController": "se.hal.plugin.nutups.NutUpsController"},
|
{"se.hal.intf.HalAutostartController": "se.hal.plugin.nutups.NutUpsController"},
|
||||||
{"se.hal.intf.HalSensorConfig": "se.hal.plugin.nutups.NutUpsDevice"}
|
{"se.hal.intf.HalSensorConfig": "se.hal.plugin.nutups.NutUpsDevice"}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -47,11 +47,6 @@ public class CameraControllerManager extends HalAbstractControllerManager<HalCam
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Collection<HalCameraController> getControllers() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void initialize(PluginManager pluginManager){
|
public void initialize(PluginManager pluginManager){
|
||||||
super.initialize(pluginManager);
|
super.initialize(pluginManager);
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ import se.hal.intf.HalWebPage;
|
||||||
import se.hal.page.HalAlertManager;
|
import se.hal.page.HalAlertManager;
|
||||||
import se.hal.plugin.nvr.CameraControllerManager;
|
import se.hal.plugin.nvr.CameraControllerManager;
|
||||||
import se.hal.plugin.nvr.struct.Camera;
|
import se.hal.plugin.nvr.struct.Camera;
|
||||||
import se.hal.struct.ClassConfigurationData;
|
import se.hal.util.ClassConfigurationFacade;
|
||||||
import se.hal.struct.User;
|
import se.hal.struct.User;
|
||||||
import zutil.ObjectUtil;
|
import zutil.ObjectUtil;
|
||||||
import zutil.db.DBConnection;
|
import zutil.db.DBConnection;
|
||||||
|
|
@ -47,7 +47,7 @@ public class CameraConfigWebPage extends HalWebPage {
|
||||||
private static final Logger logger = LogUtil.getLogger();
|
private static final Logger logger = LogUtil.getLogger();
|
||||||
private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/camera_config.tmpl";
|
private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/camera_config.tmpl";
|
||||||
|
|
||||||
private ArrayList<ClassConfigurationData> cameraConfigurations;
|
private ArrayList<ClassConfigurationFacade> cameraConfigurations;
|
||||||
|
|
||||||
|
|
||||||
public CameraConfigWebPage() {
|
public CameraConfigWebPage() {
|
||||||
|
|
@ -56,7 +56,7 @@ public class CameraConfigWebPage extends HalWebPage {
|
||||||
|
|
||||||
cameraConfigurations = new ArrayList<>();
|
cameraConfigurations = new ArrayList<>();
|
||||||
for (Class c : CameraControllerManager.getInstance().getAvailableDeviceConfigs())
|
for (Class c : CameraControllerManager.getInstance().getAvailableDeviceConfigs())
|
||||||
cameraConfigurations.add(new ClassConfigurationData(c));
|
cameraConfigurations.add(new ClassConfigurationFacade(c));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ import java.util.logging.Logger;
|
||||||
* communication and reporting to Hal
|
* communication and reporting to Hal
|
||||||
*/
|
*/
|
||||||
public class TellstickSerialComm implements Runnable,
|
public class TellstickSerialComm implements Runnable,
|
||||||
HalSensorController, HalEventController, HalAutoScannableController {
|
HalSensorController, HalEventController, HalAutostartController {
|
||||||
private static final Logger logger = LogUtil.getLogger();
|
private static final Logger logger = LogUtil.getLogger();
|
||||||
|
|
||||||
private static String CONFIG_TELLSTICK_COM_PORT = "tellstick.com_port";
|
private static String CONFIG_TELLSTICK_COM_PORT = "tellstick.com_port";
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
"version": 1.0,
|
"version": 1.0,
|
||||||
"name": "Hal-Tellstick",
|
"name": "Hal-Tellstick",
|
||||||
"interfaces": [
|
"interfaces": [
|
||||||
{"se.hal.intf.HalAutoScannableController": "se.hal.plugin.tellstick.TellstickSerialComm"},
|
{"se.hal.intf.HalAutostartController": "se.hal.plugin.tellstick.TellstickSerialComm"},
|
||||||
|
|
||||||
{"se.hal.intf.HalSensorConfig": "se.hal.plugin.tellstick.device.Oregon0x1A2D"},
|
{"se.hal.intf.HalSensorConfig": "se.hal.plugin.tellstick.device.Oregon0x1A2D"},
|
||||||
{"se.hal.intf.HalEventConfig": "se.hal.plugin.tellstick.device.NexaSelfLearning"}
|
{"se.hal.intf.HalEventConfig": "se.hal.plugin.tellstick.device.NexaSelfLearning"}
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ import java.util.logging.Logger;
|
||||||
* <p>
|
* <p>
|
||||||
* Rest documentatiuon for deConz: https://dresden-elektronik.github.io/deconz-rest-doc/
|
* Rest documentatiuon for deConz: https://dresden-elektronik.github.io/deconz-rest-doc/
|
||||||
*/
|
*/
|
||||||
public class DeConzZigbeeController implements HalSensorController, HalEventController, HalAutoScannableController {
|
public class DeConzZigbeeController implements HalSensorController, HalEventController, HalAutostartController {
|
||||||
private static final Logger logger = LogUtil.getLogger();
|
private static final Logger logger = LogUtil.getLogger();
|
||||||
|
|
||||||
public static final String CONFIG_ZIGBEE_REST_URL = "zigbee.rest_url";
|
public static final String CONFIG_ZIGBEE_REST_URL = "zigbee.rest_url";
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,6 @@
|
||||||
"name": "Hal-Zigbee-DeConz",
|
"name": "Hal-Zigbee-DeConz",
|
||||||
"description": "A Zigbee plugin interfacing with a DeConz service.",
|
"description": "A Zigbee plugin interfacing with a DeConz service.",
|
||||||
"interfaces": [
|
"interfaces": [
|
||||||
{"se.hal.intf.HalAutoScannableController": "se.hal.plugin.zigbee.deconz.zigbee.HalDeconzZigbeeController"}
|
{"se.hal.intf.HalAutostartController": "se.hal.plugin.zigbee.deconz.zigbee.HalDeconzZigbeeController"}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -31,7 +31,7 @@ import java.util.logging.Logger;
|
||||||
*/
|
*/
|
||||||
public class HalZigbeeController implements HalSensorController,
|
public class HalZigbeeController implements HalSensorController,
|
||||||
HalEventController,
|
HalEventController,
|
||||||
HalAutoScannableController,
|
HalAutostartController,
|
||||||
ZigBeeAnnounceListener,
|
ZigBeeAnnounceListener,
|
||||||
ZigBeeNetworkNodeListener,
|
ZigBeeNetworkNodeListener,
|
||||||
HalScannableController {
|
HalScannableController {
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,6 @@
|
||||||
"name": "Hal-Zigbee",
|
"name": "Hal-Zigbee",
|
||||||
"description": "A Zigbee plugin for directly connecting to a CC2531 device over serial port.",
|
"description": "A Zigbee plugin for directly connecting to a CC2531 device over serial port.",
|
||||||
"interfaces": [
|
"interfaces": [
|
||||||
{"se.hal.intf.HalAutoScannableController": "se.hal.plugin.zigbee.HalZigbeeController"}
|
{"se.hal.intf.HalAutostartController": "se.hal.plugin.zigbee.HalZigbeeController"}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -15,7 +15,7 @@ import java.util.logging.Logger;
|
||||||
*
|
*
|
||||||
* @author Ziver Koc
|
* @author Ziver Koc
|
||||||
*/
|
*/
|
||||||
public class HalZWaveController implements HalSensorController, HalEventController, HalAutoScannableController, NotificationWatcher {
|
public class HalZWaveController implements HalSensorController, HalEventController, HalAutostartController, NotificationWatcher {
|
||||||
private static final Logger logger = LogUtil.getLogger();
|
private static final Logger logger = LogUtil.getLogger();
|
||||||
|
|
||||||
public static final String CONFIG_ZWAVE_PORT = "zwave.com_port";
|
public static final String CONFIG_ZWAVE_PORT = "zwave.com_port";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue