Updateing HAL handling

This commit is contained in:
Admin
2017-05-30 16:41:26 -05:00
parent fb9cc64839
commit d78c7c536d
5 changed files with 224 additions and 153 deletions

View File

@@ -1,11 +1,11 @@
package com.bwssystems.HABridge.plugins.hal; package com.bwssystems.HABridge.plugins.hal;
import com.bwssystems.HABridge.NamedIP;
public class HalDevice { public class HalDevice {
private String haldevicetype; private String haldevicetype;
private String haldevicename; private String haldevicename;
private String haladdress; private NamedIP haladdress;
private String halname;
private Boolean secure;
private DeviceElements buttons; private DeviceElements buttons;
public String getHaldevicetype() { public String getHaldevicetype() {
return haldevicetype; return haldevicetype;
@@ -19,24 +19,12 @@ public class HalDevice {
public void setHaldevicename(String haldevicename) { public void setHaldevicename(String haldevicename) {
this.haldevicename = haldevicename; this.haldevicename = haldevicename;
} }
public String getHaladdress() { public NamedIP getHaladdress() {
return haladdress; return haladdress;
} }
public void setHaladdress(String haladdress) { public void setHaladdress(NamedIP haladdress) {
this.haladdress = haladdress; this.haladdress = haladdress;
} }
public String getHalname() {
return halname;
}
public void setHalname(String halname) {
this.halname = halname;
}
public Boolean getSecure() {
return secure;
}
public void setSecure(Boolean secure) {
this.secure = secure;
}
public DeviceElements getButtons() { public DeviceElements getButtons() {
return buttons; return buttons;
} }

View File

@@ -35,13 +35,13 @@ public class HalInfo {
private static final String IRDATA_TYPE = "IrData"; private static final String IRDATA_TYPE = "IrData";
private HTTPHandler httpClient; private HTTPHandler httpClient;
private NamedIP halAddress; private NamedIP halAddress;
private String theToken;
public HalInfo(NamedIP addressName, String aGivenToken) { public HalInfo(NamedIP addressName, String aGivenToken) {
super(); super();
httpClient = new HTTPHandler(); httpClient = new HTTPHandler();
halAddress = addressName; halAddress = addressName;
theToken = aGivenToken; if(halAddress.getPassword() == null || halAddress.getPassword().trim().isEmpty())
halAddress.setPassword(aGivenToken);
} }
public List<HalDevice> getLights() { public List<HalDevice> getLights() {
@@ -102,12 +102,12 @@ public class HalInfo {
theUrl = "https://"; theUrl = "https://";
else else
theUrl = "http://"; theUrl = "http://";
theUrl = theUrl + halAddress.getIp() + apiType + theToken; theUrl = theUrl + halAddress.getIp() + apiType + halAddress.getPassword();
theData = httpClient.doHttpRequest(theUrl, null, null, null, null); theData = httpClient.doHttpRequest(theUrl, null, null, null, null);
if(theData != null) { if(theData != null) {
log.debug("GET " + deviceType + " HalApiResponse - data: " + theData); log.debug("GET " + deviceType + " HalApiResponse - data: " + theData);
theHalApiResponse = new Gson().fromJson(theData, DeviceElements.class); theHalApiResponse = new Gson().fromJson(theData, DeviceElements.class);
if(theHalApiResponse.getDeviceElements() == null) { if(theHalApiResponse == null || theHalApiResponse.getDeviceElements() == null) {
StatusDescription theStatus = new Gson().fromJson(theData, StatusDescription.class); StatusDescription theStatus = new Gson().fromJson(theData, StatusDescription.class);
if(theStatus.getStatus() == null) { if(theStatus.getStatus() == null) {
log.warn("Cannot get an devices for type " + deviceType + " for hal " + halAddress.getName() + " as response is not parsable."); log.warn("Cannot get an devices for type " + deviceType + " for hal " + halAddress.getName() + " as response is not parsable.");
@@ -125,9 +125,7 @@ public class HalInfo {
HalDevice aNewHalDevice = new HalDevice(); HalDevice aNewHalDevice = new HalDevice();
aNewHalDevice.setHaldevicetype(deviceType); aNewHalDevice.setHaldevicetype(deviceType);
aNewHalDevice.setHaldevicename(theDevice.getDeviceName()); aNewHalDevice.setHaldevicename(theDevice.getDeviceName());
aNewHalDevice.setHaladdress(halAddress.getIp()); aNewHalDevice.setHaladdress(halAddress);
aNewHalDevice.setHalname(halAddress.getName());
aNewHalDevice.setSecure(halAddress.getSecure());
deviceList.add(aNewHalDevice); deviceList.add(aNewHalDevice);
} }
@@ -154,7 +152,7 @@ public class HalInfo {
theUrl = "https://"; theUrl = "https://";
else else
theUrl = "http://"; theUrl = "http://";
theUrl = theUrl + halAddress.getIp() + IRBUTTON_REQUEST + TextStringFormatter.forQuerySpaceUrl(theHalDevice.getHaldevicename()) + TOKEN_REQUEST + theToken; theUrl = theUrl + halAddress.getIp() + IRBUTTON_REQUEST + TextStringFormatter.forQuerySpaceUrl(theHalDevice.getHaldevicename()) + TOKEN_REQUEST + halAddress.getPassword();
theData = httpClient.doHttpRequest(theUrl, null, null, null, null); theData = httpClient.doHttpRequest(theUrl, null, null, null, null);
if (theData != null) { if (theData != null) {
log.debug("GET IrData for IR Device " + theHalDevice.getHaldevicename() + " HalApiResponse - data: " + theData); log.debug("GET IrData for IR Device " + theHalDevice.getHaldevicename() + " HalApiResponse - data: " + theData);
@@ -205,6 +203,5 @@ public class HalInfo {
httpClient.closeHandler(); httpClient.closeHandler();
httpClient = null; httpClient = null;
halAddress = null; halAddress = null;
theToken = null;
} }
} }

View File

@@ -1317,11 +1317,11 @@ app.controller ('SystemController', function ($scope, $location, bridgeService,
} }
} }
}; };
$scope.addHaltoSettings = function (newhalname, newhalip) { $scope.addHaltoSettings = function (newhalname, newhalip, newhalsecure, newhaltoken) {
if($scope.bridge.settings.haladdress === undefined || $scope.bridge.settings.haladdress === null) { if($scope.bridge.settings.haladdress === undefined || $scope.bridge.settings.haladdress === null) {
$scope.bridge.settings.haladdress = { devices: [] }; $scope.bridge.settings.haladdress = { devices: [] };
} }
var newhal = {name: newhalname, ip: newhalip } var newhal = {name: newhalname, ip: newhalip, secure: newhalsecure, password: newhaltoken }
$scope.bridge.settings.haladdress.devices.push(newhal); $scope.bridge.settings.haladdress.devices.push(newhal);
$scope.newhalname = null; $scope.newhalname = null;
$scope.newhalip = null; $scope.newhalip = null;
@@ -2202,7 +2202,11 @@ app.controller('HalController', function ($scope, $location, bridgeService, ngDi
var preOffCmd = ""; var preOffCmd = "";
var nameCmd = ""; var nameCmd = "";
var aDeviceType; var aDeviceType;
var postCmd = "?Token=" + $scope.bridge.settings.haltoken; var postCmd = "?Token=";
if(haldevice.haladdress.password === undefined || haldevice.haladdress.password === null || haldevice.haladdress.password.lenght === 0)
postCmd = postCmd + $scope.bridge.settings.haltoken;
else
postCmd = postCmd + haldevice.haladdress.password;
if(haldevice.haldevicetype === "Group") { if(haldevice.haldevicetype === "Group") {
aDeviceType = "group"; aDeviceType = "group";
preOnCmd = "/GroupService!GroupCmd=On"; preOnCmd = "/GroupService!GroupCmd=On";
@@ -2227,29 +2231,29 @@ app.controller('HalController', function ($scope, $location, bridgeService, ngDi
nameCmd = "!DeviceName="; nameCmd = "!DeviceName=";
} }
if((dim_control.indexOf("byte") >= 0 || dim_control.indexOf("percent") >= 0 || dim_control.indexOf("math") >= 0) && aDeviceType === "switch") if((dim_control.indexOf("byte") >= 0 || dim_control.indexOf("percent") >= 0 || dim_control.indexOf("math") >= 0) && aDeviceType === "switch")
dimpayload = "http://" + haldevice.haladdress dimpayload = "http://" + haldevice.haladdress.ip
+ preDimCmd + preDimCmd
+ dim_control + dim_control
+ nameCmd + nameCmd
+ haldevice.haldevicename.replaceAll(" ", "%20") + haldevice.haldevicename.replaceAll(" ", "%20")
+ postCmd; + postCmd;
else else
dimpayload = "http://" + haldevice.haladdress dimpayload = "http://" + haldevice.haladdress.ip
+ preOnCmd + preOnCmd
+ nameCmd + nameCmd
+ haldevice.haldevicename.replaceAll(" ", "%20") + haldevice.haldevicename.replaceAll(" ", "%20")
+ postCmd; + postCmd;
onpayload = "http://" + haldevice.haladdress onpayload = "http://" + haldevice.haladdress.ip
+ preOnCmd + preOnCmd
+ nameCmd + nameCmd
+ haldevice.haldevicename.replaceAll(" ", "%20") + haldevice.haldevicename.replaceAll(" ", "%20")
+ postCmd; + postCmd;
offpayload = "http://" + haldevice.haladdress offpayload = "http://" + haldevice.haladdress.ip
+ preOffCmd + preOffCmd
+ nameCmd + nameCmd
+ haldevice.haldevicename.replaceAll(" ", "%20") + haldevice.haldevicename.replaceAll(" ", "%20")
+ postCmd; + postCmd;
bridgeService.buildUrls(onpayload, dimpayload, offpayload, false, haldevice.haldevicename + "-" + haldevice.halname, haldevice.haldevicename, haldevice.halname, aDeviceType, "halDevice", null, null); bridgeService.buildUrls(onpayload, dimpayload, offpayload, false, haldevice.haldevicename + "-" + haldevice.haladdress.name, haldevice.haldevicename, haldevice.haladdress.name, aDeviceType, "halDevice", null, null);
$scope.device = bridgeService.state.device; $scope.device = bridgeService.state.device;
if (!buildonly) { if (!buildonly) {
bridgeService.editNewDevice($scope.device); bridgeService.editNewDevice($scope.device);
@@ -2260,10 +2264,15 @@ app.controller('HalController', function ($scope, $location, bridgeService, ngDi
$scope.buildButtonUrls = function (haldevice, onbutton, offbutton, buildonly) { $scope.buildButtonUrls = function (haldevice, onbutton, offbutton, buildonly) {
var actionOn = angular.fromJson(onbutton); var actionOn = angular.fromJson(onbutton);
var actionOff = angular.fromJson(offbutton); var actionOff = angular.fromJson(offbutton);
onpayload = "http://" + haldevice.haladdress + "/IrService!IrCmd=Set!IrDevice=" + haldevice.haldevicename.replaceAll(" ", "%20") + "!IrButton=" + actionOn.DeviceName.replaceAll(" ", "%20") + "?Token=" + $scope.bridge.settings.haltoken; var postCmd = "?Token=";
offpayload = "http://" + haldevice.haladdress + "/IrService!IrCmd=Set!IrDevice=" + haldevice.haldevicename.replaceAll(" ", "%20") + "!IrButton=" + actionOff.DeviceName.replaceAll(" ", "%20") + "?Token=" + $scope.bridge.settings.haltoken; if(haldevice.haladdress.password === undefined || haldevice.haladdress.password === null || haldevice.haladdress.password.lenght === 0)
postCmd = postCmd + $scope.bridge.settings.haltoken;
else
postCmd = postCmd + haldevice.haladdress.password;
onpayload = "http://" + haldevice.haladdress.ip + "/IrService!IrCmd=Set!IrDevice=" + haldevice.haldevicename.replaceAll(" ", "%20") + "!IrButton=" + actionOn.DeviceName.replaceAll(" ", "%20") + postCmd;
offpayload = "http://" + haldevice.haladdress.ip + "/IrService!IrCmd=Set!IrDevice=" + haldevice.haldevicename.replaceAll(" ", "%20") + "!IrButton=" + actionOff.DeviceName.replaceAll(" ", "%20") + postCmd;
bridgeService.buildUrls(onpayload, null, offpayload, false, haldevice.haldevicename + "-" + haldevice.halname + "-" + actionOn.DeviceName, haldevice.haldevicename, haldevice.halname, "button", "halButton", null, null); bridgeService.buildUrls(onpayload, null, offpayload, false, haldevice.haldevicename + "-" + haldevice.haladdress.name + "-" + actionOn.DeviceName, haldevice.haldevicename, haldevice.haladdress.name, "button", "halButton", null, null);
$scope.device = bridgeService.state.device; $scope.device = bridgeService.state.device;
if (!buildonly) { if (!buildonly) {
bridgeService.editNewDevice($scope.device); bridgeService.editNewDevice($scope.device);
@@ -2272,9 +2281,14 @@ app.controller('HalController', function ($scope, $location, bridgeService, ngDi
}; };
$scope.buildHALHomeUrls = function (haldevice, buildonly) { $scope.buildHALHomeUrls = function (haldevice, buildonly) {
onpayload = "http://" + haldevice.haladdress + "/ModeService!ModeCmd=Set!ModeName=Home?Token=" + $scope.bridge.settings.haltoken; var postCmd = "?Token=";
offpayload = "http://" + haldevice.haladdress + "/ModeService!ModeCmd=Set!ModeName=Away?Token=" + $scope.bridge.settings.haltoken; if(haldevice.haladdress.password === undefined || haldevice.haladdress.password === null || haldevice.haladdress.password.lenght === 0)
bridgeService.buildUrls(onpayload, null, offpayload, false, haldevice.haldevicename + "-" + haldevice.halname + "-HomeAway", haldevice.haldevicename, haldevice.halname, "home", "halHome", null, null); postCmd = postCmd + $scope.bridge.settings.haltoken;
else
postCmd = postCmd + haldevice.haladdress.password;
onpayload = "http://" + haldevice.haladdress.ip + "/ModeService!ModeCmd=Set!ModeName=Home" + postCmd;
offpayload = "http://" + haldevice.haladdress.ip + "/ModeService!ModeCmd=Set!ModeName=Away" + postCmd;
bridgeService.buildUrls(onpayload, null, offpayload, false, haldevice.haldevicename + "-" + haldevice.haladdress.name + "-HomeAway", haldevice.haldevicename, haldevice.haladdress.name, "home", "halHome", null, null);
$scope.device = bridgeService.state.device; $scope.device = bridgeService.state.device;
if (!buildonly) { if (!buildonly) {
bridgeService.editNewDevice($scope.device); bridgeService.editNewDevice($scope.device);
@@ -2283,22 +2297,24 @@ app.controller('HalController', function ($scope, $location, bridgeService, ngDi
}; };
$scope.buildHALHeatUrls = function (haldevice, buildonly) { $scope.buildHALHeatUrls = function (haldevice, buildonly) {
onpayload = "http://" + haldevice.haladdress var postCmd = "?Token=";
if(haldevice.haladdress.password === undefined || haldevice.haladdress.password === null || haldevice.haladdress.password.lenght === 0)
postCmd = postCmd + $scope.bridge.settings.haltoken;
else
postCmd = postCmd + haldevice.haladdress.password;
onpayload = "http://" + haldevice.haladdress.ip
+ "/HVACService!HVACCmd=Set!HVACName=" + "/HVACService!HVACCmd=Set!HVACName="
+ haldevice.haldevicename.replaceAll(" ", "%20") + haldevice.haldevicename.replaceAll(" ", "%20")
+ "!HVACMode=Heat?Token=" + "!HVACMode=Heat" + postCmd;
+ $scope.bridge.settings.haltoken; dimpayload = "http://" + haldevice.haladdress.ip
dimpayload = "http://" + haldevice.haladdress
+ "/HVACService!HVACCmd=Set!HVACName=" + "/HVACService!HVACCmd=Set!HVACName="
+ haldevice.haldevicename.replaceAll(" ", "%20") + haldevice.haldevicename.replaceAll(" ", "%20")
+ "!HVACMode=Heat!HeatSpValue=${intensity.percent}?Token=" + "!HVACMode=Heat!HeatSpValue=${intensity.percent}" + postCmd;
+ $scope.bridge.settings.haltoken; offpayload = "http://" + haldevice.haladdress.ip
offpayload = "http://" + haldevice.haladdress
+ "/HVACService!HVACCmd=Set!HVACName=" + "/HVACService!HVACCmd=Set!HVACName="
+ haldevice.haldevicename.replaceAll(" ", "%20") + haldevice.haldevicename.replaceAll(" ", "%20")
+ "!HVACMode=Off?Token=" + "!HVACMode=Off" + postCmd;
+ $scope.bridge.settings.haltoken; bridgeService.buildUrls(onpayload, dimpayload, offpayload, false, haldevice.haldevicename + "-" + haldevice.haladdress.name + "-SetHeat", haldevice.haldevicename + " Heat", haldevice.haladdress.name, "thermo", "halThermoSet", null, null);
bridgeService.buildUrls(onpayload, dimpayload, offpayload, false, haldevice.haldevicename + "-" + haldevice.halname + "-SetHeat", haldevice.haldevicename + " Heat", haldevice.halname, "thermo", "halThermoSet", null, null);
$scope.device = bridgeService.state.device; $scope.device = bridgeService.state.device;
if (!buildonly) { if (!buildonly) {
bridgeService.editNewDevice($scope.device); bridgeService.editNewDevice($scope.device);
@@ -2307,22 +2323,24 @@ app.controller('HalController', function ($scope, $location, bridgeService, ngDi
}; };
$scope.buildHALCoolUrls = function (haldevice, buildonly) { $scope.buildHALCoolUrls = function (haldevice, buildonly) {
onpayload = "http://" + haldevice.haladdress var postCmd = "?Token=";
if(haldevice.haladdress.password === undefined || haldevice.haladdress.password === null || haldevice.haladdress.password.lenght === 0)
postCmd = postCmd + $scope.bridge.settings.haltoken;
else
postCmd = postCmd + haldevice.haladdress.password;
onpayload = "http://" + haldevice.haladdress.ip
+ "/HVACService!HVACCmd=Set!HVACName=" + "/HVACService!HVACCmd=Set!HVACName="
+ haldevice.haldevicename.replaceAll(" ", "%20") + haldevice.haldevicename.replaceAll(" ", "%20")
+ "!HVACMode=Cool?Token=" + "!HVACMode=Cool" + postCmd;
+ $scope.bridge.settings.haltoken; dimpayload = "http://" + haldevice.haladdress.ip
dimpayload = "http://" + haldevice.haladdress
+ "/HVACService!HVACCmd=Set!HVACName=" + "/HVACService!HVACCmd=Set!HVACName="
+ haldevice.haldevicename.replaceAll(" ", "%20") + haldevice.haldevicename.replaceAll(" ", "%20")
+ "!HVACMode=Cool!CoolSpValue=${intensity.percent}?Token=" + "!HVACMode=Cool!CoolSpValue=${intensity.percent}" + postCmd;
+ $scope.bridge.settings.haltoken; offpayload = "http://" + haldevice.haladdress.ip
offpayload = "http://" + haldevice.haladdress
+ "/HVACService!HVACCmd=Set!HVACName=" + "/HVACService!HVACCmd=Set!HVACName="
+ haldevice.haldevicename.replaceAll(" ", "%20") + haldevice.haldevicename.replaceAll(" ", "%20")
+ "!HVACMode=Off?Token=" + "!HVACMode=Off" + postCmd;
+ $scope.bridge.settings.haltoken; bridgeService.buildUrls(onpayload, dimpayload, offpayload, false, haldevice.haldevicename + "-" + haldevice.haladdress.name + "-SetCool", haldevice.haldevicename + " Cool", haldevice.haladdress.name, "thermo", "halThermoSet", null, null);
bridgeService.buildUrls(onpayload, dimpayload, offpayload, false, haldevice.haldevicename + "-" + haldevice.halname + "-SetCool", haldevice.haldevicename + " Cool", haldevice.halname, "thermo", "halThermoSet", null, null);
$scope.device = bridgeService.state.device; $scope.device = bridgeService.state.device;
if (!buildonly) { if (!buildonly) {
bridgeService.editNewDevice($scope.device); bridgeService.editNewDevice($scope.device);
@@ -2331,16 +2349,20 @@ app.controller('HalController', function ($scope, $location, bridgeService, ngDi
}; };
$scope.buildHALAutoUrls = function (haldevice, buildonly) { $scope.buildHALAutoUrls = function (haldevice, buildonly) {
onpayload = "http://" + haldevice.haladdress var postCmd = "?Token=";
if(haldevice.haladdress.password === undefined || haldevice.haladdress.password === null || haldevice.haladdress.password.lenght === 0)
postCmd = postCmd + $scope.bridge.settings.haltoken;
else
postCmd = postCmd + haldevice.haladdress.password;
onpayload = "http://" + haldevice.haladdress.ip
+ "/HVACService!HVACCmd=Set!HVACName=" + "/HVACService!HVACCmd=Set!HVACName="
+ haldevice.haldevicename.replaceAll(" ", "%20") + haldevice.haldevicename.replaceAll(" ", "%20")
+ "!HVACMode=Auto?Token=" + "!HVACMode=Auto" + postCmd;
+ $scope.bridge.settings.haltoken; offpayload = "http://" + haldevice.haladdress.ip
offpayload = "http://" + haldevice.haladdress
+ "/HVACService!HVACCmd=Set!HVACName=" + "/HVACService!HVACCmd=Set!HVACName="
+ haldevice.haldevicename.replaceAll(" ", "%20") + haldevice.haldevicename.replaceAll(" ", "%20")
+ "!HVACMode=Off?Token=" + "!HVACMode=Off" + postCmd;
bridgeService.buildUrls(onpayload, null, offpayload, false, haldevice.haldevicename + "-" + haldevice.halname + "-SetAuto", haldevice.haldevicename + " Auto", haldevice.halname, "thermo", "halThermoSet", null, null); bridgeService.buildUrls(onpayload, null, offpayload, false, haldevice.haldevicename + "-" + haldevice.haladdress.name + "-SetAuto", haldevice.haldevicename + " Auto", haldevice.haladdress.name, "thermo", "halThermoSet", null, null);
$scope.device = bridgeService.state.device; $scope.device = bridgeService.state.device;
if (!buildonly) { if (!buildonly) {
bridgeService.editNewDevice($scope.device); bridgeService.editNewDevice($scope.device);
@@ -2349,17 +2371,20 @@ app.controller('HalController', function ($scope, $location, bridgeService, ngDi
}; };
$scope.buildHALOffUrls = function (haldevice, buildonly) { $scope.buildHALOffUrls = function (haldevice, buildonly) {
onpayload = "http://" + haldevice.haladdress var postCmd = "?Token=";
if(haldevice.haladdress.password === undefined || haldevice.haladdress.password === null || haldevice.haladdress.password.lenght === 0)
postCmd = postCmd + $scope.bridge.settings.haltoken;
else
postCmd = postCmd + haldevice.haladdress.password;
onpayload = "http://" + haldevice.haladdress.ip
+ "/HVACService!HVACCmd=Set!HVACName=" + "/HVACService!HVACCmd=Set!HVACName="
+ haldevice.haldevicename.replaceAll(" ", "%20") + haldevice.haldevicename.replaceAll(" ", "%20")
+ "!HVACMode=Auto?Token=" + "!HVACMode=Auto" + postCmd;
+ $scope.bridge.settings.haltoken; offpayload = "http://" + haldevice.haladdress.ip
offpayload = "http://" + haldevice.haladdress
+ "/HVACService!HVACCmd=Set!HVACName=" + "/HVACService!HVACCmd=Set!HVACName="
+ haldevice.haldevicename.replaceAll(" ", "%20") + haldevice.haldevicename.replaceAll(" ", "%20")
+ "!HVACMode=Off?Token=" + "!HVACMode=Off" + postCmd;
$scope.device.offUrl = "http://" + haldevice.haladdress bridgeService.buildUrls(onpayload, null, offpayload, false, haldevice.haldevicename + "-" + haldevice.haladdress.name + "-TurnOff", haldevice.haldevicename + " Thermostat", haldevice.haladdress.name, "thermo", "halThermoSet", null, null);
bridgeService.buildUrls(onpayload, null, offpayload, false, haldevice.haldevicename + "-" + haldevice.halname + "-TurnOff", haldevice.haldevicename + " Thermostat", haldevice.halname, "thermo", "halThermoSet", null, null);
$scope.device = bridgeService.state.device; $scope.device = bridgeService.state.device;
if (!buildonly) { if (!buildonly) {
bridgeService.editNewDevice($scope.device); bridgeService.editNewDevice($scope.device);
@@ -2368,17 +2393,20 @@ app.controller('HalController', function ($scope, $location, bridgeService, ngDi
}; };
$scope.buildHALFanUrls = function (haldevice, buildonly) { $scope.buildHALFanUrls = function (haldevice, buildonly) {
onpayload = "http://" + haldevice.haladdress var postCmd = "?Token=";
if(haldevice.haladdress.password === undefined || haldevice.haladdress.password === null || haldevice.haladdress.password.lenght === 0)
postCmd = postCmd + $scope.bridge.settings.haltoken;
else
postCmd = postCmd + haldevice.haladdress.password;
onpayload = "http://" + haldevice.haladdress.ip
+ "/HVACService!HVACCmd=Set!HVACName=" + "/HVACService!HVACCmd=Set!HVACName="
+ haldevice.haldevicename.replaceAll(" ", "%20") + haldevice.haldevicename.replaceAll(" ", "%20")
+ "!FanMode=On?Token=" + "!FanMode=On" + postCmd;
+ $scope.bridge.settings.haltoken; offpayload = "http://" + haldevice.haladdress.ip
offpayload = "http://" + haldevice.haladdress
+ "/HVACService!HVACCmd=Set!HVACName=" + "/HVACService!HVACCmd=Set!HVACName="
+ haldevice.haldevicename.replaceAll(" ", "%20") + haldevice.haldevicename.replaceAll(" ", "%20")
+ "!FanMode=Auto?Token=" + "!FanMode=Auto" + postCmd;
+ $scope.bridge.settings.haltoken; bridgeService.buildUrls(onpayload, null, offpayload, false, haldevice.haldevicename + "-" + haldevice.haladdress.name + "-SetFan", haldevice.haldevicename + " Fan", haldevice.haladdress.name, "thermo", "halThermoSet", null, null);
bridgeService.buildUrls(onpayload, null, offpayload, false, haldevice.haldevicename + "-" + haldevice.halname + "-SetFan", haldevice.haldevicename + " Fan", haldevice.halname, "thermo", "halThermoSet", null, null);
$scope.device = bridgeService.state.device; $scope.device = bridgeService.state.device;
if (!buildonly) { if (!buildonly) {
bridgeService.editNewDevice($scope.device); bridgeService.editNewDevice($scope.device);

View File

@@ -76,7 +76,7 @@
ng-click="toggleSelection(haldevice.haldevicename)"> ng-click="toggleSelection(haldevice.haldevicename)">
{{haldevice.haldevicename}}</td> {{haldevice.haldevicename}}</td>
<td>{{haldevice.haldevicetype}}</td> <td>{{haldevice.haldevicetype}}</td>
<td>{{haldevice.halname}}</td> <td>{{haldevice.haladdress.name}}</td>
<td> <td>
<select name="button-on" id="button-on" ng-model="button_on"> <select name="button-on" id="button-on" ng-model="button_on">
<option ng-repeat="aButtonOn in haldevice.buttons.DeviceElements" <option ng-repeat="aButtonOn in haldevice.buttons.DeviceElements"

View File

@@ -113,16 +113,20 @@
</tr> </tr>
</thead> </thead>
<tr ng-repeat="vera in bridge.settings.veraaddress.devices"> <tr ng-repeat="vera in bridge.settings.veraaddress.devices">
<td>{{vera.name}}</td> <td><input id="bridge-settings-next-vera-name"
<td>{{vera.ip}}</td> class="form-control" type="text" ng-model="vera.name"
placeholder="A Vera"></td>
<td><input id="bridge-settings-next-vera-ip"
class="form-control" type="text" ng-model="vera.ip"
placeholder="192.168.1.2"></td>
<td><button class="btn btn-danger" type="submit" <td><button class="btn btn-danger" type="submit"
ng-click="removeVeratoSettings(vera.name, vera.ip)">Del</button></td> ng-click="removeVeratoSettings(vera.name, vera.ip)">Del</button></td>
</tr> </tr>
<tr> <tr>
<td><input id="bridge-settings-next-vera-name" <td><input id="bridge-settings-new-vera-name"
class="form-control" type="text" ng-model="newveraname" class="form-control" type="text" ng-model="newveraname"
placeholder="A Vera"></td> placeholder="A Vera"></td>
<td><input id="bridge-settings-next-vera-ip" <td><input id="bridge-settings-new-vera-ip"
class="form-control" type="text" ng-model="newveraip" class="form-control" type="text" ng-model="newveraip"
placeholder="192.168.1.2"></td> placeholder="192.168.1.2"></td>
<td><button class="btn btn-success" type="submit" <td><button class="btn btn-success" type="submit"
@@ -137,30 +141,36 @@
<thead> <thead>
<tr> <tr>
<th>Name</th> <th>Name</th>
<th>IP</th> <th>IP</th>
<th>Webhook</th> <th>Webhook</th>
<th>Manage</th> <th>Manage</th>
</tr> </tr>
</thead> </thead>
<tr ng-repeat="harmony in bridge.settings.harmonyaddress.devices"> <tr ng-repeat="harmony in bridge.settings.harmonyaddress.devices">
<td>{{harmony.name}}</td> <td><input id="bridge-settings-next-harmony-name"
<td>{{harmony.ip}}</td> class="form-control" type="text" ng-model="harmony.name"
<td>{{harmony.webhook}}</td> placeholder="A Harmony"></td>
<td><input id="bridge-settings-next-harmony-ip"
class="form-control" type="text" ng-model="harmony.ip"
placeholder="192.168.1.3"></td>
<td><input id="bridge-settings-next-harmony-webhook"
class="form-control" type="text" ng-model="harmony.webhook"
placeholder="http://hook?a=${activity.label}"></td>
<td><button class="btn btn-danger" type="submit" <td><button class="btn btn-danger" type="submit"
ng-click="removeHarmonytoSettings(harmony.name, harmony.ip)">Del</button></td> ng-click="removeHarmonytoSettings(harmony.name, harmony.ip)">Del</button></td>
</tr> </tr>
<tr> <tr>
<td><input id="bridge-settings-next-harmony-name" <td><input id="bridge-settings-new-harmony-name"
class="form-control" type="text" ng-model="newharmonyname" class="form-control" type="text" ng-model="newharmonyname"
placeholder="A Harmony"></td> placeholder="A Harmony"></td>
<td><input id="bridge-settings-next-harmony-ip" <td><input id="bridge-settings-new-harmony-ip"
class="form-control" type="text" ng-model="newharmonyip" class="form-control" type="text" ng-model="newharmonyip"
placeholder="192.168.1.3"></td> placeholder="192.168.1.3"></td>
<td><input id="bridge-settings-next-harmony-webhook" <td><input id="bridge-settings-new-harmony-webhook"
class="form-control" type="text" ng-model="newharmonywebhook" class="form-control" type="text" ng-model="newharmonywebhook"
placeholder="http://hook?a=${activity.label}"></td> placeholder="http://hook?a=${activity.label}"></td>
<td><button class="btn btn-success" type="submit" <td><button class="btn btn-success" type="submit"
ng-click="addHarmonytoSettings(newharmonyname, newharmonyip, newharmonywebhook)">Add</button></td> ng-click="addHarmonytoSettings(newharmonyname, newharmonyip, newharmonywebhook)">Add</button></td>
</tr> </tr>
</table></td> </table></td>
</tr> </tr>
@@ -176,20 +186,24 @@
</tr> </tr>
</thead> </thead>
<tr ng-repeat="hue in bridge.settings.hueaddress.devices"> <tr ng-repeat="hue in bridge.settings.hueaddress.devices">
<td>{{hue.name}}</td>
<td>{{hue.ip}}</td>
<td><button class="btn btn-danger" type="submit"
ng-click="removeHuetoSettings(hue.name, hue.ip)">Del</button></td>
</tr>
<tr>
<td><input id="bridge-settings-next-hue-name" <td><input id="bridge-settings-next-hue-name"
class="form-control" type="text" ng-model="newhuename" class="form-control" type="text" ng-model="hue.name"
placeholder="A Hue"></td> placeholder="A Hue"></td>
<td><input id="bridge-settings-next-hue-ip" <td><input id="bridge-settings-next-hue-ip"
class="form-control" type="text" ng-model="hue.ip"
placeholder="192.168.1.3"></td>
<td><button class="btn btn-danger" type="submit"
ng-click="removeHuetoSettings(hue.name, hue.ip)">Del</button></td>
</tr>
<tr>
<td><input id="bridge-settings-new-hue-name"
class="form-control" type="text" ng-model="newhuename"
placeholder="A Hue"></td>
<td><input id="bridge-settings-new-hue-ip"
class="form-control" type="text" ng-model="newhueip" class="form-control" type="text" ng-model="newhueip"
placeholder="192.168.1.3"></td> placeholder="192.168.1.3"></td>
<td><button class="btn btn-success" type="submit" <td><button class="btn btn-success" type="submit"
ng-click="addHuetoSettings(newhuename, newhueip)">Add</button></td> ng-click="addHuetoSettings(newhuename, newhueip)">Add</button></td>
</tr> </tr>
</table></td> </table></td>
</tr> </tr>
@@ -201,34 +215,47 @@
<tr> <tr>
<th>Name</th> <th>Name</th>
<th>IP</th> <th>IP</th>
<th>Token</th>
<th>Use SSL</th> <th>Use SSL</th>
<th>Manage</th> <th>Manage</th>
</tr> </tr>
</thead> </thead>
<tr ng-repeat="hal in bridge.settings.haladdress.devices"> <tr ng-repeat="hal in bridge.settings.haladdress.devices">
<td>{{hal.name}}</td> <td><input id="bridge-settings-next-hal-name"
<td>{{hal.ip}}</td> class="form-control" type="text" ng-model="hal.name"
<td>{{hal.secure}}</td> placeholder="A Hal"></td>
<td><input id="bridge-settings-next-hal-ip"
class="form-control" type="text" ng-model="hal.ip"
placeholder="192.168.1.3:82"></td>
<td><input id="bridge-settings-next-haltoken" class="form-control"
type="password" ng-model="hal.password"
placeholder="thetoken"></td>
<td><input type="checkbox"
ng-model="hal.secure" ng-true-value=true
ng-false-value=false></td>
<td><button class="btn btn-danger" type="submit" <td><button class="btn btn-danger" type="submit"
ng-click="removeHaltoSettings(hal.name, hal.ip)">Del</button></td> ng-click="removeHaltoSettings(hal.name, hal.ip)">Del</button></td>
</tr> </tr>
<tr> <tr>
<td><input id="bridge-settings-next-hal-name" <td><input id="bridge-settings-new-hal-name"
class="form-control" type="text" ng-model="newhalname" class="form-control" type="text" ng-model="newhalname"
placeholder="A Hal"></td> placeholder="A Hal"></td>
<td><input id="bridge-settings-next-hal-ip" <td><input id="bridge-settings-new-hal-ip"
class="form-control" type="text" ng-model="newhalip" class="form-control" type="text" ng-model="newhalip"
placeholder="192.168.1.3:82"></td> placeholder="192.168.1.3:82"></td>
<td><input id="bridge-settings-new-haltoken" class="form-control"
type="password" ng-model="newhaltoken"
placeholder="thetoken"></td>
<td><input type="checkbox" <td><input type="checkbox"
ng-model="newhalsecure" ng-true-value=true ng-model="newhalsecure" ng-true-value=true
ng-false-value=false></td> ng-false-value=false></td>
<td><button class="btn btn-success" type="submit" <td><button class="btn btn-success" type="submit"
ng-click="addHaltoSettings(newhalname, newhalip, newhalsecure)">Add</button></td> ng-click="addHaltoSettings(newhalname, newhalip, newhalsecure, newhaltoken)">Add</button></td>
</tr> </tr>
</table></td> </table></td>
</tr> </tr>
<tr> <tr>
<td>HAL Token</td> <td>HAL Token (please use token on individual HAL entry)</td>
<td><input id="bridge-settings-haltoken" class="form-control" <td><input id="bridge-settings-haltoken" class="form-control"
type="password" ng-model="bridge.settings.haltoken" type="password" ng-model="bridge.settings.haltoken"
placeholder="thetoken"></td> placeholder="thetoken"></td>
@@ -247,26 +274,32 @@
</tr> </tr>
</thead> </thead>
<tr ng-repeat="mqtt in bridge.settings.mqttaddress.devices"> <tr ng-repeat="mqtt in bridge.settings.mqttaddress.devices">
<td>{{mqtt.name}}</td> <td><input id="bridge-settings-next-mqtt-name"
<td>{{mqtt.ip}}</td> class="form-control" type="text" ng-model="mqtt.name"
<td>{{mqtt.username}}</td> placeholder="A MQTT Client ID"></td>
<td ng-if="mqtt.password">*******</td> <td><input id="bridge-settings-next-mqtt-ip"
<td ng-if="!mqtt.password"> </td> class="form-control" type="text" ng-model="mqtt.ip"
placeholder="MQTT Broker IP and port"></td>
<td><input id="bridge-settings-next-mqtt-username"
class="form-control" type="text" ng-model="mqtt.username"
placeholder="MQTT Broker username (optional)"></td>
<td><input id="bridge-settings-next-mqtt-password"
class="form-control" type="password" ng-model="mqtt.password"
placeholder="MQTT Broker password (opt)"></td>
<td><button class="btn btn-danger" type="submit" <td><button class="btn btn-danger" type="submit"
ng-click="removeMQTTtoSettings(mqtt.name, mqtt.ip)">Del</button></td> ng-click="removeMQTTtoSettings(mqtt.name, mqtt.ip)">Del</button></td>
</tr> </tr>
<tr> <tr>
<td><input id="bridge-settings-next-mqtt-name" <td><input id="bridge-settings-new-mqtt-name"
class="form-control" type="text" ng-model="newmqttname" class="form-control" type="text" ng-model="newmqttname"
placeholder="A MQTT Client ID"></td> placeholder="A MQTT Client ID"></td>
<td><input id="bridge-settings-next-mqtt-ip" <td><input id="bridge-settings-new-mqtt-ip"
class="form-control" type="text" ng-model="newmqttip" class="form-control" type="text" ng-model="newmqttip"
placeholder="MQTT Broker IP and port"></td> placeholder="MQTT Broker IP and port"></td>
<td><input id="bridge-settings-next-mqtt-username" <td><input id="bridge-settings-new-mqtt-username"
class="form-control" type="text" ng-model="newmqttusername" class="form-control" type="text" ng-model="newmqttusername"
placeholder="MQTT Broker username (optional)"></td> placeholder="MQTT Broker username (optional)"></td>
<td><input id="bridge-settings-next-mqtt-password" <td><input id="bridge-settings-new-mqtt-password"
class="form-control" type="password" ng-model="newmqttpassword" class="form-control" type="password" ng-model="newmqttpassword"
placeholder="MQTT Broker password (opt)"></td> placeholder="MQTT Broker password (opt)"></td>
<td><button class="btn btn-success" type="submit" <td><button class="btn btn-success" type="submit"
@@ -289,26 +322,35 @@
</tr> </tr>
</thead> </thead>
<tr ng-repeat="hass in bridge.settings.hassaddress.devices"> <tr ng-repeat="hass in bridge.settings.hassaddress.devices">
<td>{{hass.name}}</td> <td><input id="bridge-settings-next-hass-name"
<td>{{hass.ip}}</td> class="form-control" type="text" ng-model="hass.name"
<td>{{hass.port}}</td> placeholder="A HomeAssistant"></td>
<td ng-if="hass.password">*******</td> <td><input id="bridge-settings-next-hass-ip"
<td ng-if="!hass.password"> </td> class="form-control" type="text" ng-model="hass.ip"
<td>{{hass.secure}}</td> placeholder="192.168.1.3"></td>
<td><input id="bridge-settings-next-hass-port"
class="form-control" type="text" ng-model="hass.port"
placeholder="8123"></td>
<td><input id="bridge-settings-next-hass-password"
class="form-control" type="password" ng-model="hass.password"
placeholder="Home Assistant password (opt)"></td>
<td><input type="checkbox"
ng-model="hass.secure" ng-true-value=true
ng-false-value=false></td>
<td><button class="btn btn-danger" type="submit" <td><button class="btn btn-danger" type="submit"
ng-click="removeHasstoSettings(hass.name, hass.ip)">Del</button></td> ng-click="removeHasstoSettings(hass.name, hass.ip)">Del</button></td>
</tr> </tr>
<tr> <tr>
<td><input id="bridge-settings-next-hass-name" <td><input id="bridge-settings-new-hass-name"
class="form-control" type="text" ng-model="newhassname" class="form-control" type="text" ng-model="newhassname"
placeholder="A HomeAssistant"></td> placeholder="A HomeAssistant"></td>
<td><input id="bridge-settings-next-hass-ip" <td><input id="bridge-settings-new-hass-ip"
class="form-control" type="text" ng-model="newhassip" class="form-control" type="text" ng-model="newhassip"
placeholder="192.168.1.3"></td> placeholder="192.168.1.3"></td>
<td><input id="bridge-settings-next-hass-port" <td><input id="bridge-settings-new-hass-port"
class="form-control" type="text" ng-model="newhassport" class="form-control" type="text" ng-model="newhassport"
placeholder="8123"></td> placeholder="8123"></td>
<td><input id="bridge-settings-next-hass-password" <td><input id="bridge-settings-new-hass-password"
class="form-control" type="password" ng-model="newhasspassword" class="form-control" type="password" ng-model="newhasspassword"
placeholder="Home Assistant password (opt)"></td> placeholder="Home Assistant password (opt)"></td>
<td><input type="checkbox" <td><input type="checkbox"
@@ -334,29 +376,38 @@
</tr> </tr>
</thead> </thead>
<tr ng-repeat="domoticz in bridge.settings.domoticzaddress.devices"> <tr ng-repeat="domoticz in bridge.settings.domoticzaddress.devices">
<td>{{domoticz.name}}</td> <td><input id="bridge-settings-next-domoticz-name"
<td>{{domoticz.ip}}</td> class="form-control" type="text" ng-model="domoticz.name"
<td>{{domoticz.port}}</td> placeholder="A Domoticz"></td>
<td>{{domoticz.username}}</td> <td><input id="bridge-settings-next-domoticz-ip"
<td ng-if="domoticz.password">*******</td> class="form-control" type="text" ng-model="domoticz.ip"
<td ng-if="!domoticz.password"> </td> placeholder="192.168.1.3"></td>
<td><input id="bridge-settings-next-domoticz-port"
class="form-control" type="text" ng-model="domoticz.port"
placeholder="8080"></td>
<td><input id="bridge-settings-next-domoticz-username"
class="form-control" type="text" ng-model="domoticz.username"
placeholder="Domoticz username"></td>
<td><input id="bridge-settings-next-domoticz-password"
class="form-control" type="password" ng-model="domoticz.password"
placeholder="Domoticz password (opt)"></td>
<td><button class="btn btn-danger" type="submit" <td><button class="btn btn-danger" type="submit"
ng-click="removeDomoticztoSettings(domoticz.name, domoticz.ip)">Del</button></td> ng-click="removeDomoticztoSettings(domoticz.name, domoticz.ip)">Del</button></td>
</tr> </tr>
<tr> <tr>
<td><input id="bridge-settings-next-domoticz-name" <td><input id="bridge-settings-new-domoticz-name"
class="form-control" type="text" ng-model="newdomoticzname" class="form-control" type="text" ng-model="newdomoticzname"
placeholder="A Domoticz"></td> placeholder="A Domoticz"></td>
<td><input id="bridge-settings-next-domoticz-ip" <td><input id="bridge-settings-new-domoticz-ip"
class="form-control" type="text" ng-model="newdomoticzip" class="form-control" type="text" ng-model="newdomoticzip"
placeholder="192.168.1.3"></td> placeholder="192.168.1.3"></td>
<td><input id="bridge-settings-next-domoticz-port" <td><input id="bridge-settings-new-domoticz-port"
class="form-control" type="text" ng-model="newdomoticzport" class="form-control" type="text" ng-model="newdomoticzport"
placeholder="8080"></td> placeholder="8080"></td>
<td><input id="bridge-settings-next-domoticz-username" <td><input id="bridge-settings-new-domoticz-username"
class="form-control" type="text" ng-model="newdomoticzusername" class="form-control" type="text" ng-model="newdomoticzusername"
placeholder="Domoticz username"></td> placeholder="Domoticz username"></td>
<td><input id="bridge-settings-next-domoticz-password" <td><input id="bridge-settings-new-domoticz-password"
class="form-control" type="password" ng-model="newdomoticzpassword" class="form-control" type="password" ng-model="newdomoticzpassword"
placeholder="Domoticz password (opt)"></td> placeholder="Domoticz password (opt)"></td>
<td><button class="btn btn-success" type="submit" <td><button class="btn btn-success" type="submit"
@@ -378,25 +429,32 @@
</tr> </tr>
</thead> </thead>
<tr ng-repeat="somfy in bridge.settings.somfyaddress.devices"> <tr ng-repeat="somfy in bridge.settings.somfyaddress.devices">
<td>{{somfy.name}}</td> <td><input id="bridge-settings-next-somfy-name"
<td>{{somfy.ip}}</td> class="form-control" type="text" ng-model="somfy.name"
<td>{{somfy.username}}</td> placeholder="A Somfy"></td>
<td ng-if="somfy.password">*******</td> <td><input id="bridge-settings-next-somfy-ip"
<td ng-if="!somfy.password"> </td> class="form-control" type="text" ng-model="somfy.ip"
placeholder="https://www.tahomalink.com"></td>
<td><input id="bridge-settings-next-somfy-username"
class="form-control" type="text" ng-model="somfy.username"
placeholder="Somfy username"></td>
<td><input id="bridge-settings-next-somfy-password"
class="form-control" type="password" ng-model="somfy.password"
placeholder="Somfy password"></td>
<td><button class="btn btn-danger" type="submit" <td><button class="btn btn-danger" type="submit"
ng-click="removeSomfytoSettings(somfy.name, somfy.ip)">Del</button></td> ng-click="removeSomfytoSettings(somfy.name, somfy.ip)">Del</button></td>
</tr> </tr>
<tr> <tr>
<td><input id="bridge-settings-next-somfy-name" <td><input id="bridge-settings-new-somfy-name"
class="form-control" type="text" ng-model="newsomfyname" class="form-control" type="text" ng-model="newsomfyname"
placeholder="A Somfy"></td> placeholder="A Somfy"></td>
<td><input id="bridge-settings-next-somfy-ip" <td><input id="bridge-settings-new-somfy-ip"
class="form-control" type="text" ng-model="newsomfyip" class="form-control" type="text" ng-model="newsomfyip"
placeholder="https://www.tahomalink.com"></td> placeholder="https://www.tahomalink.com"></td>
<td><input id="bridge-settings-next-somfy-username" <td><input id="bridge-settings-new-somfy-username"
class="form-control" type="text" ng-model="newsomfyusername" class="form-control" type="text" ng-model="newsomfyusername"
placeholder="Somfy username"></td> placeholder="Somfy username"></td>
<td><input id="bridge-settings-next-somfy-password" <td><input id="bridge-settings-new-somfy-password"
class="form-control" type="password" ng-model="newsomfypassword" class="form-control" type="password" ng-model="newsomfypassword"
placeholder="Somfy password"></td> placeholder="Somfy password"></td>
<td><button class="btn btn-success" type="submit" <td><button class="btn btn-success" type="submit"