// Path: src/main/java/com/bwssystems/HABridge/NamedIP.java
// public class NamedIP {
// 	private String name;
// 	private String ip;
// 	private String webhook;
// 	private String port;
// 	private String username;
// 	private String password;
// 	private JsonObject extensions;
// 	private Boolean secure;
// 	private String httpPreamble;
// 	private String encodedLogin;
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// 	public String getIp() {
// 		return ip;
// 	}
// 
// 	public void setIp(String ip) {
// 		this.ip = ip;
// 	}
// 
// 	public String getWebhook() {
// 		return webhook;
// 	}
// 
// 	public void setWebhook(final String webhook) {
// 		this.webhook = webhook;
// 	}
// 
// 	public String getPort() {
// 		return port;
// 	}
// 
// 	public void setPort(String port) {
// 		this.port = port;
// 	}
// 
// 	public String getUsername() {
// 		return username;
// 	}
// 
// 	public void setUsername(String username) {
// 		this.username = username;
// 	}
// 
// 	public String getPassword() {
// 		return password;
// 	}
// 
// 	public void setPassword(String password) {
// 		this.password = password;
// 	}
// 
// 	public Boolean getSecure() {
// 		return secure;
// 	}
// 
// 	public void setSecure(Boolean secure) {
// 		this.secure = secure;
// 	}
// 
// 	public JsonObject getExtensions() {
// 		return extensions;
// 	}
// 
// 	public void setExtensions(JsonObject extensions) {
// 		this.extensions = extensions;
// 	}
// 
// 	public String getHttpPreamble() {
// 		if (httpPreamble == null || !httpPreamble.trim().isEmpty()) {
// 			if (getSecure() != null && getSecure())
// 				httpPreamble = "https://";
// 			else
// 				httpPreamble = "http://";
// 
// 			httpPreamble = httpPreamble + getIp();
// 			if (getPort() != null && !getPort().trim().isEmpty()) {
// 				httpPreamble = httpPreamble + ":" + getPort();
// 			}
// 		}
// 		return httpPreamble;
// 	}
// 
// 	public void setHttpPreamble(String httpPreamble) {
// 		this.httpPreamble = httpPreamble;
// 	}
// 
// 	public String getUserPass64() {
// 		if (encodedLogin == null || !encodedLogin.trim().isEmpty()) {
// 			if (getUsername() != null && !getUsername().isEmpty() && getPassword() != null
// 					&& !getPassword().isEmpty()) {
// 				String userPass = getUsername() + ":" + getPassword();
// 				encodedLogin = new String(Base64.encodeBase64(userPass.getBytes()));
// 			}
// 		}
// 
// 		return encodedLogin;
// 	}
// }
// 
// Path: src/main/java/com/bwssystems/HABridge/hue/ColorData.java
// public class ColorData {
// 	public enum ColorMode { XY, CT, HS}
// 
// 	private ColorMode mode;
// 	private Object data;
// 	
// 	public ColorData(ColorMode mode, Object value) {
// 		this.mode = mode;
// 		this.data = value;
// 	}
// 	
// 	public Object getData() {
// 		return data;
// 	}
// 
// 	public ColorMode getColorMode() {
// 		return mode;
// 	}
// 
// 	public String toString() {
// 		String formatString;
// 
// 		formatString = "Color Data mode: " + mode + ", data: " + data;
// 		return formatString;
// 	}
// }


