diff --git a/pom.xml b/pom.xml index b49be78..d3bbb79 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.bwssystems.HABridge ha-bridge - 5.2.0RC3 + 5.2.0RC4 jar HA Bridge diff --git a/src/main/java/com/bwssystems/HABridge/hue/HueMulator.java b/src/main/java/com/bwssystems/HABridge/hue/HueMulator.java index f45a3ee..9edc78a 100644 --- a/src/main/java/com/bwssystems/HABridge/hue/HueMulator.java +++ b/src/main/java/com/bwssystems/HABridge/hue/HueMulator.java @@ -1166,7 +1166,24 @@ public class HueMulator { isOnRequest = true; } - if(isOnRequest || (isDimRequest && device.isOnFirstDim() && !device.getDeviceState().isOn())) { + if(device.isOnFirstDim() && isDimRequest && !device.getDeviceState().isOn()) { + isOnRequest = true; + isDimRequest = false; + isColorRequest = false; + } else if(device.isOnFirstDim() && isDimRequest && device.getDeviceState().isOn()) { + if(device.getDeviceState().getBri() == theStateChanges.getBri()) { + isOnRequest = true; + isDimRequest = false; + isColorRequest = false; + } else { + isOnRequest = false; + isDimRequest = true; + isColorRequest = false; + } + } + + if(isOnRequest) { + log.debug("Calling on-off as requested."); if (theStateChanges.isOn()) { url = device.getOnUrl(); } else if (!theStateChanges.isOn()) { @@ -1191,6 +1208,7 @@ public class HueMulator { } if (isDimRequest && !previousError) { + log.debug("Calling dim as requested."); if(!device.isOnFirstDim() ) url = device.getDimUrl(); @@ -1222,6 +1240,7 @@ public class HueMulator { } if (isColorRequest && !previousError) { + log.debug("Calling color as requested."); url = device.getColorUrl(); // code for backwards compatibility if(device.getMapType() != null && device.getMapType().equalsIgnoreCase(DeviceMapTypes.HUE_DEVICE[DeviceMapTypes.typeIndex])) { @@ -1248,7 +1267,6 @@ public class HueMulator { } if (responseString == null || !responseString.contains("[{\"error\":")) { - log.debug("Response is in error: " + ((responseString == null) ? "null" : responseString)); if(!device.isNoState()) { responseString = this.formatSuccessHueResponse(theStateChanges, body, lightId, state, targetBri, targetBriInc, device.isOffState()); device.setDeviceState(state); @@ -1257,6 +1275,7 @@ public class HueMulator { responseString = this.formatSuccessHueResponse(theStateChanges, body, lightId, dummyState, targetBri, targetBriInc, device.isOffState()); } } + return responseString; } diff --git a/src/main/java/com/bwssystems/HABridge/plugins/fhem/FHEMInstance.java b/src/main/java/com/bwssystems/HABridge/plugins/fhem/FHEMInstance.java index 2bb9a2e..7e25deb 100644 --- a/src/main/java/com/bwssystems/HABridge/plugins/fhem/FHEMInstance.java +++ b/src/main/java/com/bwssystems/HABridge/plugins/fhem/FHEMInstance.java @@ -75,275 +75,12 @@ public class FHEMInstance { deviceList = new ArrayList(); for (Result aResult:theFhemStates.getResults()) { - FHEMDevice aNewFhemDeviceDevice = new FHEMDevice(); - aNewFhemDeviceDevice.setItem(aResult); - aNewFhemDeviceDevice.setAddress(theFhem.getIp() + ":" + theFhem.getPort()); - aNewFhemDeviceDevice.setName(theFhem.getName()); - deviceList.add(aNewFhemDeviceDevice); - } - } - } - else - log.warn("Cannot get an devices for FHEM " + theFhem.getName() + " http call failed."); - return deviceList; - } - - public List testGetDevices(HTTPHandler httpClient) { - String TestData = "\n" + - "\n" + - " \n" + - " Home, Sweet Home\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
\n" + - "
\n" + - " \n" + - "
\n" + - "
\n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
\n" + - "
\n" + - " Save config\n" + - " ?\n" + - "
\n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
\n" + - "
\n" + - " Alexa\n" + - "
\n" + - "
\n" + - "
\n" + - " System\n" + - "
\n" + - "
\n" + - "
\n" + - " WG-Zimmer\n" + - "
\n" + - "
\n" + - "
\n" + - " habridge\n" + - "
\n" + - "
\n" + - " \n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
\n" + - "
\n" + - " Logfile\n" + - "
\n" + - "
\n" + - "
\n" + - " Commandref\n" + - "
\n" + - "
\n" + - "
\n" + - " Remote doc\n" + - "
\n" + - "
\n" + - "
\n" + - " Edit files\n" + - "
\n" + - "
\n" + - "
\n" + - " Select style\n" + - "
\n" + - "
\n" + - "
\n" + - " Event monitor\n" + - "
\n" + - "
\n" + - "
\n" + - "
\n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - " \n" + - " \n" + - "
\n" + - "
\n" + - " \n" + - " \n" + - "
\n" + - "
\n" + - "
\n" + - "
\n" + - "
{ \n" + 
-				"  \"Arg\":\"room=habridge\", \n" + 
-				"  \"Results\": [ \n" + 
-				"  { \n" + 
-				"    \"Name\":\"Arbeitslicht\", \n" + 
-				"    \"PossibleSets\":\"on off\", \n" + 
-				"    \"PossibleAttrs\":\"alias comment:textField-long eventMap group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 readingList setList useSetExtensions disable disabledForIntervals event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat:textField-long timestamp-on-change-reading alexaName alexaRoom cmdIcon devStateIcon devStateStyle fhem_widget_command fhem_widget_command_2 fhem_widget_command_3 genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,thermostat,contact,garage,window,lock homebridgeMapping:textField-long icon sortby webCmd widgetOverride userattr\", \n" + 
-				"    \"Internals\": { \n" + 
-				"      \"NAME\": \"Arbeitslicht\", \n" + 
-				"      \"NR\": \"28\", \n" + 
-				"      \"STATE\": \"-\", \n" + 
-				"      \"TYPE\": \"dummy\" \n" + 
-				"    }, \n" + 
-				"    \"Readings\": {      \"state\": { \"Value\":\"on\", \"Time\":\"2017-12-14 15:41:05\" } }, \n" + 
-				"    \"Attributes\": { \n" + 
-				"      \"alexaName\": \"Arbeitslicht\", \n" + 
-				"      \"alexaRoom\": \"alexaroom\", \n" + 
-				"      \"fhem_widget_command\": \"{  \\u0022allowed_values\\u0022 : [    \\u0022on\\u0022  ],  \\u0022order\\u0022 : 0}\", \n" + 
-				"      \"icon\": \"scene_office\", \n" + 
-				"      \"room\": \"Alexa,habridge\", \n" + 
-				"      \"setList\": \"on off\", \n" + 
-				"      \"stateFormat\": \"-\", \n" + 
-				"      \"webCmd\": \"on\" \n" + 
-				"    } \n" + 
-				"  }, \n" + 
-				"  { \n" + 
-				"    \"Name\":\"DeckenlampeLinks\", \n" + 
-				"    \"PossibleSets\":\"on off dim dimup dimdown HSV RGB sync pair unpair\", \n" + 
-				"    \"PossibleAttrs\":\"alias comment:textField-long eventMap group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 gamma dimStep defaultColor defaultRamp colorCast whitePoint event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat:textField-long timestamp-on-change-reading alexaName alexaRoom cmdIcon devStateIcon devStateStyle fhem_widget_command fhem_widget_command_2 fhem_widget_command_3 genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,thermostat,contact,garage,window,lock homebridgeMapping:textField-long icon sortby webCmd widgetOverride \n" + 
-				"                AlleLampen AlleLampen_map\n" + 
-				"                DeckenLampen DeckenLampen_map structexclude userattr\", \n" + 
-				"    \"Internals\": { \n" + 
-				"      \"CONNECTION\": \"bridge-V3\", \n" + 
-				"      \"DEF\": \"RGBW2 bridge-V3:10.2.3.3\", \n" + 
-				"      \"IP\": \"10.2.3.3\", \n" + 
-				"      \"LEDTYPE\": \"RGBW2\", \n" + 
-				"      \"NAME\": \"DeckenlampeLinks\", \n" + 
-				"      \"NR\": \"18\", \n" + 
-				"      \"NTFY_ORDER\": \"50-DeckenlampeLinks\", \n" + 
-				"      \"PORT\": \"8899\", \n" + 
-				"      \"PROTO\": \"0\", \n" + 
-				"      \"SLOT\": \"5\", \n" + 
-				"      \"STATE\": \"off\", \n" + 
-				"      \"TYPE\": \"WifiLight\" \n" + 
-				"    }, \n" + 
-				"    \"Readings\": { \n" + 
-				"      \"RGB\": { \"Value\":\"000000\", \"Time\":\"2017-12-14 15:41:10\" }, \n" + 
-				"      \"brightness\": { \"Value\":\"0\", \"Time\":\"2017-12-14 15:41:10\" }, \n" + 
-				"      \"hue\": { \"Value\":\"0\", \"Time\":\"2017-12-14 15:41:10\" }, \n" + 
-				"      \"saturation\": { \"Value\":\"0\", \"Time\":\"2017-12-14 15:41:10\" }, \n" + 
-				"      \"state\": { \"Value\":\"off\", \"Time\":\"2017-12-14 15:41:10\" } \n" + 
-				"    }, \n" + 
-				"    \"Attributes\": { \n" + 
-				"      \"AlleLampen\": \"AlleLampen\", \n" + 
-				"      \"DeckenLampen\": \"DeckenLampen\", \n" + 
-				"      \"fhem_widget_command\": \"{ \\u0022locations\\u0022 : [ \\u0022APP\\u0022, \\u0022WATCH\\u0022, \\u0022WIDGET\\u0022 ], \\u0022allowed_values\\u0022 : [ \\u0022off\\u0022, \\u0022on\\u0022 ], \\u0022order\\u0022 : 6}\", \n" + 
-				"      \"room\": \"habridge,Alexa,WG-Zimmer\", \n" + 
-				"      \"userattr\": \"AlleLampen AlleLampen_map\n" + 
-				"                DeckenLampen DeckenLampen_map structexclude\", \n" + 
-				"      \"webCmd\": \"RGB\", \n" + 
-				"      \"widgetOverride\": \"RGB:colorpicker,RGB\" \n" + 
-				"    } \n" + 
-				"  }  ], \n" + 
-				"  \"totalResultsReturned\":2 \n" + 
-				"}\n" + 
-				"            
\n" + - "
\n" + - " \n" + - ""; - - String TestData2 = "
\n" + - "
\n" + "{   \"Arg\":\"room=HaBridge\",   \"Results\": [   {     \"Name\":\"wifi_steckdose3\",     \"PossibleSets\":\"on:noArg off:noArg off on toggle\",     \"PossibleAttrs\":\"alias comment:textField-long eventMap group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 IODev qos retain publishSet publishSet_.* subscribeReading_.* autoSubscribeReadings event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat:textField-long timestamp-on-change-reading alarmDevice:Actor,Sensor alarmSettings cmdIcon devStateIcon devStateStyle icon lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0 sortby structexclude webCmd webCmdLabel:textField-long widgetOverride userattr\",     \"Internals\": {       \"CHANGED\": \"null\",       \"NAME\": \"wifi_steckdose3\",       \"NR\": \"270\",       \"STATE\": \"off\",       \"TYPE\": \"MQTT_DEVICE\",       \"retain\": \"*:1 \"     },     \"Readings\": {       \"state\": { \"Value\":\"OFF\", \"Time\":\"2018-01-01 23:01:21\" },       \"transmission-state\": { \"Value\":\"subscription acknowledged\", \"Time\":\"2018-01-03 22:34:00\" }     },     \"Attributes\": {       \"IODev\": \"myBroker\",       \"alias\": \"Stecki\",       \"devStateIcon\": \"on:black_Steckdose.on off:black_Steckdose.off\",       \"event-on-change-reading\": \"state\",       \"eventMap\": \"ON:on OFF:off\",       \"publishSet\": \"on off toggle /SmartHome/az/stecker/cmnd/POWER\",       \"retain\": \"1\",       \"room\": \"HaBridge,Arbeitszimmer,mqtt\",       \"stateFormat\": \"state\",       \"subscribeReading_state\": \"/SmartHome/az/stecker/stat/POWER\",       \"webCmd\": \"on:off:toggle\"     }   }  ],   \"totalResultsReturned\":1 }" + 
-				"            
\n" + - "
\n" + - " \n" + - ""; - List deviceList = null; - FHEMItem theFhemStates; - String theUrl = null; - String theData; - NameValue[] headers = null; - if(theFhem.getSecure() != null && theFhem.getSecure()) - theUrl = "https://"; - else - theUrl = "http://"; - if(theFhem.getUsername() != null && !theFhem.getUsername().isEmpty() && theFhem.getPassword() != null && !theFhem.getPassword().isEmpty()) { - theUrl = theUrl + theFhem.getUsername() + ":" + theFhem.getPassword() + "@"; - } - theUrl = theUrl + theFhem.getIp() + ":" + theFhem.getPort() + "/fhem?cmd=jsonlist2"; - if(theFhem.getWebhook() != null && !theFhem.getWebhook().trim().isEmpty()) - theUrl = theUrl + "%20room=" + theFhem.getWebhook().trim(); -// theData = httpClient.doHttpRequest(theUrl, HttpGet.METHOD_NAME, "application/json", null, headers); - theData = TestData; - if(theData != null) { - log.debug("GET FHEM States - data: " + theData); - theData = getJSONData(theData); - theFhemStates = new Gson().fromJson(theData, FHEMItem.class); - if(theFhemStates == null) { - log.warn("Cannot get any devices for FHEM " + theFhem.getName() + " as response is not parsable."); - } - else { - deviceList = new ArrayList(); - - for (Result aResult:theFhemStates.getResults()) { + String name = aResult.getName(); + if(name.contains("")); + name = name.substring(1, name.indexOf(">>"); } catch(IOException e) { @@ -94,6 +95,7 @@ public class FibaroInfo private Room[] getRooms() { String result = request("/api/rooms"); + log.debug("getRooms response: <<<" + result + ">>>"); Room[] rooms = result == null ? new Room[0] : gson.fromJson(result, Room[].class); if(replaceTrash) for(Room r : rooms) @@ -108,6 +110,7 @@ public class FibaroInfo log.info("Found: " + rooms.length + " rooms"); String result = request("/api/devices?enabled=true&visible=true"); + log.debug("getDevices response: <<<" + result + ">>>"); Device[] all_devices = result == null ? new Device[0] : gson.fromJson(result, Device[].class); int count = 0; @@ -147,6 +150,7 @@ public class FibaroInfo Room[] rooms = getRooms(); String result = request("/api/scenes?enabled=true&visible=true"); + log.debug("getScenes response: <<<" + result + ">>>"); Scene[] all_scenes = result == null ? new Scene[0] : gson.fromJson(result, Scene[].class); int count = 0; diff --git a/src/main/resources/public/scripts/app.js b/src/main/resources/public/scripts/app.js index 1486b33..99920e0 100644 --- a/src/main/resources/public/scripts/app.js +++ b/src/main/resources/public/scripts/app.js @@ -1499,6 +1499,10 @@ app.controller ('SystemController', function ($scope, $location, bridgeService, $scope.bridge.isInControl = false; $scope.visible = false; $scope.imgUrl = "glyphicon glyphicon-plus"; + $scope.newhassport = "8123"; + $scope.newdomoticzport = "8080"; + $scope.newopenhabport = "8080"; + $scope.newfhemport = "8080"; $scope.addVeratoSettings = function (newveraname, newveraip) { if($scope.bridge.settings.veraaddress === undefined || $scope.bridge.settings.veraaddress === null) { $scope.bridge.settings.veraaddress = { devices: [] }; @@ -1610,6 +1614,7 @@ app.controller ('SystemController', function ($scope, $location, bridgeService, $scope.newhassip = null; $scope.newhassport = null; $scope.newhasspassword = null; + $scope.newhassport = "8123"; }; $scope.removeHasstoSettings = function (hassname, hassip) { for(var i = $scope.bridge.settings.hassaddress.devices.length - 1; i >= 0; i--) { @@ -1644,7 +1649,7 @@ app.controller ('SystemController', function ($scope, $location, bridgeService, $scope.bridge.settings.domoticzaddress.devices.push(newdomoticz); $scope.newdomoticzname = null; $scope.newdomoticzip = null; - $scope.newdomoticzport = null; + $scope.newdomoticzport = "8080"; $scope.newdomoticzpassword = null; }; $scope.removeDomoticztoSettings = function (domoticzname, domoticzip) { @@ -1680,7 +1685,7 @@ app.controller ('SystemController', function ($scope, $location, bridgeService, $scope.bridge.settings.openhabaddress.devices.push(newopenhab); $scope.newopenhabname = null; $scope.newopenhabip = null; - $scope.newopenhabport = null; + $scope.newopenhabport = "8080"; $scope.newopenhabusername = null; $scope.newopenhabpassword = null; }; @@ -1700,7 +1705,7 @@ app.controller ('SystemController', function ($scope, $location, bridgeService, $scope.bridge.settings.fhemaddress.devices.push(newfhem); $scope.newfhemname = null; $scope.newfhemip = null; - $scope.newfhemport = null; + $scope.newfhemport = "8080"; $scope.newfhemusername = null; $scope.newfhempassword = null; $scope.newfhemwebhook = null; diff --git a/src/test/java/com/bwssystems/fhem/test/FHEMInstanceConstructor.java b/src/test/java/com/bwssystems/fhem/test/FHEMInstanceConstructor.java index 245c596..a5da668 100644 --- a/src/test/java/com/bwssystems/fhem/test/FHEMInstanceConstructor.java +++ b/src/test/java/com/bwssystems/fhem/test/FHEMInstanceConstructor.java @@ -3,6 +3,7 @@ package com.bwssystems.fhem.test; import java.util.List; import com.bwssystems.HABridge.NamedIP; +import com.bwssystems.HABridge.plugins.fhem.FHEMDevice; import com.bwssystems.HABridge.plugins.fhem.FHEMInstance; import com.bwssystems.HABridge.plugins.fhem.FHEMItem; import com.bwssystems.HABridge.plugins.fhem.Result; @@ -237,6 +238,63 @@ public class FHEMInstanceConstructor { " \n" + " \n" + ""; + public final static String TestData3 ="DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n" + + "\n" + + "\n" + + "Home, Sweet Home\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "
\n" + + "
\n" + + "
\n" + + "
{\n" + 
+			"\"Arg\":\"room=HaBridge\",\n" + 
+			"\"Results\": [\n" + 
+			"{\n" + 
+			"\"Name\":\"wifi_steckdose3\",\n" + 
+			"\"PossibleSets\":\"on:noArg off:noArg off on toggle\",\n" + 
+			"\"PossibleAttrs\":\"alias comment:textField-long eventMap group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 IODev qos retain publishSet publishSet_.* subscribeReading_.* autoSubscribeReadings event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat:textField-long timestamp-on-change-reading alarmDevice:Actor,Sensor alarmSettings cmdIcon devStateIcon devStateStyle icon lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0 sortby structexclude webCmd webCmdLabel:textField-long widgetOverride userattr\",\n" + 
+			"\"Internals\": {\n" + 
+			"\"NAME\": \"wifi_steckdose3\",\n" + 
+			"\"NR\": \"270\",\n" + 
+			"\"STATE\": \"off\",\n" + 
+			"\"TYPE\": \"MQTT_DEVICE\",\n" + 
+			"\"retain\": \"*:1 \"\n" + 
+			"},\n" + 
+			"\"Readings\": {\n" + 
+			"\"state\": { \"Value\":\"OFF\", \"Time\":\"2018-01-07 05:16:01\" },\n" + 
+			"\"transmission-state\": { \"Value\":\"incoming publish received\", \"Time\":\"2018-01-07 05:16:01\" }\n" + 
+			"},\n" + 
+			"\"Attributes\": {\n" + 
+			"\"IODev\": \"myBroker\",\n" + 
+			"\"alias\": \"Stecki\",\n" + 
+			"\"devStateIcon\": \"on:black_Steckdose.on off:black_Steckdose.off\",\n" + 
+			"\"event-on-change-reading\": \"state\",\n" + 
+			"\"eventMap\": \"ON:on OFF:off\",\n" + 
+			"\"publishSet\": \"on off toggle /SmartHome/az/stecker/cmnd/POWER\",\n" + 
+			"\"retain\": \"1\",\n" + 
+			"\"room\": \"HaBridge,Arbeitszimmer,mqtt\",\n" + 
+			"\"stateFormat\": \"state\",\n" + 
+			"\"subscribeReading_state\": \"/SmartHome/az/stecker/stat/POWER\",\n" + 
+			"\"webCmd\": \"on:off:toggle\"\n" + 
+			"}\n" + 
+			"}  ],\n" + 
+			"\"totalResultsReturned\":1\n" + 
+			"}\n" + 
+			"
\n" + + "
\n" + + ""; public static void main(String[] args){ FHEMInstanceConstructor aTestService = new FHEMInstanceConstructor(); if(aTestService.validateStructure()) @@ -246,21 +304,57 @@ public class FHEMInstanceConstructor { public Boolean validateStructure() { Gson aGson; NamedIP anAddress = new NamedIP(); - anAddress.setName("testName"); + anAddress.setName("TestData1"); anAddress.setIp("10.0.0.1"); FHEMInstance anInstance = new FHEMInstance(anAddress); - String decodeData = anInstance.getJSONData(TestData2); - try { - aGson = new GsonBuilder() - .create(); - - FHEMItem aService = aGson.fromJson(decodeData, FHEMItem.class); - List services = aService.getResults(); + HttpTestHandler theHttpTestClient = new HttpTestHandler(); + List services = null; + List deviceList = null; + String decodeData = null; + String theTestData = null; + + for(int i = 0; i < 3; i++) { + if(i == 0) + theTestData = TestData; + else if(i == 1) { + theTestData = TestData2; + anAddress.setName(anAddress.getName().replace("1", "2")); + anInstance = new FHEMInstance(anAddress); + } + else { + anAddress.setName(anAddress.getName().replace("2", "3")); + theTestData = TestData3; + } + decodeData = anInstance.getJSONData(theTestData); + try { + aGson = new GsonBuilder() + .create(); + + FHEMItem aService = aGson.fromJson(decodeData, FHEMItem.class); + services = aService.getResults(); for(Result aResult:services) { - System.out.println(" " + aResult.getName()); + System.out.println(anAddress.getName() + " - Json Test:"); + System.out.println(" " + aResult.getName()); + System.out.println(" " + aResult.getPossibleSets()); } - } catch (Exception e) { - return false; + } catch (Exception e) { + return false; + } + System.out.println("----------------------------------"); + try { + theHttpTestClient.setTheData(theTestData); + deviceList = anInstance.getDevices(theHttpTestClient); + if(deviceList == null) + return false; + for(FHEMDevice aDevice:deviceList) { + System.out.println(aDevice.getName() + " - FHEMDevice Class Test:"); + System.out.println(" " + aDevice.getItem().getName()); + System.out.println(" " + aDevice.getItem().getPossibleSets()); + } + } catch (Exception e) { + return false; + } + System.out.println("----------------------------------"); } return true; } diff --git a/src/test/java/com/bwssystems/fhem/test/HttpTestHandler.java b/src/test/java/com/bwssystems/fhem/test/HttpTestHandler.java new file mode 100644 index 0000000..5f15a00 --- /dev/null +++ b/src/test/java/com/bwssystems/fhem/test/HttpTestHandler.java @@ -0,0 +1,20 @@ +package com.bwssystems.fhem.test; + +import com.bwssystems.HABridge.api.NameValue; +import com.bwssystems.HABridge.plugins.http.HTTPHandler; + +public class HttpTestHandler extends HTTPHandler { + private String theData; + + public String getTheData() { + return theData; + } + + public void setTheData(String theData) { + this.theData = theData; + } + + public String doHttpRequest(String url, String httpVerb, String contentType, String body, NameValue[] headers) { + return theData; + } +}