diff --git a/smartapps/smartthings/bose-soundtouch-connect.src/bose-soundtouch-connect.groovy b/smartapps/smartthings/bose-soundtouch-connect.src/bose-soundtouch-connect.groovy
deleted file mode 100644
index 6a2d850..0000000
--- a/smartapps/smartthings/bose-soundtouch-connect.src/bose-soundtouch-connect.groovy
+++ /dev/null
@@ -1,611 +0,0 @@
-//DEPRECATED. INTEGRATION MOVED TO SUPER LAN CONNECT
-
-/**
- * Bose SoundTouch (Connect)
- *
- * Copyright 2015 SmartThings
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
- * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
- * for the specific language governing permissions and limitations under the License.
- *
- */
- definition(
- name: "Bose SoundTouch (Connect)",
- namespace: "smartthings",
- author: "SmartThings",
- description: "Control your Bose SoundTouch speakers",
- category: "SmartThings Labs",
- iconUrl: "https://d3azp77rte0gip.cloudfront.net/smartapps/fcf1d93a-ba0b-4324-b96f-e5b5487dfaf5/images/BoseST_icon.png",
- iconX2Url: "https://d3azp77rte0gip.cloudfront.net/smartapps/fcf1d93a-ba0b-4324-b96f-e5b5487dfaf5/images/BoseST_icon@2x.png",
- iconX3Url: "https://d3azp77rte0gip.cloudfront.net/smartapps/fcf1d93a-ba0b-4324-b96f-e5b5487dfaf5/images/BoseST_icon@2x-1.png",
- singleInstance: true
-)
-
-preferences {
- page(name:"deviceDiscovery", title:"Device Setup", content:"deviceDiscovery", refreshTimeout:5)
-}
-
-/**
- * Get the urn that we're looking for
- *
- * @return URN which we are looking for
- *
- * @todo This + getUSNQualifier should be one and should use regular expressions
- */
-def getDeviceType() {
- return "urn:schemas-upnp-org:device:MediaRenderer:1" // Bose
-}
-
-/**
- * If not null, returns an additional qualifier for ssdUSN
- * to avoid spamming the network
- *
- * @return Additional qualifier OR null if not needed
- */
-def getUSNQualifier() {
- return "uuid:BO5EBO5E-F00D-F00D-FEED-"
-}
-
-/**
- * Get the name of the new device to instantiate in the user's smartapps
- * This must be an app owned by the namespace (see #getNameSpace).
- *
- * @return name
- */
-def getDeviceName() {
- return "Bose SoundTouch"
-}
-
-/**
- * Returns the namespace this app and siblings use
- *
- * @return namespace
- */
-def getNameSpace() {
- return "smartthings"
-}
-
-/**
- * The deviceDiscovery page used by preferences. Will automatically
- * make calls to the underlying discovery mechanisms as well as update
- * whenever new devices are discovered AND verified.
- *
- * @return a dynamicPage() object
- */
-def deviceDiscovery()
-{
- if(canInstallLabs())
- {
- def refreshInterval = 3 // Number of seconds between refresh
- int deviceRefreshCount = !state.deviceRefreshCount ? 0 : state.deviceRefreshCount as int
- state.deviceRefreshCount = deviceRefreshCount + refreshInterval
-
- def devices = getSelectableDevice()
- def numFound = devices.size() ?: 0
-
- // Make sure we get location updates (contains LAN data such as SSDP results, etc)
- subscribeNetworkEvents()
-
- //device discovery request every 15s
- if((deviceRefreshCount % 15) == 0) {
- discoverDevices()
- }
-
- // Verify request every 3 seconds except on discoveries
- if(((deviceRefreshCount % 3) == 0) && ((deviceRefreshCount % 15) != 0)) {
- verifyDevices()
- }
-
- log.trace "Discovered devices: ${devices}"
-
- return dynamicPage(name:"deviceDiscovery", title:"Discovery Started!", nextPage:"", refreshInterval:refreshInterval, install:true, uninstall: true) {
- section("Please wait while we discover your ${getDeviceName()}. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.") {
- input "selecteddevice", "enum", required:false, title:"Select ${getDeviceName()} (${numFound} found)", multiple:true, options:devices, submitOnChange: true
- }
- }
- }
- else
- {
- def upgradeNeeded = """To use SmartThings Labs, your Hub should be completely up to date.
-
-To update your Hub, access Location Settings in the Main Menu (tap the gear next to your location name), select your Hub, and choose "Update Hub"."""
-
- return dynamicPage(name:"deviceDiscovery", title:"Upgrade needed!", nextPage:"", install:true, uninstall: true) {
- section("Upgrade") {
- paragraph "$upgradeNeeded"
- }
- }
- }
-}
-
-/**
- * Called by SmartThings Cloud when user has selected device(s) and
- * pressed "Install".
- */
-def installed() {
- log.trace "Installed with settings: ${settings}"
- initialize()
-}
-
-/**
- * Called by SmartThings Cloud when app has been updated
- */
-def updated() {
- log.trace "Updated with settings: ${settings}"
- unsubscribe()
- initialize()
-}
-
-/**
- * Called by SmartThings Cloud when user uninstalls the app
- *
- * We don't need to manually do anything here because any children
- * are automatically removed upon the removal of the parent.
- *
- * Only time to do anything here is when you need to notify
- * the remote end. And even then you're discouraged from removing
- * the children manually.
- */
-def uninstalled() {
-}
-
-/**
- * If user has selected devices, will start monitoring devices
- * for changes (new address, port, etc...)
- */
-def initialize() {
- log.trace "initialize()"
- state.subscribe = false
- if (selecteddevice) {
- addDevice()
- refreshDevices()
- subscribeNetworkEvents(true)
- }
-}
-
-/**
- * Adds the child devices based on the user's selection
- *
- * Uses selecteddevice defined in the deviceDiscovery() page
- */
-def addDevice(){
- def devices = getVerifiedDevices()
- def devlist
- log.trace "Adding childs"
-
- // If only one device is selected, we don't get a list (when using simulator)
- if (!(selecteddevice instanceof List)) {
- devlist = [selecteddevice]
- } else {
- devlist = selecteddevice
- }
-
- log.trace "These are being installed: ${devlist}"
-
- devlist.each { dni ->
- def d = getChildDevice(dni)
- if(!d) {
- def newDevice = devices.find { (it.value.mac) == dni }
- def deviceName = newDevice?.value.name
- if (!deviceName)
- deviceName = getDeviceName() + "[${newDevice?.value.name}]"
- d = addChildDevice(getNameSpace(), getDeviceName(), dni, newDevice?.value.hub, [label:"${deviceName}"])
- d.boseSetDeviceID(newDevice.value.deviceID)
- log.trace "Created ${d.displayName} with id $dni"
- // sync DTH with device, done here as it currently don't work from the DTH's installed() method
- d.refresh()
- } else {
- log.trace "${d.displayName} with id $dni already exists"
- }
- }
-}
-
-/**
- * Resolves a DeviceNetworkId to an address. Primarily used by children
- *
- * @param dni Device Network id
- * @return address or null
- */
-def resolveDNI2Address(dni) {
- def device = getVerifiedDevices().find { (it.value.mac) == dni }
- if (device) {
- return convertHexToIP(device.value.networkAddress)
- }
- return null
-}
-
-/**
- * Joins a child to the "Play Everywhere" zone
- *
- * @param child The speaker joining the zone
- * @return A list of maps with POST data
- */
-def boseZoneJoin(child) {
- log = child.log // So we can debug this function
-
- def results = []
- def result = [:]
-
- // Find the master (if any)
- def server = getChildDevices().find{ it.boseGetZone() == "server" }
-
- if (server) {
- log.debug "boseJoinZone() We have a server already, so lets add the new speaker"
- child.boseSetZone("client")
-
- result['endpoint'] = "/setZone"
- result['host'] = server.getDeviceIP() + ":8090"
- result['body'] = ""
- getChildDevices().each{ it ->
- log.trace "child: " + child
- log.trace "zone : " + it.boseGetZone()
- if (it.boseGetZone() || it.boseGetDeviceID() == child.boseGetDeviceID())
- result['body'] = result['body'] + "${it.boseGetDeviceID()}"
- }
- result['body'] = result['body'] + ''
- } else {
- log.debug "boseJoinZone() No server, add it!"
- result['endpoint'] = "/setZone"
- result['host'] = child.getDeviceIP() + ":8090"
- result['body'] = ""
- result['body'] = result['body'] + "${child.boseGetDeviceID()}"
- result['body'] = result['body'] + ''
- child.boseSetZone("server")
- }
- results << result
- return results
-}
-
-def boseZoneReset() {
- getChildDevices().each{ it.boseSetZone(null) }
-}
-
-def boseZoneHasMaster() {
- return getChildDevices().find{ it.boseGetZone() == "server" } != null
-}
-
-/**
- * Removes a speaker from the play everywhere zone.
- *
- * @param child Which speaker is leaving
- * @return a list of maps with POST data
- */
-def boseZoneLeave(child) {
- log = child.log // So we can debug this function
-
- def results = []
- def result = [:]
-
- // First, tag us as a non-member
- child.boseSetZone(null)
-
- // Find the master (if any)
- def server = getChildDevices().find{ it.boseGetZone() == "server" }
-
- if (server && server.boseGetDeviceID() != child.boseGetDeviceID()) {
- log.debug "boseLeaveZone() We have a server, so tell him we're leaving"
- result['endpoint'] = "/removeZoneSlave"
- result['host'] = server.getDeviceIP() + ":8090"
- result['body'] = ""
- result['body'] = result['body'] + "${child.boseGetDeviceID()}"
- result['body'] = result['body'] + ''
- results << result
- } else {
- log.debug "boseLeaveZone() No server, then...uhm, we probably were it!"
- // Dismantle the entire thing, first send this to master
- result['endpoint'] = "/removeZoneSlave"
- result['host'] = child.getDeviceIP() + ":8090"
- result['body'] = ""
- getChildDevices().each{ dev ->
- if (dev.boseGetZone() || dev.boseGetDeviceID() == child.boseGetDeviceID())
- result['body'] = result['body'] + "${dev.boseGetDeviceID()}"
- }
- result['body'] = result['body'] + ''
- results << result
-
- // Also issue this to each individual client
- getChildDevices().each{ dev ->
- if (dev.boseGetZone() && dev.boseGetDeviceID() != child.boseGetDeviceID()) {
- log.trace "Additional device: " + dev
- result['host'] = dev.getDeviceIP() + ":8090"
- results << result
- }
- }
- }
-
- return results
-}
-
-/**
- * Define our XML parsers
- *
- * @return mapping of root-node <-> parser function
- */
-def getParsers() {
- [
- "root" : "parseDESC",
- "info" : "parseINFO"
- ]
-}
-
-/**
- * Called when location has changed, contains information from
- * network transactions. See deviceDiscovery() for where it is
- * registered.
- *
- * @param evt Holds event information
- */
-def onLocation(evt) {
- // Convert the event into something we can use
- def lanEvent = parseLanMessage(evt.description, true)
- lanEvent << ["hub":evt?.hubId]
-
- // Determine what we need to do...
- if (lanEvent?.ssdpTerm?.contains(getDeviceType()) &&
- (getUSNQualifier() == null ||
- lanEvent?.ssdpUSN?.contains(getUSNQualifier())
- )
- )
- {
- parseSSDP(lanEvent)
- }
- else if (
- lanEvent.headers && lanEvent.body &&
- lanEvent.headers."content-type"?.contains("xml")
- )
- {
- def parsers = getParsers()
- def xmlData = new XmlSlurper().parseText(lanEvent.body)
-
- // Let each parser take a stab at it
- parsers.each { node,func ->
- if (xmlData.name() == node)
- "$func"(xmlData)
- }
- }
-}
-
-/**
- * Handles SSDP description file.
- *
- * @param xmlData
- */
-private def parseDESC(xmlData) {
- log.info "parseDESC()"
-
- def devicetype = getDeviceType().toLowerCase()
- def devicetxml = body.device.deviceType.text().toLowerCase()
-
- // Make sure it's the type we want
- if (devicetxml == devicetype) {
- def devices = getDevices()
- def device = devices.find {it?.key?.contains(xmlData?.device?.UDN?.text())}
- if (device && !device.value?.verified) {
- // Unlike regular DESC, we cannot trust this just yet, parseINFO() decides all
- device.value << [name:xmlData?.device?.friendlyName?.text(),model:xmlData?.device?.modelName?.text(), serialNumber:xmlData?.device?.serialNum?.text()]
- } else {
- log.error "parseDESC(): The xml file returned a device that didn't exist"
- }
- }
-}
-
-/**
- * Handle BOSE result. This is an alternative to
- * using the SSDP description standard. Some of the speakers do
- * not support SSDP description, so we need this as well.
- *
- * @param xmlData
- */
-private def parseINFO(xmlData) {
- log.info "parseINFO()"
- def devicetype = getDeviceType().toLowerCase()
-
- def deviceID = xmlData.attributes()['deviceID']
- def device = getDevices().find {it?.key?.contains(deviceID)}
- if (device && !device.value?.verified) {
- device.value << [name:xmlData?.name?.text(),model:xmlData?.type?.text(), serialNumber:xmlData?.serialNumber?.text(), "deviceID":deviceID, verified: true]
- }
-}
-
-/**
- * Handles SSDP discovery messages and adds them to the list
- * of discovered devices. If it already exists, it will update
- * the port and location (in case it was moved).
- *
- * @param lanEvent
- */
-def parseSSDP(lanEvent) {
- //SSDP DISCOVERY EVENTS
- def USN = lanEvent.ssdpUSN.toString()
- def devices = getDevices()
-
- if (!(devices."${USN}")) {
- //device does not exist
- log.trace "parseSDDP() Adding Device \"${USN}\" to known list"
- devices << ["${USN}":lanEvent]
- } else {
- // update the values
- def d = devices."${USN}"
- if (d.networkAddress != lanEvent.networkAddress || d.deviceAddress != lanEvent.deviceAddress) {
- log.trace "parseSSDP() Updating device location (ip & port)"
- d.networkAddress = lanEvent.networkAddress
- d.deviceAddress = lanEvent.deviceAddress
- }
- }
-}
-
-/**
- * Generates a Map object which can be used with a preference page
- * to represent a list of devices detected and verified.
- *
- * @return Map with zero or more devices
- */
-Map getSelectableDevice() {
- def devices = getVerifiedDevices()
- def map = [:]
- devices.each {
- def value = "${it.value.name}"
- def key = it.value.mac
- map["${key}"] = value
- }
- map
-}
-
-/**
- * Starts the refresh loop, making sure to keep us up-to-date with changes
- *
- */
-private refreshDevices() {
- discoverDevices()
- verifyDevices()
- runIn(300, "refreshDevices")
-}
-
-/**
- * Starts a subscription for network events
- *
- * @param force If true, will unsubscribe and subscribe if necessary (Optional, default false)
- */
-private subscribeNetworkEvents(force=false) {
- if (force) {
- unsubscribe()
- state.subscribe = false
- }
-
- if(!state.subscribe) {
- subscribe(location, null, onLocation, [filterEvents:false])
- state.subscribe = true
- }
-}
-
-/**
- * Issues a SSDP M-SEARCH over the LAN for a specific type (see getDeviceType())
- */
-private discoverDevices() {
- log.trace "discoverDevice() Issuing SSDP request"
- sendHubCommand(new physicalgraph.device.HubAction("lan discovery ${getDeviceType()}", physicalgraph.device.Protocol.LAN))
-}
-
-/**
- * Walks through the list of unverified devices and issues a verification
- * request for each of them (basically calling verifyDevice() per unverified)
- */
-private verifyDevices() {
- def devices = getDevices().findAll { it?.value?.verified != true }
-
- devices.each {
- verifyDevice(
- it?.value?.mac,
- convertHexToIP(it?.value?.networkAddress),
- convertHexToInt(it?.value?.deviceAddress),
- it?.value?.ssdpPath
- )
- }
-}
-
-/**
- * Verify the device, in this case, we need to obtain the info block which
- * holds information such as the actual mac to use in certain scenarios.
- *
- * Without this mac (henceforth referred to as deviceID), we can't do multi-speaker
- * functions.
- *
- * @param deviceNetworkId The DNI of the device
- * @param ip The address of the device on the network (not the same as DNI)
- * @param port The port to use (0 will be treated as invalid and will use 80)
- * @param devicessdpPath The URL path (for example, /desc)
- *
- * @note Result is captured in locationHandler()
- */
-private verifyDevice(String deviceNetworkId, String ip, int port, String devicessdpPath) {
- if(ip) {
- def address = ip + ":8090"
- sendHubCommand(new physicalgraph.device.HubAction([
- method: "GET",
- path: "/info",
- headers: [
- HOST: address,
- ]]))
- } else {
- log.warn("verifyDevice() IP address was empty")
- }
-}
-
-/**
- * Returns an array of devices which have been verified
- *
- * @return array of verified devices
- */
-def getVerifiedDevices() {
- getDevices().findAll{ it?.value?.verified == true }
-}
-
-/**
- * Returns all discovered devices or an empty array if none
- *
- * @return array of devices
- */
-def getDevices() {
- state.devices = state.devices ?: [:]
-}
-
-/**
- * Converts a hexadecimal string to an integer
- *
- * @param hex The string with a hexadecimal value
- * @return An integer
- */
-private Integer convertHexToInt(hex) {
- Integer.parseInt(hex,16)
-}
-
-/**
- * Converts an IP address represented as 0xAABBCCDD to AAA.BBB.CCC.DDD
- *
- * @param hex Address represented in hex
- * @return String containing normal IPv4 dot notation
- */
-private String convertHexToIP(hex) {
- if (hex)
- [convertHexToInt(hex[0..1]),convertHexToInt(hex[2..3]),convertHexToInt(hex[4..5]),convertHexToInt(hex[6..7])].join(".")
- else
- hex
-}
-
-/**
- * Tests if this setup can support SmarthThing Labs items
- *
- * @return true if it supports it.
- */
-private Boolean canInstallLabs()
-{
- return hasAllHubsOver("000.011.00603")
-}
-
-/**
- * Tests if the firmwares on all hubs owned by user match or exceed the
- * provided version number.
- *
- * @param desiredFirmware The version that must match or exceed
- * @return true if hub has same or newer
- */
-private Boolean hasAllHubsOver(String desiredFirmware)
-{
- return realHubFirmwareVersions.every { fw -> fw >= desiredFirmware }
-}
-
-/**
- * Creates a list of firmware version for every hub the user has
- *
- * @return List of firmwares
- */
-private List getRealHubFirmwareVersions()
-{
- return location.hubs*.firmwareVersionString.findAll { it }
-}
\ No newline at end of file
diff --git a/smartapps/smartthings/hue-connect.src/hue-connect.groovy b/smartapps/smartthings/hue-connect.src/hue-connect.groovy
deleted file mode 100644
index f72c914..0000000
--- a/smartapps/smartthings/hue-connect.src/hue-connect.groovy
+++ /dev/null
@@ -1,1769 +0,0 @@
-//DEPRECATED. INTEGRATION MOVED TO SUPER LAN CONNECT
-
-/**
- * Hue Service Manager
- *
- * Author: Juan Risso (juan@smartthings.com)
- *
- * Copyright 2015 SmartThings
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
- * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
- * for the specific language governing permissions and limitations under the License.
- *
- */
-include 'localization'
-
-definition(
- name: "Hue (Connect)",
- namespace: "smartthings",
- author: "SmartThings",
- description: "Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.",
- category: "SmartThings Labs",
- iconUrl: "https://s3.amazonaws.com/smartapp-icons/Partner/hue.png",
- iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Partner/hue@2x.png",
- singleInstance: true
-)
-
-preferences {
- page(name: "mainPage", title: "", content: "mainPage", refreshTimeout: 5)
- page(name: "bridgeDiscovery", title: "", content: "bridgeDiscovery", refreshTimeout: 5)
- page(name: "bridgeDiscoveryFailed", title: "", content: "bridgeDiscoveryFailed", refreshTimeout: 0)
- page(name: "bridgeBtnPush", title: "", content: "bridgeLinking", refreshTimeout: 5)
- page(name: "bulbDiscovery", title: "", content: "bulbDiscovery", refreshTimeout: 5)
-}
-
-def mainPage() {
- def bridges = bridgesDiscovered()
-
- if (state.refreshUsernameNeeded) {
- return bridgeLinking()
- } else if (state.username && bridges) {
- return bulbDiscovery()
- } else {
- return bridgeDiscovery()
- }
-}
-
-def bridgeDiscovery(params = [:]) {
- def bridges = bridgesDiscovered()
- int bridgeRefreshCount = !state.bridgeRefreshCount ? 0 : state.bridgeRefreshCount as int
- state.bridgeRefreshCount = bridgeRefreshCount + 1
- def refreshInterval = 3
-
- def options = bridges ?: []
- def numFound = options.size() ?: "0"
- if (numFound == 0) {
- if (state.bridgeRefreshCount == 25) {
- log.trace "Cleaning old bridges memory"
- state.bridges = [:]
- app.updateSetting("selectedHue", "")
- } else if (state.bridgeRefreshCount > 100) {
- // five minutes have passed, give up
- // there seems to be a problem going back from discovey failed page in some instances (compared to pressing next)
- // however it is probably a SmartThings settings issue
- state.bridges = [:]
- app.updateSetting("selectedHue", "")
- state.bridgeRefreshCount = 0
- return bridgeDiscoveryFailed()
- }
- }
-
- ssdpSubscribe()
- log.trace "bridgeRefreshCount: $bridgeRefreshCount"
- //bridge discovery request every 15 //25 seconds
- if ((bridgeRefreshCount % 5) == 0) {
- discoverBridges()
- }
-
- //setup.xml request every 3 seconds except on discoveries
- if (((bridgeRefreshCount % 3) == 0) && ((bridgeRefreshCount % 5) != 0)) {
- verifyHueBridges()
- }
-
- return dynamicPage(name: "bridgeDiscovery", title: "Discovery Started!", nextPage: "bridgeBtnPush", refreshInterval: refreshInterval, uninstall: true) {
- section("Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.") {
-
-
- input(name: "selectedHue", type: "enum", required: false, title: "Select Hue Bridge ({{numFound}} found)", messageArgs: [numFound: numFound], multiple: false, options: options, submitOnChange: true)
- }
- }
-}
-
-def bridgeDiscoveryFailed() {
- return dynamicPage(name: "bridgeDiscoveryFailed", title: "Bridge Discovery Failed!", nextPage: "bridgeDiscovery") {
- section("Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.") {
- }
- }
-}
-
-def bridgeLinking() {
- int linkRefreshcount = !state.linkRefreshcount ? 0 : state.linkRefreshcount as int
- state.linkRefreshcount = linkRefreshcount + 1
- def refreshInterval = 3
-
- def nextPage = ""
- def title = "Linking with your Hue"
- def paragraphText
- if (selectedHue) {
- if (state.refreshUsernameNeeded) {
- paragraphText = "The current Hue username is invalid. Please press the button on your Hue Bridge to relink."
- } else {
- paragraphText = "Press the button on your Hue Bridge to setup a link."
- }
- } else {
- paragraphText = "You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next."
- }
- if (state.username) { //if discovery worked
- if (state.refreshUsernameNeeded) {
- state.refreshUsernameNeeded = false
- // Issue one poll with new username to cancel local polling with old username
- poll()
- }
- nextPage = "bulbDiscovery"
- title = "Success!"
- paragraphText = "Linking to your hub was a success! Please click 'Next'!"
- }
-
- if ((linkRefreshcount % 2) == 0 && !state.username) {
- sendDeveloperReq()
- }
-
- return dynamicPage(name: "bridgeBtnPush", title: title, nextPage: nextPage, refreshInterval: refreshInterval) {
- section("") {
- paragraph "$paragraphText"
- }
- }
-}
-
-def bulbDiscovery() {
- int bulbRefreshCount = !state.bulbRefreshCount ? 0 : state.bulbRefreshCount as int
- state.bulbRefreshCount = bulbRefreshCount + 1
- def refreshInterval = 3
- state.inBulbDiscovery = true
- def bridge = null
-
- state.bridgeRefreshCount = 0
- def allLightsFound = bulbsDiscovered() ?: [:]
-
- // List lights currently not added to the user (editable)
- def newLights = allLightsFound.findAll { getChildDevice(it.key) == null } ?: [:]
- newLights = newLights.sort { it.value.toLowerCase() }
-
- // List lights already added to the user (not editable)
- def existingLights = allLightsFound.findAll { getChildDevice(it.key) != null } ?: [:]
- existingLights = existingLights.sort { it.value.toLowerCase() }
-
- def numFound = newLights.size() ?: "0"
- if (numFound == "0")
- app.updateSetting("selectedBulbs", "")
-
- if ((bulbRefreshCount % 5) == 0) {
- discoverHueBulbs()
- }
- def selectedBridge = state.bridges.find { key, value -> value?.serialNumber?.equalsIgnoreCase(selectedHue) }
- def title = selectedBridge?.value?.name ?: "Find bridges"
-
- // List of all lights previously added shown to user
- def existingLightsDescription = ""
- if (existingLights) {
- existingLights.each {
- if (existingLightsDescription.isEmpty()) {
- existingLightsDescription += it.value
- } else {
- existingLightsDescription += ", ${it.value}"
- }
- }
- }
-
- def existingLightsSize = "${existingLights.size()}"
- if (bulbRefreshCount > 200 && numFound == "0") {
- // Time out after 10 minutes
- state.inBulbDiscovery = false
- bulbRefreshCount = 0
- return dynamicPage(name: "bulbDiscovery", title: "Light Discovery Failed!", nextPage: "", refreshInterval: 0, install: true, uninstall: true) {
- section("Failed to discover any lights, please try again later. Click 'Done' to exit.") {
- paragraph title: "Previously added Hue Lights ({{existingLightsSize}} added)", messageArgs: [existingLightsSize: existingLightsSize], existingLightsDescription
- }
- section {
- href "bridgeDiscovery", title: title, description: "", state: selectedHue ? "complete" : "incomplete", params: [override: true]
- }
- }
-
- } else {
- return dynamicPage(name: "bulbDiscovery", title: "Light Discovery Started!", nextPage: "", refreshInterval: refreshInterval, install: true, uninstall: true) {
- section("Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.") {
- input(name: "selectedBulbs", type: "enum", required: false, title: "Select Hue Lights to add ({{numFound}} found)", messageArgs: [numFound: numFound], multiple: true, submitOnChange: true, options: newLights)
- paragraph title: "Previously added Hue Lights ({{existingLightsSize}} added)", messageArgs: [existingLightsSize: existingLightsSize], existingLightsDescription
- }
- section {
- href "bridgeDiscovery", title: title, description: "", state: selectedHue ? "complete" : "incomplete", params: [override: true]
- }
- }
- }
-}
-
-private discoverBridges() {
- log.trace "Sending Hue Discovery message to the hub"
- sendHubCommand(new physicalgraph.device.HubAction("lan discovery urn:schemas-upnp-org:device:basic:1", physicalgraph.device.Protocol.LAN))
-}
-
-void ssdpSubscribe() {
- subscribe(location, "ssdpTerm.urn:schemas-upnp-org:device:basic:1", ssdpBridgeHandler)
-}
-
-private sendDeveloperReq() {
- def token = app.id
- def host = getBridgeIP()
- sendHubCommand(new physicalgraph.device.HubAction([
- method : "POST",
- path : "/api",
- headers: [
- HOST: host
- ],
- body : [devicetype: "$token-0"]], "${selectedHue}", [callback: "usernameHandler"]))
-}
-
-private discoverHueBulbs() {
- def host = getBridgeIP()
- sendHubCommand(new physicalgraph.device.HubAction([
- method : "GET",
- path : "/api/${state.username}/lights",
- headers: [
- HOST: host
- ]], "${selectedHue}", [callback: "lightsHandler"]))
-}
-
-private verifyHueBridge(String deviceNetworkId, String host) {
- log.trace "Verify Hue Bridge $deviceNetworkId"
- sendHubCommand(new physicalgraph.device.HubAction([
- method : "GET",
- path : "/description.xml",
- headers: [
- HOST: host
- ]], deviceNetworkId, [callback: "bridgeDescriptionHandler"]))
-}
-
-private verifyHueBridges() {
- def devices = getHueBridges().findAll { it?.value?.verified != true }
- devices.each {
- def ip = convertHexToIP(it.value.networkAddress)
- def port = convertHexToInt(it.value.deviceAddress)
- verifyHueBridge("${it.value.mac}", (ip + ":" + port))
- }
-}
-
-Map bridgesDiscovered() {
- def vbridges = getVerifiedHueBridges()
- def map = [:]
- vbridges.each {
- def value = "${it.value.name}"
- def key = "${it.value.mac}"
- map["${key}"] = value
- }
- map
-}
-
-Map bulbsDiscovered() {
- def bulbs = getHueBulbs()
- def bulbmap = [:]
- if (bulbs instanceof java.util.Map) {
- bulbs.each {
- def value = "${it.value.name}"
- def key = app.id + "/" + it.value.id
- bulbmap["${key}"] = value
- }
- } else { //backwards compatable
- bulbs.each {
- def value = "${it.name}"
- def key = app.id + "/" + it.id
- logg += "$value - $key, "
- bulbmap["${key}"] = value
- }
- }
- return bulbmap
-}
-
-Map getHueBulbs() {
- state.bulbs = state.bulbs ?: [:]
-}
-
-def getHueBridges() {
- state.bridges = state.bridges ?: [:]
-}
-
-def getVerifiedHueBridges() {
- getHueBridges().findAll { it?.value?.verified == true }
-}
-
-def installed() {
- log.trace "Installed with settings: ${settings}"
- initialize()
-}
-
-def updated() {
- log.trace "Updated with settings: ${settings}"
- unsubscribe()
- unschedule()
- initialize()
-}
-
-def initialize() {
- log.debug "Initializing"
- unsubscribe(bridge)
- state.inBulbDiscovery = false
- state.bridgeRefreshCount = 0
- state.bulbRefreshCount = 0
- state.updating = false
- setupDeviceWatch()
- if (selectedHue) {
- addBridge()
- addBulbs()
- doDeviceSync()
- runEvery5Minutes("doDeviceSync")
- }
-}
-
-def manualRefresh() {
- checkBridgeStatus()
- state.updating = false
- poll()
-}
-
-def uninstalled() {
- // Remove bridgedevice connection to allow uninstall of smartapp even though bridge is listed
- // as user of smartapp
- app.updateSetting("bridgeDevice", null)
- state.bridges = [:]
- state.username = null
-}
-
-private setupDeviceWatch() {
- def hub = location.hubs[0]
- // Make sure that all child devices are enrolled in device watch
- getChildDevices().each {
- it.sendEvent(name: "DeviceWatch-Enroll", value: "{\"protocol\": \"LAN\", \"scheme\":\"untracked\", \"hubHardwareId\": \"${hub?.hub?.hardwareID}\"}")
- }
-}
-
-private upgradeDeviceType(device, newHueType) {
- def deviceType = getDeviceType(newHueType)
-
- // Automatically change users Hue bulbs to correct device types
- if (deviceType && !(device?.typeName?.equalsIgnoreCase(deviceType))) {
- log.debug "Update device type: \"$device.label\" ${device?.typeName}->$deviceType"
- device.setDeviceType(deviceType)
- }
-}
-
-private getDeviceType(hueType) {
- // Determine ST device type based on Hue classification of light
- if (hueType?.equalsIgnoreCase("Dimmable light"))
- return "Hue Lux Bulb"
- else if (hueType?.equalsIgnoreCase("Extended Color Light"))
- return "Hue Bulb"
- else if (hueType?.equalsIgnoreCase("Color Light"))
- return "Hue Bloom"
- else if (hueType?.equalsIgnoreCase("Color Temperature Light"))
- return "Hue White Ambiance Bulb"
- else
- return null
-}
-
-private addChildBulb(dni, hueType, name, hub, update = false, device = null) {
- def deviceType = getDeviceType(hueType)
-
- if (deviceType) {
- return addChildDevice("smartthings", deviceType, dni, hub, ["label": name])
- } else {
- log.warn "Device type $hueType not supported"
- return null
- }
-}
-
-def addBulbs() {
- def bulbs = getHueBulbs()
- selectedBulbs?.each { dni ->
- def d = getChildDevice(dni)
- if (!d) {
- def newHueBulb
- if (bulbs instanceof java.util.Map) {
- newHueBulb = bulbs.find { (app.id + "/" + it.value.id) == dni }
- if (newHueBulb != null) {
- d = addChildBulb(dni, newHueBulb?.value?.type, newHueBulb?.value?.name, newHueBulb?.value?.hub)
- if (d) {
- log.debug "created ${d.displayName} with id $dni"
- d.completedSetup = true
- }
- } else {
- log.debug "$dni in not longer paired to the Hue Bridge or ID changed"
- }
- } else {
- //backwards compatable
- newHueBulb = bulbs.find { (app.id + "/" + it.id) == dni }
- d = addChildBulb(dni, "Extended Color Light", newHueBulb?.value?.name, newHueBulb?.value?.hub)
- d?.completedSetup = true
- d?.refresh()
- }
- } else {
- log.debug "found ${d.displayName} with id $dni already exists, type: '$d.typeName'"
- if (bulbs instanceof java.util.Map) {
- // Update device type if incorrect
- def newHueBulb = bulbs.find { (app.id + "/" + it.value.id) == dni }
- upgradeDeviceType(d, newHueBulb?.value?.type)
- }
- }
- }
-}
-
-def addBridge() {
- def vbridges = getVerifiedHueBridges()
- def vbridge = vbridges.find { "${it.value.mac}" == selectedHue }
-
- if (vbridge) {
- def d = getChildDevice(selectedHue)
- if (!d) {
- // compatibility with old devices
- def newbridge = true
- childDevices.each {
- if (it.getDeviceDataByName("mac")) {
- def newDNI = "${it.getDeviceDataByName("mac")}"
- if (newDNI != it.deviceNetworkId) {
- def oldDNI = it.deviceNetworkId
- log.debug "updating dni for device ${it} with $newDNI - previous DNI = ${it.deviceNetworkId}"
- it.setDeviceNetworkId("${newDNI}")
- if (oldDNI == selectedHue) {
- app.updateSetting("selectedHue", newDNI)
- }
- newbridge = false
- }
- }
- }
- if (newbridge) {
- // Hue uses last 6 digits of MAC address as ID number, this number is shown on the bottom of the bridge
- def idNumber = getBridgeIdNumber(selectedHue)
- d = addChildDevice("smartthings", "Hue Bridge", selectedHue, vbridge.value.hub, ["label": "Hue Bridge ($idNumber)"])
- if (d) {
- // Associate smartapp to bridge so user will be warned if trying to delete bridge
- app.updateSetting("bridgeDevice", [type: "device.hueBridge", value: d.id])
-
- d.completedSetup = true
- log.debug "created ${d.displayName} with id ${d.deviceNetworkId}"
- def childDevice = getChildDevice(d.deviceNetworkId)
- childDevice?.sendEvent(name: "status", value: "Online")
- childDevice?.sendEvent(name: "DeviceWatch-DeviceStatus", value: "online", displayed: false, isStateChange: true)
- updateBridgeStatus(childDevice)
-
- childDevice?.sendEvent(name: "idNumber", value: idNumber)
- if (vbridge.value.ip && vbridge.value.port) {
- if (vbridge.value.ip.contains(".")) {
- childDevice.sendEvent(name: "networkAddress", value: vbridge.value.ip + ":" + vbridge.value.port)
- childDevice.updateDataValue("networkAddress", vbridge.value.ip + ":" + vbridge.value.port)
- } else {
- childDevice.sendEvent(name: "networkAddress", value: convertHexToIP(vbridge.value.ip) + ":" + convertHexToInt(vbridge.value.port))
- childDevice.updateDataValue("networkAddress", convertHexToIP(vbridge.value.ip) + ":" + convertHexToInt(vbridge.value.port))
- }
- } else {
- childDevice.sendEvent(name: "networkAddress", value: convertHexToIP(vbridge.value.networkAddress) + ":" + convertHexToInt(vbridge.value.deviceAddress))
- childDevice.updateDataValue("networkAddress", convertHexToIP(vbridge.value.networkAddress) + ":" + convertHexToInt(vbridge.value.deviceAddress))
- }
- } else {
- log.error "Failed to create Hue Bridge device"
- }
- }
- } else {
- log.debug "found ${d.displayName} with id $selectedHue already exists"
- }
- }
-}
-
-def ssdpBridgeHandler(evt) {
- def description = evt.description
- log.trace "Location: $description"
-
- def hub = evt?.hubId
- def parsedEvent = parseLanMessage(description)
- parsedEvent << ["hub": hub]
-
- def bridges = getHueBridges()
- log.trace bridges.toString()
- if (!(bridges."${parsedEvent.ssdpUSN.toString()}")) {
- //bridge does not exist
- log.trace "Adding bridge ${parsedEvent.ssdpUSN}"
- bridges << ["${parsedEvent.ssdpUSN.toString()}": parsedEvent]
- } else {
- // update the values
- def ip = convertHexToIP(parsedEvent.networkAddress)
- def port = convertHexToInt(parsedEvent.deviceAddress)
- def host = ip + ":" + port
- log.debug "Device ($parsedEvent.mac) was already found in state with ip = $host."
- def dstate = bridges."${parsedEvent.ssdpUSN.toString()}"
- def dniReceived = "${parsedEvent.mac}"
- def currentDni = dstate.mac
- def d = getChildDevice(dniReceived)
- def networkAddress = null
- if (!d) {
- // There might be a mismatch between bridge DNI and the actual bridge mac address, correct that
- log.debug "Bridge with $dniReceived not found"
- def bridge = childDevices.find { it.deviceNetworkId == currentDni }
- if (bridge != null) {
- log.warn "Bridge is set to ${bridge.deviceNetworkId}, updating to $dniReceived"
- bridge.setDeviceNetworkId("${dniReceived}")
- dstate.mac = dniReceived
- // Check to see if selectedHue is a valid bridge, otherwise update it
- def isSelectedValid = bridges?.find { it.value?.mac == selectedHue }
- if (isSelectedValid == null) {
- log.warn "Correcting selectedHue in state"
- app.updateSetting("selectedHue", dniReceived)
- }
- doDeviceSync()
- }
- } else {
- updateBridgeStatus(d)
- if (d.getDeviceDataByName("networkAddress")) {
- networkAddress = d.getDeviceDataByName("networkAddress")
- } else {
- networkAddress = d.latestState('networkAddress').stringValue
- }
- log.trace "Host: $host - $networkAddress"
- if (host != networkAddress) {
- log.debug "Device's port or ip changed for device $d..."
- dstate.ip = ip
- dstate.port = port
- dstate.name = "Philips hue ($ip)"
- d.sendEvent(name: "networkAddress", value: host)
- d.updateDataValue("networkAddress", host)
- }
- if (dstate.mac != dniReceived) {
- log.warn "Correcting bridge mac address in state"
- dstate.mac = dniReceived
- }
- if (selectedHue != dniReceived) {
- // Check to see if selectedHue is a valid bridge, otherwise update it
- def isSelectedValid = bridges?.find { it.value?.mac == selectedHue }
- if (isSelectedValid == null) {
- log.warn "Correcting selectedHue in state"
- app.updateSetting("selectedHue", dniReceived)
- }
- }
- }
- }
-}
-
-void bridgeDescriptionHandler(physicalgraph.device.HubResponse hubResponse) {
- log.trace "description.xml response (application/xml)"
- def body = hubResponse.xml
- if (body?.device?.modelName?.text()?.startsWith("Philips hue bridge")) {
- def bridges = getHueBridges()
- def bridge = bridges.find { it?.key?.contains(body?.device?.UDN?.text()) }
- if (bridge) {
- def idNumber = getBridgeIdNumber(body?.device?.serialNumber?.text())
-
- // usually in form of bridge name followed by (ip), i.e. defaults to Philips Hue (192.168.1.2)
- // replace IP with id number to make it easier for user to identify
- def name = body?.device?.friendlyName?.text()
- def index = name?.indexOf('(')
- if (index != -1) {
- name = name.substring(0, index)
- name += " ($idNumber)"
- }
- bridge.value << [name: name, serialNumber: body?.device?.serialNumber?.text(), idNumber: idNumber, verified: true]
- } else {
- log.error "/description.xml returned a bridge that didn't exist"
- }
- }
-}
-
-void lightsHandler(physicalgraph.device.HubResponse hubResponse) {
- if (isValidSource(hubResponse.mac)) {
- def body = hubResponse.json
- if (!body?.state?.on) { //check if first time poll made it here by mistake
- log.debug "Adding bulbs to state!"
- updateBulbState(body, hubResponse.hubId)
- }
- }
-}
-
-void usernameHandler(physicalgraph.device.HubResponse hubResponse) {
- if (isValidSource(hubResponse.mac)) {
- def body = hubResponse.json
- if (body.success != null) {
- if (body.success[0] != null) {
- if (body.success[0].username)
- state.username = body.success[0].username
- }
- } else if (body.error != null) {
- //TODO: handle retries...
- log.error "ERROR: application/json ${body.error}"
- }
- }
-}
-
-/**
- * @deprecated This has been replaced by the combination of {@link #ssdpBridgeHandler()}, {@link #bridgeDescriptionHandler()},
- * {@link #lightsHandler()}, and {@link #usernameHandler()}. After a pending event subscription migration, it can be removed.
- */
-@Deprecated
-def locationHandler(evt) {
- def description = evt.description
- log.trace "Location: $description"
-
- def hub = evt?.hubId
- def parsedEvent = parseLanMessage(description)
- parsedEvent << ["hub": hub]
-
- if (parsedEvent?.ssdpTerm?.contains("urn:schemas-upnp-org:device:basic:1")) {
- //SSDP DISCOVERY EVENTS
- log.trace "SSDP DISCOVERY EVENTS"
- def bridges = getHueBridges()
- log.trace bridges.toString()
- if (!(bridges."${parsedEvent.ssdpUSN.toString()}")) {
- //bridge does not exist
- log.trace "Adding bridge ${parsedEvent.ssdpUSN}"
- bridges << ["${parsedEvent.ssdpUSN.toString()}": parsedEvent]
- } else {
- // update the values
- def ip = convertHexToIP(parsedEvent.networkAddress)
- def port = convertHexToInt(parsedEvent.deviceAddress)
- def host = ip + ":" + port
- log.debug "Device ($parsedEvent.mac) was already found in state with ip = $host."
- def dstate = bridges."${parsedEvent.ssdpUSN.toString()}"
- def dni = "${parsedEvent.mac}"
- def d = getChildDevice(dni)
- def networkAddress = null
- if (!d) {
- childDevices.each {
- if (it.getDeviceDataByName("mac")) {
- def newDNI = "${it.getDeviceDataByName("mac")}"
- d = it
- if (newDNI != it.deviceNetworkId) {
- def oldDNI = it.deviceNetworkId
- log.debug "updating dni for device ${it} with $newDNI - previous DNI = ${it.deviceNetworkId}"
- it.setDeviceNetworkId("${newDNI}")
- if (oldDNI == selectedHue) {
- app.updateSetting("selectedHue", newDNI)
- }
- doDeviceSync()
- }
- }
- }
- } else {
- updateBridgeStatus(d)
- if (d.getDeviceDataByName("networkAddress")) {
- networkAddress = d.getDeviceDataByName("networkAddress")
- } else {
- networkAddress = d.latestState('networkAddress').stringValue
- }
- log.trace "Host: $host - $networkAddress"
- if (host != networkAddress) {
- log.debug "Device's port or ip changed for device $d..."
- dstate.ip = ip
- dstate.port = port
- dstate.name = "Philips hue ($ip)"
- d.sendEvent(name: "networkAddress", value: host)
- d.updateDataValue("networkAddress", host)
- }
- }
- }
- } else if (parsedEvent.headers && parsedEvent.body) {
- log.trace "HUE BRIDGE RESPONSES"
- def headerString = parsedEvent.headers.toString()
- if (headerString?.contains("xml")) {
- log.trace "description.xml response (application/xml)"
- def body = new XmlSlurper().parseText(parsedEvent.body)
- if (body?.device?.modelName?.text().startsWith("Philips hue bridge")) {
- def bridges = getHueBridges()
- def bridge = bridges.find { it?.key?.contains(body?.device?.UDN?.text()) }
- if (bridge) {
- bridge.value << [name: body?.device?.friendlyName?.text(), serialNumber: body?.device?.serialNumber?.text(), verified: true]
- } else {
- log.error "/description.xml returned a bridge that didn't exist"
- }
- }
- } else if (headerString?.contains("json") && isValidSource(parsedEvent.mac)) {
- log.trace "description.xml response (application/json)"
- def body = new groovy.json.JsonSlurper().parseText(parsedEvent.body)
- if (body.success != null) {
- if (body.success[0] != null) {
- if (body.success[0].username) {
- state.username = body.success[0].username
- }
- }
- } else if (body.error != null) {
- //TODO: handle retries...
- log.error "ERROR: application/json ${body.error}"
- } else {
- //GET /api/${state.username}/lights response (application/json)
- if (!body?.state?.on) { //check if first time poll made it here by mistake
- log.debug "Adding bulbs to state!"
- updateBulbState(body, parsedEvent.hub)
- }
- }
- }
- } else {
- log.trace "NON-HUE EVENT $evt.description"
- }
-}
-
-def doDeviceSync() {
- log.trace "Doing Hue Device Sync!"
-
- // Check if state.updating failed to clear
- if (state.lastUpdateStarted < (now() - 20 * 1000) && state.updating) {
- state.updating = false
- log.warn "state.updating failed to clear"
- }
-
- convertBulbListToMap()
- poll()
- ssdpSubscribe()
- discoverBridges()
- checkBridgeStatus()
-}
-
-/**
- * Called when data is received from the Hue bridge, this will update the lastActivity() that
- * is used to keep track of online/offline status of the bridge. Bridge is considered offline
- * if not heard from in 16 minutes
- *
- * @param childDevice Hue Bridge child device
- */
-private void updateBridgeStatus(childDevice) {
- // Update activity timestamp if child device is a valid bridge
- def vbridges = getVerifiedHueBridges()
- def vbridge = vbridges.find {
- "${it.value.mac}".toUpperCase() == childDevice?.device?.deviceNetworkId?.toUpperCase()
- }
- vbridge?.value?.lastActivity = now()
- if (vbridge && childDevice?.device?.currentValue("status") == "Offline") {
- log.debug "$childDevice is back Online"
- childDevice?.sendEvent(name: "status", value: "Online")
- childDevice?.sendEvent(name: "DeviceWatch-DeviceStatus", value: "online", displayed: false, isStateChange: true)
- }
-}
-
-/**
- * Check if all Hue bridges have been heard from in the last 11 minutes, if not an Offline event will be sent
- * for the bridge and all connected lights. Also, set ID number on bridge if not done previously.
- */
-private void checkBridgeStatus() {
- def bridges = getHueBridges()
- // Check if each bridge has been heard from within the last 11 minutes (2 poll intervals times 5 minutes plus buffer)
- def time = now() - (1000 * 60 * 11)
- bridges.each {
- def d = getChildDevice(it.value.mac)
- if (d) {
- // Set id number on bridge if not done
- if (it.value.idNumber == null) {
- it.value.idNumber = getBridgeIdNumber(it.value.serialNumber)
- d.sendEvent(name: "idNumber", value: it.value.idNumber)
- }
-
- if (it.value.lastActivity < time) { // it.value.lastActivity != null &&
- if (d.currentStatus == "Online") {
- log.warn "$d is Offline"
- d.sendEvent(name: "status", value: "Offline")
- d.sendEvent(name: "DeviceWatch-DeviceStatus", value: "offline", displayed: false, isStateChange: true)
-
- Calendar currentTime = Calendar.getInstance()
- getChildDevices().each {
- def id = getId(it)
- if (state.bulbs[id]?.online == true) {
- state.bulbs[id]?.online = false
- state.bulbs[id]?.unreachableSince = currentTime.getTimeInMillis()
- it.sendEvent(name: "DeviceWatch-DeviceStatus", value: "offline", displayed: false, isStateChange: true)
- }
- }
- }
- } else if (d.currentStatus == "Offline") {
- log.debug "$d is back Online"
- d.sendEvent(name: "DeviceWatch-DeviceStatus", value: "online", displayed: false, isStateChange: true)
- d.sendEvent(name: "status", value: "Online")//setOnline(false)
- }
- }
- }
-}
-
-def isValidSource(macAddress) {
- def vbridges = getVerifiedHueBridges()
- return (vbridges?.find { "${it.value.mac}" == macAddress }) != null
-}
-
-def isInBulbDiscovery() {
- return state.inBulbDiscovery
-}
-
-private updateBulbState(messageBody, hub) {
- def bulbs = getHueBulbs()
-
- // Copy of bulbs used to locate old lights in state that are no longer on bridge
- def toRemove = [:]
- toRemove << bulbs
-
- messageBody.each { k, v ->
-
- if (v instanceof Map) {
- if (bulbs[k] == null) {
- bulbs[k] = [:]
- }
- bulbs[k] << [id: k, name: v.name, type: v.type, modelid: v.modelid, hub: hub, remove: false]
- toRemove.remove(k)
- }
- }
-
- // Remove bulbs from state that are no longer discovered
- toRemove.each { k, v ->
- log.warn "${bulbs[k].name} no longer exists on bridge, removing"
- bulbs.remove(k)
- }
-}
-
-/////////////////////////////////////
-//CHILD DEVICE METHODS
-/////////////////////////////////////
-
-def parse(childDevice, description) {
- // Update activity timestamp if child device is a valid bridge
- updateBridgeStatus(childDevice)
-
- def parsedEvent = parseLanMessage(description)
- if (parsedEvent.headers && parsedEvent.body) {
- def headerString = parsedEvent.headers.toString()
- def bodyString = parsedEvent.body.toString()
- if (headerString?.contains("json")) {
- def body
- try {
- body = new groovy.json.JsonSlurper().parseText(bodyString)
- } catch (all) {
- log.warn "Parsing Body failed"
- }
- if (body instanceof java.util.Map) {
- // get (poll) reponse
- return handlePoll(body)
- } else {
- //put response
- return handleCommandResponse(body)
- }
- }
- } else {
- log.debug "parse - got something other than headers,body..."
- return []
- }
-}
-
-// Philips Hue priority for color is xy > ct > hs
-// For SmartThings, try to always send hue, sat and hex
-private sendColorEvents(device, xy, hue, sat, ct, colormode = null) {
- if (device == null || (xy == null && hue == null && sat == null && ct == null))
- return
-
- def events = [:]
- // For now, only care about changing color temperature if requested by user
- if (ct != null && ct != 0 && (colormode == "ct" || (xy == null && hue == null && sat == null))) {
- // for some reason setting Hue to their specified minimum off 153 yields 154, dealt with below
- // 153 (6500K) to 500 (2000K)
- def temp = (ct == 154) ? 6500 : Math.round(1000000 / ct)
- device.sendEvent([name: "colorTemperature", value: temp, descriptionText: "Color temperature has changed"])
- // Return because color temperature change is not counted as a color change in SmartThings so no hex update necessary
- return
- }
-
- if (hue != null) {
- // 0-65535
- def value = Math.min(Math.round(hue * 100 / 65535), 65535) as int
- events["hue"] = [name: "hue", value: value, descriptionText: "Color has changed", displayed: false]
- }
-
- if (sat != null) {
- // 0-254
- def value = Math.round(sat * 100 / 254) as int
- events["saturation"] = [name: "saturation", value: value, descriptionText: "Color has changed", displayed: false]
- }
-
- // Following is used to decide what to base hex calculations on since it is preferred to return a colorchange in hex
- if (xy != null && colormode != "hs") {
- // If xy is present and color mode is not specified to hs, pick xy because of priority
-
- // [0.0-1.0, 0.0-1.0]
- def id = device.deviceNetworkId?.split("/")[1]
- def model = state.bulbs[id]?.modelid
- def hex = colorFromXY(xy, model)
-
- // Create Hue and Saturation events if not previously existing
- def hsv = hexToHsv(hex)
- if (events["hue"] == null)
- events["hue"] = [name: "hue", value: hsv[0], descriptionText: "Color has changed", displayed: false]
- if (events["saturation"] == null)
- events["saturation"] = [name: "saturation", value: hsv[1], descriptionText: "Color has changed", displayed: false]
-
- events["color"] = [name: "color", value: hex.toUpperCase(), descriptionText: "Color has changed", displayed: true]
- } else if (colormode == "hs" || colormode == null) {
- // colormode is "hs" or "xy" is missing, default to follow hue/sat which is already handled above
- def hueValue = (hue != null) ? events["hue"].value : Integer.parseInt("$device.currentHue")
- def satValue = (sat != null) ? events["saturation"].value : Integer.parseInt("$device.currentSaturation")
-
-
- def hex = hsvToHex(hueValue, satValue)
- events["color"] = [name: "color", value: hex.toUpperCase(), descriptionText: "Color has changed", displayed: true]
- }
-
- boolean sendColorChanged = false
- events.each {
- device.sendEvent(it.value)
- }
-}
-
-private sendBasicEvents(device, param, value) {
- if (device == null || value == null || param == null)
- return
-
- switch (param) {
- case "on":
- device.sendEvent(name: "switch", value: (value == true) ? "on" : "off")
- break
- case "bri":
- // 1-254
- def level = Math.max(1, Math.round(value * 100 / 254)) as int
- device.sendEvent(name: "level", value: level, descriptionText: "Level has changed to ${level}%")
- break
- }
-}
-
-/**
- * Handles a response to a command (PUT) sent to the Hue Bridge.
- *
- * Will send appropriate events depending on values changed.
- *
- * Example payload
- * [,
- *{"success":{"/lights/5/state/bri":87}},
- *{"success":{"/lights/5/state/transitiontime":4}},
- *{"success":{"/lights/5/state/on":true}},
- *{"success":{"/lights/5/state/xy":[0.4152,0.5336]}},
- *{"success":{"/lights/5/state/alert":"none"}}* ]
- *
- * @param body a data structure of lists and maps based on a JSON data
- * @return empty array
- */
-private handleCommandResponse(body) {
- // scan entire response before sending events to make sure they are always in the same order
- def updates = [:]
-
- body.each { payload ->
- if (payload?.success) {
- def childDeviceNetworkId = app.id + "/"
- def eventType
- payload.success.each { k, v ->
- def data = k.split("/")
- if (data.length == 5) {
- childDeviceNetworkId = app.id + "/" + k.split("/")[2]
- if (!updates[childDeviceNetworkId])
- updates[childDeviceNetworkId] = [:]
- eventType = k.split("/")[4]
- updates[childDeviceNetworkId]."$eventType" = v
- }
- }
- } else if (payload?.error) {
- log.warn "Error returned from Hue bridge, error = ${payload?.error}"
- // Check for unauthorized user
- if (payload?.error?.type?.value == 1) {
- log.error "Hue username is not valid"
- state.refreshUsernameNeeded = true
- state.username = null
- }
- return []
- }
- }
-
- // send events for each update found above (order of events should be same as handlePoll())
- updates.each { childDeviceNetworkId, params ->
- def device = getChildDevice(childDeviceNetworkId)
- def id = getId(device)
- sendBasicEvents(device, "on", params.on)
- sendBasicEvents(device, "bri", params.bri)
- sendColorEvents(device, params.xy, params.hue, params.sat, params.ct)
- }
- return []
-}
-
-/**
- * Handles a response to a poll (GET) sent to the Hue Bridge.
- *
- * Will send appropriate events depending on values changed.
- *
- * Example payload
- *
- *{"5":{"state": {"on":true,"bri":102,"hue":25600,"sat":254,"effect":"none","xy":[0.1700,0.7000],"ct":153,"alert":"none",
- * "colormode":"xy","reachable":true}, "type": "Extended color light", "name": "Go", "modelid": "LLC020", "manufacturername": "Philips",
- * "uniqueid":"00:17:88:01:01:13:d5:11-0b", "swversion": "5.38.1.14378"},
- * "6":{"state": {"on":true,"bri":103,"hue":14910,"sat":144,"effect":"none","xy":[0.4596,0.4105],"ct":370,"alert":"none",
- * "colormode":"ct","reachable":true}, "type": "Extended color light", "name": "Upstairs Light", "modelid": "LCT007", "manufacturername": "Philips",
- * "uniqueid":"00:17:88:01:10:56:ba:2c-0b", "swversion": "5.38.1.14919"},
- *
- * @param body a data structure of lists and maps based on a JSON data
- * @return empty array
- */
-private handlePoll(body) {
- // Used to track "unreachable" time
- // Device is considered "offline" if it has been in the "unreachable" state for
- // 11 minutes (e.g. two poll intervals)
- // Note, Hue Bridge marks devices as "unreachable" often even when they accept commands
- Calendar time11 = Calendar.getInstance()
- time11.add(Calendar.MINUTE, -11)
- Calendar currentTime = Calendar.getInstance()
-
- def bulbs = getChildDevices()
- for (bulb in body) {
- def device = bulbs.find { it.deviceNetworkId == "${app.id}/${bulb.key}" }
- if (device) {
- if (bulb.value.state?.reachable) {
- if (state.bulbs[bulb.key]?.online == false || state.bulbs[bulb.key]?.online == null) {
- // light just came back online, notify device watch
- device.sendEvent(name: "DeviceWatch-DeviceStatus", value: "online", displayed: false, isStateChange: true)
- log.debug "$device is Online"
- }
- // Mark light as "online"
- state.bulbs[bulb.key]?.unreachableSince = null
- state.bulbs[bulb.key]?.online = true
- } else {
- if (state.bulbs[bulb.key]?.unreachableSince == null) {
- // Store the first time where device was reported as "unreachable"
- state.bulbs[bulb.key]?.unreachableSince = currentTime.getTimeInMillis()
- }
- if (state.bulbs[bulb.key]?.online || state.bulbs[bulb.key]?.online == null) {
- // Check if device was "unreachable" for more than 11 minutes and mark "offline" if necessary
- if (state.bulbs[bulb.key]?.unreachableSince < time11.getTimeInMillis() || state.bulbs[bulb.key]?.online == null) {
- log.warn "$device went Offline"
- state.bulbs[bulb.key]?.online = false
- device.sendEvent(name: "DeviceWatch-DeviceStatus", value: "offline", displayed: false, isStateChange: true)
- }
- }
- log.warn "$device may not reachable by Hue bridge"
- }
- // If user just executed commands, then do not send events to avoid confusing the turning on/off state
- if (!state.updating) {
- sendBasicEvents(device, "on", bulb.value?.state?.on)
- sendBasicEvents(device, "bri", bulb.value?.state?.bri)
- sendColorEvents(device, bulb.value?.state?.xy, bulb.value?.state?.hue, bulb.value?.state?.sat, bulb.value?.state?.ct, bulb.value?.state?.colormode)
- }
- }
- }
- return []
-}
-
-private updateInProgress() {
- state.updating = true
- state.lastUpdateStarted = now()
- runIn(20, updateHandler)
-}
-
-def updateHandler() {
- state.updating = false
- poll()
-}
-
-def hubVerification(bodytext) {
- log.trace "Bridge sent back description.xml for verification"
- def body = new XmlSlurper().parseText(bodytext)
- if (body?.device?.modelName?.text().startsWith("Philips hue bridge")) {
- def bridges = getHueBridges()
- def bridge = bridges.find { it?.key?.contains(body?.device?.UDN?.text()) }
- if (bridge) {
- bridge.value << [name: body?.device?.friendlyName?.text(), serialNumber: body?.device?.serialNumber?.text(), verified: true]
- } else {
- log.error "/description.xml returned a bridge that didn't exist"
- }
- }
-}
-
-def on(childDevice) {
- log.debug "Executing 'on'"
- def id = getId(childDevice)
- updateInProgress()
- put("lights/$id/state", [on: true])
- return "Bulb is turning On"
-}
-
-def off(childDevice) {
- log.debug "Executing 'off'"
- def id = getId(childDevice)
- updateInProgress()
- put("lights/$id/state", [on: false])
- return "Bulb is turning Off"
-}
-
-def setLevel(childDevice, percent) {
- log.debug "Executing 'setLevel'"
- def id = getId(childDevice)
- updateInProgress()
- // 1 - 254
- def level
- if (percent == 1)
- level = 1
- else
- level = Math.min(Math.round(percent * 254 / 100), 254)
-
- // For Zigbee lights, if level is set to 0 ST just turns them off without changing level
- // that means that the light will still be on when on is called next time
- // Lets emulate that here
- if (percent > 0) {
- put("lights/$id/state", [bri: level, on: true])
- } else {
- put("lights/$id/state", [on: false])
- }
- return "Setting level to $percent"
-}
-
-def setSaturation(childDevice, percent) {
- log.debug "Executing 'setSaturation($percent)'"
- def id = getId(childDevice)
- updateInProgress()
- // 0 - 254
- def level = Math.min(Math.round(percent * 254 / 100), 254)
- // TODO should this be done by app only or should we default to on?
- put("lights/$id/state", [sat: level, on: true])
- return "Setting saturation to $percent"
-}
-
-def setHue(childDevice, percent) {
- log.debug "Executing 'setHue($percent)'"
- def id = getId(childDevice)
- updateInProgress()
- // 0 - 65535
- def level = Math.min(Math.round(percent * 65535 / 100), 65535)
- // TODO should this be done by app only or should we default to on?
- put("lights/$id/state", [hue: level, on: true])
- return "Setting hue to $percent"
-}
-
-def setColorTemperature(childDevice, huesettings) {
- log.debug "Executing 'setColorTemperature($huesettings)'"
- def id = getId(childDevice)
- updateInProgress()
- // 153 (6500K) to 500 (2000K)
- def ct = hueSettings == 6500 ? 153 : Math.round(1000000 / huesettings)
- put("lights/$id/state", [ct: ct, on: true])
- return "Setting color temperature to $ct"
-}
-
-def setColor(childDevice, huesettings) {
- log.debug "Executing 'setColor($huesettings)'"
- def id = getId(childDevice)
- updateInProgress()
-
- def value = [:]
- def hue = null
- def sat = null
- def xy = null
-
- // Prefer hue/sat over hex to make sure it works with the majority of the smartapps
- if (huesettings.hue != null || huesettings.sat != null) {
- // If both hex and hue/sat are set, send all values to bridge to get hue/sat in response from bridge to
- // generate hue/sat events even though bridge will prioritize XY when setting color
- if (huesettings.hue != null)
- value.hue = Math.min(Math.round(huesettings.hue * 65535 / 100), 65535)
- if (huesettings.saturation != null)
- value.sat = Math.min(Math.round(huesettings.saturation * 254 / 100), 254)
- } else if (huesettings.hex != null) {
- // For now ignore model to get a consistent color if same color is set across multiple devices
- // def model = state.bulbs[getId(childDevice)]?.modelid
- // value.xy = calculateXY(huesettings.hex, model)
- // Once groups, or scenes are introduced it might be a good idea to use unique models again
- value.xy = calculateXY(huesettings.hex)
- }
-
-/* Disabled for now due to bad behavior via Lightning Wizard
- if (!value.xy) {
- // Below will translate values to hex->XY to take into account the color support of the different hue types
- def hex = colorUtil.hslToHex((int) huesettings.hue, (int) huesettings.saturation)
- // value.xy = calculateXY(hex, model)
- // Once groups, or scenes are introduced it might be a good idea to use unique models again
- value.xy = calculateXY(hex)
- }
-*/
-
- // Default behavior is to turn light on
- value.on = true
-
- if (huesettings.level != null) {
- if (huesettings.level <= 0)
- value.on = false
- else if (huesettings.level == 1)
- value.bri = 1
- else
- value.bri = Math.min(Math.round(huesettings.level * 254 / 100), 254)
- }
- value.alert = huesettings.alert ? huesettings.alert : "none"
- value.transitiontime = huesettings.transitiontime ? huesettings.transitiontime : 4
-
- // Make sure to turn off light if requested
- if (huesettings.switch == "off")
- value.on = false
-
- put("lights/$id/state", value)
- return "Setting color to $value"
-}
-
-private getId(childDevice) {
- if (childDevice.device?.deviceNetworkId?.startsWith("HUE")) {
- return childDevice.device?.deviceNetworkId[3..-1]
- } else {
- return childDevice.device?.deviceNetworkId.split("/")[-1]
- }
-}
-
-private poll() {
- def host = getBridgeIP()
- def uri = "/api/${state.username}/lights/"
- log.debug "GET: $host$uri"
- sendHubCommand(new physicalgraph.device.HubAction("GET ${uri} HTTP/1.1\r\n" +
- "HOST: ${host}\r\n\r\n", physicalgraph.device.Protocol.LAN, selectedHue))
-}
-
-private isOnline(id) {
- return (state.bulbs[id]?.online != null && state.bulbs[id]?.online) || state.bulbs[id]?.online == null
-}
-
-private put(path, body) {
- def host = getBridgeIP()
- def uri = "/api/${state.username}/$path"
- def bodyJSON = new groovy.json.JsonBuilder(body).toString()
- def length = bodyJSON.getBytes().size().toString()
-
- log.debug "PUT: $host$uri"
- log.debug "BODY: ${bodyJSON}"
-
- sendHubCommand(new physicalgraph.device.HubAction("PUT $uri HTTP/1.1\r\n" +
- "HOST: ${host}\r\n" +
- "Content-Length: ${length}\r\n" +
- "\r\n" +
- "${bodyJSON}", physicalgraph.device.Protocol.LAN, "${selectedHue}"))
-}
-
-/*
- * Bridge serial number from Hue API is in format of 0017882413ad (mac address), however on the actual bridge hardware
- * the id is printed as only last six characters so using that to identify bridge to users
- */
-private getBridgeIdNumber(serialNumber) {
- def idNumber = serialNumber ?: ""
- if (idNumber?.size() >= 6)
- idNumber = idNumber[-6..-1].toUpperCase()
- return idNumber
-}
-
-private getBridgeIP() {
- def host = null
- if (selectedHue) {
- def d = getChildDevice(selectedHue)
- if (d) {
- if (d.getDeviceDataByName("networkAddress"))
- host = d.getDeviceDataByName("networkAddress")
- else
- host = d.latestState('networkAddress').stringValue
- }
- if (host == null || host == "") {
- def serialNumber = selectedHue
- def bridge = getHueBridges().find { it?.value?.serialNumber?.equalsIgnoreCase(serialNumber) }?.value
- if (!bridge) {
- bridge = getHueBridges().find { it?.value?.mac?.equalsIgnoreCase(serialNumber) }?.value
- }
- if (bridge?.ip && bridge?.port) {
- if (bridge?.ip.contains("."))
- host = "${bridge?.ip}:${bridge?.port}"
- else
- host = "${convertHexToIP(bridge?.ip)}:${convertHexToInt(bridge?.port)}"
- } else if (bridge?.networkAddress && bridge?.deviceAddress)
- host = "${convertHexToIP(bridge?.networkAddress)}:${convertHexToInt(bridge?.deviceAddress)}"
- }
- log.trace "Bridge: $selectedHue - Host: $host"
- }
- return host
-}
-
-private Integer convertHexToInt(hex) {
- Integer.parseInt(hex, 16)
-}
-
-def convertBulbListToMap() {
- try {
- if (state.bulbs instanceof java.util.List) {
- def map = [:]
- state.bulbs?.unique { it.id }.each { bulb ->
- map << ["${bulb.id}": ["id": bulb.id, "name": bulb.name, "type": bulb.type, "modelid": bulb.modelid, "hub": bulb.hub, "online": bulb.online]]
- }
- state.bulbs = map
- }
- }
- catch (Exception e) {
- log.error "Caught error attempting to convert bulb list to map: $e"
- }
-}
-
-private String convertHexToIP(hex) {
- [convertHexToInt(hex[0..1]), convertHexToInt(hex[2..3]), convertHexToInt(hex[4..5]), convertHexToInt(hex[6..7])].join(".")
-}
-
-private Boolean hasAllHubsOver(String desiredFirmware) {
- return realHubFirmwareVersions.every { fw -> fw >= desiredFirmware }
-}
-
-private List getRealHubFirmwareVersions() {
- return location.hubs*.firmwareVersionString.findAll { it }
-}
-
-/**
- * Return the supported color range for different Hue lights. If model is not specified
- * it defaults to the smallest Gamut (B) to ensure that colors set on a mix of devices
- * will be consistent.
- *
- * @param model Philips model number, e.g. LCT001
- * @return a map with x,y coordinates for red, green and blue according to CIE color space
- */
-private colorPointsForModel(model = null) {
- def result = null
- switch (model) {
- // Gamut A
- case "LLC001": /* Monet, Renoir, Mondriaan (gen II) */
- case "LLC005": /* Bloom (gen II) */
- case "LLC006": /* Iris (gen III) */
- case "LLC007": /* Bloom, Aura (gen III) */
- case "LLC011": /* Hue Bloom */
- case "LLC012": /* Hue Bloom */
- case "LLC013": /* Storylight */
- case "LST001": /* Light Strips */
- case "LLC010": /* Hue Living Colors Iris + */
- result = [r: [x: 0.704f, y: 0.296f], g: [x: 0.2151f, y: 0.7106f], b: [x: 0.138f, y: 0.08f]];
- break
- // Gamut C
- case "LLC020": /* Hue Go */
- case "LST002": /* Hue LightStrips Plus */
- result = [r: [x: 0.692f, y: 0.308f], g: [x: 0.17f, y: 0.7f], b: [x: 0.153f, y: 0.048f]];
- break
- // Gamut B
- case "LCT001": /* Hue A19 */
- case "LCT002": /* Hue BR30 */
- case "LCT003": /* Hue GU10 */
- case "LCT007": /* Hue A19 + */
- case "LLM001": /* Color Light Module + */
- default:
- result = [r: [x: 0.675f, y: 0.322f], g: [x: 0.4091f, y: 0.518f], b: [x: 0.167f, y: 0.04f]];
-
- }
- return result;
-}
-
-/**
- * Return x, y value from android color and light model Id.
- * Please note: This method does not incorporate brightness values. Get/set it from/to your light seperately.
- *
- * From Philips Hue SDK modified for Groovy
- *
- * @param color the color value in hex like // #ffa013
- * @param model the model Id of Light (or null to get default Gamut B)
- * @return the float array of length 2, where index 0 and 1 gives x and y values respectively.
- */
-private float[] calculateXY(colorStr, model = null) {
-
- // #ffa013
- def cred = Integer.valueOf(colorStr.substring(1, 3), 16)
- def cgreen = Integer.valueOf(colorStr.substring(3, 5), 16)
- def cblue = Integer.valueOf(colorStr.substring(5, 7), 16)
-
- float red = cred / 255.0f;
- float green = cgreen / 255.0f;
- float blue = cblue / 255.0f;
-
- // Wide gamut conversion D65
- float r = ((red > 0.04045f) ? (float) Math.pow((red + 0.055f) / (1.0f + 0.055f), 2.4f) : (red / 12.92f));
- float g = (green > 0.04045f) ? (float) Math.pow((green + 0.055f) / (1.0f + 0.055f), 2.4f) : (green / 12.92f);
- float b = (blue > 0.04045f) ? (float) Math.pow((blue + 0.055f) / (1.0f + 0.055f), 2.4f) : (blue / 12.92f);
-
- // Why values are different in ios and android , IOS is considered
- // Modified conversion from RGB -> XYZ with better results on colors for
- // the lights
- float x = r * 0.664511f + g * 0.154324f + b * 0.162028f;
- float y = r * 0.283881f + g * 0.668433f + b * 0.047685f;
- float z = r * 0.000088f + g * 0.072310f + b * 0.986039f;
-
- float[] xy = new float[2];
-
- xy[0] = (x / (x + y + z));
- xy[1] = (y / (x + y + z));
- if (Float.isNaN(xy[0])) {
- xy[0] = 0.0f;
- }
- if (Float.isNaN(xy[1])) {
- xy[1] = 0.0f;
- }
- /*if(true)
- return [0.0f,0.0f]*/
-
- // Check if the given XY value is within the colourreach of our lamps.
- def xyPoint = [x: xy[0], y: xy[1]];
- def colorPoints = colorPointsForModel(model);
- boolean inReachOfLamps = checkPointInLampsReach(xyPoint, colorPoints);
- if (!inReachOfLamps) {
- // It seems the colour is out of reach
- // let's find the closes colour we can produce with our lamp and
- // send this XY value out.
-
- // Find the closest point on each line in the triangle.
- def pAB = getClosestPointToPoints(colorPoints.r, colorPoints.g, xyPoint);
- def pAC = getClosestPointToPoints(colorPoints.b, colorPoints.r, xyPoint);
- def pBC = getClosestPointToPoints(colorPoints.g, colorPoints.b, xyPoint);
-
- // Get the distances per point and see which point is closer to our
- // Point.
- float dAB = getDistanceBetweenTwoPoints(xyPoint, pAB);
- float dAC = getDistanceBetweenTwoPoints(xyPoint, pAC);
- float dBC = getDistanceBetweenTwoPoints(xyPoint, pBC);
-
- float lowest = dAB;
- def closestPoint = pAB;
- if (dAC < lowest) {
- lowest = dAC;
- closestPoint = pAC;
- }
- if (dBC < lowest) {
- lowest = dBC;
- closestPoint = pBC;
- }
-
- // Change the xy value to a value which is within the reach of the
- // lamp.
- xy[0] = closestPoint.x;
- xy[1] = closestPoint.y;
- }
- // xy[0] = PHHueHelper.precision(4, xy[0]);
- // xy[1] = PHHueHelper.precision(4, xy[1]);
-
- // TODO needed, assume it just sets number of decimals?
- //xy[0] = PHHueHelper.precision(xy[0]);
- //xy[1] = PHHueHelper.precision(xy[1]);
- return xy;
-}
-
-/**
- * Generates the color for the given XY values and light model. Model can be null if it is not known.
- * Note: When the exact values cannot be represented, it will return the closest match.
- * Note 2: This method does not incorporate brightness values. Get/Set it from/to your light seperately.
- *
- * From Philips Hue SDK modified for Groovy
- *
- * @param points the float array contain x and the y value. [x,y]
- * @param model the model of the lamp, example: "LCT001" for hue bulb. Used to calculate the color gamut.
- * If this value is empty the default gamut values are used.
- * @return the color value in hex (#ff03d3). If xy is null OR xy is not an array of size 2, Color. BLACK will be returned
- */
-private String colorFromXY(points, model) {
-
- if (points == null || model == null) {
- log.warn "Input color missing"
- return "#000000"
- }
-
- def xy = [x: points[0], y: points[1]];
-
- def colorPoints = colorPointsForModel(model);
- boolean inReachOfLamps = checkPointInLampsReach(xy, colorPoints);
-
- if (!inReachOfLamps) {
- // It seems the colour is out of reach
- // let's find the closest colour we can produce with our lamp and
- // send this XY value out.
- // Find the closest point on each line in the triangle.
- def pAB = getClosestPointToPoints(colorPoints.r, colorPoints.g, xy);
- def pAC = getClosestPointToPoints(colorPoints.b, colorPoints.r, xy);
- def pBC = getClosestPointToPoints(colorPoints.g, colorPoints.b, xy);
-
- // Get the distances per point and see which point is closer to our
- // Point.
- float dAB = getDistanceBetweenTwoPoints(xy, pAB);
- float dAC = getDistanceBetweenTwoPoints(xy, pAC);
- float dBC = getDistanceBetweenTwoPoints(xy, pBC);
- float lowest = dAB;
- def closestPoint = pAB;
- if (dAC < lowest) {
- lowest = dAC;
- closestPoint = pAC;
- }
- if (dBC < lowest) {
- lowest = dBC;
- closestPoint = pBC;
- }
- // Change the xy value to a value which is within the reach of the
- // lamp.
- xy.x = closestPoint.x;
- xy.y = closestPoint.y;
- }
- float x = xy.x;
- float y = xy.y;
- float z = 1.0f - x - y;
- float y2 = 1.0f;
- float x2 = (y2 / y) * x;
- float z2 = (y2 / y) * z;
- /*
- * // Wide gamut conversion float r = X * 1.612f - Y * 0.203f - Z *
- * 0.302f; float g = -X * 0.509f + Y * 1.412f + Z * 0.066f; float b = X
- * * 0.026f - Y * 0.072f + Z * 0.962f;
- */
- // sRGB conversion
- // float r = X * 3.2410f - Y * 1.5374f - Z * 0.4986f;
- // float g = -X * 0.9692f + Y * 1.8760f + Z * 0.0416f;
- // float b = X * 0.0556f - Y * 0.2040f + Z * 1.0570f;
-
- // sRGB D65 conversion
- float r = x2 * 1.656492f - y2 * 0.354851f - z2 * 0.255038f;
- float g = -x2 * 0.707196f + y2 * 1.655397f + z2 * 0.036152f;
- float b = x2 * 0.051713f - y2 * 0.121364f + z2 * 1.011530f;
-
- if (r > b && r > g && r > 1.0f) {
- // red is too big
- g = g / r;
- b = b / r;
- r = 1.0f;
- } else if (g > b && g > r && g > 1.0f) {
- // green is too big
- r = r / g;
- b = b / g;
- g = 1.0f;
- } else if (b > r && b > g && b > 1.0f) {
- // blue is too big
- r = r / b;
- g = g / b;
- b = 1.0f;
- }
- // Apply gamma correction
- r = r <= 0.0031308f ? 12.92f * r : (1.0f + 0.055f) * (float) Math.pow(r, (1.0f / 2.4f)) - 0.055f;
- g = g <= 0.0031308f ? 12.92f * g : (1.0f + 0.055f) * (float) Math.pow(g, (1.0f / 2.4f)) - 0.055f;
- b = b <= 0.0031308f ? 12.92f * b : (1.0f + 0.055f) * (float) Math.pow(b, (1.0f / 2.4f)) - 0.055f;
-
- if (r > b && r > g) {
- // red is biggest
- if (r > 1.0f) {
- g = g / r;
- b = b / r;
- r = 1.0f;
- }
- } else if (g > b && g > r) {
- // green is biggest
- if (g > 1.0f) {
- r = r / g;
- b = b / g;
- g = 1.0f;
- }
- } else if (b > r && b > g && b > 1.0f) {
- r = r / b;
- g = g / b;
- b = 1.0f;
- }
-
- // neglecting if the value is negative.
- if (r < 0.0f) {
- r = 0.0f;
- }
- if (g < 0.0f) {
- g = 0.0f;
- }
- if (b < 0.0f) {
- b = 0.0f;
- }
-
- // Converting float components to int components.
- def r1 = String.format("%02X", (int) (r * 255.0f));
- def g1 = String.format("%02X", (int) (g * 255.0f));
- def b1 = String.format("%02X", (int) (b * 255.0f));
-
- return "#$r1$g1$b1"
-}
-
-/**
- * Calculates crossProduct of two 2D vectors / points.
- *
- * From Philips Hue SDK modified for Groovy
- *
- * @param p1 first point used as vector [x: 0.0f, y: 0.0f]
- * @param p2 second point used as vector [x: 0.0f, y: 0.0f]
- * @return crossProduct of vectors
- */
-private float crossProduct(p1, p2) {
- return (p1.x * p2.y - p1.y * p2.x);
-}
-
-/**
- * Find the closest point on a line.
- * This point will be within reach of the lamp.
- *
- * From Philips Hue SDK modified for Groovy
- *
- * @param A the point where the line starts [x:..,y:..]
- * @param B the point where the line ends [x:..,y:..]
- * @param P the point which is close to a line. [x:..,y:..]
- * @return the point which is on the line. [x:..,y:..]
- */
-private getClosestPointToPoints(A, B, P) {
- def AP = [x: (P.x - A.x), y: (P.y - A.y)];
- def AB = [x: (B.x - A.x), y: (B.y - A.y)];
-
- float ab2 = AB.x * AB.x + AB.y * AB.y;
- float ap_ab = AP.x * AB.x + AP.y * AB.y;
-
- float t = ap_ab / ab2;
-
- if (t < 0.0f)
- t = 0.0f;
- else if (t > 1.0f)
- t = 1.0f;
-
- def newPoint = [x: (A.x + AB.x * t), y: (A.y + AB.y * t)];
- return newPoint;
-}
-
-/**
- * Find the distance between two points.
- *
- * From Philips Hue SDK modified for Groovy
- *
- * @param one [x:..,y:..]
- * @param two [x:..,y:..]
- * @return the distance between point one and two
- */
-private float getDistanceBetweenTwoPoints(one, two) {
- float dx = one.x - two.x; // horizontal difference
- float dy = one.y - two.y; // vertical difference
- float dist = Math.sqrt(dx * dx + dy * dy);
-
- return dist;
-}
-
-/**
- * Method to see if the given XY value is within the reach of the lamps.
- *
- * From Philips Hue SDK modified for Groovy
- *
- * @param p the point containing the X,Y value [x:..,y:..]
- * @return true if within reach, false otherwise.
- */
-private boolean checkPointInLampsReach(p, colorPoints) {
-
- def red = colorPoints.r;
- def green = colorPoints.g;
- def blue = colorPoints.b;
-
- def v1 = [x: (green.x - red.x), y: (green.y - red.y)];
- def v2 = [x: (blue.x - red.x), y: (blue.y - red.y)];
-
- def q = [x: (p.x - red.x), y: (p.y - red.y)];
-
- float s = crossProduct(q, v2) / crossProduct(v1, v2);
- float t = crossProduct(v1, q) / crossProduct(v1, v2);
-
- if ((s >= 0.0f) && (t >= 0.0f) && (s + t <= 1.0f)) {
- return true;
- } else {
- return false;
- }
-}
-
-/**
- * Converts an RGB color in hex to HSV/HSB.
- * Algorithm based on http://en.wikipedia.org/wiki/HSV_color_space.
- *
- * @param colorStr color value in hex (#ff03d3)
- *
- * @return HSV representation in an array (0-100) [hue, sat, value]
- */
-def hexToHsv(colorStr) {
- def r = Integer.valueOf(colorStr.substring(1, 3), 16) / 255
- def g = Integer.valueOf(colorStr.substring(3, 5), 16) / 255
- def b = Integer.valueOf(colorStr.substring(5, 7), 16) / 255
-
- def max = Math.max(Math.max(r, g), b)
- def min = Math.min(Math.min(r, g), b)
-
- def h, s, v = max
-
- def d = max - min
- s = max == 0 ? 0 : d / max
-
- if (max == min) {
- h = 0
- } else {
- switch (max) {
- case r: h = (g - b) / d + (g < b ? 6 : 0); break
- case g: h = (b - r) / d + 2; break
- case b: h = (r - g) / d + 4; break
- }
- h /= 6;
- }
-
- return [Math.round(h * 100), Math.round(s * 100), Math.round(v * 100)]
-}
-
-/**
- * Converts HSV/HSB color to RGB in hex.
- * Algorithm based on http://en.wikipedia.org/wiki/HSV_color_space.
- *
- * @param hue hue 0-100
- * @param sat saturation 0-100
- * @param value value 0-100 (defaults to 100)
-
- * @return the color in hex (#ff03d3)
- */
-def hsvToHex(hue, sat, value = 100) {
- def r, g, b;
- def h = hue / 100
- def s = sat / 100
- def v = value / 100
-
- def i = Math.floor(h * 6)
- def f = h * 6 - i
- def p = v * (1 - s)
- def q = v * (1 - f * s)
- def t = v * (1 - (1 - f) * s)
-
- switch (i % 6) {
- case 0:
- r = v
- g = t
- b = p
- break
- case 1:
- r = q
- g = v
- b = p
- break
- case 2:
- r = p
- g = v
- b = t
- break
- case 3:
- r = p
- g = q
- b = v
- break
- case 4:
- r = t
- g = p
- b = v
- break
- case 5:
- r = v
- g = p
- b = q
- break
- }
-
- // Converting float components to int components.
- def r1 = String.format("%02X", (int) (r * 255.0f))
- def g1 = String.format("%02X", (int) (g * 255.0f))
- def b1 = String.format("%02X", (int) (b * 255.0f))
-
- return "#$r1$g1$b1"
-}
diff --git a/smartapps/smartthings/hue-connect.src/i18n/ar-AE.properties b/smartapps/smartthings/hue-connect.src/i18n/ar-AE.properties
deleted file mode 100644
index f637d4c..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/ar-AE.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=يوفر لك إمكانية توصيل مصابيح Philips Hue بـ SmartThings والتحكم بها من منطقة Things أو لوحة المعلومات في تطبيق SmartThings للهواتف المحمولة. يُرجى تحديث Hue Bridge أولاً، خارج تطبيق SmartThings، باستخدام تطبيق Philips Hue.
-'''Discovery Started!'''=بدأ الاكتشاف!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=يُرجى الانتظار ريثما نكتشف Hue Bridge الخاص بك. تجدر الإشارة إلى أنه عليك أوّلاً تكوين Hue Bridge والمصابيح باستخدام تطبيق Philips Hue. قد يستغرق الاكتشاف خمس دقائق أو أكثر، لذا اجلس واسترخِ! اختر جهازك أدناه بمجرد اكتشافه.
-'''Select Hue Bridge ({{numFound}} found)'''=تحديد Hue Bridge (تم العثور على {{numFound}})
-'''Bridge Discovery Failed!'''=فشل اكتشاف Bridge
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=فشل اكتشاف أي Hue Bridges. يُرجى التأكد من اتصال Hue Bridge بالشبكة نفسها التي يتصل بها موزع SmartThings الخاص بك، ومن أنه متصل بمصدر طاقة أيضاً.
-'''Linking with your Hue'''=الارتباط بجهاز Hue الخاص بك
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to relink.'''=اسم مستخدم Hue الحالي غير صالح. يُرجى الضغط على الزر الموجود على Hue Bridge الخاص بك لإعادة الارتباط.
-'''Press the button on your Hue Bridge to setup a link.'''=اضغط على الزر الموجود على Hue Bridge الخاص بك لإعداد رابط.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=لم تحدد Hue Bridge، يُرجى الضغط على 'تم' وتحديد واحد قبل النقر فوق التالي.
-'''Success!'''=نجحت العملية!
-'''Linking to your hub was a success! Please click 'Next'!'''=نجح الارتباط بالموزع الخاص بك! يُرجى النقر فوق ”التالي“!
-'''Find bridges'''=بحث عن أجهزة bridges
-'''Light Discovery Failed!'''=فشل اكتشاف المصباح!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=فشل اكتشاف أي مصابيح، يُرجى المحاولة مرة أخرى لاحقاً. انقر فوق تم للخروج.
-'''Select Hue Lights to add ({{numFound}} found)'''=حدد مصابيح Hue التي تريد إضافتها (تم العثور على {{numFound}})
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=مصابيح Hue المضافة مُسبقاً (تمت إضافة {{existingLightsSize}})
-'''Light Discovery Started!'''=بدأ اكتشاف المصباح!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=يُرجى الانتظار ريثما نكتشف مصابيح Hue الخاصة بك. قد يستغرق الاكتشاف خمس دقائق أو أكثر، لذا اجلس واسترخِ! اختر جهازك أدناه بمجرد اكتشافه.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/bg-BG.properties b/smartapps/smartthings/hue-connect.src/i18n/bg-BG.properties
deleted file mode 100644
index bb61c1b..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/bg-BG.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Позволява да свържете Philips Hue lights (лампи) със SmartThings и да ги управлявате от областта Things (Уреди) или Dashboard (Табло) в приложението SmartThings Mobile. Първо актуализирайте своя Hue Bridge (Мост) извън приложението SmartThings, като използвате приложението Philips Hue.
-'''Discovery Started!'''=Откриването е стартирано!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Изчакайте, докато намерим вашия Hue Bridge (Мост). Обърнете внимание, че първо трябва да конфигурирате своя Hue Bridge (Мост) и Lights (Лампи) с помощта на приложението Philips Hue. Намирането може да отнеме пет минути или повече, така че седнете и се отпуснете! Изберете устройството си по-долу, след като бъде открито.
-'''Select Hue Bridge ({{numFound}} found)'''=Избор на Hue Bridge (Мост) ({{numFound}} са открити)
-'''Bridge Discovery Failed!'''=Откриването на Bridge (Мост) е неуспешно!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Неуспешно откриване на Hue Bridges (Мост). Уверете се, че Hue Bridge (Мост) е свързан към същата мрежа като концентратора на SmartThings, както и че има захранване.
-'''Linking with your Hue'''=Свързване с Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Текущото потребителско име за Hue е невалидно. Натиснете бутона на вашия Hue Bridge (Мост) за повторно свързване.
-'''Press the button on your Hue Bridge to setup a link.'''=Натиснете бутона на вашия Hue Bridge (Мост), за да установите връзка.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Не сте избрали Hue Bridge (Мост), натиснете „Done“ (Готово) и изберете един, преди да щракнете върху Next (Напред).
-'''Success!'''=Успех!
-'''Linking to your hub was a success! Please click 'Next'!'''=Свързването с вашия концентратор е успешно. Щракнете върху „Next“ (Напред)!
-'''Find bridges'''=Откриване на мостове
-'''Light Discovery Failed!'''=Откриването на лампата е неуспешно!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Неуспешно откриване на лампи, опитайте отново по-късно. Щракнете върху Done (Готово) за изход.
-'''Select Hue Lights to add ({{numFound}} found)'''=Изберете Hue Lights (Лампи) за добавяне ({{numFound}} са открити)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=По-рано добавени Hue Lights (Лампи) ({{existingLightsSize}} са добавени)
-'''Light Discovery Started!'''=Откриването на лампи е стартирано!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Изчакайте, докато намерим вашите Hue Lights (Лампи). Намирането може да отнеме пет минути или повече, така че седнете и се отпуснете! Изберете устройството си по-долу, след като бъде открито.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/cs-CZ.properties b/smartapps/smartthings/hue-connect.src/i18n/cs-CZ.properties
deleted file mode 100644
index 0f23b67..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/cs-CZ.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Umožňuje připojit světla Philips Hue lights (světla) pomocí SmartThings a ovládat je z oblasti Things (Věci) nebo z Dashboard (Řídicí panel) v mobilní aplikaci SmartThings. Nejprve aktualizujte Hue Bridge (můstek) mimo aplikaci SmartThings, pomocí aplikace Philips Hue.
-'''Discovery Started!'''=Zjišťování byla zahájeno!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Počkejte na rozpoznání Hue Bridge (můstek). Uvědomte si, že musíte nejprve nakonfigurovat Hue Bridge (můstek) a Lights (světla) pomocí aplikace Philips Hue. Rozpoznání může trvat pět minut i déle, proto se klidně posaďte a počkejte! Po rozpoznání vyberte níže dané zařízení.
-'''Select Hue Bridge ({{numFound}} found)'''=Vyberte Hue Bridge (můstek) (nalezeno {{numFound}})
-'''Bridge Discovery Failed!'''=Zjišťování Bridge (můstek) se nezdařilo!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Nepodařilo se najít žádný Hue Bridge (můstek). Zkontrolujte, zda je Hue Bridge (můstek) připojený ke stejné síti jako SmartThings Hub a zda je napájený.
-'''Linking with your Hue'''=Propojení s Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Aktuální uživatelské jméno Hue je neplatné. Stiskněte tlačítko na Hue Bridge (můstek) a obnovte propojení.
-'''Press the button on your Hue Bridge to setup a link.'''=Stiskněte tlačítko na Hue Bridge (můstek) a nastavte propojení.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Nevybrali jste Hue Bridge (můstek); stiskněte tlačítko „Done“ (Hotovo) a jeden vyberte, než klepnete na tlačítko Next (Další).
-'''Success!'''=Úspěch!
-'''Linking to your hub was a success! Please click 'Next'!'''=Propojení s hub bylo úspěšně navázáno! Klepněte na tlačítko „Next“ (Další)!
-'''Find bridges'''=Najít bridge
-'''Light Discovery Failed!'''=Zjišťování světel se nezdařilo!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Nepodařilo najít žádná světla, opakujte akci později. Ukončete akci klepnutím na tlačítko Done (Hotovo).
-'''Select Hue Lights to add ({{numFound}} found)'''=Vyberte Hue lights (světla), která chcete přidat (nalezeno {{numFound}})
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Dříve přidaná Hue Lights (světla) (přidáno {{existingLightsSize}})
-'''Light Discovery Started!'''=Zjišťování světel bylo zahájeno!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Počkejte na rozpoznání Hue Lights (světla). Rozpoznání může trvat pět minut i déle, proto se klidně posaďte a počkejte! Po rozpoznání vyberte níže dané zařízení.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/da-DK.properties b/smartapps/smartthings/hue-connect.src/i18n/da-DK.properties
deleted file mode 100644
index 281a0ac..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/da-DK.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Giver dig mulighed for at forbinde dine Philips Hue Lights (Philips Hue-lamper) med SmartThings og styre dem fra dit Things-område eller dit Dashboard i SmartThings-mobilappen. Opdater din Hue Bridge (Hue-bro) først (uden for SmartThings-appen) ved hjælp af Philips Hue-appen.
-'''Discovery Started!'''=Opdagelse er startet!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Vent, mens vi finder din Hue Bridge (Hue-bro). Bemærk, at du først skal konfigurere din Hue Bridge og Lights (Lamper) med Philips Hue-applikationen. Det kan tage fem minutter eller mere at finde enheden, så bare læn dig tilbage, og slap af! Vælg din enhed herunder, når den er fundet.
-'''Select Hue Bridge ({{numFound}} found)'''=Vælg Hue Bridge (Hue-bro) ({{numFound}} fundet)
-'''Bridge Discovery Failed!'''=Opdagelse af Bridge (bro) mislykkedes!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Kunne ikke finde nogen Hue Bridges (Hue-broer). Bekræft, at Hue Bridge (Hue-broen) er tilsluttet det samme netværk som din SmartThings-hub, og at der er strøm på den.
-'''Linking with your Hue'''=Sammenkædning med din Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Det aktuelle Hue-brugernavn er ugyldigt. Tryk på knappen på din Hue Bridge (Hue-bro) for at tilknytte igen.
-'''Press the button on your Hue Bridge to setup a link.'''=Tryk på knappen på din Hue Bridge (Hue-bro) for at oprette et link.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Du har ikke valgt en Hue Bridge (Hue-bro). Tryk på “Done” (Udført), og vælg én, inden du klikker på Next (Næste).
-'''Success!'''=Succes!
-'''Linking to your hub was a success! Please click 'Next'!'''=Sammenkædningen med din hub blev gennemført! Klik på “Next” (Næste)!
-'''Find bridges'''=Find bridges (broer)
-'''Light Discovery Failed!'''=Opdagelse af lights (lamper) mislykkedes!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Kunne ikke finde nogen lights (lamper). Prøv igen senere. Klik på Done (Udført) for at afslutte.
-'''Select Hue Lights to add ({{numFound}} found)'''=Vælg Hue Lights (Hue-lamper), der skal tilføjes ({{numFound}} fundet)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Tidligere tilføjede Hue Lights (Hue-lamper) ({{existingLightsSize}} tilføjet)
-'''Light Discovery Started!'''=Opdagelse af lights (lamper) er startet!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Vent, mens vi finder dine Hue Lights (Hue-lamper). Det kan tage fem minutter eller mere at finde enheden, så bare læn dig tilbage, og slap af! Vælg din enhed herunder, når den er fundet.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/de-AT.properties b/smartapps/smartthings/hue-connect.src/i18n/de-AT.properties
deleted file mode 100644
index def2273..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/de-AT.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Sie können Ihre Phillips Hue Lights (Lichter) mit SmartThings verbinden und aus Ihrem Things-Bereich oder dem Dashboard in der SmartThings-Mobile-App aus steuern. Bitte aktualisieren Sie zunächst Ihre Hue Bridge (Brücke) außerhalb der SmartThings-App mit der Phillips-Hue-App.
-'''Discovery Started!'''=Erkennung gestartet!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Bitte warten Sie, bis Ihre Hue Bridge (Brücke) erkannt wurde. Beachten Sie bitte, dass Sie Ihre Hue Bridge (Brücke) und Lights (Lichter) zunächst mit der Philips Hue-Anwendung konfigurieren müssen. Die Erkennung kann fünf Minuten oder länger dauern. Lehnen Sie sich zurück und entspannen Sie sich! Wählen Sie nach der Erkennung unten ein Gerät aus.
-'''Select Hue Bridge ({{numFound}} found)'''=Hue Bridge (Brücke) auswählen ({{numFound}} gefunden)
-'''Bridge Discovery Failed!'''=Bridge (Brücke)-Erkennung fehlgeschlagen!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Es konnten keine Hue Bridges (Brücken) gefunden werden. Bitte bestätigen Sie, dass die Hue Bridge (Brücke) am gleichen Netzwerk wie Ihr SmartThings Hub angeschlossen ist und Strom erhält.
-'''Linking with your Hue'''=Kopplung mit Ihrem Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Der aktuelle Hue-Benutzername ist ungültig. Bitte drücken Sie für eine erneute Kopplung die Taste auf Ihrer Hue Bridge (Brücke).
-'''Press the button on your Hue Bridge to setup a link.'''=Drücken Sie die Taste auf Ihrer Hue-Bridge (Brücke), um eine Kopplung einzurichten.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Sie haben keine Hue Bridge (Brücke) ausgewählt. Bitte drücken Sie ‚Done‘ (OK) und wählen Sie eine aus, bevor Sie auf Next (Weiter) drücken.
-'''Success!'''=Erfolgreich verbunden!
-'''Linking to your hub was a success! Please click 'Next'!'''=Die Kopplung mit Ihrem Hub war erfolgreich! Bitte klicken Sie auf ‚Next‘ (Weiter)!
-'''Find bridges'''=Bridges (Brücken) suchen
-'''Light Discovery Failed!'''=Lichterkennung fehlgeschlagen!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Es wurden keine Lichter erkannt. Bitte versuchen Sie es später erneut. Klicken Sie zum Beenden auf „Done“ (OK).
-'''Select Hue Lights to add ({{numFound}} found)'''=Wählen Sie die hinzuzufügenden Hue Lights (Lichter) aus ({{numFound}} gefunden)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Zuvor hinzugefügte Hue Lights (Lichter) ({{existingLightsSize}} hinzugefügt)
-'''Light Discovery Started!'''=Lichterkennung gestartet!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Bitte warten Sie, bis Ihre Hue Lights (Lichter) erkannt wurden. Die Erkennung kann fünf Minuten oder länger dauern. Lehnen Sie sich zurück und entspannen Sie sich! Wählen Sie nach der Erkennung unten ein Gerät aus.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/de-CH.properties b/smartapps/smartthings/hue-connect.src/i18n/de-CH.properties
deleted file mode 100644
index def2273..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/de-CH.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Sie können Ihre Phillips Hue Lights (Lichter) mit SmartThings verbinden und aus Ihrem Things-Bereich oder dem Dashboard in der SmartThings-Mobile-App aus steuern. Bitte aktualisieren Sie zunächst Ihre Hue Bridge (Brücke) außerhalb der SmartThings-App mit der Phillips-Hue-App.
-'''Discovery Started!'''=Erkennung gestartet!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Bitte warten Sie, bis Ihre Hue Bridge (Brücke) erkannt wurde. Beachten Sie bitte, dass Sie Ihre Hue Bridge (Brücke) und Lights (Lichter) zunächst mit der Philips Hue-Anwendung konfigurieren müssen. Die Erkennung kann fünf Minuten oder länger dauern. Lehnen Sie sich zurück und entspannen Sie sich! Wählen Sie nach der Erkennung unten ein Gerät aus.
-'''Select Hue Bridge ({{numFound}} found)'''=Hue Bridge (Brücke) auswählen ({{numFound}} gefunden)
-'''Bridge Discovery Failed!'''=Bridge (Brücke)-Erkennung fehlgeschlagen!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Es konnten keine Hue Bridges (Brücken) gefunden werden. Bitte bestätigen Sie, dass die Hue Bridge (Brücke) am gleichen Netzwerk wie Ihr SmartThings Hub angeschlossen ist und Strom erhält.
-'''Linking with your Hue'''=Kopplung mit Ihrem Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Der aktuelle Hue-Benutzername ist ungültig. Bitte drücken Sie für eine erneute Kopplung die Taste auf Ihrer Hue Bridge (Brücke).
-'''Press the button on your Hue Bridge to setup a link.'''=Drücken Sie die Taste auf Ihrer Hue-Bridge (Brücke), um eine Kopplung einzurichten.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Sie haben keine Hue Bridge (Brücke) ausgewählt. Bitte drücken Sie ‚Done‘ (OK) und wählen Sie eine aus, bevor Sie auf Next (Weiter) drücken.
-'''Success!'''=Erfolgreich verbunden!
-'''Linking to your hub was a success! Please click 'Next'!'''=Die Kopplung mit Ihrem Hub war erfolgreich! Bitte klicken Sie auf ‚Next‘ (Weiter)!
-'''Find bridges'''=Bridges (Brücken) suchen
-'''Light Discovery Failed!'''=Lichterkennung fehlgeschlagen!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Es wurden keine Lichter erkannt. Bitte versuchen Sie es später erneut. Klicken Sie zum Beenden auf „Done“ (OK).
-'''Select Hue Lights to add ({{numFound}} found)'''=Wählen Sie die hinzuzufügenden Hue Lights (Lichter) aus ({{numFound}} gefunden)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Zuvor hinzugefügte Hue Lights (Lichter) ({{existingLightsSize}} hinzugefügt)
-'''Light Discovery Started!'''=Lichterkennung gestartet!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Bitte warten Sie, bis Ihre Hue Lights (Lichter) erkannt wurden. Die Erkennung kann fünf Minuten oder länger dauern. Lehnen Sie sich zurück und entspannen Sie sich! Wählen Sie nach der Erkennung unten ein Gerät aus.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/de-DE.properties b/smartapps/smartthings/hue-connect.src/i18n/de-DE.properties
deleted file mode 100644
index def2273..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/de-DE.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Sie können Ihre Phillips Hue Lights (Lichter) mit SmartThings verbinden und aus Ihrem Things-Bereich oder dem Dashboard in der SmartThings-Mobile-App aus steuern. Bitte aktualisieren Sie zunächst Ihre Hue Bridge (Brücke) außerhalb der SmartThings-App mit der Phillips-Hue-App.
-'''Discovery Started!'''=Erkennung gestartet!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Bitte warten Sie, bis Ihre Hue Bridge (Brücke) erkannt wurde. Beachten Sie bitte, dass Sie Ihre Hue Bridge (Brücke) und Lights (Lichter) zunächst mit der Philips Hue-Anwendung konfigurieren müssen. Die Erkennung kann fünf Minuten oder länger dauern. Lehnen Sie sich zurück und entspannen Sie sich! Wählen Sie nach der Erkennung unten ein Gerät aus.
-'''Select Hue Bridge ({{numFound}} found)'''=Hue Bridge (Brücke) auswählen ({{numFound}} gefunden)
-'''Bridge Discovery Failed!'''=Bridge (Brücke)-Erkennung fehlgeschlagen!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Es konnten keine Hue Bridges (Brücken) gefunden werden. Bitte bestätigen Sie, dass die Hue Bridge (Brücke) am gleichen Netzwerk wie Ihr SmartThings Hub angeschlossen ist und Strom erhält.
-'''Linking with your Hue'''=Kopplung mit Ihrem Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Der aktuelle Hue-Benutzername ist ungültig. Bitte drücken Sie für eine erneute Kopplung die Taste auf Ihrer Hue Bridge (Brücke).
-'''Press the button on your Hue Bridge to setup a link.'''=Drücken Sie die Taste auf Ihrer Hue-Bridge (Brücke), um eine Kopplung einzurichten.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Sie haben keine Hue Bridge (Brücke) ausgewählt. Bitte drücken Sie ‚Done‘ (OK) und wählen Sie eine aus, bevor Sie auf Next (Weiter) drücken.
-'''Success!'''=Erfolgreich verbunden!
-'''Linking to your hub was a success! Please click 'Next'!'''=Die Kopplung mit Ihrem Hub war erfolgreich! Bitte klicken Sie auf ‚Next‘ (Weiter)!
-'''Find bridges'''=Bridges (Brücken) suchen
-'''Light Discovery Failed!'''=Lichterkennung fehlgeschlagen!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Es wurden keine Lichter erkannt. Bitte versuchen Sie es später erneut. Klicken Sie zum Beenden auf „Done“ (OK).
-'''Select Hue Lights to add ({{numFound}} found)'''=Wählen Sie die hinzuzufügenden Hue Lights (Lichter) aus ({{numFound}} gefunden)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Zuvor hinzugefügte Hue Lights (Lichter) ({{existingLightsSize}} hinzugefügt)
-'''Light Discovery Started!'''=Lichterkennung gestartet!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Bitte warten Sie, bis Ihre Hue Lights (Lichter) erkannt wurden. Die Erkennung kann fünf Minuten oder länger dauern. Lehnen Sie sich zurück und entspannen Sie sich! Wählen Sie nach der Erkennung unten ein Gerät aus.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/el-GR.properties b/smartapps/smartthings/hue-connect.src/i18n/el-GR.properties
deleted file mode 100644
index 4024ba9..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/el-GR.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Σας επιτρέπει να συνδέσετε τους λαμπτήρες Philips Hue με το SmartThings και να τους ελέγχετε από την περιοχή Things στο Dashboard της εφαρμογής SmartThings για κινητές συσκευές. Ενημερώστε πρώτα το Hue Bridge εκτός της εφαρμογής SmartThings, χρησιμοποιώντας την εφαρμογή Philips Hue.
-'''Discovery Started!'''=Η ανακάλυψη ξεκίνησε!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Περιμένετε μέχρι να ολοκληρωθεί η ανακάλυψη του Hue Bridge σας. Έχετε υπόψη ότι θα πρέπει πρώτα να διαμορφώσετε το Hue Bridge και τους λαμπτήρες, χρησιμοποιώντας την εφαρμογή Philips Hue. Η ανακάλυψη μπορεί να διαρκέσει πέντε λεπτά ή περισσότερο, επομένως, χαλαρώστε και περιμένετε! Επιλέξτε τη συσκευή σας παρακάτω μόλις ανακαλυφθεί.
-'''Select Hue Bridge ({{numFound}} found)'''=Επιλογή Hue Bridge (βρέθηκαν {{numFound}})
-'''Bridge Discovery Failed!'''=Η ανακάλυψη Bridge απέτυχε!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Δεν ανακαλύφθηκε κανένα Hue Bridge. Βεβαιωθείτε ότι το Hue Bridge είναι συνδεδεμένο στο ίδιο δίκτυο με το SmartThings Hub και ότι τροφοδοτείται με ρεύμα.
-'''Linking with your Hue'''=Γίνεται σύνδεση με το Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Το τρέχον όνομα χρήστη Hue δεν είναι έγκυρο. Πατήστε το κουμπί στο Hue Bridge για επανασύνδεση.
-'''Press the button on your Hue Bridge to setup a link.'''=Πατήστε το κουμπί στο Hue Bridge σας για να ρυθμίσετε μια σύνδεση.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Δεν έχετε επιλέξτε ένα Hue Bridge. Πατήστε «Done» (Τέλος) και επιλέξτε ένα πριν κάνετε κλικ στην επιλογή Next (Επόμενο).
-'''Success!'''=Επιτυχία!
-'''Linking to your hub was a success! Please click 'Next'!'''=Η σύνδεση με το διανομέα σας ολοκληρώθηκε με επιτυχία. Κάντε κλικ στην επιλογή 'Next' (Επόμενο)!
-'''Find bridges'''=Εύρεση bridge
-'''Light Discovery Failed!'''=Η ανακάλυψη λαμπτήρων απέτυχε!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Η ανακάλυψη λαμπτήρων απέτυχε, δοκιμάστε ξανά αργότερα. Κάντε κλικ στην επιλογή "Done" (Τέλος) για έξοδο.
-'''Select Hue Lights to add ({{numFound}} found)'''=Επιλογή λαμπτήρων Hue για προσθήκη (βρέθηκαν {{numFound}})
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Λαμπτήρες Hue που προστέθηκαν παλαιότερα (προστέθηκαν {{existingLightsSize}})
-'''Light Discovery Started!'''=Η ανακάλυψη λαμπτήρων ξεκίνησε!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Περιμένετε μέχρι να ολοκληρωθεί η ανακάλυψη των λαμπτήρων Hue σας. Η ανακάλυψη μπορεί να διαρκέσει πέντε λεπτά ή περισσότερο, επομένως, χαλαρώστε και περιμένετε! Επιλέξτε τη συσκευή σας παρακάτω μόλις ανακαλυφθεί.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/en-AU.properties b/smartapps/smartthings/hue-connect.src/i18n/en-AU.properties
deleted file mode 100644
index 2d11c28..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/en-AU.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Enables you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, from outside the SmartThings app, using the Philips Hue app.
-'''Discovery Started!'''=Discovery Started!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or longer, so sit back and relax! Select your device below once it's been discovered.
-'''Select Hue Bridge ({{numFound}} found)'''=Select Hue Bridge ({{numFound}} found)
-'''Bridge Discovery Failed!'''=Bridge Discovery Failed
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=No Hue Bridges discovered. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.
-'''Linking with your Hue'''=Linking with your Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.
-'''Press the button on your Hue Bridge to setup a link.'''=Press the button on your Hue Bridge to set up a link.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=You haven't selected a Hue Bridge. Please press 'Done' and select one before clicking 'Next'.
-'''Success!'''=Success!
-'''Linking to your hub was a success! Please click 'Next'!'''=Linking to your hub was successful! Please click 'Next'!
-'''Find bridges'''=Find Bridges
-'''Light Discovery Failed!'''=Light Discovery Failed!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=No lights discovered. Please try again later. Click Done to exit.
-'''Select Hue Lights to add ({{numFound}} found)'''=Select Hue Lights to add ({{numFound}} found)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Previously added Hue Lights ({{existingLightsSize}} added)
-'''Light Discovery Started!'''=Light Discovery Started!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Please wait while we discover your Hue Lights. Discovery can take five minutes or longer, so sit back and relax! Select your light below once it's been discovered.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/en-CA.properties b/smartapps/smartthings/hue-connect.src/i18n/en-CA.properties
deleted file mode 100644
index 2d11c28..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/en-CA.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Enables you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, from outside the SmartThings app, using the Philips Hue app.
-'''Discovery Started!'''=Discovery Started!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or longer, so sit back and relax! Select your device below once it's been discovered.
-'''Select Hue Bridge ({{numFound}} found)'''=Select Hue Bridge ({{numFound}} found)
-'''Bridge Discovery Failed!'''=Bridge Discovery Failed
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=No Hue Bridges discovered. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.
-'''Linking with your Hue'''=Linking with your Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.
-'''Press the button on your Hue Bridge to setup a link.'''=Press the button on your Hue Bridge to set up a link.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=You haven't selected a Hue Bridge. Please press 'Done' and select one before clicking 'Next'.
-'''Success!'''=Success!
-'''Linking to your hub was a success! Please click 'Next'!'''=Linking to your hub was successful! Please click 'Next'!
-'''Find bridges'''=Find Bridges
-'''Light Discovery Failed!'''=Light Discovery Failed!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=No lights discovered. Please try again later. Click Done to exit.
-'''Select Hue Lights to add ({{numFound}} found)'''=Select Hue Lights to add ({{numFound}} found)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Previously added Hue Lights ({{existingLightsSize}} added)
-'''Light Discovery Started!'''=Light Discovery Started!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Please wait while we discover your Hue Lights. Discovery can take five minutes or longer, so sit back and relax! Select your light below once it's been discovered.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/en-GB.properties b/smartapps/smartthings/hue-connect.src/i18n/en-GB.properties
deleted file mode 100644
index 2d11c28..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/en-GB.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Enables you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, from outside the SmartThings app, using the Philips Hue app.
-'''Discovery Started!'''=Discovery Started!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or longer, so sit back and relax! Select your device below once it's been discovered.
-'''Select Hue Bridge ({{numFound}} found)'''=Select Hue Bridge ({{numFound}} found)
-'''Bridge Discovery Failed!'''=Bridge Discovery Failed
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=No Hue Bridges discovered. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.
-'''Linking with your Hue'''=Linking with your Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.
-'''Press the button on your Hue Bridge to setup a link.'''=Press the button on your Hue Bridge to set up a link.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=You haven't selected a Hue Bridge. Please press 'Done' and select one before clicking 'Next'.
-'''Success!'''=Success!
-'''Linking to your hub was a success! Please click 'Next'!'''=Linking to your hub was successful! Please click 'Next'!
-'''Find bridges'''=Find Bridges
-'''Light Discovery Failed!'''=Light Discovery Failed!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=No lights discovered. Please try again later. Click Done to exit.
-'''Select Hue Lights to add ({{numFound}} found)'''=Select Hue Lights to add ({{numFound}} found)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Previously added Hue Lights ({{existingLightsSize}} added)
-'''Light Discovery Started!'''=Light Discovery Started!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Please wait while we discover your Hue Lights. Discovery can take five minutes or longer, so sit back and relax! Select your light below once it's been discovered.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/en-IE.properties b/smartapps/smartthings/hue-connect.src/i18n/en-IE.properties
deleted file mode 100644
index 2d11c28..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/en-IE.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Enables you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, from outside the SmartThings app, using the Philips Hue app.
-'''Discovery Started!'''=Discovery Started!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or longer, so sit back and relax! Select your device below once it's been discovered.
-'''Select Hue Bridge ({{numFound}} found)'''=Select Hue Bridge ({{numFound}} found)
-'''Bridge Discovery Failed!'''=Bridge Discovery Failed
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=No Hue Bridges discovered. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.
-'''Linking with your Hue'''=Linking with your Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.
-'''Press the button on your Hue Bridge to setup a link.'''=Press the button on your Hue Bridge to set up a link.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=You haven't selected a Hue Bridge. Please press 'Done' and select one before clicking 'Next'.
-'''Success!'''=Success!
-'''Linking to your hub was a success! Please click 'Next'!'''=Linking to your hub was successful! Please click 'Next'!
-'''Find bridges'''=Find Bridges
-'''Light Discovery Failed!'''=Light Discovery Failed!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=No lights discovered. Please try again later. Click Done to exit.
-'''Select Hue Lights to add ({{numFound}} found)'''=Select Hue Lights to add ({{numFound}} found)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Previously added Hue Lights ({{existingLightsSize}} added)
-'''Light Discovery Started!'''=Light Discovery Started!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Please wait while we discover your Hue Lights. Discovery can take five minutes or longer, so sit back and relax! Select your light below once it's been discovered.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/en-NZ.properties b/smartapps/smartthings/hue-connect.src/i18n/en-NZ.properties
deleted file mode 100644
index 2d11c28..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/en-NZ.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Enables you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, from outside the SmartThings app, using the Philips Hue app.
-'''Discovery Started!'''=Discovery Started!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or longer, so sit back and relax! Select your device below once it's been discovered.
-'''Select Hue Bridge ({{numFound}} found)'''=Select Hue Bridge ({{numFound}} found)
-'''Bridge Discovery Failed!'''=Bridge Discovery Failed
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=No Hue Bridges discovered. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.
-'''Linking with your Hue'''=Linking with your Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.
-'''Press the button on your Hue Bridge to setup a link.'''=Press the button on your Hue Bridge to set up a link.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=You haven't selected a Hue Bridge. Please press 'Done' and select one before clicking 'Next'.
-'''Success!'''=Success!
-'''Linking to your hub was a success! Please click 'Next'!'''=Linking to your hub was successful! Please click 'Next'!
-'''Find bridges'''=Find Bridges
-'''Light Discovery Failed!'''=Light Discovery Failed!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=No lights discovered. Please try again later. Click Done to exit.
-'''Select Hue Lights to add ({{numFound}} found)'''=Select Hue Lights to add ({{numFound}} found)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Previously added Hue Lights ({{existingLightsSize}} added)
-'''Light Discovery Started!'''=Light Discovery Started!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Please wait while we discover your Hue Lights. Discovery can take five minutes or longer, so sit back and relax! Select your light below once it's been discovered.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/en-PH.properties b/smartapps/smartthings/hue-connect.src/i18n/en-PH.properties
deleted file mode 100644
index 2d11c28..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/en-PH.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Enables you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, from outside the SmartThings app, using the Philips Hue app.
-'''Discovery Started!'''=Discovery Started!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or longer, so sit back and relax! Select your device below once it's been discovered.
-'''Select Hue Bridge ({{numFound}} found)'''=Select Hue Bridge ({{numFound}} found)
-'''Bridge Discovery Failed!'''=Bridge Discovery Failed
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=No Hue Bridges discovered. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.
-'''Linking with your Hue'''=Linking with your Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.
-'''Press the button on your Hue Bridge to setup a link.'''=Press the button on your Hue Bridge to set up a link.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=You haven't selected a Hue Bridge. Please press 'Done' and select one before clicking 'Next'.
-'''Success!'''=Success!
-'''Linking to your hub was a success! Please click 'Next'!'''=Linking to your hub was successful! Please click 'Next'!
-'''Find bridges'''=Find Bridges
-'''Light Discovery Failed!'''=Light Discovery Failed!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=No lights discovered. Please try again later. Click Done to exit.
-'''Select Hue Lights to add ({{numFound}} found)'''=Select Hue Lights to add ({{numFound}} found)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Previously added Hue Lights ({{existingLightsSize}} added)
-'''Light Discovery Started!'''=Light Discovery Started!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Please wait while we discover your Hue Lights. Discovery can take five minutes or longer, so sit back and relax! Select your light below once it's been discovered.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/en-ZA.properties b/smartapps/smartthings/hue-connect.src/i18n/en-ZA.properties
deleted file mode 100644
index 2d11c28..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/en-ZA.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Enables you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, from outside the SmartThings app, using the Philips Hue app.
-'''Discovery Started!'''=Discovery Started!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or longer, so sit back and relax! Select your device below once it's been discovered.
-'''Select Hue Bridge ({{numFound}} found)'''=Select Hue Bridge ({{numFound}} found)
-'''Bridge Discovery Failed!'''=Bridge Discovery Failed
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=No Hue Bridges discovered. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.
-'''Linking with your Hue'''=Linking with your Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.
-'''Press the button on your Hue Bridge to setup a link.'''=Press the button on your Hue Bridge to set up a link.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=You haven't selected a Hue Bridge. Please press 'Done' and select one before clicking 'Next'.
-'''Success!'''=Success!
-'''Linking to your hub was a success! Please click 'Next'!'''=Linking to your hub was successful! Please click 'Next'!
-'''Find bridges'''=Find Bridges
-'''Light Discovery Failed!'''=Light Discovery Failed!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=No lights discovered. Please try again later. Click Done to exit.
-'''Select Hue Lights to add ({{numFound}} found)'''=Select Hue Lights to add ({{numFound}} found)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Previously added Hue Lights ({{existingLightsSize}} added)
-'''Light Discovery Started!'''=Light Discovery Started!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Please wait while we discover your Hue Lights. Discovery can take five minutes or longer, so sit back and relax! Select your light below once it's been discovered.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/es-ES.properties b/smartapps/smartthings/hue-connect.src/i18n/es-ES.properties
deleted file mode 100644
index 149f802..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/es-ES.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Permite conectar sus Philips Hue Lights (Luces) con SmartThings y controlarlas desde Things area (Área de cosas) o Dashboard (Panel) en la aplicación móvil SmartThings. Actualice primero el Hue Bridge (Puente), fuera de la aplicación SmartThings, usando la aplicación Philips Hue.
-'''Discovery Started!'''=¡Se ha iniciado la detección!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Espere mientras detectamos su Hue Bridge (Puente). Tenga en cuenta que primero tiene que configurar su Hue Bridge (Puente) y Hue Lights (Luces) mediante la aplicación Philips Hue. La detección puede tardar cinco minutos o más. Así que tómeselo con tranquilidad. Seleccione su dispositivo cuando se haya detectado.
-'''Select Hue Bridge ({{numFound}} found)'''=Seleccionar Hue Bridge (Puente) ({{numFound}} encontrados)
-'''Bridge Discovery Failed!'''=¡Error al detectar Bridge (Puente)!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Error al detectar Hue Bridges (Puentes). Confirme que el Hue Bridge (Puente) está conectado a la misma red que su Hub SmartThings y que está enchufado a una toma eléctrica.
-'''Linking with your Hue'''=Vincular con su Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=El nombre de usuario del Hue actual no es válido. Pulse el botón en su Hue Bridge (Puente) para volver a vincular.
-'''Press the button on your Hue Bridge to setup a link.'''=Pulse el botón en su Hue Bridge (Puente) para configurar el vínculo.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=No ha seleccionado ningún Hue Bridge (Puente). Pulse “Done” (Hecho) y seleccione uno antes de hacer clic en Next (Siguiente).
-'''Success!'''=Operación realizada correctamente.
-'''Linking to your hub was a success! Please click 'Next'!'''=Se ha vinculado su Hub correctamente. Haga clic en Next (Siguiente).
-'''Find bridges'''=Encontrar Bridges (Puentes)
-'''Light Discovery Failed!'''=Error al detectar luces.
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Error al detectar luces. Inténtelo de nuevo más tarde. Haga clic en Done (Hecho) para salir.
-'''Select Hue Lights to add ({{numFound}} found)'''=Seleccione Hue Lights (Luces) para añadir ({{numFound}} encontradas)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Hue Lights (Luces) añadidas anteriormente ({{existingLightsSize}} añadidas)
-'''Light Discovery Started!'''=Se ha iniciado la detección de luces.
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Espere mientras detectamos sus Hue Lights (Luces). La detección puede tardar cinco minutos o más. Así que tómeselo con tranquilidad. Seleccione su dispositivo cuando se haya detectado.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/es-US.properties b/smartapps/smartthings/hue-connect.src/i18n/es-US.properties
deleted file mode 100644
index e32b020..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/es-US.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Le permite conectar sus Philips Hue lights (luces Philips Hue) con SmartThings y controlarlas desde el área de Objetos o el Panel de la aplicación SmartThings Mobile. Primero actualice su Hue Bridge (puente Hue) desde fuera de la aplicación de SmartThings, mediante la aplicación de Philips Hue.
-'''Discovery Started!'''=Descubrimiento iniciado
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Espere mientras descubrimos su Hue Bridge (puente Hue). Tenga en cuenta que primero debe configurar Hue Bridge y Hue Lights (luces Hue) mediante la aplicación de Hue. El descubrimiento puede tomar cinco minutos o más, por lo que le sugerimos que se ponga cómodo y se relaje. Una vez descubierto, seleccione su dispositivo.
-'''Select Hue Bridge ({{numFound}} found)'''=Seleccione Hue Bridge (Puente Hue) (se encontraron {{numFound}})
-'''Bridge Discovery Failed!'''=Error al descubrir Bridges (puentes).
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=No se descubrieron Hue Bridges (Puentes Hue). Confirme que el Hue Bridge (Puente Hue) está conectado a la misma red que su unidad central de SmartThings, y que está conectado a la red eléctrica.
-'''Linking with your Hue'''=Vinculando con su Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=El nombre de usuario Hue actual no es válido. Presione el botón de su Hue Bridge (Puente Hue) para volver a vincular.
-'''Press the button on your Hue Bridge to setup a link.'''=Presione el botón de su Hue Bridge (Puente Hue) para configurar un vínculo.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=No seleccionó un Hue Bridge (puente Hue). Presione “Done” (Realizado) y seleccione uno antes de hacer clic en Next (Siguiente).
-'''Success!'''=¡Logrado!
-'''Linking to your hub was a success! Please click 'Next'!'''=El vínculo con su unidad central se realizó correctamente. Haga clic en 'Next' (Siguiente).
-'''Find bridges'''=Encontrar puentes
-'''Light Discovery Failed!'''=Error al descubrir luces
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=No se descubrió ninguna luz. Vuelva a intentarlo de nuevo más tarde. Haga clic en Done (Realizado) para salir.
-'''Select Hue Lights to add ({{numFound}} found)'''=Seleccione Hue Lights (Luces Hue) que desea agregar (se encontraron {{numFound}})
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Hue Lights (Luces Hue) agregadas anteriormente (se agregaron {{existingLightsSize}})
-'''Light Discovery Started!'''=Descubrimiento de luces iniciado
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Espere mientras descubrimos sus Hue Lights (Luces Hue). El descubrimiento puede tomar cinco minutos o más, por lo que le sugerimos que se ponga cómodo y se relaje. Una vez descubierto, seleccione su dispositivo.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/et-EE.properties b/smartapps/smartthings/hue-connect.src/i18n/et-EE.properties
deleted file mode 100644
index d5f3c29..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/et-EE.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Võimaldab teil ühendada teie Philips Hue tuled SmartThingsiga ja juhtida neid oma Thingsi piirkonnast või SmartThingsi mobiilirakenduse esipaneelilt. Värskendage esmalt oma Hue Bridge’i väljaspool SmartThingsi rakendust, kasutades Philips Hue rakendust.
-'''Discovery Started!'''=Tuvastamine algas!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Oodake, kuni me tuvastame teie Hue Bridge’i. Pange tähele, et peate esmalt oma Hue Bridge and Lights’i süsteemi rakenduse Philips Hue abil konfigureerima. Tuvastamisele võib kuluda üle viie minuti, seega oodake rahulikult! Pärast tuvastamist valige all oma seade.
-'''Select Hue Bridge ({{numFound}} found)'''=Valige Hue Bridge ({{numFound}} leitud)
-'''Bridge Discovery Failed!'''=Bridge’i tuvastamine nurjus!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Ei leitud ühtki Hue Bridge’i. Kontrollige, kas Hue Bridge on ühendatud teie SmartThingsi jaoturiga samasse võrku ja et sellel on toide olemas.
-'''Linking with your Hue'''=Huega ühendamine
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Praegune Hue kasutajanimi on vale. Vajutage nuppu oma Hue Bridge’il, et uuesti ühendada.
-'''Press the button on your Hue Bridge to setup a link.'''=Vajutage nuppu oma Hue Bridge’il, et ühendust seadistada.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Te pole valinud Hue Bridge’i, vajutage nuppu „Valmis” ja valige mõni, enne kui klõpsate jätkamiseks.
-'''Success!'''=Edukas!
-'''Linking to your hub was a success! Please click 'Next'!'''=Teie jaoturiga ühendamine õnnestus! Klõpsake nuppu Järgmine!
-'''Find bridges'''=Bridge’ide leidmine
-'''Light Discovery Failed!'''=Tulede tuvastamine nurjus!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Tulede tuvastamine nurjus, proovige hiljem uuesti. Klõpsake väljumiseks nuppu Valmis.
-'''Select Hue Lights to add ({{numFound}} found)'''=Valige lisamiseks Hue tuled ({{numFound}} leitud)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Varem lisatud Hue tuled ({{existingLightsSize}} lisatud)
-'''Light Discovery Started!'''=Tulede tuvastamine algas!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Oodake, kuni me tuvastame teie Hue tuled. Tuvastamisele võib kuluda üle viie minuti, seega oodake rahulikult! Pärast tuvastamist valige all oma seade.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/fi-FI.properties b/smartapps/smartthings/hue-connect.src/i18n/fi-FI.properties
deleted file mode 100644
index 8e329e8..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/fi-FI.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Antaa sinun yhdistää Philips Hue Lights -valot SmartThingsiin ja hallita niitä SmartThings-mobiilisovelluksen Things (Laitteet) -alueelta tai koontinäytöstä. Päivitä ensin Hue Bridge -silta SmartThings-sovelluksen ulkopuolella Philips Hue -sovelluksen avulla.
-'''Discovery Started!'''=Etsintä aloitettu!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Odota, kunnes Hue Bridge -silta löytyy. Huomaa, että sinun on ensin päivitettävä Hue Bridge -silta ja Hue Lights -valot Philips Hue -sovelluksen avulla. Etsintä voi kestää jopa yli viisi minuuttia, joten odota kärsivällisesti! Valitse laite alta, kun se on löytynyt.
-'''Select Hue Bridge ({{numFound}} found)'''=Valitse Hue Bridge -silta ({{numFound}} löydetty)
-'''Bridge Discovery Failed!'''=Sillan etsintä epäonnistui!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Hue Bridge -siltoja ei löytynyt. Varmista, että Hue Bridge -silta on yhdistetty SmartThings-keskittimen kanssa samaan verkkoon ja että se saa virtaa.
-'''Linking with your Hue'''=Hue-linkin muodostaminen
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Huen nykyinen käyttäjänimi ei kelpaa. Muodosta linkki uudelleen painamalla Hue Bridge -sillassa olevaa painiketta.
-'''Press the button on your Hue Bridge to setup a link.'''=Määritä linkki painamalla Hue Bridge -sillassa olevaa painiketta.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Et ole valinnut Hue Bridge -siltaa. Paina Done (Valmis) -painiketta ja valitse silta, ennen kuin napsautat Next (Seuraava) -painiketta.
-'''Success!'''=Onnistui!
-'''Linking to your hub was a success! Please click 'Next'!'''=Keskittimen linkittäminen onnistui! Valitse Next (Seuraava)!
-'''Find bridges'''=Etsi siltoja
-'''Light Discovery Failed!'''=Valojen etsintä epäonnistui!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Valoja ei löytynyt. Yritä myöhemmin uudelleen. Lopeta valitsemalla Done (Valmis).
-'''Select Hue Lights to add ({{numFound}} found)'''=Valitse lisättävät Hue Lights -valot ({{numFound}} löydetty)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Aikaisemmin lisätyt Hue Lights -valot ({{existingLightsSize}} lisätty)
-'''Light Discovery Started!'''=Valojen etsintä aloitettu!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Odota, kunnes Hue Lights -valot löytyvät. Etsintä voi kestää jopa yli viisi minuuttia, joten odota kärsivällisesti! Valitse laite alta, kun se on löytynyt.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/fr-BE.properties b/smartapps/smartthings/hue-connect.src/i18n/fr-BE.properties
deleted file mode 100644
index 9119bfc..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/fr-BE.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Vous permet de connecter vos lampes Philips Hue à SmartThings et de les contrôler depuis votre zone Things (Objets) ou du tableau de bord dans l'application mobile SmartThings. Veuillez d'abord mettre à jour votre pont Hue, en dehors de l'application SmartThings, à l'aide de l'application Philips Hue.
-'''Discovery Started!'''=La détection a commencé !
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Veuillez patienter pendant la détection de votre pont Hue. Vous devez d'abord configurer votre pont et vos lampes Hue à l'aide de l'application Philips Hue. La détection peut prendre cinq minutes voire plus. Alors, détendez-vous en attendant ! Une fois qu'il a été détecté, sélectionnez votre appareil ci-dessous.
-'''Select Hue Bridge ({{numFound}} found)'''=Sélectionnez le pont Hue ({{numFound}} trouvé(s))
-'''Bridge Discovery Failed!'''=Échec de la détection du pont !
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=La détection des ponts Hue a échoué. Veuillez confirmer que le pont Hue est connecté au même réseau que votre concentrateur SmartThings, et qu'il est sous tension.
-'''Linking with your Hue'''=Association avec votre Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Le nom d'utilisateur Hue actuel n'est pas valide. Veuillez appuyer sur la touche de votre pont Hue pour l'associer de nouveau.
-'''Press the button on your Hue Bridge to setup a link.'''=Appuyez sur la touche de votre pont Hue pour configurer une association.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Vous n'avez pas sélectionné de pont Hue. Appuyez sur “Done” (Terminé), puis sélectionnez-en un avant de cliquer sur Next (Suivant).
-'''Success!'''=Opération réussie !
-'''Linking to your hub was a success! Please click 'Next'!'''=Vous avez réussi à associer votre concentrateur. Veuillez cliquer sur « Suivant » !
-'''Find bridges'''=Trouver des ponts
-'''Light Discovery Failed!'''=La détection du pont a échoué !
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Échec de la détection des lampes, veuillez réessayer ultérieurement. Cliquez sur Done (Terminé) pour quitter.
-'''Select Hue Lights to add ({{numFound}} found)'''=Sélectionnez les lampes Hue à ajouter ({{numFound}} trouvée(s))
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Lampes Hue précédemment ajoutées ({{existingLightsSize}} ajoutée(s))
-'''Light Discovery Started!'''=La détection des lampes a commencé !
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Veuillez patienter pendant la détection de vos lampes Hue La détection peut prendre cinq minutes voire plus. Alors, détendez-vous en attendant ! Une fois qu'il a été détecté, sélectionnez votre appareil ci-dessous.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/fr-CA.properties b/smartapps/smartthings/hue-connect.src/i18n/fr-CA.properties
deleted file mode 100644
index 1ee3a16..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/fr-CA.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Vous permet de connecter vos Philips Hue Lights (lumières Philips Hue) avec SmartThings et de les contrôler depuis Things (choses) ou Dashboard (tableau de bord) dans l’application mobile SmartThings. Veuillez d’abord mettre à jour votre Hue Bridge (pont Hue) à l’extérieur de l’application SmartThings, à l’aide de l’application Philips Hue.
-'''Discovery Started!'''=Début de la détection.
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Veuillez patienter pendant que nous détectons votre Hue Bridge (pont Hue). Veuillez noter que vous devez d’abord configurer votre Hue Bridge (pont Hue) et vos Hue Lights (lumières Hue) à l’aide de l’application Philips Hue. La détection peut prendre cinq minutes ou plus, donc détendez-vous. Sélectionnez votre appareil ci-dessous une fois qu’il est détecté.
-'''Select Hue Bridge ({{numFound}} found)'''=Sélectionnez le Hue Bridge (pont Hue; {{numFound}} trouvé(s))
-'''Bridge Discovery Failed!'''=Échec de détection du pont!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Échec de détection d’un Hue Bridge (pont Hue). Veuillez vous assurer que le Hue Bridge (pont Hue) est connecté au même réseau que votre borne SmartThings et qu’il est alimenté.
-'''Linking with your Hue'''=Jumelage avec votre Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Le nom d’utilisateur Hue que vous utilisez n’est pas valide. Appuyez sur le bouton qui se trouve sur votre Hue Bridge (pont Hue) pour effectuer le jumelage de nouveau.
-'''Press the button on your Hue Bridge to setup a link.'''=Appuyez sur le bouton qui se trouve sur le Hue Bridge (pont Hue) afin de configurer un lien.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Vous n’avez pas sélectionné de Hue Bridge (pont Hue). Veuillez appuyez sur « Done » (terminé) et sélectionnez-en un avant de cliquer sur Next (suivant).
-'''Success!'''=Réussite!
-'''Linking to your hub was a success! Please click 'Next'!'''=Le jumelage avec votre portail est un succès! Veuillez cliquer sur Next (suivant)!
-'''Find bridges'''=Trouver des ponts
-'''Light Discovery Failed!'''=Échec de détection de lumière!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Impossible de détecter de la lumière. Veuillez réessayer plus tard. Cliquez sur Done (terminé) pour quitter.
-'''Select Hue Lights to add ({{numFound}} found)'''=Sélectionnez les Hue Lights (lumières Hue) que vous souhaitez ajouter ({{numFound}} trouvée(s))
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Hue Lights (lumières Hue) ajoutées précédemment ({{existingLightsSize}} ajoutée(s))
-'''Light Discovery Started!'''=Début de la détection de lumières!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Veuillez patienter pendant que nous détectons vos Hue Lights (lumières Hue). La détection peut prendre cinq minutes ou plus, donc détendez-vous. Sélectionnez votre appareil ci-dessous une fois qu’il est détecté.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/fr-CH.properties b/smartapps/smartthings/hue-connect.src/i18n/fr-CH.properties
deleted file mode 100644
index 9119bfc..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/fr-CH.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Vous permet de connecter vos lampes Philips Hue à SmartThings et de les contrôler depuis votre zone Things (Objets) ou du tableau de bord dans l'application mobile SmartThings. Veuillez d'abord mettre à jour votre pont Hue, en dehors de l'application SmartThings, à l'aide de l'application Philips Hue.
-'''Discovery Started!'''=La détection a commencé !
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Veuillez patienter pendant la détection de votre pont Hue. Vous devez d'abord configurer votre pont et vos lampes Hue à l'aide de l'application Philips Hue. La détection peut prendre cinq minutes voire plus. Alors, détendez-vous en attendant ! Une fois qu'il a été détecté, sélectionnez votre appareil ci-dessous.
-'''Select Hue Bridge ({{numFound}} found)'''=Sélectionnez le pont Hue ({{numFound}} trouvé(s))
-'''Bridge Discovery Failed!'''=Échec de la détection du pont !
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=La détection des ponts Hue a échoué. Veuillez confirmer que le pont Hue est connecté au même réseau que votre concentrateur SmartThings, et qu'il est sous tension.
-'''Linking with your Hue'''=Association avec votre Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Le nom d'utilisateur Hue actuel n'est pas valide. Veuillez appuyer sur la touche de votre pont Hue pour l'associer de nouveau.
-'''Press the button on your Hue Bridge to setup a link.'''=Appuyez sur la touche de votre pont Hue pour configurer une association.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Vous n'avez pas sélectionné de pont Hue. Appuyez sur “Done” (Terminé), puis sélectionnez-en un avant de cliquer sur Next (Suivant).
-'''Success!'''=Opération réussie !
-'''Linking to your hub was a success! Please click 'Next'!'''=Vous avez réussi à associer votre concentrateur. Veuillez cliquer sur « Suivant » !
-'''Find bridges'''=Trouver des ponts
-'''Light Discovery Failed!'''=La détection du pont a échoué !
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Échec de la détection des lampes, veuillez réessayer ultérieurement. Cliquez sur Done (Terminé) pour quitter.
-'''Select Hue Lights to add ({{numFound}} found)'''=Sélectionnez les lampes Hue à ajouter ({{numFound}} trouvée(s))
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Lampes Hue précédemment ajoutées ({{existingLightsSize}} ajoutée(s))
-'''Light Discovery Started!'''=La détection des lampes a commencé !
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Veuillez patienter pendant la détection de vos lampes Hue La détection peut prendre cinq minutes voire plus. Alors, détendez-vous en attendant ! Une fois qu'il a été détecté, sélectionnez votre appareil ci-dessous.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/fr-FR.properties b/smartapps/smartthings/hue-connect.src/i18n/fr-FR.properties
deleted file mode 100644
index 9119bfc..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/fr-FR.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Vous permet de connecter vos lampes Philips Hue à SmartThings et de les contrôler depuis votre zone Things (Objets) ou du tableau de bord dans l'application mobile SmartThings. Veuillez d'abord mettre à jour votre pont Hue, en dehors de l'application SmartThings, à l'aide de l'application Philips Hue.
-'''Discovery Started!'''=La détection a commencé !
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Veuillez patienter pendant la détection de votre pont Hue. Vous devez d'abord configurer votre pont et vos lampes Hue à l'aide de l'application Philips Hue. La détection peut prendre cinq minutes voire plus. Alors, détendez-vous en attendant ! Une fois qu'il a été détecté, sélectionnez votre appareil ci-dessous.
-'''Select Hue Bridge ({{numFound}} found)'''=Sélectionnez le pont Hue ({{numFound}} trouvé(s))
-'''Bridge Discovery Failed!'''=Échec de la détection du pont !
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=La détection des ponts Hue a échoué. Veuillez confirmer que le pont Hue est connecté au même réseau que votre concentrateur SmartThings, et qu'il est sous tension.
-'''Linking with your Hue'''=Association avec votre Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Le nom d'utilisateur Hue actuel n'est pas valide. Veuillez appuyer sur la touche de votre pont Hue pour l'associer de nouveau.
-'''Press the button on your Hue Bridge to setup a link.'''=Appuyez sur la touche de votre pont Hue pour configurer une association.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Vous n'avez pas sélectionné de pont Hue. Appuyez sur “Done” (Terminé), puis sélectionnez-en un avant de cliquer sur Next (Suivant).
-'''Success!'''=Opération réussie !
-'''Linking to your hub was a success! Please click 'Next'!'''=Vous avez réussi à associer votre concentrateur. Veuillez cliquer sur « Suivant » !
-'''Find bridges'''=Trouver des ponts
-'''Light Discovery Failed!'''=La détection du pont a échoué !
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Échec de la détection des lampes, veuillez réessayer ultérieurement. Cliquez sur Done (Terminé) pour quitter.
-'''Select Hue Lights to add ({{numFound}} found)'''=Sélectionnez les lampes Hue à ajouter ({{numFound}} trouvée(s))
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Lampes Hue précédemment ajoutées ({{existingLightsSize}} ajoutée(s))
-'''Light Discovery Started!'''=La détection des lampes a commencé !
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Veuillez patienter pendant la détection de vos lampes Hue La détection peut prendre cinq minutes voire plus. Alors, détendez-vous en attendant ! Une fois qu'il a été détecté, sélectionnez votre appareil ci-dessous.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/hr-HR.properties b/smartapps/smartthings/hue-connect.src/i18n/hr-HR.properties
deleted file mode 100644
index 541bde5..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/hr-HR.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Omogućava vam da povežete Philips Hue lights (svjetla Philips Hue) i SmartThings te da upravljate njima iz dijela Things area (Područje za stvari) ili Dashboard (Nadzorna ploča) u mobilnoj aplikaciji SmartThings. Najprije aktualizirajte Hue Bridge (Hue most) izvan aplikacije SmartThings s pomoću aplikacije Philips Hue.
-'''Discovery Started!'''=Otkrivanje je započelo!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Pričekajte dok otkrivamo vaš Hue Bridge (Hue most). Imajte na umu da najprije morate konfigurirati vaš Hue Bridge (Hue most) i Lights (svjetla) s pomoću aplikacije Philips Hue. Otkrivanje može trajati pet minuta ili dulje, stoga sjednite i opustite se! Kada bude otkriven, odaberite svoj uređaj u nastavku.
-'''Select Hue Bridge ({{numFound}} found)'''=Odaberite Hue Bridge (Hue most) (pronađeno: {{numFound}})
-'''Bridge Discovery Failed!'''=Neuspješno otkrivanje Bridgea (mosta)!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Nije otkriven nijedan Hue Bridge (Hue most). Potvrdite da je Hue Bridge (Hue most) povezan na istu mrežu kao i SmartThings Hub i da je uključen.
-'''Linking with your Hue'''=Povezivanje s uređajem Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Neispravno je trenutačno korisničko ime za Hue. Pritisnite gumb za ponovno povezivanje na Hue Bridgeu (Hue most).
-'''Press the button on your Hue Bridge to setup a link.'''=Pritisnite gumb na uređaju Hue Bridge (Hue most) da biste postavili vezu.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Niste odabrali nijedan Hue Bridge (Hue most), pritisnite „Done” (Gotovo) i odaberite jedan prije nego što kliknete next (dalje).
-'''Success!'''=Uspjeh!
-'''Linking to your hub was a success! Please click 'Next'!'''=Povezivanje na koncentrator bilo je uspješno! Kliknite „Next” (Dalje)!
-'''Find bridges'''=Pronađi mostove
-'''Light Discovery Failed!'''=Otkrivanje svjetla nije uspjelo!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Nije otkriveno nijedno svjetlo, pokušajte ponovno kasnije. Kliknite Done (Gotovo) za izlaz.
-'''Select Hue Lights to add ({{numFound}} found)'''=Odaberite Hue Lights (svjetla Hue) za dodavanje (pronađeno: {{numFound}})
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Hue Lights (svjetla Hue) koja su prethodno dodana (dodano: {{existingLightsSize}})
-'''Light Discovery Started!'''=Započelo je otkrivanje svjetla!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Pričekajte dok otkrivamo Hue Lights (svjetla Hue). Otkrivanje može trajati pet minuta ili dulje, stoga sjednite i opustite se! Kada bude otkriven, odaberite svoj uređaj u nastavku.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/hu-HU.properties b/smartapps/smartthings/hue-connect.src/i18n/hu-HU.properties
deleted file mode 100644
index ae106f6..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/hu-HU.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Lehetővé teszi a Philips Hue Lights (lámpák) összekapcsolását a SmartThings rendszerrel és vezérlésüket a SmartThings Mobile alkalmazás Things (Tárgyak) területéről vagy a Dashboard (Vezérlőpult) segítségével. Előbb frissítse a Hue Bridge (híd) eszközt a SmartThings alkalmazáson kívülről, a Philips Hue alkalmazás segítségével.
-'''Discovery Started!'''=Megkezdődött a keresés!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Kis türelmet kérünk, amíg megtaláljuk a Hue Bridge (híd) eszközt. Felhívjuk figyelmét, hogy előbb el kell végeznie a Hue Bridge (híd) és Lights (lámpák) konfigurálását a Philips Hue alkalmazással. Ez akár öt percnél is tovább tarthat, így némi türelemre lesz szükség! Az eszköz megtalálása után alább kiválaszthatja azt.
-'''Select Hue Bridge ({{numFound}} found)'''=Válassza ki a Hue Bridge (híd) eszközt ({{numFound}} találat)
-'''Bridge Discovery Failed!'''=A Bridge (híd) keresése sikertelen volt!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Nem sikerült Hue Bridge (híd) eszközt találni. Győződjön meg róla, hogy a Hue Bridge (híd) ugyanahhoz a hálózathoz kapcsolódik, mint a SmartThings Hub, és be van kapcsolva.
-'''Linking with your Hue'''=Összekapcsolás a Hue-val
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=A jelenleg Hue-felhasználónév érvénytelen. Nyomja meg a Hue Bridge (híd) gombját az újbóli összekapcsoláshoz.
-'''Press the button on your Hue Bridge to setup a link.'''=Az összekapcsolás beállításához nyomja meg a Hue Bridge (híd) gombját.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Nem választott ki Hue Bridge (híd) eszközt. Nyomja meg a „Done” (Kész) gombot, és válasszon, mielőtt a Next (Tovább) gombra kattintana.
-'''Success!'''=Sikerült!
-'''Linking to your hub was a success! Please click 'Next'!'''=Sikeresen összekapcsolódott a hubbal! Kattintson a „Next” (Tovább) gombra!
-'''Find bridges'''=Bridge (híd) eszközök keresése
-'''Light Discovery Failed!'''=A Light (lámpa) keresése sikertelen volt!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Nem sikerült Light (lámpa) eszközt találni, próbálja meg később. Kattintson a Done (Kész) gombra a kilépéshez.
-'''Select Hue Lights to add ({{numFound}} found)'''=Válassza ki a hozzáadni kívánt Hue Light (lámpa) eszközöket ({{numFound}} találat)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Előzőleg hozzáadott Hue Lights (lámpák) ({{existingLightsSize}} hozzáadva)
-'''Light Discovery Started!'''=Megkezdődött a Light (lámpa) eszközök keresése!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Kis türelmet kérünk, amíg megtaláljuk a Hue Light (lámpa) eszközöket. Ez akár öt percnél is tovább tarthat, így némi türelemre lesz szükség! Az eszköz megtalálása után alább kiválaszthatja azt.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/it-IT.properties b/smartapps/smartthings/hue-connect.src/i18n/it-IT.properties
deleted file mode 100644
index 891cf93..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/it-IT.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Consente di collegare le Philips Hue Light (lampadine Philips Hue) con SmartThings e di controllarle dall'area Things o dalla dashboard nell'applicazione mobile SmartThings. Aggiornate innanzitutto il bridge Hue, fuori dall'applicazione SmartThings, tramite l'applicazione Philips Hue.
-'''Discovery Started!'''=Rilevamento avviato.
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Attendete mentre è in corso il rilevamento del bridge Hue. Tenete presente che occorre innanzitutto configurare il bridge e le lampadine Hue tramite l'applicazione Philips Hue. La procedura di rilevamento può richiede almeno cinque minuti, quindi sedetevi e rilassatevi! Selezionate il dispositivo in uso tra quelli riportati di seguito dopo il rilevamento.
-'''Select Hue Bridge ({{numFound}} found)'''=Selezionate il bridge Hue ({{numFound}} trovati)
-'''Bridge Discovery Failed!'''=Rilevamento bridge non riuscito.
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Impossibile rilevare i bridge Hue. Verificate che il bridge Hue sia connesso alla stessa rete dell'hub SmartThings e che sia collegato all'alimentazione.
-'''Linking with your Hue'''=Collegamento con Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Il nome utente Hue corrente non è valido. Premete il pulsante sul bridge Hue per ripetere il collegamento.
-'''Press the button on your Hue Bridge to setup a link.'''=Premete il pulsante sul bridge Hue per configurare un collegamento.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Non avete selezionato nessun bridge Hue. Premete “Done” (Fatto) e selezionatene uno prima di fare clic su Next (Avanti).
-'''Success!'''=Operazione riuscita.
-'''Linking to your hub was a success! Please click 'Next'!'''=Il collegamento all'hub è stato effettuato correttamente. Fate clic su “Next” (Avanti).
-'''Find bridges'''=Cerca bridge
-'''Light Discovery Failed!'''=Rilevamento lampadina non riuscito.
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Impossibile rilevare le lampadine. Riprovate più tardi. Fate clic su Done (Fatto) per uscire.
-'''Select Hue Lights to add ({{numFound}} found)'''=Selezionate le Hue Light (lampadine Hue) da aggiungere ({{numFound}} trovate)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Hue Light (lampadine Hue) aggiunte in precedenza ({{existingLightsSize}} aggiunte)
-'''Light Discovery Started!'''=Rilevamento lampadine avviato.
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Attendete mentre è in corso il rilevamento delle Hue Light (lampadine Hue). La procedura di rilevamento può richiede almeno cinque minuti, quindi sedetevi e rilassatevi! Selezionate il dispositivo in uso tra quelli riportati di seguito dopo il rilevamento.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/ko-KR.properties b/smartapps/smartthings/hue-connect.src/i18n/ko-KR.properties
deleted file mode 100644
index 2f40e11..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/ko-KR.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Philips Hue 조명을 SmartThings와 연결하여 SmartThings 모바일 앱의 개별 기기 정보 영역이나 대시보드에서 조명을 조절할 수 있도록 지원합니다. SmartThings 앱을 빠져나와 Philips Hue 앱을 이용하여 먼저 Hue 브릿지를 업데이트하세요.
-'''Discovery Started!'''=찾기 시작!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Hue 브릿지 검색이 완료될 때까지 잠시 기다리세요. Philips Hue 앱을 이용하여 Hue 브릿지와 조명을 먼저 설정해야 합니다. 검색에는 5분 이상 걸릴 수 있으므로 편히 쉬면서 기다리세요! 검색이 완료되면 아래에서 기기를 선택하세요.
-'''Select Hue Bridge ({{numFound}} found)'''=Hue 브릿지 선택 ({{numFound}}개 찾음)
-'''Bridge Discovery Failed!'''=브릿지 찾기 실패!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Hue 브릿지를 찾지 못했습니다. Hue 브릿지가 SmartThings 허브와 같은 네트워크에 연결되어 있고 전원이 켜져 있는지 확인하세요.
-'''Linking with your Hue'''=Hue와 연결 중
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=현재 Hue 사용자 이름이 바르지 않습니다. Hue 브릿지의 버튼을 눌러 다시 연결하세요.
-'''Press the button on your Hue Bridge to setup a link.'''=Hue 브릿지의 버튼을 눌러 다시 연결하세요.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=선택된 Hue 브릿지가 없습니다. [완료]를 누르고 Hue 브릿지를 선택한 후 [다음]을 클릭하세요.
-'''Success!'''=성공!
-'''Linking to your hub was a success! Please click 'Next'!'''=허브와 성공적으로 연결했습니다! [다음]을 클릭하세요.
-'''Find bridges'''=브릿지 검색
-'''Light Discovery Failed!'''=조명 찾기 실패!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=조명을 찾지 못했습니다. 나중에 다시 시도하세요. 종료하려면 [완료]를 클릭하세요.
-'''Select Hue Lights to add ({{numFound}} found)'''=추가할 Hue 조명 선택 ({{numFound}}개 찾음)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=이전에 추가한 Hue 조명 ({{existingLightsSize}} 추가됨)
-'''Light Discovery Started!'''=조명 찾기 시작!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Hue 조명 검색이 완료될 때까지 잠시 기다리세요. 검색에는 5분 이상 걸릴 수 있으므로 편히 쉬면서 기다리세요! 검색이 완료되면 아래에서 기기를 선택하세요.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/nl-BE.properties b/smartapps/smartthings/hue-connect.src/i18n/nl-BE.properties
deleted file mode 100644
index cbf8841..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/nl-BE.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Hiermee kunt u uw Philips Hue lights (lampen) verbinden met SmartThings en ze bedienen via uw Things-gebied of het Dashboard in de SmartThings Mobiele app. Werk eerst met de Philips Hue-app uw Hue Bridge (brug) bij buiten de SmartThings-app.
-'''Discovery Started!'''=Detectie gestart!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Even geduld terwijl wij uw Hue Bridge (brug) detecteren. Houd er rekening mee dat u eerst uw Hue Bridge en Lights (lampen) moet configureren met de applicatie Philips Hue. Het detecteren kan wel vijf minuten of langer duren, dus even geduld! Selecteer uw apparaat hieronder na het detecteren.
-'''Select Hue Bridge ({{numFound}} found)'''=Selecteer Hue Bridge (brug) ({{numFound}} gevonden)
-'''Bridge Discovery Failed!'''=Detectie brug mislukt!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Kan geen Hue Bridges (bruggen) detecteren. Bevestig dat de Hue Bridge (brug) is verbonden met hetzelfde netwerk als uw SmartThings-hub en wordt voorzien van voeding.
-'''Linking with your Hue'''=Koppelen met uw Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=De huidige Hue-gebruikersnaam is ongeldig. Druk op de knop op uw Hue Bridge (brug) om opnieuw te koppelen.
-'''Press the button on your Hue Bridge to setup a link.'''=Druk op de knop op uw Hue Bridge (brug) om een koppeling in te stellen.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=U hebt geen Hue Bridge (brug) geselecteerd. Druk op “Done” (Gereed) en selecteer één brug voordat u op Next (Volgende) klikt.
-'''Success!'''=Succes!
-'''Linking to your hub was a success! Please click 'Next'!'''=De koppeling met uw hub is geslaagd! Klik op Next (Volgende)!
-'''Find bridges'''=Bruggen zoeken
-'''Light Discovery Failed!'''=Lampdetectie mislukt
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Kan geen lampen detecteren, probeer het later opnieuw. Klik op Done (Gereed) om af te sluiten.
-'''Select Hue Lights to add ({{numFound}} found)'''=Selecteer Hue Lights (lampen) om toe te voegen ({{numFound}} gevonden)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Eerder toegevoegde Hue Lights (lampen) ({{existingLightsSize}} toegevoegd)
-'''Light Discovery Started!'''=Lampdetectie gestart.
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Even geduld terwijl wij uw Hue Lights (lampen) detecteren. Het detecteren kan wel vijf minuten of langer duren, dus even geduld! Selecteer uw apparaat hieronder na het detecteren.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/nl-NL.properties b/smartapps/smartthings/hue-connect.src/i18n/nl-NL.properties
deleted file mode 100644
index cbf8841..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/nl-NL.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Hiermee kunt u uw Philips Hue lights (lampen) verbinden met SmartThings en ze bedienen via uw Things-gebied of het Dashboard in de SmartThings Mobiele app. Werk eerst met de Philips Hue-app uw Hue Bridge (brug) bij buiten de SmartThings-app.
-'''Discovery Started!'''=Detectie gestart!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Even geduld terwijl wij uw Hue Bridge (brug) detecteren. Houd er rekening mee dat u eerst uw Hue Bridge en Lights (lampen) moet configureren met de applicatie Philips Hue. Het detecteren kan wel vijf minuten of langer duren, dus even geduld! Selecteer uw apparaat hieronder na het detecteren.
-'''Select Hue Bridge ({{numFound}} found)'''=Selecteer Hue Bridge (brug) ({{numFound}} gevonden)
-'''Bridge Discovery Failed!'''=Detectie brug mislukt!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Kan geen Hue Bridges (bruggen) detecteren. Bevestig dat de Hue Bridge (brug) is verbonden met hetzelfde netwerk als uw SmartThings-hub en wordt voorzien van voeding.
-'''Linking with your Hue'''=Koppelen met uw Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=De huidige Hue-gebruikersnaam is ongeldig. Druk op de knop op uw Hue Bridge (brug) om opnieuw te koppelen.
-'''Press the button on your Hue Bridge to setup a link.'''=Druk op de knop op uw Hue Bridge (brug) om een koppeling in te stellen.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=U hebt geen Hue Bridge (brug) geselecteerd. Druk op “Done” (Gereed) en selecteer één brug voordat u op Next (Volgende) klikt.
-'''Success!'''=Succes!
-'''Linking to your hub was a success! Please click 'Next'!'''=De koppeling met uw hub is geslaagd! Klik op Next (Volgende)!
-'''Find bridges'''=Bruggen zoeken
-'''Light Discovery Failed!'''=Lampdetectie mislukt
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Kan geen lampen detecteren, probeer het later opnieuw. Klik op Done (Gereed) om af te sluiten.
-'''Select Hue Lights to add ({{numFound}} found)'''=Selecteer Hue Lights (lampen) om toe te voegen ({{numFound}} gevonden)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Eerder toegevoegde Hue Lights (lampen) ({{existingLightsSize}} toegevoegd)
-'''Light Discovery Started!'''=Lampdetectie gestart.
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Even geduld terwijl wij uw Hue Lights (lampen) detecteren. Het detecteren kan wel vijf minuten of langer duren, dus even geduld! Selecteer uw apparaat hieronder na het detecteren.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/no-NO.properties b/smartapps/smartthings/hue-connect.src/i18n/no-NO.properties
deleted file mode 100644
index ee833dc..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/no-NO.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Lar deg koble Philips Hue Lights (lys) med SmartThings og kontrollere dem fra Things (Ting)-området eller dashbordet i SmartThings-mobilappen. Oppdater Hue Bridge (bro) først, utenfor SmartThings-appen, ved å bruke Philips Hue-appen.
-'''Discovery Started!'''=Oppdagelse startet!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Vent litt mens vi oppdager Hue Bridge (bro). Vær oppmerksom på at du må først sette opp Hue Bridge (bro) og Lights (lysene) ved å bruke Philips Hue-appen. Det kan ta fem minutter eller mer å oppdage den, så len deg tilbake og slapp av! Velg enheten nedenfor når den er oppdaget.
-'''Select Hue Bridge ({{numFound}} found)'''=Velg Hue Bridge (bro) ({{numFound}} funnet)
-'''Bridge Discovery Failed!'''=Oppdagelse av Bridge (bro) mislyktes!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Kunne ikke oppdage noen Hue Bridge (bro). Bekreft at Hue Bridge (bro) er koblet til det samme nettverket som SmartThings-huben, og at den har strøm.
-'''Linking with your Hue'''=Kobler sammen med Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Det gjeldende Hue-brukernavnet er ugyldig. Trykk på knappen på Hue Bridge (bro) for å koble til igjen.
-'''Press the button on your Hue Bridge to setup a link.'''=Trykk på knappen på Hue Bridge (bro) for å sette opp en kobling.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Du har ikke valgt en Hue Bridge (bro), trykk på “Done” (Utført), og velg en før du klikker på Next (Neste).
-'''Success!'''=Suksess!
-'''Linking to your hub was a success! Please click 'Next'!'''=Tilkobling til huben var vellykket! Klikk på 'Next' (Neste)!
-'''Find bridges'''=Finn broer
-'''Light Discovery Failed!'''=Lysoppdagelse mislyktes!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Kunne ikke oppdage noen lys, prøv igjen senere. Klikk på Done (Utført) for å avslutte.
-'''Select Hue Lights to add ({{numFound}} found)'''=Velg Hue Ligths (lys) du vil legge til ({{numFound}} funnet)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Hue Lights (lys) tidligere lagt til ({{existingLightsSize}} lagt til)
-'''Light Discovery Started!'''=Lysoppdagelse startet!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Vent litt mens vi oppdager Hue Lights (lys). Det kan ta fem minutter eller mer å oppdage den, så len deg tilbake og slapp av! Velg enheten nedenfor når den er oppdaget.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/pl-PL.properties b/smartapps/smartthings/hue-connect.src/i18n/pl-PL.properties
deleted file mode 100644
index eb51180..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/pl-PL.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Umożliwia łączenie Philips Hue Lights (lamp Philips Hue) z rozwiązaniem SmartThings oraz sterowanie nimi w obszarze Things (Rzeczy) lub na pulpicie nawigacyjnym w aplikacji mobilnej SmartThings. Najpierw zaktualizuj Hue Bridge (mostek Hue) poza aplikacją SmartThings, korzystając z aplikacji Philips Hue.
-'''Discovery Started!'''=Rozpoczęto wykrywanie.
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Poczekaj na wykrycie Hue Bridge (mostka Hue). Pamiętaj, że najpierw musisz skonfigurować Hue Bridge (mostek Hue) i Hue Lights (lampy Hue) za pomocą aplikacji Philips Hue. Wykrywanie może potrwać co najmniej pięć minut, więc usiądź i zrelaksuj się. Po wykryciu Twojego urządzenia wybierz je poniżej.
-'''Select Hue Bridge ({{numFound}} found)'''=Wybierz Hue Bridge (mostek Hue) (znaleziono {{numFound}})
-'''Bridge Discovery Failed!'''=Wykrywanie mostka nie powiodło się!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Wykrywanie Hue Bridges (mostków Hue) nie powiodło się. Potwierdź, że Hue Bridge (mostek Hue) został podłączony do tej samej sieci, co koncentrator SmartThings Hub, oraz że jego zasilanie działa.
-'''Linking with your Hue'''=Łączenie z urządzeniem Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Bieżąca nazwa użytkownika urządzenia Hue jest nieprawidłowa. Naciśnij przycisk na Hue Bridge (mostku Hue), aby ponownie go podłączyć.
-'''Press the button on your Hue Bridge to setup a link.'''=Naciśnij przycisk na Hue Bridge (mostku Hue), aby skonfigurować połączenie.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Nie wybrano Hue Bridge (mostka Hue), naciśnij opcję „Done” (Gotowe) i wybierz go przed kliknięciem opcji Next (Dalej).
-'''Success!'''=Sukces!
-'''Linking to your hub was a success! Please click 'Next'!'''=Łączenie z koncentratorem zakończyło się pomyślnie. Kliknij opcję „Next” (Dalej).
-'''Find bridges'''=Wyszukaj mostki
-'''Light Discovery Failed!'''=Wykrywanie lampy nie powiodło się.
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Nie można wykryć lamp, spróbuj ponownie później. Kliknij opcję Done (Gotowe), aby zakończyć.
-'''Select Hue Lights to add ({{numFound}} found)'''=Wybierz Hue Lights (lampy Hue) do dodania (znaleziono {{numFound}})
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Poprzednio dodane Hue Lights (lampy Hue) (dodano {{existingLightsSize}})
-'''Light Discovery Started!'''=Rozpoczęto wykrywanie lamp.
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Poczekaj na wykrycie Hue Lights (lamp Hue). Wykrywanie może potrwać co najmniej pięć minut, więc usiądź i zrelaksuj się. Po wykryciu Twojego urządzenia wybierz je poniżej.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/pt-BR.properties b/smartapps/smartthings/hue-connect.src/i18n/pt-BR.properties
deleted file mode 100644
index 81d8f13..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/pt-BR.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Permite conectar as luzes da Philips Hue com o SmartThings e controlá-las a partir da área "Things" (Coisas) ou do "Dashboard" (Painel) do aplicativo SmartThings Mobile. Primeiro atualize a ponte da Hue fora do aplicativo SmartThings, usando o aplicativo Philips Hue.
-'''Discovery Started!'''=Detecção iniciada!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Aguarde enquanto detectamos a ponte da Hue. Note que você deve primeiro configurar a ponte da Hue e as luzes usando o aplicativo Philips Hue. A detecção pode levar cinco minutos ou mais, portanto, sente-se e relaxe! Selecione abaixo o seu aparelho após a detecção.
-'''Select Hue Bridge ({{numFound}} found)'''=Selecionar ponte da Hue ({{numFound}} encontrado(s))
-'''Bridge Discovery Failed!'''=Falha ao detectar a ponte!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Falha ao detectar pontes da Hue. Verifique se a ponte da Hue está conectada à mesma rede do seu SmartThings Hub e ligada na tomada.
-'''Linking with your Hue'''=Vinculando com a Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=O nome de usuário da Hue atual é inválido. Pressione o botão na ponte da Hue para vincular novamente.
-'''Press the button on your Hue Bridge to setup a link.'''=Pressione o botão na ponte da Hue para configurar a vinculação.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Você não selecionou uma ponte da Hue. Pressione 'Done' (Concluir) e selecione a ponte antes de clicar em Next (Avançar).
-'''Success!'''=Sucesso!
-'''Linking to your hub was a success! Please click 'Next'!'''=A vinculação com o hub foi concluída com êxito. Clique em "Next" (Avançar).
-'''Find bridges'''=Encontrar pontes
-'''Light Discovery Failed!'''=Falha ao detectar luz!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Falha ao detectar as luzes. Tente novamente mais tarde. Clique em \"Done\" (Concluir) para sair.
-'''Select Hue Lights to add ({{numFound}} found)'''=Selecione as luzes da Hue a serem adicionadas ({{numFound}} encontrada(s))
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Luzes da Hue adicionadas anteriormente ({{existingLightsSize}} adicionada(s))
-'''Light Discovery Started!'''=Detecção de luz iniciada!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Aguarde enquanto detectamos as luzes da Hue. A detecção pode levar cinco minutos ou mais, portanto, sente-se e relaxe! Selecione abaixo o seu aparelho após a detecção.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/pt-PT.properties b/smartapps/smartthings/hue-connect.src/i18n/pt-PT.properties
deleted file mode 100644
index 6298f90..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/pt-PT.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Permite-lhe ligar as luzes Philips Hue com o SmartThings e controlá-las a partir da sua área Things (Coisas) ou do Dashboard (Painel) na aplicação SmartThings Mobile. Actualize primeiro o seu Hue Bridge, fora da aplicação SmartThings, utilizando a aplicação Philips Hue.
-'''Discovery Started!'''=Detecção Iniciada!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Aguarde enquanto detectamos o seu Hue Bridge. Note que tem de configurar primeiro os seus Hue Bridge e Hue Lights (Luzes Hue) utilizando a aplicação Philips Hue. A detecção pode demorar cinco minutos ou mais, por isso, sente-se e relaxe! Seleccione o seu dispositivo abaixo depois de ter sido detectado.
-'''Select Hue Bridge ({{numFound}} found)'''=Seleccionar Hue Bridge ({{numFound}} encontrado)
-'''Bridge Discovery Failed!'''=Falha na Detecção de Bridge!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Falha ao detectar quaisquer Hue Bridges. Confirme se o Hue Bridge está ligado à mesma rede que o seu Hub SmartThings e que tem carga.
-'''Linking with your Hue'''=Ligar com o Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=O nome de utilizador do Hue actual é inválido. Prima o botão no seu Hue Bridge para ligar novamente.
-'''Press the button on your Hue Bridge to setup a link.'''=Prima o botão no Hue Bridge para configurar uma ligação.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Done' (Concluído) e seleccione um antes de clicar em Next (Seguinte).
-'''Success!'''=Sucesso!
-'''Linking to your hub was a success! Please click 'Next'!'''=A ligação ao seu Hub foi um sucesso! Clique em "Next" (Seguinte)!
-'''Find bridges'''=Localizar bridges
-'''Light Discovery Failed!'''=Falha na Detecção de Luzes!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Falha ao detectar quaisquer luzes, tente novamente mais tarde. Clique em \"Done\" (Concluído).
-'''Select Hue Lights to add ({{numFound}} found)'''=Seleccione Hue Lights (Luzez Hue) para adicionar ({{numFound}} encontrado)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Hue Lights (Luzes Hue) anteriormente adicionado ({{existingLightsSize}} adicionado)
-'''Light Discovery Started!'''=Detecção de Luzes Iniciada!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Aguarde enquanto detectamos o seu Hue Lights (Luzes Hue). A detecção pode demorar cinco minutos ou mais, por isso, sente-se e relaxe! Seleccione o seu dispositivo abaixo depois de ter sido detectado.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/ro-RO.properties b/smartapps/smartthings/hue-connect.src/i18n/ro-RO.properties
deleted file mode 100644
index 02faf38..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/ro-RO.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Vă permite să conectați Philips Hue lights (luminile Philips Hue) cu SmartThings și să le controlați din zona Things sau Dashboard aflate în aplicația SmartThings Mobile. Actualizați mai întâi Hue Bridge, în afara aplicației SmartThings, utilizând aplicația Philips Hue.
-'''Discovery Started!'''=Descoperire pornită!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Așteptați până când descoperim dispozitivul Hue Bridge. Rețineți că trebuie să configurați mai întâi Hue Bridge și Hue Lights (lumini Hue) utilizând aplicația Philips Hue. Descoperirea poate dura aproximativ cinci sau mai multe minute; relaxați-vă și așteptați! Selectați dispozitivul mai jos după ce este descoperit.
-'''Select Hue Bridge ({{numFound}} found)'''=Selectare Hue Bridge ({{numFound}} găsite)
-'''Bridge Discovery Failed!'''=Descoperirea Hue Bridge nu a reușit!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Nu s-a descoperit niciun dispozitiv Hue Bridge. Confirmați că dispozitivul Hue Bridge este conectat la aceeași rețea ca și SmartThings Hub și că este alimentat.
-'''Linking with your Hue'''=Asociere cu Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Numele de utilizator actual pentru Hue este nevalid. Apăsați butonul de pe Hue Bridge pentru a relua asocierea.
-'''Press the button on your Hue Bridge to setup a link.'''=Apăsați butonul Hue Bridge pentru a configura o asociere.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Nu ați a selectat un dispozitive Hue Bridge; apăsați „Done” (Efectuat) și selectați unul, apoi faceți clic pe Next (Înainte).
-'''Success!'''=Succes!
-'''Linking to your hub was a success! Please click 'Next'!'''=Asocierea cu hubul dvs. a reușit! Faceți clic pe „Next” (Înainte)!
-'''Find bridges'''=Găsire dispozitive bridge
-'''Light Discovery Failed!'''=Descoperirea luminii nu a reușit!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Nu au fost găsită nicio lumină, încercați din nou mai târziu. Faceți clic pe Done (Efectuat) pentru a ieși.
-'''Select Hue Lights to add ({{numFound}} found)'''=Selectați Hue Lights (lumini Hue) de adăugat ({{numFound}} găsite)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Hue Lights (lumini Hue) adăugate anterior ({{existingLightsSize}} adăugate)
-'''Light Discovery Started!'''=Descoperire lumini pornită!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Așteptați până când descoperim Hue Lights (luminile Hue). Descoperirea poate dura aproximativ cinci sau mai multe minute; relaxați-vă și așteptați! Selectați dispozitivul mai jos după ce este descoperit.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/ru-RU.properties b/smartapps/smartthings/hue-connect.src/i18n/ru-RU.properties
deleted file mode 100644
index 2a9880f..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/ru-RU.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Позволяет подключить лампы Philips Hue к концентратору SmartThings и управлять ими из области “Вещи” или с информационной панели в мобильном приложении SmartThings.\n\nПрежде чем перейти к настройке, обновите мост Hue при помощи приложения Philips Hue, вне приложения SmartThings.
-'''Discovery Started!'''=Поиск начат!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Идет поиск моста Hue. Обратите внимание, что сначала необходимо настроить мост и лампы Hue с помощью приложения Philips Hue. Пожалуйста, подождите. Поиск может занять больше 5 минут. В это время можно отдохнуть и расслабиться! Когда необходимое устройство будет обнаружено, выберите его из списка ниже.
-'''Select Hue Bridge ({{numFound}} found)'''=Выберите мост Hue (найдено: {{numFound}})
-'''Bridge Discovery Failed!'''=Не удалось обнаружить мост Hue!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Не обнаружено ни одного моста Hue. Убедитесь, что мост Hue подключен к одной сети с концентратором SmartThings, а его питание — включено.
-'''Linking with your Hue'''=Установка связи с Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Текущее имя пользователя Hue недопустимо. Нажмите кнопку на мосту Hue, чтобы установить связь повторно.
-'''Press the button on your Hue Bridge to setup a link.'''=Нажмите кнопку на мосту Hue, чтобы установить связь.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Мост Hue не выбран. Прежде чем перейти к следующему шагу, нажмите “Готово” и выберите мост.
-'''Success!'''=Успешно завершено!
-'''Linking to your hub was a success! Please click 'Next'!'''=Связь с концентратором установлена! Нажмите “Далее”!
-'''Find bridges'''=Поиск мостов
-'''Light Discovery Failed!'''=Не удалось обнаружить лампу!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Не обнаружено ни одной лампы. Повторите попытку позже. Нажмите “Готово” для выхода.
-'''Select Hue Lights to add ({{numFound}} found)'''=Выберите лампы Hue для добавления (найдено: {{numFound}})
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Уже добавленные лампы Hue (добавлено: {{existingLightsSize}})
-'''Light Discovery Started!'''=Поиск ламп начат!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Идет поиск ламп Hue. Пожалуйста, подождите. Поиск может занять больше 5 минут. В это время можно отдохнуть и расслабиться! Когда необходимое устройство будет обнаружено, выберите его из списка ниже.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/sk-SK.properties b/smartapps/smartthings/hue-connect.src/i18n/sk-SK.properties
deleted file mode 100644
index 83d7776..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/sk-SK.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Umožňuje pripojiť svetlá Philips Hue pomocou centrály SmartThings a ovládať ich z oblasti Things (Veci) alebo z tabule v mobilnej aplikácii SmartThings. Najskôr aktualizujte sieťový most Hue mimo aplikácie SmartThings pomocou aplikácie Philips Hue.
-'''Discovery Started!'''=Spustilo sa vyhľadávanie.
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Počkajte, kým sa nenájde sieťový most Hue. Najskôr musíte nakonfigurovať svetlá a sieťový most Hue pomocou aplikácie Philips Hue. Vyhľadávanie môže trvať aj päť minút alebo dlhšie, preto sa pokojne posaďte a počkajte. Po nájdení zariadenia ho nižšie vyberte.
-'''Select Hue Bridge ({{numFound}} found)'''=Vyberte sieťový most Hue (nájdené: {{numFound}})
-'''Bridge Discovery Failed!'''=Vyhľadanie sieťového mostu zlyhalo.
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Nepodarilo sa nájsť žiadne sieťové mosty Hue. Skontrolujte, či je sieťový most Hue pripojený k rovnakej sieti ako sieťový most SmartThings a či je zapnutý.
-'''Linking with your Hue'''=Prepojenie so zariadením Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Aktuálne meno používateľa zariadenia Hue je neplatné. Stlačením tlačidla na sieťovom moste Hue obnovte prepojenie.
-'''Press the button on your Hue Bridge to setup a link.'''=Stlačením tlačidla na sieťovom moste Hue nastavte prepojenie.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Nevybrali ste žiadny sieťový most Hue. Stlačte tlačidlo „Done“ (Hotovo) a pred kliknutím na tlačidlo Next (Ďalej) nejaký vyberte.
-'''Success!'''=Hotovo.
-'''Linking to your hub was a success! Please click 'Next'!'''=Úspešne sa nadviazalo prepojenie s centrálou. Kliknite na tlačidlo Next (Ďalej).
-'''Find bridges'''=Hľadať sieťové mosty
-'''Light Discovery Failed!'''=Nepodarilo sa nájsť svetlo.
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Nepodarilo sa nájsť žiadne svetlá, skúste to znova neskôr. Kliknutím na tlačidlo Done (Hotovo) to ukončíte.
-'''Select Hue Lights to add ({{numFound}} found)'''=Vyberte svetlá Hue, ktoré chcete pridať (nájdené: {{numFound}})
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Predtým pridané svetlá Hue (pridané: {{existingLightsSize}})
-'''Light Discovery Started!'''=Spustilo sa vyhľadávanie svetiel.
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Počkajte, kým sa nenájdu svetlá Hue. Vyhľadávanie môže trvať aj päť minút alebo dlhšie, preto sa pokojne posaďte a počkajte. Po nájdení zariadenia ho nižšie vyberte.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/sl-SI.properties b/smartapps/smartthings/hue-connect.src/i18n/sl-SI.properties
deleted file mode 100644
index 05f1a48..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/sl-SI.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Omogoča povezavo Philips Hue lights (luči) s storitvijo SmartThings in njihovo upravljanje v razdelku Things (Stvari) ali na nadzorni plošči v mobilni aplikaciji SmartThings. Zunaj aplikacije SmartThings z aplikacijo Philips Hue najprej posodobite Hue Bridge (most).
-'''Discovery Started!'''=Iskanje se je začelo!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Počakajte, da poiščemo vaš Hue Bridge (most). Najprej morate z aplikacijo Philips Hue konfigurirati Hue Bridge (most) in Lights (luči). Iskanje lahko traja pet ali več minut, zato se udobno namestite in sprostite! Ko bo najdena, spodaj izberite svojo napravo.
-'''Select Hue Bridge ({{numFound}} found)'''=Izberite Hue Bridge (most) (število najdenih: {{numFound}})
-'''Bridge Discovery Failed!'''=Iskanje mostu ni bilo uspešno!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Nobenega Hue Bridge (most) ni bilo mogoče najti. Preverite, ali je Hue Bridge (most) povezan z istim omrežjem kot zvezdišče SmartThings in priključen na napajanje.
-'''Linking with your Hue'''=Povezovanje z izdelkom Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Trenutno uporabniško ime Hue ni veljavno. Za vnovično povezavo pritisnite gumb na Hue Bridge (most).
-'''Press the button on your Hue Bridge to setup a link.'''=Za nastavitev povezave pritisnite gumb na Hue Bridge (most).
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Hue Bridge (most) niste izbrali. Pritisnite »Done« (Končano) in izberite most, preden kliknete Next (Naprej).
-'''Success!'''=Uspeh!
-'''Linking to your hub was a success! Please click 'Next'!'''=Povezava z zvezdiščem je bila uspešna! Kliknite »Next« (Naprej)!
-'''Find bridges'''=Poišči mostove
-'''Light Discovery Failed!'''=Iskanje luči ni bilo uspešno!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Nobene luči ni bilo mogoče najti, poskusite znova pozneje. Kliknite »Done« (Končano) za izhod.
-'''Select Hue Lights to add ({{numFound}} found)'''=Izberite Hue Lights (luči), da jih dodate (število najdenih: {{numFound}})
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Predhodno dodane Hue Lights (luči) (dodano: {{existingLightsSize}})
-'''Light Discovery Started!'''=Iskanje luči se je začelo!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Počakajte, da poiščemo vaše Hue Lights (luči). Iskanje lahko traja pet ali več minut, zato se udobno namestite in sprostite! Ko bo najdena, spodaj izberite svojo napravo.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/sq-AL.properties b/smartapps/smartthings/hue-connect.src/i18n/sq-AL.properties
deleted file mode 100644
index 499dde3..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/sq-AL.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Të lejon të lidhësh (dritat) Philips Hue lights me SmartThings dhe t’i kontrollosh që nga zona jote Things ose Paneli i drejtimit në App-in celular SmartThings. Përditëso (urën) Hue Bridge më parë, jashtë app-it SmartThings, me anë të app-it Philips Hue.
-'''Discovery Started!'''=Zbulimi filloi!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Prit pak sa të zbulojmë (urën) Hue Bridge. Mbaj parasysh se më parë duhet të konfigurosh (urën) Hue Bridge dhe Lights (dritat) me anë të aplikacionit Philips Hue. Zbulimi mund të kërkojë pesë minuta ose më shumë, prandaj bëj pak durim! Pasi të mbarojë zbulimi, përzgjidhe pajisjen tënde më poshtë.
-'''Select Hue Bridge ({{numFound}} found)'''=Përzgjidh (urën) Hue Bridge ({{numFound}} u gjetën)
-'''Bridge Discovery Failed!'''=Zbulimi i Bridge (urës) dështoi!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Dështova të zbuloj ndonjë (urë) Hue Bridge. Konfirmo që (ura) Hue Bridge është e lidhur me të njëjtin rrjet si Qendra SmartThings, dhe se ka energji.
-'''Linking with your Hue'''=Për t’u lidhur me Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Emri i përdoruesit i tanishëm për Hue është i pavlefshëm. Shtyp butonin në (urën) Hue Bridge për t’u rilidhur.
-'''Press the button on your Hue Bridge to setup a link.'''=Shtyp butonin në (urën) Hue Bridge për të konfiguruar lidhjen.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Nuk ke përzgjedhur ndonjë (urë) Hue Bridge, shtyp 'Done' (U krye) dhe përzgjidh një, para se të klikosh mbi Next (Tjetri).
-'''Success!'''=Sukses!
-'''Linking to your hub was a success! Please click 'Next'!'''=Lidhja me qendrën doli me sukses! Kliko mbi ‘Next’ (Tjetri)!
-'''Find bridges'''=Gjej ura
-'''Light Discovery Failed!'''=Zbulimi i dritës dështoi!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Dështova të zbuloj drita, provo sërish më vonë. Kliko mbi Done (U krye) për të dalë.
-'''Select Hue Lights to add ({{numFound}} found)'''=Përzgjidh (dritat) Hue Lights për të shtuar ({{numFound}} u gjetën)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=(Dritat) Hue Lights të shtuara më parë ({{existingLightsSize}} u shtuan)
-'''Light Discovery Started!'''=Zbulimi i dritave filloi!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Prit pak sa të zbulojmë (dritat) Hue Lights. Zbulimi mund të kërkojë pesë minuta ose më shumë, prandaj bëj pak durim! Pasi të mbarojë zbulimi, përzgjidhe pajisjen tënde më poshtë.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/sr-RS.properties b/smartapps/smartthings/hue-connect.src/i18n/sr-RS.properties
deleted file mode 100644
index 033dbb0..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/sr-RS.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Omogućava vam da povežete Philips Hue svetla i SmartThings i da ih kontrolišete iz oblasti Things area (Oblast za stvari) ili sa Dashboard (Komandna tabla) u aplikaciji SmartThings Mobile. Prvo ažurirajte Hue Bridge, izvan aplikacije SmartThings, koristeći aplikaciju Philips Hue.
-'''Discovery Started!'''=Otkrivanje je pokrenuto!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Sačekajte da otkrijemo uređaj Hue Bridge. Imajte na umu da prvo morate da konfigurišete Hue Bridge (Hue most) i Hue Lights (Hue svetla) koristeći aplikaciju Philips Hue. Otkrivanje može da traje pet minuta ili duže i zato sedite i opustite se! Izaberite uređaj u nastavku kada bude otkriven.
-'''Select Hue Bridge ({{numFound}} found)'''=Izaberite Hue Bridge ({{numFound}} pronađeno)
-'''Bridge Discovery Failed!'''=Otkrivanje uređaja Bridge nije uspelo!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Nije otkriven nijedan Hue Bridge uređaj. Potvrdite da je uređaj Hue Bridge povezan na istu mrežu kao i SmartThings Hub i da je uključen.
-'''Linking with your Hue'''=Povezivanje sa uređajem Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Trenutno korisničko ime za Hue je nevažeće. Pritisnite dugme na uređaju Hue Bridge da biste se ponovo povezali.
-'''Press the button on your Hue Bridge to setup a link.'''=Pritisnite dugme na uređaju Hue Bridge da biste konfigurisali link.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Niste izabrali uređaj Hue Bridge, pritisnite „Done“ (Gotovo) i izaberite jedan pre nego što kliknete na sledeće.
-'''Success!'''=Uspeh!
-'''Linking to your hub was a success! Please click 'Next'!'''=Povezivanje na čvorište je bilo uspešno! Kliknite na „Next“ (Sledeće)!
-'''Find bridges'''=Pronađi mostove
-'''Light Discovery Failed!'''=Otkrivanje svetla nije uspelo!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Nije otkriveno nijedno svetlo, pokušajte ponovo kasnije. Kliknite na Done (Gotovo) radi izlaska.
-'''Select Hue Lights to add ({{numFound}} found)'''=Izaberite svetla Hue Lights radi dodavanja (pronađeno: {{numFound}})
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Prethodno dodata svetla Hue Lights (dodato: {{existingLightsSize}})
-'''Light Discovery Started!'''=Otkrivanje svetla je pokrenuto!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Sačekajte da otkrijemo svetla Hue Lights. Otkrivanje može da traje pet minuta ili duže i zato sedite i opustite se! Izaberite uređaj u nastavku kada bude otkriven.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/sv-SE.properties b/smartapps/smartthings/hue-connect.src/i18n/sv-SE.properties
deleted file mode 100644
index e98192b..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/sv-SE.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Gör att du kan ansluta dina Philips Hue-lampor till SmartThings och styra dem från området Things (Saker) eller Dashboard (Instrumentpanelen) i programmet SmartThings Mobile. Uppdatera Hue-bryggan först, utanför programmet SmartThings, med programmet Philips Hue.
-'''Discovery Started!'''=Identifieringen har startat!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Vänta medan vi identifierar din Hue-brygga. Observera att du först måste konfigurera Hue-bryggan och lamporna med programmet Philips Hue. Identifieringen kan ta fem minuter eller mer, så ta det bara lugnt! Välj enheten nedan när den har identifierats.
-'''Select Hue Bridge ({{numFound}} found)'''=Välj Hue-brygga ({{numFound}} hittades)
-'''Bridge Discovery Failed!'''=Bryggidentifieringen misslyckades!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Det gick inte att identifiera några Hue-bryggor. Bekräfta att Hue-bryggan är ansluten till samma nätverk som SmartThings-hubben och att den är på.
-'''Linking with your Hue'''=Länka till din Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Det nuvarande Hue-användarnamnet är ogiltigt. Tryck på knappen på Hue-bryggan för att göra om länkningen.
-'''Press the button on your Hue Bridge to setup a link.'''=Tryck på knappen på Hue-bryggan för att konfigurera en länk.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Du har inte valt någon Hue-brygga. Tryck på ”Done” (Klart) och välj en innan du klickar på Next (Nästa).
-'''Success!'''=Det lyckades!
-'''Linking to your hub was a success! Please click 'Next'!'''=Det gick att länka till hubben! Klicka på Next (Nästa).
-'''Find bridges'''=Hitta bryggor
-'''Light Discovery Failed!'''=Lampidentifieringen misslyckades!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Det gick inte att identifiera några lampor. Försök igen senare. Avsluta genom att klicka på Done (Klart).
-'''Select Hue Lights to add ({{numFound}} found)'''=Välj Hue-lampor att lägga till ({{numFound}} hittades)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Tidigare tillagda Hue-lampor ({{existingLightsSize}} tillagda)
-'''Light Discovery Started!'''=Lampidentifieringen har startat!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Vänta medan vi identifierar dina Hue-lampor. Identifieringen kan ta fem minuter eller mer, så ta det bara lugnt! Välj enheten nedan när den har identifierats.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/th-TH.properties b/smartapps/smartthings/hue-connect.src/i18n/th-TH.properties
deleted file mode 100644
index 281e714..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/th-TH.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=ช่วยให้คุณเชื่อมต่อไฟ Philips Hue ของคุณกับ SmartThings และทำการควบคุมไฟได้จากพื้นที่ Things หรือแดชบอร์ดของคุณในแอพมือถือ SmartThings โปรดอัพเดท Hue Bridge ของคุณก่อน ที่ด้านนอกแอพ SmartThings โดยใช้แอพ Philips Hue
-'''Discovery Started!'''=การค้นหาเริ่มต้นแล้ว
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=โปรดรอขณะเราค้นหา Hue Bridge ของคุณ ให้ทราบว่าคุณจะต้องกำหนดค่า Hue Bridge และไฟโดยใช้แอพพลิเคชั่น Phillips Hue ซึ่งขั้นตอนการค้นหาอาจใช้เวลาห้านาทีหรือมากกว่านั้น คุณสามารถนั่งรอได้โดยไม่ต้องกังวลใจ เลือกอุปกรณ์ของคุณที่ด้านล่างเมื่อถูกค้นพบ
-'''Select Hue Bridge ({{numFound}} found)'''=เลือก Hue Bridge (พบ {{numFound}})
-'''Bridge Discovery Failed!'''=การค้นหา Bridge ล้มเหลว!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=ไม่พบ Hue Bridge ใดๆ โปรดยืนยันว่า Hue Bridge เชื่อมต่ออยู่กับเครือข่ายเดียวกันกับ SmartThings Hub ของคุณ และมีไฟเข้าอยู่
-'''Linking with your Hue'''=การเชื่อมโยงกับ Hue ของคุณ
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to relink.'''=ชื่อผู้ใช้ Hue ในปัจจุบันไม่ถูกต้อง โปรดกดปุ่มบน Hue Bridge ของคุณ เพื่อทำการเชื่อมโยงใหม่
-'''Press the button on your Hue Bridge to setup a link.'''=กดปุ่มบน Hue Bridge ของคุณเพื่อตั้งค่าลิงก์
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=คุณยังไม่ได้เลือก Hue Bridge โปรดกด 'เรียบร้อย' และเลือกหนึ่งรายการก่อนคลิก ถัดไป
-'''Success!'''=เสร็จสิ้น
-'''Linking to your hub was a success! Please click 'Next'!'''=เชื่อมโยงกับ Hub ของคุณสำเร็จแล้ว โปรดคลิก 'ถัดไป'
-'''Find bridges'''=พบ Bridge
-'''Light Discovery Failed!'''=การค้นหาไฟล้มเหลว
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=ไม่พบไฟใดๆ โปรดลองอีกครั้งในภายหลัง คลิก เรียบร้อย เพื่อออก
-'''Select Hue Lights to add ({{numFound}} found)'''=เลือกไฟ Hue เพื่อเพิ่ม (พบ {{numFound}})
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=ไฟ Hue ที่เพิ่มก่อนหน้านี้ ({{existingLightsSize}} ถูกเพิ่ม)
-'''Light Discovery Started!'''=การค้นหาไฟเริ่มต้นแล้ว
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=โปรดรอขณะเราค้นหาไฟ Hue ของคุณ ขั้นตอนการค้นหาอาจใช้เวลาห้านาทีหรือมากกว่านั้น คุณสามารถนั่งรอได้โดยไม่ต้องกังวลใจ เลือกอุปกรณ์ของคุณที่ด้านล่างเมื่อถูกค้นพบ
diff --git a/smartapps/smartthings/hue-connect.src/i18n/tr-TR.properties b/smartapps/smartthings/hue-connect.src/i18n/tr-TR.properties
deleted file mode 100644
index eba2abb..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/tr-TR.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=Philips Hue ışıklarınızı SmartThings'e bağlamanıza ve Things alanınız veya SmartThings uygulamasındaki Kontrol Paneli'nden kontrol etmenize olanak tanır. Lütfen önce SmartThings uygulamasının dışında Philips Hue uygulamasını kullanarak Hue Bridge'inizi güncelleyin.
-'''Discovery Started!'''=Keşif Başladı!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Hue Bridge'iniz keşfedilirken lütfen bekleyin. Hue Bridge ve Işıkları Philips Hue uygulamasını kullanarak yapılandırabileceğinizi lütfen unutmayın. Keşif beş dakika veya daha uzun sürebilir, biraz arkanıza yaslanıp rahatlayın! Keşfedildikten sonra aşağıda cihazınızı seçin.
-'''Select Hue Bridge ({{numFound}} found)'''=Hue Bridge'i seçin ({{numFound}} bulundu)
-'''Bridge Discovery Failed!'''=Bridge Keşfi Başarısız Oldu!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=Hiçbir Hue Bridge keşfedilemedi. Lütfen Hue Bridge'in SmartThings Hub'ınızla aynı ağa bağlı olduğunu ve gücünün olduğunu doğrulayın.
-'''Linking with your Hue'''=Hue'nuzu bağlama
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to relink.'''=Mevcut Hue kullanıcı ismi geçersiz. Yeniden bağlamak için lütfen Hue Bridge'inizin üzerindeki tuşa basın.
-'''Press the button on your Hue Bridge to setup a link.'''=Bağlantı kurmak için Hue Bridge'inizin üzerindeki tuşa basın.
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Hue Bridge seçmediniz. İleri öğesine tıklamadan önce lütfen 'Bitti' öğesine basıp bir tane seçin.
-'''Success!'''=Başarılı!
-'''Linking to your hub was a success! Please click 'Next'!'''=Hub'ınız başarıyla bağlandı! Lütfen "İleri" öğesine tıklayın!
-'''Find bridges'''=Bridge'leri bul
-'''Light Discovery Failed!'''=Işık Keşfi Başarısız Oldu!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=Hiçbir ışık keşfedilemedi. Lütfen daha sonra tekrar deneyin. Çıkmak için Bitti öğesine tıklayın.
-'''Select Hue Lights to add ({{numFound}} found)'''=Eklemek için Hue Işıklarını seçin ({{numFound}} bulundu)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=Önceden eklenen Hue Işıkları ({{existingLightsSize}} eklendi)
-'''Light Discovery Started!'''=Işık Keşfi Başladı!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=Hue Işıklarınız keşfedilirken lütfen bekleyin. Keşif beş dakika veya daha uzun sürebilir, biraz arkanıza yaslanıp rahatlayın! Keşfedildikten sonra aşağıda cihazınızı seçin.
diff --git a/smartapps/smartthings/hue-connect.src/i18n/zh-CN.properties b/smartapps/smartthings/hue-connect.src/i18n/zh-CN.properties
deleted file mode 100644
index 92e7352..0000000
--- a/smartapps/smartthings/hue-connect.src/i18n/zh-CN.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-'''Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Please update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.'''=可将 Philips Hue 灯连接到 SmartThings,并从 SmartThings 移动应用程序中的“设备”区域或仪表板控制它们。请首先使用 (SmartThings 应用程序以外的) Philips Hue 应用程序更新您的 Hue 桥接器。
-'''Discovery Started!'''=已开始查找!
-'''Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=我们正在查找您的 Hue 桥接器,请稍候。请注意,首先您必须使用 Philips Hue 应用程序配置 Hue 桥接器。查找过程可能需要五分钟或更长时间,请耐心等待!找到之后,请在下方选择您的设备。
-'''Select Hue Bridge ({{numFound}} found)'''=选择 Hue 桥接器 (找到 {{numFound}} 个)
-'''Bridge Discovery Failed!'''=桥接器查找失败!
-'''Failed to discover any Hue Bridges. Please confirm that the Hue Bridge is connected to the same network as your SmartThings Hub, and that it has power.'''=未能找到任何 Hue 桥接器。请确认 Hue 桥接器连接到与 SmartThings Hub 相同的网络,并且该桥接器已接通电源。
-'''Linking with your Hue'''=正在连接您的 Hue
-'''The current Hue username is invalid. Please press the button on your Hue Bridge to re-link.'''=Hue 当前用户名无效。请按 Hue 桥接器上的按钮重新链接。
-'''Press the button on your Hue Bridge to setup a link.'''=按 Hue 桥接器上的按钮以设置链接。
-'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=您尚未选择 Hue 桥接器,请按“完成”,选择一个桥接器,然后单击“下一步”。
-'''Success!'''=成功!
-'''Linking to your hub was a success! Please click 'Next'!'''=成功链接到您的 Hub!请单击“下一步”!
-'''Find bridges'''=查找桥接器
-'''Light Discovery Failed!'''=灯查找失败!
-'''Failed to discover any lights, please try again later. Click 'Done' to exit.'''=未能找到任何灯,请稍候重试。单击“完成”以退出。
-'''Select Hue Lights to add ({{numFound}} found)'''=选择 Hue 灯进行添加 (找到 {{numFound}} 个)
-'''Previously added Hue Lights ({{existingLightsSize}} added)'''=以前添加的 Hue 灯 (已添加 {{existingLightsSize}} 个)
-'''Light Discovery Started!'''=已开始查找灯!
-'''Please wait while we discover your Hue Lights. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.'''=我们正在查找您的 Hue 灯,请稍候。查找过程可能需要五分钟或更长时间,请耐心等待!找到之后,请在下方选择您的设备。
diff --git a/smartapps/smartthings/wemo-connect.src/wemo-connect.groovy b/smartapps/smartthings/wemo-connect.src/wemo-connect.groovy
deleted file mode 100644
index c0e72ca..0000000
--- a/smartapps/smartthings/wemo-connect.src/wemo-connect.groovy
+++ /dev/null
@@ -1,687 +0,0 @@
-//DEPRECATED. INTEGRATION MOVED TO SUPER LAN CONNECT
-
-/**
- * Copyright 2015 SmartThings
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
- * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
- * for the specific language governing permissions and limitations under the License.
- *
- * Wemo Service Manager
- *
- * Author: superuser
- * Date: 2013-09-06
- */
-definition(
- name: "Wemo (Connect)",
- namespace: "smartthings",
- author: "SmartThings",
- description: "Allows you to integrate your WeMo Switch and Wemo Motion sensor with SmartThings.",
- category: "SmartThings Labs",
- iconUrl: "https://s3.amazonaws.com/smartapp-icons/Partner/wemo.png",
- iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Partner/wemo@2x.png",
- singleInstance: true
-)
-
-preferences {
- page(name:"firstPage", title:"Wemo Device Setup", content:"firstPage")
-}
-
-private discoverAllWemoTypes()
-{
- sendHubCommand(new physicalgraph.device.HubAction("lan discovery urn:Belkin:device:insight:1/urn:Belkin:device:controllee:1/urn:Belkin:device:sensor:1/urn:Belkin:device:lightswitch:1", physicalgraph.device.Protocol.LAN))
-}
-
-private getFriendlyName(String deviceNetworkId) {
- sendHubCommand(new physicalgraph.device.HubAction("""GET /setup.xml HTTP/1.1
-HOST: ${deviceNetworkId}
-
-""", physicalgraph.device.Protocol.LAN, "${deviceNetworkId}", [callback: "setupHandler"]))
-}
-
-private verifyDevices() {
- def switches = getWemoSwitches().findAll { it?.value?.verified != true }
- def motions = getWemoMotions().findAll { it?.value?.verified != true }
- def lightSwitches = getWemoLightSwitches().findAll { it?.value?.verified != true }
- def devices = switches + motions + lightSwitches
- devices.each {
- getFriendlyName((it.value.ip + ":" + it.value.port))
- }
-}
-
-void ssdpSubscribe() {
- subscribe(location, "ssdpTerm.urn:Belkin:device:insight:1", ssdpSwitchHandler)
- subscribe(location, "ssdpTerm.urn:Belkin:device:controllee:1", ssdpSwitchHandler)
- subscribe(location, "ssdpTerm.urn:Belkin:device:sensor:1", ssdpMotionHandler)
- subscribe(location, "ssdpTerm.urn:Belkin:device:lightswitch:1", ssdpLightSwitchHandler)
-}
-
-def firstPage()
-{
- if(canInstallLabs())
- {
- int refreshCount = !state.refreshCount ? 0 : state.refreshCount as int
- state.refreshCount = refreshCount + 1
- def refreshInterval = 5
-
- log.debug "REFRESH COUNT :: ${refreshCount}"
-
- ssdpSubscribe()
-
- //ssdp request every 25 seconds
- if((refreshCount % 5) == 0) {
- discoverAllWemoTypes()
- }
-
- //setup.xml request every 5 seconds except on discoveries
- if(((refreshCount % 1) == 0) && ((refreshCount % 5) != 0)) {
- verifyDevices()
- }
-
- def switchesDiscovered = switchesDiscovered()
- def motionsDiscovered = motionsDiscovered()
- def lightSwitchesDiscovered = lightSwitchesDiscovered()
-
- return dynamicPage(name:"firstPage", title:"Discovery Started!", nextPage:"", refreshInterval: refreshInterval, install:true, uninstall: true) {
- section { paragraph title: "Note:", "This device has not been officially tested and certified to “Work with SmartThings”. You can connect it to your SmartThings home but performance may vary and we will not be able to provide support or assistance." }
- section("Select a device...") {
- input "selectedSwitches", "enum", required:false, title:"Select Wemo Switches \n(${switchesDiscovered.size() ?: 0} found)", multiple:true, options:switchesDiscovered
- input "selectedMotions", "enum", required:false, title:"Select Wemo Motions \n(${motionsDiscovered.size() ?: 0} found)", multiple:true, options:motionsDiscovered
- input "selectedLightSwitches", "enum", required:false, title:"Select Wemo Light Switches \n(${lightSwitchesDiscovered.size() ?: 0} found)", multiple:true, options:lightSwitchesDiscovered
- }
- }
- }
- else
- {
- def upgradeNeeded = """To use SmartThings Labs, your Hub should be completely up to date.
-
-To update your Hub, access Location Settings in the Main Menu (tap the gear next to your location name), select your Hub, and choose "Update Hub"."""
-
- return dynamicPage(name:"firstPage", title:"Upgrade needed!", nextPage:"", install:false, uninstall: true) {
- section("Upgrade") {
- paragraph "$upgradeNeeded"
- }
- }
- }
-}
-
-def devicesDiscovered() {
- def switches = getWemoSwitches()
- def motions = getWemoMotions()
- def lightSwitches = getWemoLightSwitches()
- def devices = switches + motions + lightSwitches
- devices?.collect{ [app.id, it.ssdpUSN].join('.') }
-}
-
-def switchesDiscovered() {
- def switches = getWemoSwitches().findAll { it?.value?.verified == true }
- def map = [:]
- switches.each {
- def value = it.value.name ?: "WeMo Switch ${it.value.ssdpUSN.split(':')[1][-3..-1]}"
- def key = it.value.mac
- map["${key}"] = value
- }
- map
-}
-
-def motionsDiscovered() {
- def motions = getWemoMotions().findAll { it?.value?.verified == true }
- def map = [:]
- motions.each {
- def value = it.value.name ?: "WeMo Motion ${it.value.ssdpUSN.split(':')[1][-3..-1]}"
- def key = it.value.mac
- map["${key}"] = value
- }
- map
-}
-
-def lightSwitchesDiscovered() {
- //def vmotions = switches.findAll { it?.verified == true }
- //log.trace "MOTIONS HERE: ${vmotions}"
- def lightSwitches = getWemoLightSwitches().findAll { it?.value?.verified == true }
- def map = [:]
- lightSwitches.each {
- def value = it.value.name ?: "WeMo Light Switch ${it.value.ssdpUSN.split(':')[1][-3..-1]}"
- def key = it.value.mac
- map["${key}"] = value
- }
- map
-}
-
-def getWemoSwitches()
-{
- if (!state.switches) { state.switches = [:] }
- state.switches
-}
-
-def getWemoMotions()
-{
- if (!state.motions) { state.motions = [:] }
- state.motions
-}
-
-def getWemoLightSwitches()
-{
- if (!state.lightSwitches) { state.lightSwitches = [:] }
- state.lightSwitches
-}
-
-def installed() {
- log.debug "Installed with settings: ${settings}"
- initialize()
-}
-
-def updated() {
- log.debug "Updated with settings: ${settings}"
- initialize()
-}
-
-def initialize() {
- unsubscribe()
- unschedule()
-
- ssdpSubscribe()
-
- if (selectedSwitches)
- addSwitches()
-
- if (selectedMotions)
- addMotions()
-
- if (selectedLightSwitches)
- addLightSwitches()
-
- runIn(5, "subscribeToDevices") //initial subscriptions delayed by 5 seconds
- runIn(10, "refreshDevices") //refresh devices, delayed by 10 seconds
- runEvery5Minutes("refresh")
-}
-
-def resubscribe() {
- log.debug "Resubscribe called, delegating to refresh()"
- refresh()
-}
-
-def refresh() {
- log.debug "refresh() called"
- doDeviceSync()
- refreshDevices()
-}
-
-def refreshDevices() {
- log.debug "refreshDevices() called"
- def devices = getAllChildDevices()
- devices.each { d ->
- log.debug "Calling refresh() on device: ${d.id}"
- d.refresh()
- }
-}
-
-def subscribeToDevices() {
- log.debug "subscribeToDevices() called"
- def devices = getAllChildDevices()
- devices.each { d ->
- d.subscribe()
- }
-}
-
-def addSwitches() {
- def switches = getWemoSwitches()
-
- selectedSwitches.each { dni ->
- def selectedSwitch = switches.find { it.value.mac == dni } ?: switches.find { "${it.value.ip}:${it.value.port}" == dni }
- def d
- if (selectedSwitch) {
- d = getChildDevices()?.find {
- it.deviceNetworkId == selectedSwitch.value.mac || it.device.getDataValue("mac") == selectedSwitch.value.mac
- }
- if (!d) {
- log.debug "Creating WeMo Switch with dni: ${selectedSwitch.value.mac}"
- d = addChildDevice("smartthings", "Wemo Switch", selectedSwitch.value.mac, selectedSwitch?.value.hub, [
- "label": selectedSwitch?.value?.name ?: "Wemo Switch",
- "data": [
- "mac": selectedSwitch.value.mac,
- "ip": selectedSwitch.value.ip,
- "port": selectedSwitch.value.port
- ]
- ])
- def ipvalue = convertHexToIP(selectedSwitch.value.ip)
- d.sendEvent(name: "currentIP", value: ipvalue, descriptionText: "IP is ${ipvalue}")
- log.debug "Created ${d.displayName} with id: ${d.id}, dni: ${d.deviceNetworkId}"
- } else {
- log.debug "found ${d.displayName} with id $dni already exists"
- }
- }
- }
-}
-
-def addMotions() {
- def motions = getWemoMotions()
-
- selectedMotions.each { dni ->
- def selectedMotion = motions.find { it.value.mac == dni } ?: motions.find { "${it.value.ip}:${it.value.port}" == dni }
- def d
- if (selectedMotion) {
- d = getChildDevices()?.find {
- it.deviceNetworkId == selectedMotion.value.mac || it.device.getDataValue("mac") == selectedMotion.value.mac
- }
- if (!d) {
- log.debug "Creating WeMo Motion with dni: ${selectedMotion.value.mac}"
- d = addChildDevice("smartthings", "Wemo Motion", selectedMotion.value.mac, selectedMotion?.value.hub, [
- "label": selectedMotion?.value?.name ?: "Wemo Motion",
- "data": [
- "mac": selectedMotion.value.mac,
- "ip": selectedMotion.value.ip,
- "port": selectedMotion.value.port
- ]
- ])
- def ipvalue = convertHexToIP(selectedMotion.value.ip)
- d.sendEvent(name: "currentIP", value: ipvalue, descriptionText: "IP is ${ipvalue}")
- log.debug "Created ${d.displayName} with id: ${d.id}, dni: ${d.deviceNetworkId}"
- } else {
- log.debug "found ${d.displayName} with id $dni already exists"
- }
- }
- }
-}
-
-def addLightSwitches() {
- def lightSwitches = getWemoLightSwitches()
-
- selectedLightSwitches.each { dni ->
- def selectedLightSwitch = lightSwitches.find { it.value.mac == dni } ?: lightSwitches.find { "${it.value.ip}:${it.value.port}" == dni }
- def d
- if (selectedLightSwitch) {
- d = getChildDevices()?.find {
- it.deviceNetworkId == selectedLightSwitch.value.mac || it.device.getDataValue("mac") == selectedLightSwitch.value.mac
- }
- if (!d) {
- log.debug "Creating WeMo Light Switch with dni: ${selectedLightSwitch.value.mac}"
- d = addChildDevice("smartthings", "Wemo Light Switch", selectedLightSwitch.value.mac, selectedLightSwitch?.value.hub, [
- "label": selectedLightSwitch?.value?.name ?: "Wemo Light Switch",
- "data": [
- "mac": selectedLightSwitch.value.mac,
- "ip": selectedLightSwitch.value.ip,
- "port": selectedLightSwitch.value.port
- ]
- ])
- def ipvalue = convertHexToIP(selectedLightSwitch.value.ip)
- d.sendEvent(name: "currentIP", value: ipvalue, descriptionText: "IP is ${ipvalue}")
- log.debug "created ${d.displayName} with id $dni"
- } else {
- log.debug "found ${d.displayName} with id $dni already exists"
- }
- }
- }
-}
-
-def ssdpSwitchHandler(evt) {
- def description = evt.description
- def hub = evt?.hubId
- def parsedEvent = parseDiscoveryMessage(description)
- parsedEvent << ["hub":hub]
- log.debug parsedEvent
-
- def switches = getWemoSwitches()
- if (!(switches."${parsedEvent.ssdpUSN.toString()}")) {
- //if it doesn't already exist
- switches << ["${parsedEvent.ssdpUSN.toString()}":parsedEvent]
- } else {
- log.debug "Device was already found in state..."
- def d = switches."${parsedEvent.ssdpUSN.toString()}"
- boolean deviceChangedValues = false
- log.debug "$d.ip <==> $parsedEvent.ip"
- if(d.ip != parsedEvent.ip || d.port != parsedEvent.port) {
- d.ip = parsedEvent.ip
- d.port = parsedEvent.port
- deviceChangedValues = true
- log.debug "Device's port or ip changed..."
- def child = getChildDevice(parsedEvent.mac)
- if (child) {
- child.subscribe(parsedEvent.ip, parsedEvent.port)
- child.poll()
- } else {
- log.debug "Device with mac $parsedEvent.mac not found"
- }
- }
- }
-}
-
-def ssdpMotionHandler(evt) {
- log.info("ssdpMotionHandler")
- def description = evt.description
- def hub = evt?.hubId
- def parsedEvent = parseDiscoveryMessage(description)
- parsedEvent << ["hub":hub]
- log.debug parsedEvent
-
- def motions = getWemoMotions()
- if (!(motions."${parsedEvent.ssdpUSN.toString()}")) {
- //if it doesn't already exist
- motions << ["${parsedEvent.ssdpUSN.toString()}":parsedEvent]
- } else { // just update the values
- log.debug "Device was already found in state..."
-
- def d = motions."${parsedEvent.ssdpUSN.toString()}"
- boolean deviceChangedValues = false
-
- if(d.ip != parsedEvent.ip || d.port != parsedEvent.port) {
- d.ip = parsedEvent.ip
- d.port = parsedEvent.port
- deviceChangedValues = true
- log.debug "Device's port or ip changed..."
- }
-
- if (deviceChangedValues) {
- def children = getChildDevices()
- log.debug "Found children ${children}"
- children.each {
- if (it.getDeviceDataByName("mac") == parsedEvent.mac) {
- log.debug "updating ip and port, and resubscribing, for device ${it} with mac ${parsedEvent.mac}"
- it.subscribe(parsedEvent.ip, parsedEvent.port)
- }
- }
- }
- }
-}
-
-def ssdpLightSwitchHandler(evt) {
- log.info("ssdpLightSwitchHandler")
- def description = evt.description
- def hub = evt?.hubId
- def parsedEvent = parseDiscoveryMessage(description)
- parsedEvent << ["hub":hub]
- log.debug parsedEvent
-
- def lightSwitches = getWemoLightSwitches()
-
- if (!(lightSwitches."${parsedEvent.ssdpUSN.toString()}")) {
- //if it doesn't already exist
- lightSwitches << ["${parsedEvent.ssdpUSN.toString()}":parsedEvent]
- } else {
- log.debug "Device was already found in state..."
-
- def d = lightSwitches."${parsedEvent.ssdpUSN.toString()}"
- boolean deviceChangedValues = false
-
- if(d.ip != parsedEvent.ip || d.port != parsedEvent.port) {
- d.ip = parsedEvent.ip
- d.port = parsedEvent.port
- deviceChangedValues = true
- log.debug "Device's port or ip changed..."
- def child = getChildDevice(parsedEvent.mac)
- if (child) {
- log.debug "updating ip and port, and resubscribing, for device with mac ${parsedEvent.mac}"
- child.subscribe(parsedEvent.ip, parsedEvent.port)
- } else {
- log.debug "Device with mac $parsedEvent.mac not found"
- }
- }
- }
-}
-
-void setupHandler(hubResponse) {
- String contentType = hubResponse?.headers['Content-Type']
- if (contentType != null && contentType == 'text/xml') {
- def body = hubResponse.xml
- def wemoDevices = []
- String deviceType = body?.device?.deviceType?.text() ?: ""
- if (deviceType.startsWith("urn:Belkin:device:controllee:1") || deviceType.startsWith("urn:Belkin:device:insight:1")) {
- wemoDevices = getWemoSwitches()
- } else if (deviceType.startsWith("urn:Belkin:device:sensor")) {
- wemoDevices = getWemoMotions()
- } else if (deviceType.startsWith("urn:Belkin:device:lightswitch")) {
- wemoDevices = getWemoLightSwitches()
- }
-
- def wemoDevice = wemoDevices.find {it?.key?.contains(body?.device?.UDN?.text())}
- if (wemoDevice) {
- wemoDevice.value << [name:body?.device?.friendlyName?.text(), verified: true]
- } else {
- log.error "/setup.xml returned a wemo device that didn't exist"
- }
- }
-}
-
-@Deprecated
-def locationHandler(evt) {
- def description = evt.description
- def hub = evt?.hubId
- def parsedEvent = parseDiscoveryMessage(description)
- parsedEvent << ["hub":hub]
- log.debug parsedEvent
-
- if (parsedEvent?.ssdpTerm?.contains("Belkin:device:controllee") || parsedEvent?.ssdpTerm?.contains("Belkin:device:insight")) {
- def switches = getWemoSwitches()
- if (!(switches."${parsedEvent.ssdpUSN.toString()}")) {
- //if it doesn't already exist
- switches << ["${parsedEvent.ssdpUSN.toString()}":parsedEvent]
- } else {
- log.debug "Device was already found in state..."
- def d = switches."${parsedEvent.ssdpUSN.toString()}"
- boolean deviceChangedValues = false
- log.debug "$d.ip <==> $parsedEvent.ip"
- if(d.ip != parsedEvent.ip || d.port != parsedEvent.port) {
- d.ip = parsedEvent.ip
- d.port = parsedEvent.port
- deviceChangedValues = true
- log.debug "Device's port or ip changed..."
- def child = getChildDevice(parsedEvent.mac)
- if (child) {
- child.subscribe(parsedEvent.ip, parsedEvent.port)
- child.poll()
- } else {
- log.debug "Device with mac $parsedEvent.mac not found"
- }
- }
- }
- }
- else if (parsedEvent?.ssdpTerm?.contains("Belkin:device:sensor")) {
- def motions = getWemoMotions()
- if (!(motions."${parsedEvent.ssdpUSN.toString()}")) {
- //if it doesn't already exist
- motions << ["${parsedEvent.ssdpUSN.toString()}":parsedEvent]
- } else { // just update the values
- log.debug "Device was already found in state..."
-
- def d = motions."${parsedEvent.ssdpUSN.toString()}"
- boolean deviceChangedValues = false
-
- if(d.ip != parsedEvent.ip || d.port != parsedEvent.port) {
- d.ip = parsedEvent.ip
- d.port = parsedEvent.port
- deviceChangedValues = true
- log.debug "Device's port or ip changed..."
- }
-
- if (deviceChangedValues) {
- def children = getChildDevices()
- log.debug "Found children ${children}"
- children.each {
- if (it.getDeviceDataByName("mac") == parsedEvent.mac) {
- log.debug "updating ip and port, and resubscribing, for device ${it} with mac ${parsedEvent.mac}"
- it.subscribe(parsedEvent.ip, parsedEvent.port)
- }
- }
- }
- }
-
- }
- else if (parsedEvent?.ssdpTerm?.contains("Belkin:device:lightswitch")) {
-
- def lightSwitches = getWemoLightSwitches()
-
- if (!(lightSwitches."${parsedEvent.ssdpUSN.toString()}"))
- { //if it doesn't already exist
- lightSwitches << ["${parsedEvent.ssdpUSN.toString()}":parsedEvent]
- } else {
- log.debug "Device was already found in state..."
-
- def d = lightSwitches."${parsedEvent.ssdpUSN.toString()}"
- boolean deviceChangedValues = false
-
- if(d.ip != parsedEvent.ip || d.port != parsedEvent.port) {
- d.ip = parsedEvent.ip
- d.port = parsedEvent.port
- deviceChangedValues = true
- log.debug "Device's port or ip changed..."
- def child = getChildDevice(parsedEvent.mac)
- if (child) {
- log.debug "updating ip and port, and resubscribing, for device with mac ${parsedEvent.mac}"
- child.subscribe(parsedEvent.ip, parsedEvent.port)
- } else {
- log.debug "Device with mac $parsedEvent.mac not found"
- }
- }
- }
- }
- else if (parsedEvent.headers && parsedEvent.body) {
- String headerString = new String(parsedEvent.headers.decodeBase64())?.toLowerCase()
- if (headerString != null && (headerString.contains('text/xml') || headerString.contains('application/xml'))) {
- def body = parseXmlBody(parsedEvent.body)
- if (body?.device?.deviceType?.text().startsWith("urn:Belkin:device:controllee:1"))
- {
- def switches = getWemoSwitches()
- def wemoSwitch = switches.find {it?.key?.contains(body?.device?.UDN?.text())}
- if (wemoSwitch)
- {
- wemoSwitch.value << [name:body?.device?.friendlyName?.text(), verified: true]
- }
- else
- {
- log.error "/setup.xml returned a wemo device that didn't exist"
- }
- }
-
- if (body?.device?.deviceType?.text().startsWith("urn:Belkin:device:insight:1"))
- {
- def switches = getWemoSwitches()
- def wemoSwitch = switches.find {it?.key?.contains(body?.device?.UDN?.text())}
- if (wemoSwitch)
- {
- wemoSwitch.value << [name:body?.device?.friendlyName?.text(), verified: true]
- }
- else
- {
- log.error "/setup.xml returned a wemo device that didn't exist"
- }
- }
-
- if (body?.device?.deviceType?.text().startsWith("urn:Belkin:device:sensor")) //?:1
- {
- def motions = getWemoMotions()
- def wemoMotion = motions.find {it?.key?.contains(body?.device?.UDN?.text())}
- if (wemoMotion)
- {
- wemoMotion.value << [name:body?.device?.friendlyName?.text(), verified: true]
- }
- else
- {
- log.error "/setup.xml returned a wemo device that didn't exist"
- }
- }
-
- if (body?.device?.deviceType?.text().startsWith("urn:Belkin:device:lightswitch")) //?:1
- {
- def lightSwitches = getWemoLightSwitches()
- def wemoLightSwitch = lightSwitches.find {it?.key?.contains(body?.device?.UDN?.text())}
- if (wemoLightSwitch)
- {
- wemoLightSwitch.value << [name:body?.device?.friendlyName?.text(), verified: true]
- }
- else
- {
- log.error "/setup.xml returned a wemo device that didn't exist"
- }
- }
- }
- }
-}
-
-@Deprecated
-private def parseXmlBody(def body) {
- def decodedBytes = body.decodeBase64()
- def bodyString
- try {
- bodyString = new String(decodedBytes)
- } catch (Exception e) {
- // Keep this log for debugging StringIndexOutOfBoundsException issue
- log.error("Exception decoding bytes in sonos connect: ${decodedBytes}")
- throw e
- }
- return new XmlSlurper().parseText(bodyString)
-}
-
-private def parseDiscoveryMessage(String description) {
- def event = [:]
- def parts = description.split(',')
- parts.each { part ->
- part = part.trim()
- if (part.startsWith('devicetype:')) {
- part -= "devicetype:"
- event.devicetype = part.trim()
- }
- else if (part.startsWith('mac:')) {
- part -= "mac:"
- event.mac = part.trim()
- }
- else if (part.startsWith('networkAddress:')) {
- part -= "networkAddress:"
- event.ip = part.trim()
- }
- else if (part.startsWith('deviceAddress:')) {
- part -= "deviceAddress:"
- event.port = part.trim()
- }
- else if (part.startsWith('ssdpPath:')) {
- part -= "ssdpPath:"
- event.ssdpPath = part.trim()
- }
- else if (part.startsWith('ssdpUSN:')) {
- part -= "ssdpUSN:"
- event.ssdpUSN = part.trim()
- }
- else if (part.startsWith('ssdpTerm:')) {
- part -= "ssdpTerm:"
- event.ssdpTerm = part.trim()
- }
- else if (part.startsWith('headers')) {
- part -= "headers:"
- event.headers = part.trim()
- }
- else if (part.startsWith('body')) {
- part -= "body:"
- event.body = part.trim()
- }
- }
- event
-}
-
-def doDeviceSync(){
- log.debug "Doing Device Sync!"
- discoverAllWemoTypes()
-}
-
-private String convertHexToIP(hex) {
- [convertHexToInt(hex[0..1]),convertHexToInt(hex[2..3]),convertHexToInt(hex[4..5]),convertHexToInt(hex[6..7])].join(".")
-}
-
-private Integer convertHexToInt(hex) {
- Integer.parseInt(hex,16)
-}
-
-private Boolean canInstallLabs() {
- return hasAllHubsOver("000.011.00603")
-}
-
-private Boolean hasAllHubsOver(String desiredFirmware) {
- return realHubFirmwareVersions.every { fw -> fw >= desiredFirmware }
-}
-
-private List getRealHubFirmwareVersions() {
- return location.hubs*.firmwareVersionString.findAll { it }
-}