import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.bwssystems.HABridge.BridgeSettings;
import com.bwssystems.HABridge.DeviceMapTypes;
import com.bwssystems.HABridge.Home;
import com.bwssystems.HABridge.NamedIP;
import com.bwssystems.HABridge.api.CallItem;
import com.bwssystems.HABridge.dao.DeviceDescriptor;
import com.bwssystems.HABridge.hue.ColorData;
import com.bwssystems.HABridge.hue.MultiCommandUtil;
			for(HomeWizardSmartPlugDevice device : plugGateways.get(key).getDevices())
				deviceList.add(device);
		}
		
		return deviceList;
	}
	
	@Override
	public Object getItems(String type) {
		
		if (validHomeWizard)
		{
			if (type.equalsIgnoreCase(DeviceMapTypes.HOMEWIZARD_DEVICE[DeviceMapTypes.typeIndex]))
			{
				return getDevices();
			}
		}

		return null;
	}

	@Override
	public Home createHome(BridgeSettings bridgeSettings) {
		
		validHomeWizard = bridgeSettings.getBridgeSettingsDescriptor().isValidHomeWizard();
		log.info("HomeWizard Home created. " + (validHomeWizard ? "" : "No HomeWizard gateways configured."));
		
		if (validHomeWizard)
		{
			plugGateways = new HashMap<>();
// Path: src/main/java/com/bwssystems/HABridge/NamedIP.java
// public class NamedIP {
// 	private String name;
// 	private String ip;
// 	private String webhook;
// 	private String port;
// 	private String username;
// 	private String password;
// 	private JsonObject extensions;
// 	private Boolean secure;
// 	private String httpPreamble;
// 	private String encodedLogin;
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// 	public String getIp() {
// 		return ip;
// 	}
// 
// 	public void setIp(String ip) {
// 		this.ip = ip;
// 	}
// 
// 	public String getWebhook() {
// 		return webhook;
// 	}
// 
// 	public void setWebhook(final String webhook) {
// 		this.webhook = webhook;
// 	}
// 
// 	public String getPort() {
// 		return port;
// 	}
// 
// 	public void setPort(String port) {
// 		this.port = port;
// 	}
// 
// 	public String getUsername() {
// 		return username;
// 	}
// 
// 	public void setUsername(String username) {
// 		this.username = username;
// 	}
// 
// 	public String getPassword() {
// 		return password;
// 	}
// 
// 	public void setPassword(String password) {
// 		this.password = password;
// 	}
// 
// 	public Boolean getSecure() {
// 		return secure;
// 	}
// 
// 	public void setSecure(Boolean secure) {
// 		this.secure = secure;
// 	}
// 
// 	public JsonObject getExtensions() {
// 		return extensions;
// 	}
// 
// 	public void setExtensions(JsonObject extensions) {
// 		this.extensions = extensions;
// 	}
// 
// 	public String getHttpPreamble() {
// 		if (httpPreamble == null || !httpPreamble.trim().isEmpty()) {
// 			if (getSecure() != null && getSecure())
// 				httpPreamble = "https://";
// 			else
// 				httpPreamble = "http://";
// 
// 			httpPreamble = httpPreamble + getIp();
// 			if (getPort() != null && !getPort().trim().isEmpty()) {
// 				httpPreamble = httpPreamble + ":" + getPort();
// 			}
// 		}
// 		return httpPreamble;
// 	}
// 
// 	public void setHttpPreamble(String httpPreamble) {
// 		this.httpPreamble = httpPreamble;
// 	}
// 
// 	public String getUserPass64() {
// 		if (encodedLogin == null || !encodedLogin.trim().isEmpty()) {
// 			if (getUsername() != null && !getUsername().isEmpty() && getPassword() != null
// 					&& !getPassword().isEmpty()) {
// 				String userPass = getUsername() + ":" + getPassword();
// 				encodedLogin = new String(Base64.encodeBase64(userPass.getBytes()));
// 			}
// 		}
// 
// 		return encodedLogin;
// 	}
// }
// 
// Path: src/main/java/com/bwssystems/HABridge/hue/ColorData.java
// public class ColorData {
// 	public enum ColorMode { XY, CT, HS}
// 
// 	private ColorMode mode;
// 	private Object data;
// 	
// 	public ColorData(ColorMode mode, Object value) {
// 		this.mode = mode;
// 		this.data = value;
// 	}
// 	
// 	public Object getData() {
// 		return data;
// 	}
// 
// 	public ColorMode getColorMode() {
// 		return mode;
// 	}
// 
// 	public String toString() {
// 		String formatString;
// 
// 		formatString = "Color Data mode: " + mode + ", data: " + data;
// 		return formatString;
// 	}
// }


// Path: src/main/java/com/bwssystems/HABridge/plugins/homewizard/HomeWizardHome.java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.bwssystems.HABridge.BridgeSettings;
import com.bwssystems.HABridge.DeviceMapTypes;
import com.bwssystems.HABridge.Home;
import com.bwssystems.HABridge.NamedIP;
import com.bwssystems.HABridge.api.CallItem;
import com.bwssystems.HABridge.dao.DeviceDescriptor;
import com.bwssystems.HABridge.hue.ColorData;
import com.bwssystems.HABridge.hue.MultiCommandUtil;

			for(HomeWizardSmartPlugDevice device : plugGateways.get(key).getDevices())
				deviceList.add(device);
		}
		
		return deviceList;
	}
	
	@Override
	public Object getItems(String type) {
		
		if (validHomeWizard)
		{
			if (type.equalsIgnoreCase(DeviceMapTypes.HOMEWIZARD_DEVICE[DeviceMapTypes.typeIndex]))
			{
				return getDevices();
			}
		}

		return null;
	}

	@Override
	public Home createHome(BridgeSettings bridgeSettings) {
		
		validHomeWizard = bridgeSettings.getBridgeSettingsDescriptor().isValidHomeWizard();
		log.info("HomeWizard Home created. " + (validHomeWizard ? "" : "No HomeWizard gateways configured."));
		
		if (validHomeWizard)
		{
			plugGateways = new HashMap<>();
			Iterator<NamedIP> gatewaysList = bridgeSettings.getBridgeSettingsDescriptor().getHomeWizardAddress().getDevices().iterator();