Compare commits

...

82 Commits

Author SHA1 Message Date
Vinay Rao
9f944df598 Merge pull request #1842 from SmartThingsCommunity/staging
Rolling up staging to production
2017-03-28 13:48:28 -07:00
Donald C. Kirker
e3c1442278 MSA-1813 Spruce merge (#1841)
* Hand merge changes from 379e70b343 into https://github.com/SmartThingsCommunity/SmartThingsPublic/pull/1737

* Spruce Scheduler from https://github.com/SmartThingsCommunity/SmartThingsPublic/pull/1737
2017-03-28 11:31:04 -07:00
Vinay Rao
55e92b2ad6 Merge pull request #1838 from sabersd/ocfDevFix
ICP-381: fixing ocfDeviceType
2017-03-27 19:48:19 -07:00
sabersd
18343ae4b8 fixing ocfDeviceType 2017-03-27 21:46:25 -05:00
Vinay Rao
6c4da81cd4 Merge pull request #1837 from sabersd/ocfDeviceType
adding ocfDeviceType
2017-03-27 19:35:04 -07:00
sabersd
09e890091a adding ocfDeviceType 2017-03-27 21:29:33 -05:00
Vinay Rao
973d347d2f Merge pull request #1828 from dkirker/DVCSMP-2536
DVCSMP-2536 Update model and deviceJoinName values
2017-03-27 16:04:56 -07:00
Donald Kirker
a2afb4cb1b DVCSMP-2536 Update model and deviceJoinName values 2017-03-27 16:01:45 -07:00
bflorian
1f09a22176 Merge pull request #1825 from larsfinander/hue_i18_fixed_fr_filename_staging
Hue: Fixed fr-FR filename
2017-03-22 19:37:04 -07:00
Lars Finander
b1b356f370 Hue: Fixed fr-FR filename 2017-03-22 19:35:36 -07:00
Vinay Rao
c5455321d1 Merge pull request #1824 from larsfinander/hue_i18_no_name_change_staging
Hue: Renamed nb-NO to no-NO
2017-03-22 19:00:00 -07:00
Lars Finander
e6ca3d8ddf Hue: Renamed nb-NO to no-NO 2017-03-22 18:58:15 -07:00
Vinay Rao
9aaab9b11d Merge pull request #1822 from larsfinander/hue_change_i18_filenames_staging
DVCSMP-2453 HUE: add code to enable localization for Service Manager
2017-03-22 18:27:09 -07:00
Lars Finander
fdd330abdf DVCSMP-2453 HUE: add code to enable localization for Service Manager
-Changed file names
-ICP-462
2017-03-22 16:27:59 -07:00
Vinay Rao
df29effc00 Merge pull request #1821 from larsfinander/hue_ocf_i18_staging
Hue: Add localization for Hue (Connect)
2017-03-22 15:29:26 -07:00
Lars Finander
668f71a217 Hue: Add localization for Hue (Connect)
-Added i18 files
-Updates strings
2017-03-22 14:44:50 -07:00
Vinay Rao
6908733a5c Merge pull request #1809 from SmartThingsCommunity/master
Rolling up master to staging
2017-03-21 11:48:58 -07:00
Vinay Rao
e0d307f6b5 Merge pull request #1808 from SmartThingsCommunity/staging
Rolling down staging to master
2017-03-21 11:48:22 -07:00
Vinay Rao
a06dba0b90 Merge pull request #1807 from SmartThingsCommunity/staging
Rolling up staging to production for release
2017-03-21 11:37:47 -07:00
Vinay Rao
0ec8cba885 Merge pull request #1806 from SmartThingsCommunity/production
Rolling down production hotfix to staging
2017-03-21 11:37:04 -07:00
Jack Chi
bcfece27c4 Merge pull request #1789 from parijatdas/firstalert_smoke_alarm
[CHF-544] Health Check Zwave Smoke Alarm
2017-03-20 19:13:07 -07:00
Parijat Das
26f9690190 Added health-check for First Alert Smoke Detector and Carbon Monoxide Alarm (ZCOMBO) 2017-03-20 17:58:32 -07:00
Vinay Rao
eca8fda0f2 Merge pull request #1805 from larsfinander/revert_hue_i18_changes_staging
Hue: Revert i18 changes
2017-03-20 16:35:29 -07:00
Lars Finander
ce07c065c8 Hue: Revert i18 changes 2017-03-20 17:31:05 -06:00
Jack Chi
640f9413c3 Merge pull request #1767 from parijatdas/fortrezz_siren_strobe_alarm
[CHF-453] Health Check Zwave Siren
2017-03-20 16:05:18 -07:00
Jack Chi
1c52f80eae Merge pull request #1769 from parijatdas/fortrezz_water_valve
[CHF-539] Health Check FortrezZ Water Valve
2017-03-20 16:04:25 -07:00
Jack Chi
de4d52a28b Merge pull request #1790 from parijatdas/zwave_garage_door_opener
[CHF-540] Health Check Zwave-garage-door-opener
2017-03-20 16:01:39 -07:00
Jack Chi
6892965cf1 Merge pull request #1804 from parijatdas/aeon_gen5
[CHF-545] Health Check Aeon MultiSensor Gen5
2017-03-20 15:54:02 -07:00
Vinay Rao
17ec6270d6 Merge pull request #1803 from larsfinander/hue_translations_updated_staging
Hue: Updated errors in text not matching i18 files
2017-03-20 15:46:15 -07:00
Lars Finander
d233a65ef5 Hue: Updated errors in text not matching i18 files 2017-03-20 16:44:10 -06:00
Jack Chi
b36a985d92 Merge pull request #1785 from pchomal/zwave_lock_hc
[CHF-551] Health Check Z-Wave Lock
2017-03-20 15:05:24 -07:00
Parijat Das
8a3c9edf0a Added health-check for Aeon Multisensor Gen5 2017-03-20 14:54:14 -07:00
Vinay Rao
a560c5b040 Merge pull request #1795 from larsfinander/hue_connect_translations_staging
DVCSMP-2453 HUE: add code to enable localization for Service Manage
2017-03-20 11:42:26 -07:00
Vinay Rao
3ee374028f Merge pull request #1801 from dkirker/DVCSMP-2504
DVCSMP-2504: Add fingerprints for Centrailte generic multi, motion, water leak
2017-03-20 09:45:18 -07:00
Donald Kirker
7ac7bd3034 DVCSMP-2504: Add fingerprints for Centrailte generic multi, motion, water leak 2017-03-20 07:39:37 -07:00
Zach Varberg
f734c5490b Merge pull request #1793 from varzac/fix-open-close-temp-offset
[DVCSMP-2516] Properly handle tempOffset in smartsense sensors
2017-03-17 08:56:17 -05:00
Lars Finander
b93a05d450 DVCSMP-2453 HUE: add code to enable localization for Service Manage
-Updated strings in app
-Added i18 files
2017-03-16 19:09:23 -06:00
Vinay Rao
f5186a41c7 Merge pull request #1787 from jackchi/dth_ux_page17
[DVCSMP-2512] Standardize Page 17 of DTH UX Improvements
2017-03-16 11:20:15 -07:00
Vinay Rao
c505f95e7a Merge pull request #1788 from ShunmugaSundar/Page_18
[DVCSMP-2513] Standardize Page 18 of DTH UX Improvements
2017-03-16 11:20:07 -07:00
Vinay Rao
173c34150a Merge pull request #1779 from jackchi/dth_ux_page16
[DVCSMP-2511] Standardize Page 16 of DTH UX Improvements
2017-03-16 11:19:59 -07:00
Vinay Rao
f6b850500e Merge pull request #1780 from ShunmugaSundar/Page_14_Changes
[DVCSMP-2509] Standardize Page 14 of DTH UX Improvements
2017-03-16 11:19:52 -07:00
Jack Chi
4dac7b5379 Merge pull request #1786 from skt123/aeon_siren
[CHF-552] Implementation of Health Check for Aeon Siren.
2017-03-16 10:18:08 -07:00
Zach Varberg
a79d56e467 Properly handle tempOffset in smartsense sensors
This was accidentally dropped as a part of the zigbee DTH cleanup that
was done a while ago.  This properly adjusts according to the offset.

This resolves: https://smartthings.atlassian.net/browse/DVCSMP-2516
2017-03-16 09:30:52 -05:00
Vinay Rao
e2d8af48a8 Merge pull request #1792 from SmartThingsCommunity/revert-1784-revert-1783-hue_add_bridge_if_missing_production
Revert "Revert "Hue: Re-add Hue bridge if deleted""
2017-03-16 04:37:53 -07:00
Vinay Rao
0f00c3c7c0 Revert "Revert "Hue: Re-add Hue bridge if deleted"" 2017-03-16 04:37:35 -07:00
piyush.c
0a4d56be04 [CHF-551] Health Check Z-Wave Lock 2017-03-16 15:48:42 +05:30
sushant.k1
1326881142 Implemented of Health Check for Aeon Siren. 2017-03-16 15:24:53 +05:30
Parijat Das
d30494172f Added health-check for Linear GoControl Garage Door Opener 2017-03-15 16:52:53 -07:00
ShunmugaSundar
2678480244 [DVCSMP-2513] Standardize Page 18 of DTH UX Improvements 2017-03-15 23:58:43 +05:30
jackchi
b5e8a46143 [DVCSMP-2512] Standardize Page 17 of DTH UX Improvements 2017-03-15 09:57:37 -07:00
Vinay Rao
6237dbd179 Merge pull request #1784 from SmartThingsCommunity/revert-1783-hue_add_bridge_if_missing_production
Revert "Hue: Re-add Hue bridge if deleted"
2017-03-14 21:18:43 -07:00
Vinay Rao
65f5597ccc Revert "Hue: Re-add Hue bridge if deleted" 2017-03-14 21:00:22 -07:00
Vinay Rao
fced2d7c61 Merge pull request #1783 from larsfinander/hue_add_bridge_if_missing_production
Hue: Re-add Hue bridge if deleted
2017-03-14 18:42:40 -07:00
Lars Finander
74552420ba Hue: Re-add Hue bridge if deleted
-Add Hue Bridge if missing during deviceSync
2017-03-14 19:28:15 -06:00
Vinay Rao
be0c16c76d Merge pull request #1782 from SmartThingsCommunity/staging
Rolling down staging to master
2017-03-14 17:39:53 -07:00
Vinay Rao
89f1302c99 Merge pull request #1777 from jackchi/dth_ux_page15
Standardize Page 15 of DTH UX Improvements
2017-03-14 17:36:30 -07:00
Vinay Rao
16cb20685c Merge pull request #1781 from SmartThingsCommunity/staging
Rolling down staging to master
2017-03-14 17:33:04 -07:00
Vinay Rao
30d8e6d835 Merge branch 'master' into staging 2017-03-14 17:32:55 -07:00
ShunmugaSundar
6d0f9d101d [DVCSMP-2509] Standardize Page 14 of DTH UX Improvements
[DVCSMP-2509] Standardize Page 14 of DTH UX Improvements
2017-03-15 05:26:41 +05:30
jackchi
4ba55e7f0a [DVCSMP-2511] Standardize Page 16 of DTH UX Improvements 2017-03-14 15:29:37 -07:00
jackchi
8a41fb6090 [DVCSMP-2510] Standardize Page 15 of DTH UX Improvements 2017-03-14 14:47:56 -07:00
Vinay Rao
79c254cfac Merge pull request #1774 from SmartThingsCommunity/staging
Rolling up staging to production
2017-03-14 11:40:39 -07:00
Vinay Rao
72248b0004 Merge pull request #1773 from SmartThingsCommunity/production
Rolling down production to staging
2017-03-14 11:38:11 -07:00
Vinay Rao
d8b35b23ea Merge pull request #1770 from dkirker/DVCSMP-2472
DVCSMP-2472: Add Eaton Halo downlight
2017-03-14 02:28:47 -07:00
Donald Kirker
9a53e12427 DVCSMP-2472: Add Eaton Halo downlight 2017-03-14 02:20:58 -07:00
Parijat Das
7a7a08ea6e Added health-check for FortrezZ Siren Strobe Alarm 2017-03-13 18:05:22 -07:00
Parijat Das
950a33dc74 Added health-check for FortrezZ Water Valve 2017-03-13 16:35:46 -07:00
Tyler Lange
2ae163b10b Merge pull request #1764 from CosmicPuppy/ActionTiles-Fibaro-CapabilitySensorPatch
To Fibaro Flood Sensor DTHs, added Capability "Sensor" per http://doc…
2017-03-13 10:27:41 -07:00
CosmicPuppy
e3168793bd To Fibaro Flood Sensor DTHs, added Capability "Sensor" per http://docs.smartthings.com/en/latest/device-type-developers-guide/overview.html?highlight=sensor%20actuator#actuator-and-sensor.
There are some SmartApps out there using the "Actuator" and "Sensor" Capabilities and this Device doesn't show up for them (e.g., ActionTiles).
2017-03-11 00:47:36 -08:00
Tyler Lange
0baa986c61 Merge pull request #1762 from CosmicPuppy/ActionTiles-Nyce-CapabilitySensorPatch
To Nyce sensor DTHs, added Capability "Sensor" per http://docs.smartt…
2017-03-09 12:53:49 -08:00
CosmicPuppy
8484f18a0e To Nyce sensor DTHs, added Capability "Sensor" per http://docs.smartthings.com/en/latest/device-type-developers-guide/overview.html?highlight=sensor%20actuator#actuator-and-sensor.
There are some SmartApps out there using the "Actuator" and "Sensor" Capabilities and this Device doesn't show up for them (e.g., ActionTiles).
2017-03-09 00:05:14 -08:00
Vinay Rao
3c4d86bb31 Merge pull request #1761 from mckeed/ICP-399-prod
Update Fibaro Flood Sensor configuration ICP-399 ICP-398
2017-03-08 16:43:23 -08:00
Duncan McKee
1f69ab6634 Update Fibaro Flood Sensor configuration
ICP-399 ICP-398
2017-03-08 19:17:46 -05:00
Vinay Rao
b0ac006781 Merge pull request #1758 from mckeed/ICP-399-staging
Update Fibaro Flood Sensor configuration ICP-399 ICP-398
2017-03-07 17:53:27 -08:00
Duncan McKee
ef1ebc8347 Update Fibaro Flood Sensor configuration
ICP-399 ICP-398
2017-03-07 20:45:49 -05:00
Vinay Rao
aa1f2f21e8 Merge pull request #1756 from SmartThingsCommunity/master
Rolling up master to staging
2017-03-07 13:55:39 -08:00
Vinay Rao
cb6377886d Merge pull request #1755 from SmartThingsCommunity/staging
Rolling down staging to master
2017-03-07 13:54:54 -08:00
tslagle13
a544e2f019 Merge pull request #1712 from SmartThingsCommunity/MSA-1803-1
MSA-1803: Gideon Smart home smartapp
2017-03-06 12:07:11 -08:00
Vinay Rao
a777c298ca Merge pull request #1743 from dbradmit/shabbat-zipcode-fix
Update shabbat-and-holiday-modes.groovy
2017-03-03 04:04:00 -08:00
Vinay Rao
65ae2c0ddf Merge pull request #1736 from SmartThingsCommunity/staging
Rolling down staging to master
2017-03-01 11:02:45 -08:00
Nicola Russo
a583a25ef3 MSA-1803: A simple web service smartapp that allows the users to control their devices through Gideon Smart home app. 2017-02-23 15:31:44 -08:00
dbradmit
a15ca97988 Update shabbat-and-holiday-modes.groovy 2017-01-24 19:16:10 -07:00
111 changed files with 5317 additions and 1977 deletions

View File

@@ -22,28 +22,29 @@ metadata {
capability "Temperature Measurement"
capability "Water Sensor"
capability "Health Check"
fingerprint deviceId: "0x0701", inClusters: "0x5E, 0x22, 0x85, 0x59, 0x20, 0x80, 0x70, 0x56, 0x5A, 0x7A, 0x72, 0x8E, 0x71, 0x73, 0x98, 0x9C, 0x31, 0x86", outClusters: ""
fingerprint deviceId: "0x0701", inClusters: "0x5E, 0x22, 0x85, 0x59, 0x20, 0x80, 0x70, 0x56, 0x5A, 0x7A, 0x72, 0x8E, 0x71, 0x73, 0x98, 0x9C, 0x31, 0x86", outClusters: ""
fingerprint mfr:"010F", prod:"0B01", model:"2002"
fingerprint mfr:"010F", prod:"0B01", model:"1002"
}
simulator {
}
tiles(scale: 2) {
multiAttributeTile(name:"FGFS", type:"lighting", width:6, height:4) {//with generic type secondary control text is not displayed in Android app
tileAttribute("device.water", key:"PRIMARY_CONTROL") {
attributeState("dry", icon:"st.alarm.water.dry", backgroundColor:"#00a0dc")
attributeState("wet", icon:"st.alarm.water.wet", backgroundColor:"#e86d13")
}
tileAttribute("device.tamper", key:"SECONDARY_CONTROL") {
tiles(scale: 2) {
multiAttributeTile(name:"FGFS", type:"lighting", width:6, height:4) {//with generic type secondary control text is not displayed in Android app
tileAttribute("device.water", key:"PRIMARY_CONTROL") {
attributeState("dry", icon:"st.alarm.water.dry", backgroundColor:"#00a0dc")
attributeState("wet", icon:"st.alarm.water.wet", backgroundColor:"#e86d13")
}
tileAttribute("device.tamper", key:"SECONDARY_CONTROL") {
attributeState("active", label:'tamper active', backgroundColor:"#00a0dc")
attributeState("inactive", label:'tamper inactive', backgroundColor:"#cccccc")
}
}
valueTile("temperature", "device.temperature", inactiveLabel: false, width: 2, height: 2) {
}
}
valueTile("temperature", "device.temperature", inactiveLabel: false, width: 2, height: 2) {
state "temperature", label:'${currentValue}°',
backgroundColors:[
[value: 31, color: "#153591"],
@@ -55,22 +56,22 @@ metadata {
[value: 96, color: "#bc2323"]
]
}
valueTile("battery", "device.battery", inactiveLabel: false, decoration: "flat", width: 2, height: 2) {
state "battery", label:'${currentValue}% battery', unit:""
}
main "FGFS"
details(["FGFS","battery", "temperature"])
}
valueTile("battery", "device.battery", inactiveLabel: false, decoration: "flat", width: 2, height: 2) {
state "battery", label:'${currentValue}% battery', unit:""
}
main "FGFS"
details(["FGFS","battery", "temperature"])
}
}
// parse events into attributes
def parse(String description) {
log.debug "Parsing '${description}'"
def result = []
if (description.startsWith("Err 106")) {
if (description.startsWith("Err 106")) {
if (state.sec) {
result = createEvent(descriptionText:description, displayed:false)
} else {
@@ -85,13 +86,13 @@ def parse(String description) {
} else if (description == "updated") {
return null
} else {
def cmd = zwave.parse(description, [0x31: 5, 0x56: 1, 0x71: 3, 0x72:2, 0x80: 1, 0x84: 2, 0x85: 2, 0x86: 1, 0x98: 1])
def cmd = zwave.parse(description, [0x31: 5, 0x56: 1, 0x71: 3, 0x72:2, 0x80: 1, 0x84: 2, 0x85: 2, 0x86: 1, 0x98: 1])
if (cmd) {
log.debug "Parsed '${cmd}'"
zwaveEvent(cmd)
}
}
if (cmd) {
log.debug "Parsed '${cmd}'"
zwaveEvent(cmd)
}
}
}
//security
@@ -108,7 +109,7 @@ def zwaveEvent(physicalgraph.zwave.commands.securityv1.SecurityMessageEncapsulat
//crc16
def zwaveEvent(physicalgraph.zwave.commands.crc16encapv1.Crc16Encap cmd)
{
def versions = [0x31: 5, 0x72: 2, 0x80: 1]
def versions = [0x31: 5, 0x72: 2, 0x80: 1]
def version = versions[cmd.commandClass as Integer]
def ccObj = version ? zwave.commandClass(cmd.commandClass, version) : zwave.commandClass(cmd.commandClass)
def encapsulatedCommand = ccObj?.command(cmd.command)?.parse(cmd.data)
@@ -122,105 +123,124 @@ def zwaveEvent(physicalgraph.zwave.commands.crc16encapv1.Crc16Encap cmd)
def zwaveEvent(physicalgraph.zwave.commands.wakeupv2.WakeUpNotification cmd)
{
def event = createEvent(descriptionText: "${device.displayName} woke up", displayed: false)
def cmds = []
cmds << encap(zwave.batteryV1.batteryGet())
cmds << "delay 500"
cmds << encap(zwave.sensorMultilevelV5.sensorMultilevelGet(sensorType: 1, scale: 0))
cmds << "delay 1200"
cmds << encap(zwave.wakeUpV1.wakeUpNoMoreInformation())
[event, response(cmds)]
def cmds = []
// cmds << encap(zwave.sensorMultilevelV5.sensorMultilevelGet(sensorType: 1, scale: 0))
// cmds << "delay 500"
cmds << encap(zwave.batteryV1.batteryGet())
[event, response(cmds)]
}
def zwaveEvent(physicalgraph.zwave.commands.manufacturerspecificv2.ManufacturerSpecificReport cmd) {
log.debug "manufacturerId: ${cmd.manufacturerId}"
log.debug "manufacturerName: ${cmd.manufacturerName}"
log.debug "productId: ${cmd.productId}"
log.debug "productTypeId: ${cmd.productTypeId}"
log.debug "manufacturerName: ${cmd.manufacturerName}"
log.debug "productId: ${cmd.productId}"
log.debug "productTypeId: ${cmd.productTypeId}"
}
def zwaveEvent(physicalgraph.zwave.commands.manufacturerspecificv2.DeviceSpecificReport cmd) {
log.debug "deviceIdData: ${cmd.deviceIdData}"
log.debug "deviceIdDataFormat: ${cmd.deviceIdDataFormat}"
log.debug "deviceIdDataLengthIndicator: ${cmd.deviceIdDataLengthIndicator}"
log.debug "deviceIdType: ${cmd.deviceIdType}"
if (cmd.deviceIdType == 1 && cmd.deviceIdDataFormat == 1) {//serial number in binary format
log.debug "deviceIdDataFormat: ${cmd.deviceIdDataFormat}"
log.debug "deviceIdDataLengthIndicator: ${cmd.deviceIdDataLengthIndicator}"
log.debug "deviceIdType: ${cmd.deviceIdType}"
if (cmd.deviceIdType == 1 && cmd.deviceIdDataFormat == 1) { //serial number in binary format
String serialNumber = "h'"
cmd.deviceIdData.each{ data ->
serialNumber += "${String.format("%02X", data)}"
}
updateDataValue("serialNumber", serialNumber)
log.debug "${device.displayName} - serial number: ${serialNumber}"
}
cmd.deviceIdData.each{ data ->
serialNumber += "${String.format("%02X", data)}"
}
updateDataValue("serialNumber", serialNumber)
log.debug "${device.displayName} - serial number: ${serialNumber}"
}
def response_cmds = []
if (!device.currentState("temperature")) {
response_cmds << encap(zwave.sensorMultilevelV5.sensorMultilevelGet(sensorType: 1, scale: 0))
}
if (!getDataValue("version") && !zwaveInfo.ver) {
log.debug "Requesting Version Report"
response_cmds << "delay 500"
response_cmds << encap(zwave.versionV1.versionGet())
}
response_cmds << "delay 1000"
response_cmds << encap(zwave.wakeUpV2.wakeUpNoMoreInformation())
[[:], response(response_cmds)]
}
def zwaveEvent(physicalgraph.zwave.commands.versionv1.VersionReport cmd) {
updateDataValue("version", "${cmd.applicationVersion}.${cmd.applicationSubVersion}")
log.debug "applicationVersion: ${cmd.applicationVersion}"
log.debug "applicationSubVersion: ${cmd.applicationSubVersion}"
log.debug "zWaveLibraryType: ${cmd.zWaveLibraryType}"
log.debug "zWaveProtocolVersion: ${cmd.zWaveProtocolVersion}"
log.debug "zWaveProtocolSubVersion: ${cmd.zWaveProtocolSubVersion}"
def zwaveEvent(physicalgraph.zwave.commands.versionv1.VersionReport cmd) {
updateDataValue("version", "${cmd.applicationVersion}.${cmd.applicationSubVersion}")
log.debug "applicationVersion: ${cmd.applicationVersion}"
log.debug "applicationSubVersion: ${cmd.applicationSubVersion}"
log.debug "zWaveLibraryType: ${cmd.zWaveLibraryType}"
log.debug "zWaveProtocolVersion: ${cmd.zWaveProtocolVersion}"
log.debug "zWaveProtocolSubVersion: ${cmd.zWaveProtocolSubVersion}"
}
def zwaveEvent(physicalgraph.zwave.commands.batteryv1.BatteryReport cmd) {
def result = []
def map = [:]
map.name = "battery"
map.value = cmd.batteryLevel == 255 ? 1 : cmd.batteryLevel.toString()
map.unit = "%"
map.displayed = true
createEvent(map)
result << createEvent(map)
if (!getDataValue("serialNumber")) {
result << response(encap(zwave.manufacturerSpecificV2.deviceSpecificGet()))
} else {
result << response(encap(zwave.wakeUpV2.wakeUpNoMoreInformation()))
}
result
}
def zwaveEvent(physicalgraph.zwave.commands.notificationv3.NotificationReport cmd) {
def map = [:]
if (cmd.notificationType == 5) {
switch (cmd.event) {
case 2:
map.name = "water"
map.value = "wet"
map.descriptionText = "${device.displayName} is ${map.value}"
break
case 0:
map.name = "water"
map.value = "dry"
map.descriptionText = "${device.displayName} is ${map.value}"
break
}
} else if (cmd.notificationType == 7) {
switch (cmd.event) {
case 0:
map.name = "tamper"
map.value = "inactive"
map.descriptionText = "${device.displayName}: tamper alarm has been deactivated"
if (cmd.notificationType == 5) {
switch (cmd.event) {
case 2:
map.name = "water"
map.value = "wet"
map.descriptionText = "${device.displayName} is ${map.value}"
break
case 3:
map.name = "tamper"
map.value = "active"
map.descriptionText = "${device.displayName}: tamper alarm activated"
break
}
}
createEvent(map)
case 0:
map.name = "water"
map.value = "dry"
map.descriptionText = "${device.displayName} is ${map.value}"
break
}
} else if (cmd.notificationType == 7) {
switch (cmd.event) {
case 0:
map.name = "tamper"
map.value = "inactive"
map.descriptionText = "${device.displayName}: tamper alarm has been deactivated"
break
case 3:
map.name = "tamper"
map.value = "active"
map.descriptionText = "${device.displayName}: tamper alarm activated"
break
}
}
createEvent(map)
}
def zwaveEvent(physicalgraph.zwave.commands.sensormultilevelv5.SensorMultilevelReport cmd) {
def map = [:]
if (cmd.sensorType == 1) {
// temperature
def cmdScale = cmd.scale == 1 ? "F" : "C"
map.value = convertTemperatureIfNeeded(cmd.scaledSensorValue, cmdScale, cmd.precision)
map.unit = getTemperatureScale()
map.name = "temperature"
map.displayed = true
// temperature
def cmdScale = cmd.scale == 1 ? "F" : "C"
map.value = convertTemperatureIfNeeded(cmd.scaledSensorValue, cmdScale, cmd.precision)
map.unit = getTemperatureScale()
map.name = "temperature"
map.displayed = true
}
createEvent(map)
createEvent(map)
}
def zwaveEvent(physicalgraph.zwave.commands.deviceresetlocallyv1.DeviceResetLocallyNotification cmd) {
@@ -229,21 +249,18 @@ def zwaveEvent(physicalgraph.zwave.commands.deviceresetlocallyv1.DeviceResetLoca
def configure() {
log.debug "Executing 'configure'"
// Device-Watch simply pings if no device events received for 8 hrs & 2 minutes
// Device wakes up every 4 hours, this interval of 8h 2m allows us to miss one wakeup notification before marking offline
sendEvent(name: "checkInterval", value: 8 * 60 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID])
def cmds = []
cmds += zwave.wakeUpV2.wakeUpIntervalSet(seconds:21600, nodeid: zwaveHubNodeId)//FGFS' default wake up interval
cmds += zwave.manufacturerSpecificV2.manufacturerSpecificGet()
cmds += zwave.manufacturerSpecificV2.deviceSpecificGet()
cmds += zwave.versionV1.versionGet()
cmds += zwave.batteryV1.batteryGet()
cmds += zwave.sensorMultilevelV5.sensorMultilevelGet(sensorType: 1, scale: 0)
cmds += zwave.associationV2.associationSet(groupingIdentifier:1, nodeId: [zwaveHubNodeId])
cmds += zwave.wakeUpV2.wakeUpNoMoreInformation()
// default initial state
sendEvent(name: "water", value: "dry")
encapSequence(cmds, 500)
def cmds = []
cmds << zwave.associationV2.associationSet(groupingIdentifier:1, nodeId: [zwaveHubNodeId])
cmds << zwave.batteryV1.batteryGet() // other queries sent as response to BatteryReport
encapSequence(cmds, 200)
}
private secure(physicalgraph.zwave.Command cmd) {
@@ -252,7 +269,7 @@ private secure(physicalgraph.zwave.Command cmd) {
private crc16(physicalgraph.zwave.Command cmd) {
//zwave.crc16EncapV1.crc16Encap().encapsulate(cmd).format()
"5601${cmd.format()}0000"
"5601${cmd.format()}0000"
}
private encapSequence(commands, delay=200) {
@@ -260,13 +277,10 @@ private encapSequence(commands, delay=200) {
}
private encap(physicalgraph.zwave.Command cmd) {
def secureClasses = [0x20, 0x5A, 0x70, 0x71, 0x84, 0x85, 0x8E, 0x9C]
//todo: check if secure inclusion was successful
//if not do not send security-encapsulated command
if (secureClasses.find{ it == cmd.commandClassId }) {
secure(cmd)
} else {
crc16(cmd)
}
}
if (zwaveInfo.zw && !zwaveInfo.zw.contains("s")) {
// Secure inclusion failed
crc16(cmd)
} else {
secure(cmd)
}
}

View File

@@ -40,10 +40,10 @@ metadata {
// UI tile definitions
tiles {
standardTile("switch", "device.switch", width: 2, height: 2, canChangeIcon: true) {
state "on", action: "switch.off", icon: "st.vents.vent-open-text", backgroundColor: "#53a7c0"
state "on", action: "switch.off", icon: "st.vents.vent-open-text", backgroundColor: "#00a0dc"
state "off", action: "switch.on", icon: "st.vents.vent-closed", backgroundColor: "#ffffff"
state "obstructed", action: "clearObstruction", icon: "st.vents.vent-closed", backgroundColor: "#ff0000"
state "clearing", action: "", icon: "st.vents.vent-closed", backgroundColor: "#ffff33"
state "obstructed", action: "clearObstruction", icon: "st.vents.vent-closed", backgroundColor: "#e86d13"
state "clearing", action: "", icon: "st.vents.vent-closed", backgroundColor: "#ffffff"
}
controlTile("levelSliderControl", "device.level", "slider", height: 1, width: 2, inactiveLabel: false) {
state "level", action:"switch level.setLevel"

View File

@@ -1,6 +1,5 @@
/**
* Spruce Controller - Pre Release V2 10/11/2015
*
* Spruce Controller V2_4 Big Tiles *
* Copyright 2015 Plaid Systems
*
* Author: NC
@@ -21,82 +20,96 @@
*/
metadata {
definition (name: "Spruce Controller", namespace: "plaidsystems", author: "NCauffman") {
capability "Switch"
capability "Configuration"
capability "Refresh"
capability "Actuator"
capability "Valve"
definition (name: 'Spruce Controller', namespace: 'plaidsystems', author: 'Plaid Systems') {
capability 'Switch'
capability 'Configuration'
capability 'Refresh'
capability 'Actuator'
capability 'Valve'
attribute "switch", "string"
attribute "switch1", "string"
attribute "switch2", "string"
attribute "switch8", "string"
attribute "switch5", "string"
attribute "switch3", "string"
attribute "switch4", "string"
attribute "switch6", "string"
attribute "switch7", "string"
attribute "switch9", "string"
attribute "switch10", "string"
attribute "switch11", "string"
attribute "switch12", "string"
attribute "switch13", "string"
attribute "switch14", "string"
attribute "switch15", "string"
attribute "switch16", "string"
attribute "status", "string"
attribute 'switch', 'string'
attribute 'switch1', 'string'
attribute 'switch2', 'string'
attribute 'switch8', 'string'
attribute 'switch5', 'string'
attribute 'switch3', 'string'
attribute 'switch4', 'string'
attribute 'switch6', 'string'
attribute 'switch7', 'string'
attribute 'switch9', 'string'
attribute 'switch10', 'string'
attribute 'switch11', 'string'
attribute 'switch12', 'string'
attribute 'switch13', 'string'
attribute 'switch14', 'string'
attribute 'switch15', 'string'
attribute 'switch16', 'string'
attribute 'rainsensor', 'string'
attribute 'status', 'string'
attribute 'tileMessage', 'string'
attribute 'minutes', 'string'
attribute 'VALUE_UP', 'string'
attribute 'VALUE_DOWN', 'string'
command "programOn"
command "programOff"
command "on"
command "off"
command "z1on"
command "z1off"
command "z2on"
command "z2off"
command "z3on"
command "z3off"
command "z4on"
command "z4off"
command "z5on"
command "z5off"
command "z6on"
command "z6off"
command "z7on"
command "z7off"
command "z8on"
command "z8off"
command "z9on"
command "z9off"
command "z10on"
command "z10off"
command "z11on"
command "z11off"
command "z12on"
command "z12off"
command "z13on"
command "z13off"
command "z14on"
command "z14off"
command "z15on"
command "z15off"
command "z16on"
command "z16off"
command "offtime"
command 'levelUp'
command 'levelDown'
command 'programOn'
command 'programOff'
command 'programWait'
command 'programEnd'
command "refresh"
command "rain"
command "manual"
command "setDisplay"
command 'on'
command 'off'
command 'zon'
command 'zoff'
command 'z1on'
command 'z1off'
command 'z2on'
command 'z2off'
command 'z3on'
command 'z3off'
command 'z4on'
command 'z4off'
command 'z5on'
command 'z5off'
command 'z6on'
command 'z6off'
command 'z7on'
command 'z7off'
command 'z8on'
command 'z8off'
command 'z9on'
command 'z9off'
command 'z10on'
command 'z10off'
command 'z11on'
command 'z11off'
command 'z12on'
command 'z12off'
command 'z13on'
command 'z13off'
command 'z14on'
command 'z14off'
command 'z15on'
command 'z15off'
command 'z16on'
command 'z16off'
command "settingsMap"
command "writeTime"
command "writeType"
command "notify"
command "updated"
fingerprint endpointId: "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18", profileId: "0104", deviceId: "0002", deviceVersion: "00", inClusters: "0000,0003,0004,0005,0006,000F", outClusters: "0003, 0019", manufacturer: "PLAID SYSTEMS", model: "PS-SPRZ16-01"
command 'config'
command 'refresh'
command 'rain'
command 'manual'
command 'manualTime'
command 'settingsMap'
command 'writeTime'
command 'writeType'
command 'notify'
command 'updated'
//ST release
//fingerprint endpointId: '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18', profileId: '0104', deviceId: '0002', deviceVersion: '00', inClusters: '0000,0003,0004,0005,0006,000F', outClusters: '0003, 0019', manufacturer: 'PLAID SYSTEMS', model: 'PS-SPRZ16-01'
//new release
fingerprint endpointId: "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18", profileId: "0104", deviceId: "0002", deviceVersion: "00", inClusters: "0000,0003,0004,0005,0006,0009,000A,000F", outClusters: "0003, 0019", manufacturer: "PLAID SYSTEMS", model: "PS-SPRZ16-01"
}
@@ -104,162 +117,230 @@ metadata {
simulator {
// status messages
// reply messages
// reply messages
}
preferences {
input description: "Press Configure button after making changes to these preferences", displayDuringSetup: true, type: "paragraph", element: "paragraph", title: ""
input "RainEnable", "bool", title: "Rain Sensor Attached?", required: false, displayDuringSetup: true
input "ManualTime", "number", title: "Automatic shutoff time when a zone is turned on manually?", required: false, displayDuringSetup: true
}
input description: 'If you have a rain sensor wired to the rain sensor input on the Spruce controller, turn it on here.', displayDuringSetup: true, type: 'paragraph', element: 'paragraph', title: 'Rain Sensor'
input description: 'The SYNC SETTINGS button must be pressed after making a change to the Rain sensor:', displayDuringSetup: false, type: 'paragraph', element: 'paragraph', title: ''
input 'RainEnable', 'bool', title: 'Rain Sensor Attached?', required: false, displayDuringSetup: true
input description: 'Adjust manual water time with arrows on main tile. The time indicated in the first small tile indicates the time the zone will water when manually switched on.', displayDuringSetup: false, type: 'paragraph', element: 'paragraph', title: ''
}
// UI tile definitions
tiles {
standardTile("status", "device.status") {
state "schedule", label: 'Schedule Set', icon: "http://www.plaidsystems.com/smartthings/st_spruce_leaf_225_t.png"
state "finished", label: 'Spruce Finished', icon: "st.Outdoor.outdoor5", backgroundColor: "#46c2e8"
state "raintoday", label: 'Rain Today', icon: "st.custom.wuk.nt_chancerain"
state "rainy", label: 'Previous Rain', icon: "st.custom.wuk.nt_chancerain"
state "raintom", label: 'Rain Tomorrow', icon: "st.custom.wuk.nt_chancerain"
state "donewweek", label: 'Spruce Finished', icon: "st.Outdoor.outdoor5", backgroundColor: "#00A0DC"
state "skipping", label: 'Skip Today', icon: "st.Outdoor.outdoor20", backgroundColor: "#36cfe3"
state "moisture", label: '', icon: "st.Weather.weather2", backgroundColor: "#36cfe3"
state "pause", label: 'PAUSE', icon: "st.contact.contact.open", backgroundColor: "#e86d13"
state "active", label: 'Active', icon: "st.Outdoor.outdoor12", backgroundColor: "#3DC72E"
state "season", label: 'Seasonal Adjustment', icon: "st.Outdoor.outdoor17", backgroundColor: "#ffb900"
state "disable", label: 'Disabled', icon: "st.secondary.off", backgroundColor: "#cccccc"
state "warning", label: '', icon: "st.categories.damageAndDanger", backgroundColor: "#ffff7f"
state "alarm", label: 'Alarm', icon: "st.categories.damageAndDanger", backgroundColor: "#f9240c"
multiAttributeTile(name:"switchall", type:"generic", width:6, height:4) {
tileAttribute('device.status', key: 'PRIMARY_CONTROL') {
attributeState 'schedule', label: 'Ready', icon: 'http://www.plaidsystems.com/smartthings/st_spruce_leaf_225_top.png'
attributeState 'finished', label: 'Finished', icon: 'st.Outdoor.outdoor5', backgroundColor: '#46c2e8'
attributeState 'raintoday', label: 'Rain Today', icon: 'http://www.plaidsystems.com/smartthings/st_rain.png', backgroundColor: '#d65fe3'
attributeState 'rainy', label: 'Rain', icon: 'http://www.plaidsystems.com/smartthings/st_rain.png', backgroundColor: '#d65fe3'
attributeState 'raintom', label: 'Rain Tomorrow', icon: 'http://www.plaidsystems.com/smartthings/st_rain.png', backgroundColor: '#d65fe3'
attributeState 'donewweek', label: 'Finished', icon: 'st.Outdoor.outdoor5', backgroundColor: '#00A0DC'
attributeState 'skipping', label: 'Skip', icon: 'st.Outdoor.outdoor20', backgroundColor: '#46c2e8'
attributeState 'moisture', label: 'Ready', icon: 'st.Weather.weather2', backgroundColor: '#46c2e8'
attributeState 'pause', label: 'PAUSE', icon: 'st.contact.contact.open', backgroundColor: '#e86d13'
attributeState 'delayed', label: 'Delayed', icon: 'st.contact.contact.open', backgroundColor: '#e86d13'
attributeState 'active', label: 'Active', icon: 'st.Outdoor.outdoor12', backgroundColor: '#3DC72E'
attributeState 'season', label: 'Adjust', icon: 'st.Outdoor.outdoor17', backgroundColor: '#ffb900'
attributeState 'disable', label: 'Off', icon: 'st.secondary.off', backgroundColor: '#cccccc'
attributeState 'warning', label: 'Warning', icon: 'http://www.plaidsystems.com/smartthings/st_spruce_leaf_225_top_yellow.png'
attributeState 'alarm', label: 'Alarm', icon: 'http://www.plaidsystems.com/smartthings/st_spruce_leaf_225_s_red.png', backgroundColor: '#e66565'
}
tileAttribute("device.minutes", key: "VALUE_CONTROL") {
attributeState "VALUE_UP", action: "levelUp"
attributeState "VALUE_DOWN", action: "levelDown"
}
tileAttribute("device.tileMessage", key: "SECONDARY_CONTROL") {
attributeState "tileMessage", label: '${currentValue}'
}
}
standardTile("switch", "device.switch") {
//state "programOff", label: 'Start Program', action: "programOn", icon: "st.sonos.play-icon", backgroundColor: "#a9a9a9"
state "off", label: 'Start Program', action: "programOn", icon: "st.sonos.play-icon", backgroundColor: "#a9a9a9"
state "programOn", label: 'Initialize Program', action: "programOff", icon: "st.contact.contact.open", backgroundColor: "#f6e10e"
state "on", label: 'Program Running', action: "off", icon: "st.Outdoor.outdoor12", backgroundColor: "#3DC72E"
}
standardTile("rainsensor", "device.rainsensor") {
state "rainSensrooff", label: 'Rain Sensor Clear', icon: "st.Weather.weather14", backgroundColor: "#a9a9a9"
state "rainSensoron", label: 'Rain Detected', icon: "st.Weather.weather10", backgroundColor: "#f6e10e"
}
standardTile("switch1", "device.switch1") {
state "z1off", label: '1', action: "z1on", icon: "st.valves.water.closed", backgroundColor: "#ffffff"
state "z1on", label: '1', action: "z1off", icon: "st.valves.water.open", backgroundColor: "#00A0DC"
}
standardTile("switch2", "device.switch2") {
state "z2off", label: '2', action: "z2on", icon: "st.valves.water.closed", backgroundColor: "#ffffff"
state "z2on", label: '2', action: "z2off", icon: "st.valves.water.open", backgroundColor: "#00A0DC"
valueTile('minutes', 'device.minutes'){
state 'minutes', label: '${currentValue} min'
}
valueTile('dummy', 'device.minutes'){
state 'minutes', label: ''
}
standardTile('switch', 'device.switch', width:2, height:2) {
state 'off', label: 'Start', action: 'programOn', icon: 'st.Outdoor.outdoor12', backgroundColor: '#a9a9a9'
state 'programOn', label: 'Wait', action: 'programOff', icon: 'st.contact.contact.open', backgroundColor: '#f6e10e'
state 'programWait', label: 'Wait', action: 'programEnd', icon: 'st.contact.contact.open', backgroundColor: '#f6e10e'
state 'on', label: 'Running', action: 'programEnd', icon: 'st.Outdoor.outdoor12', backgroundColor: '#3DC72E'
}
standardTile("switch3", "device.switch3", inactiveLabel: false) {
state "z3off", label: '3', action: "z3on", icon: "st.valves.water.closed", backgroundColor: "#ffffff"
state "z3on", label: '3', action: "z3off", icon: "st.valves.water.open", backgroundColor: "#00A0DC"
standardTile("rainsensor", "device.rainsensor", decoration: 'flat') {
state "rainSensoroff", label: 'sensor', icon: 'http://www.plaidsystems.com/smartthings/st_drop_on.png'
state "rainSensoron", label: 'sensor', icon: 'http://www.plaidsystems.com/smartthings/st_drop_on_blue_small.png'
state "disable", label: 'sensor', icon: 'http://www.plaidsystems.com/smartthings/st_drop_x_small.png'
state "enable", label: 'sensor', icon: 'http://www.plaidsystems.com/smartthings/st_drop_on.png'
}
standardTile("switch4", "device.switch4", inactiveLabel: false) {
state "z4off", label: '4', action: "z4on", icon: "st.valves.water.closed", backgroundColor: "#ffffff"
state "z4on", label: '4', action: "z4off", icon: "st.valves.water.open", backgroundColor: "#00A0DC"
standardTile('switch1', 'device.switch1', inactiveLabel: false) {
state 'z1off', label: '1', action: 'z1on', icon: 'st.valves.water.closed', backgroundColor: '#ffffff'
state 'z1on', label: '1', action: 'z1off', icon: 'st.valves.water.open', backgroundColor: '#00A0DC'
}
standardTile("switch5", "device.switch5", inactiveLabel: false) {
state "z5off", label: '5', action: "z5on", icon: "st.valves.water.closed", backgroundColor: "#ffffff"
state "z5on", label: '5', action: "z5off", icon: "st.valves.water.open", backgroundColor: "#00A0DC"
}
standardTile("switch6", "device.switch6", inactiveLabel: false) {
state "z6off", label: '6', action: "z6on", icon: "st.valves.water.closed", backgroundColor: "#ffffff"
state "z6on", label: '6', action: "z6off", icon: "st.valves.water.open", backgroundColor: "#00A0DC"
}
standardTile("switch7", "device.switch7", inactiveLabel: false) {
state "z7off", label: '7', action: "z7on", icon: "st.valves.water.closed", backgroundColor: "#ffffff"
state "z7on", label: '7', action: "z7off", icon: "st.valves.water.open", backgroundColor: "#00A0DC"
}
standardTile("switch8", "device.switch8", inactiveLabel: false) {
state "z8off", label: '8', action: "z8on", icon: "st.valves.water.closed", backgroundColor: "#ffffff"
state "z8on", label: '8', action: "z8off", icon: "st.valves.water.open", backgroundColor: "#00A0DC"
}
standardTile("switch9", "device.switch9", inactiveLabel: false) {
state "z9off", label: '9', action: "z9on", icon: "st.valves.water.closed", backgroundColor: "#ffffff"
state "z9on", label: '9', action: "z9off", icon: "st.valves.water.open", backgroundColor: "#00A0DC"
}
standardTile("switch10", "device.switch10", inactiveLabel: false) {
state "z10off", label: '10', action: "z10on", icon: "st.valves.water.closed", backgroundColor: "#ffffff"
state "z10on", label: '10', action: "z10off", icon: "st.valves.water.open", backgroundColor: "#00A0DC"
standardTile('switch2', 'device.switch2', inactiveLabel: false) {
state 'z2off', label: '2', action: 'z2on', icon: 'st.valves.water.closed', backgroundColor: '#ffffff'
state 'z2on', label: '2', action: 'z2off', icon: 'st.valves.water.open', backgroundColor: '#00A0DC'
}
standardTile("switch11", "device.switch11", inactiveLabel: false) {
state "z11off", label: '11', action: "z11on", icon: "st.valves.water.closed", backgroundColor: "#ffffff"
state "z11on", label: '11', action: "z11off", icon: "st.valves.water.open", backgroundColor: "#00A0DC"
standardTile('switch3', 'device.switch3', inactiveLabel: false) {
state 'z3off', label: '3', action: 'z3on', icon: 'st.valves.water.closed', backgroundColor: '#ffffff'
state 'z3on', label: '3', action: 'z3off', icon: 'st.valves.water.open', backgroundColor: '#00A0DC'
}
standardTile("switch12", "device.switch12", inactiveLabel: false) {
state "z12off", label: '12', action: "z12on", icon: "st.valves.water.closed", backgroundColor: "#ffffff"
state "z12on", label: '12', action: "z12off", icon: "st.valves.water.open", backgroundColor: "#00A0DC"
standardTile('switch4', 'device.switch4', inactiveLabel: false) {
state 'z4off', label: '4', action: 'z4on', icon: 'st.valves.water.closed', backgroundColor: '#ffffff'
state 'z4on', label: '4', action: 'z4off', icon: 'st.valves.water.open', backgroundColor: '#00A0DC'
}
standardTile("switch13", "device.switch13", inactiveLabel: false) {
state "z13off", label: '13', action: "z13on", icon: "st.valves.water.closed", backgroundColor: "#ffffff"
state "z13on", label: '13', action: "z13off", icon: "st.valves.water.open", backgroundColor: "#00A0DC"
standardTile('switch5', 'device.switch5', inactiveLabel: false) {
state 'z5off', label: '5', action: 'z5on', icon: 'st.valves.water.closed', backgroundColor: '#ffffff'
state 'z5on', label: '5', action: 'z5off', icon: 'st.valves.water.open', backgroundColor: '#00A0DC'
}
standardTile("switch14", "device.switch14", inactiveLabel: false) {
state "z14off", label: '14', action: "z14on", icon: "st.valves.water.closed", backgroundColor: "#ffffff"
state "z14on", label: '14', action: "z14off", icon: "st.valves.water.open", backgroundColor: "#00A0DC"
standardTile('switch6', 'device.switch6', inactiveLabel: false) {
state 'z6off', label: '6', action: 'z6on', icon: 'st.valves.water.closed', backgroundColor: '#ffffff'
state 'z6on', label: '6', action: 'z6off', icon: 'st.valves.water.open', backgroundColor: '#00A0DC'
}
standardTile("switch15", "device.switch15", inactiveLabel: false) {
state "z15off", label: '15', action: "z15on", icon: "st.valves.water.closed", backgroundColor: "#ffffff"
state "z15on", label: '15', action: "z15off", icon: "st.valves.water.open", backgroundColor: "#00A0DC"
standardTile('switch7', 'device.switch7', inactiveLabel: false) {
state 'z7off', label: '7', action: 'z7on', icon: 'st.valves.water.closed', backgroundColor: '#ffffff'
state 'z7on', label: '7', action: 'z7off', icon: 'st.valves.water.open', backgroundColor: '#00A0DC'
}
standardTile('switch8', 'device.switch8', inactiveLabel: false) {
state 'z8off', label: '8', action: 'z8on', icon: 'st.valves.water.closed', backgroundColor: '#ffffff'
state 'z8on', label: '8', action: 'z8off', icon: 'st.valves.water.open', backgroundColor: '#00A0DC'
}
standardTile('switch9', 'device.switch9', inactiveLabel: false) {
state 'z9off', label: '9', action: 'z9on', icon: 'st.valves.water.closed', backgroundColor: '#ffffff'
state 'z9on', label: '9', action: 'z9off', icon: 'st.valves.water.open', backgroundColor: '#00A0DC'
}
standardTile('switch10', 'device.switch10', inactiveLabel: false) {
state 'z10off', label: '10', action: 'z10on', icon: 'st.valves.water.closed', backgroundColor: '#ffffff'
state 'z10on', label: '10', action: 'z10off', icon: 'st.valves.water.open', backgroundColor: '#00A0DC'
}
standardTile('switch11', 'device.switch11', inactiveLabel: false) {
state 'z11off', label: '11', action: 'z11on', icon: 'st.valves.water.closed', backgroundColor: '#ffffff'
state 'z11on', label: '11', action: 'z11off', icon: 'st.valves.water.open', backgroundColor: '#00A0DC'
}
standardTile('switch12', 'device.switch12', inactiveLabel: false) {
state 'z12off', label: '12', action: 'z12on', icon: 'st.valves.water.closed', backgroundColor: '#ffffff'
state 'z12on', label: '12', action: 'z12off', icon: 'st.valves.water.open', backgroundColor: '#00A0DC'
}
standardTile('switch13', 'device.switch13', inactiveLabel: false) {
state 'z13off', label: '13', action: 'z13on', icon: 'st.valves.water.closed', backgroundColor: '#ffffff'
state 'z13on', label: '13', action: 'z13off', icon: 'st.valves.water.open', backgroundColor: '#00A0DC'
}
standardTile('switch14', 'device.switch14', inactiveLabel: false) {
state 'z14off', label: '14', action: 'z14on', icon: 'st.valves.water.closed', backgroundColor: '#ffffff'
state 'z14on', label: '14', action: 'z14off', icon: 'st.valves.water.open', backgroundColor: '#00A0DC'
}
standardTile('switch15', 'device.switch15', inactiveLabel: false) {
state 'z15off', label: '15', action: 'z15on', icon: 'st.valves.water.closed', backgroundColor: '#ffffff'
state 'z15on', label: '15', action: 'z15off', icon: 'st.valves.water.open', backgroundColor: '#00A0DC'
}
standardTile("switch16", "device.switch16", inactiveLabel: false) {
state "z16off", label: '16', action: "z16on", icon: "st.valves.water.closed", backgroundColor: "#ffffff"
state "z16on", label: '16', action: "z16off", icon: "st.valves.water.open", backgroundColor: "#00A0DC"
standardTile('switch16', 'device.switch16', inactiveLabel: false) {
state 'z16off', label: '16', action: 'z16on', icon: 'st.valves.water.closed', backgroundColor: '#ffffff'
state 'z16on', label: '16', action: 'z16off', icon: 'st.valves.water.open', backgroundColor: '#00A0DC'
}
standardTile("refresh", "device.switch", inactiveLabel: false, decoration: "flat") {
state "default", action: "refresh", icon:"st.secondary.refresh"
standardTile('refresh', 'device.switch', inactiveLabel: false, decoration: 'flat') {
state 'default', action: 'refresh', icon:'st.secondary.refresh'//-icon'
}
standardTile("configure", "device.configure", inactiveLabel: false, decoration: "flat") {
state "configure", label:'', action:"configuration.configure", icon:"st.secondary.configure"
}
standardTile('configure', 'device.configure', inactiveLabel: false, decoration: 'flat') {
state 'configure', label:'', action:'configuration.configure', icon:'http://www.plaidsystems.com/smartthings/st_syncsettings.png'//sync_icon_small.png'
}
main (["status"])
details(["status","rainsensor","switch","switch1","switch2","switch3","switch4","switch5","switch6","switch7","switch8","switch9","switch10","switch11","switch12","switch13","switch14","switch15","switch16","refresh","configure"])
}
main (['switchall'])
details(['switchall','minutes','rainsensor','switch1','switch2','switch3','switch4','switch','switch5','switch6','switch7','switch8','switch9','switch10','switch11','switch12','refresh','configure','switch13','switch14','switch15','switch16'])
}
}
//used for schedule
def programOn(){
sendEvent(name: "switch", value: "programOn", descriptionText: "Program turned on")
sendEvent(name: 'switch', value: 'programOn', descriptionText: 'Program turned on')
}
def programWait(){
sendEvent(name: 'switch', value: 'programWait', descriptionText: "Initializing Schedule")
}
def programEnd(){
//sets switch to off and tells schedule switch is off/schedule complete with manaual
sendEvent(name: 'switch', value: 'off', descriptionText: 'Program manually turned off')
zoff()
}
def programOff(){
sendEvent(name: "switch", value: "off", descriptionText: "Program turned off")
sendEvent(name: 'switch', value: 'off', descriptionText: 'Program turned off')
off()
}
def updated(){
log.debug "updated"
//set minutes
def levelUp(){
def newvalue = 1
if (device.latestValue('minutes') != null) newvalue = device.latestValue('minutes').toInteger()+1
if (newvalue >= 60) newvalue = 60
def value = newvalue.toString()
log.debug value
sendEvent(name: 'minutes', value: "${value}", descriptionText: "Manual Time set to ${value}", display: false)
}
def levelDown(){
def newvalue = device.latestValue('minutes').toInteger()-1
if (newvalue <= 0) newvalue = 1
def value = newvalue.toString()
log.debug value
sendEvent(name: 'minutes', value: "${value}", descriptionText: "Manual Time set to ${value}", display: false)
}
// Parse incoming device messages to generate events
def parse(String description) {
//log.debug "Parse description $description"
log.debug "Parse description ${description}"
def result = null
def map = [:]
if (description?.startsWith("read attr -")) {
if (description?.startsWith('read attr -')) {
def descMap = parseDescriptionAsMap(description)
//log.debug "Desc Map: $descMap"
//using 000F cluster instead of 0006 (switch) because ST does not differentiate between EPs and processes all as switch
if (descMap.cluster == "000F" && descMap.attrId == "0055") {
log.debug "Zone"
if (descMap.cluster == '000F' && descMap.attrId == '0055') {
log.debug 'Zone'
map = getZone(descMap)
}
else if (descMap.cluster == "0009" && descMap.attrId == "0000") {
log.debug "Alarm"
else if (descMap.cluster == '0009' && descMap.attrId == '0000') {
log.debug 'Alarm'
map = getAlarm(descMap)
}
}
if (map) {
result = createEvent(map)
}
log.debug "Parse returned $map $result"
else if (description?.startsWith('catchall: 0104 0009')){
log.debug 'Sync settings to controller complete'
if (device.latestValue('status') != 'alarm'){
def configEvt = createEvent(name: 'status', value: 'schedule', descriptionText: "Sync settings to controller complete")
def configMsg = createEvent(name: 'tileMessage', value: 'Sync settings to controller complete', descriptionText: "Sync settings to controller complete", displayed: false)
result = [configEvt, configMsg]
}
return result
}
if (map) {
result = createEvent(map)
//configure after reboot
if (map.value == 'warning' || map.value == 'alarm'){
def cmds = config()
def alarmEvt = createEvent(name: 'tileMessage', value: map.descriptionText, descriptionText: "${map.descriptionText}", displayed: false)
result = cmds?.collect { new physicalgraph.device.HubAction(it) } + createEvent(map) + alarmEvt
return result
}
else if (map.name == 'rainsensor'){
def rainEvt = createEvent(name: 'tileMessage', value: map.descriptionText, descriptionText: "${map.descriptionText}", displayed: false)
result = [createEvent(map), rainEvt]
return result
}
}
if (map) log.debug "Parse returned ${map} ${result}"
return result
}
def parseDescriptionAsMap(description) {
(description - "read attr - ").split(",").inject([:]) { map, param ->
def nameAndValue = param.split(":")
(description - 'read attr - ').split(',').inject([:]) { map, param ->
def nameAndValue = param.split(':')
map += [(nameAndValue[0].trim()):nameAndValue[1].trim()]
}
}
@@ -270,27 +351,28 @@ def getZone(descMap){
def EP = Integer.parseInt(descMap.endpoint.trim(), 16)
String onoff
if(descMap.value == "00"){
onoff = "off"
if(descMap.value == '00'){
onoff = 'off'
}
else onoff = "on"
else onoff = 'on'
if (EP == 1){
map.name = "switch"
map.name = 'switch'
map.value = onoff
map.descriptionText = "${device.displayName} turned sprinkler program $onoff"
map.descriptionText = "${device.displayName} turned sprinkler program ${onoff}"
}
else if (EP == 18) {
map.name = "rainsensor"
map.value = "rainSensor" + onoff
map.descriptionText = "${device.displayName} rain sensor is $onoff"
map.name = 'rainsensor'
log.debug "Rain enable: ${RainEnable}, sensor: ${onoff}"
map.value = 'rainSensor' + onoff
map.descriptionText = "${device.displayName} rain sensor is ${onoff}"
}
else {
EP -= 1
map.name = "switch" + EP
map.value = "z" + EP + onoff
map.descriptionText = "${device.displayName} turned Zone $EP $onoff"
map.name = 'switch' + EP
map.value = 'z' + EP + onoff
map.descriptionText = "${device.displayName} turned Zone $EP ${onoff}"
}
map.isStateChange = true
@@ -300,37 +382,59 @@ def getZone(descMap){
def getAlarm(descMap){
def map = [:]
map.name = "status"
map.name = 'status'
def alarmID = Integer.parseInt(descMap.value.trim(), 16)
log.debug "${alarmID}"
if(alarmID <= 0) map.descriptionText = "${device.displayName} has rebooted, no other alarms"
else map.descriptionText = "${device.displayName} rebooted, reported error on zone ${alarmID - 1}, please check zone is working correctly"
map.value = "alarm"
map.isStateChange = true
map.value = 'alarm'
map.displayed = true
map.isStateChange = true
if(alarmID <= 0){
map.descriptionText = "${device.displayName} reboot, no other alarms"
map.value = 'warning'
//map.isStateChange = false
}
else map.descriptionText = "${device.displayName} reboot, reported zone ${alarmID - 1} error, please check zone is working correctly, press SYNC SETTINGS button to clear"
return map
}
//status notify and change status
def notify(value, text){
sendEvent(name:"status", value:"$value", descriptionText:"$text", isStateChange: true, display: false)
def notify(String val, String txt){
sendEvent(name: 'status', value: val, descriptionText: txt, isStateChange: true, display: false)
//String txtShort = txt.take(100)
sendEvent(name: 'tileMessage', value: txt, descriptionText: "", isStateChange: true, display: false)
}
def updated(){
log.debug "updated"
}
//prefrences - rain sensor, manual time
def rain() {
log.debug "Rain $RainEnable"
log.debug "Rain sensor: ${RainEnable}"
if (RainEnable) sendEvent(name: 'rainsensor', value: 'enable', descriptionText: "${device.displayName} rain sensor is enabled", isStateChange: true)
else sendEvent(name: 'rainsensor', value: 'disable', descriptionText: "${device.displayName} rain sensor is disabled", isStateChange: true)
if (RainEnable) "st wattr 0x${device.deviceNetworkId} 18 0x0F 0x51 0x10 {01}"
else "st wattr 0x${device.deviceNetworkId} 18 0x0F 0x51 0x10 {00}"
}
def manual(){
log.debug "Time $ManualTime"
def mTime = 10
if (ManualTime) mTime = ManualTime
def manualTime = hex(mTime)
"st wattr 0x${device.deviceNetworkId} 1 6 0x4002 0x21 {00${manualTime}}"
def manualTime(value){
sendEvent(name: 'minutes', value: "${value}", descriptionText: "Manual Time set to ${value}", display: false)
}
def manual(){
def newManaul = 10
if (device.latestValue('minutes')) newManaul = device.latestValue('minutes').toInteger()
log.debug "Manual Zone runtime ${newManaul} mins"
def manualTime = hex(newManaul)
}
def sendCmds = []
sendCmds.push("st wattr 0x${device.deviceNetworkId} 1 6 0x4002 0x21 {00${manualTime}}")
return sendCmds
}
//write switch time settings map
def settingsMap(WriteTimes, attrType){
@@ -366,13 +470,20 @@ def writeTime(wEP, runTime){
//set reporting and binding
def configure() {
sendEvent(name: 'status', value: 'schedule', descriptionText: "Syncing settings to controller")
sendEvent(name: 'minutes', value: "10", descriptionText: "Manual Time set to 10 mins", display: false)
sendEvent(name: 'tileMessage', value: 'Syncing settings to controller', descriptionText: 'Syncing settings to controller')
config()
}
def config(){
String zigbeeId = swapEndianHex(device.hub.zigbeeId)
log.debug "Confuguring Reporting and Bindings ${device.deviceNetworkId} ${device.zigbeeId}"
sendEvent(name: 'configuration',value: 100, descriptionText: "Configuration initialized")
log.debug "Configuring Reporting and Bindings ${device.deviceNetworkId} ${device.zigbeeId}"
def configCmds = [
//program on/off
//program on/off
"zdo bind 0x${device.deviceNetworkId} 1 1 6 {${device.zigbeeId}} {}", "delay 1000",
"zdo bind 0x${device.deviceNetworkId} 1 1 0x09 {${device.zigbeeId}} {}", "delay 1000",
"zdo bind 0x${device.deviceNetworkId} 1 1 0x0F {${device.zigbeeId}} {}", "delay 1000",
@@ -458,38 +569,16 @@ def configure() {
"zcl global send-me-a-report 0x09 0x00 0x21 1 0 {00}", "delay 500",
"send 0x${device.deviceNetworkId} 1 1", "delay 500"
]
return configCmds + rain() + manual()
return configCmds + rain()
}
private hex(value) {
new BigInteger(Math.round(value).toString()).toString(16)
}
private String swapEndianHex(String hex) {
reverseArray(hex.decodeHex()).encodeHex()
}
private byte[] reverseArray(byte[] array) {
int i = 0;
int j = array.length - 1;
byte tmp;
while (j > i) {
tmp = array[j];
array[j] = array[i];
array[i] = tmp;
j--;
i++;
}
return array
}
def refresh() {
log.debug "refresh"
def refreshCmds = [
log.debug "refresh pressed"
sendEvent(name: 'tileMessage', value: 'Refresh', descriptionText: 'Refresh')
def refreshCmds = [
"st rattr 0x${device.deviceNetworkId} 1 0x0F 0x55", "delay 500",
"st rattr 0x${device.deviceNetworkId} 2 0x0F 0x55", "delay 500",
@@ -513,64 +602,96 @@ def refresh() {
"st rattr 0x${device.deviceNetworkId} 18 0x0F 0x51","delay 500",
]
return refreshCmds + rain() + manual()
return refreshCmds
}
private hex(value) {
new BigInteger(Math.round(value).toString()).toString(16)
}
private String swapEndianHex(String hex) {
reverseArray(hex.decodeHex()).encodeHex()
}
private byte[] reverseArray(byte[] array) {
int i = 0;
int j = array.length - 1;
byte tmp;
while (j > i) {
tmp = array[j];
array[j] = array[i];
array[i] = tmp;
j--;
i++;
}
return array
}
//on & off redefined for Alexa to start manual schedule
def on() {
log.debug 'Alexa on'
//schedule subscribes to programOn
sendEvent(name: 'switch', value: 'programOn', descriptionText: 'Alexa turned program on')
}
def off() {
log.debug 'Alexa off'
sendEvent(name: 'switch', value: 'off', descriptionText: 'Alexa turned program off')
zoff()
}
// Commands to device
//zones on - 8
def on() {
//sendEvent(name:"status", value:"active", descriptionText:"Program Running", isStateChange: true, display: false)
log.debug "on"
"st cmd 0x${device.deviceNetworkId} 1 6 1 {}"
def zon() {
"st cmd 0x${device.deviceNetworkId} 1 6 1 {}"
}
def off() {
log.debug "off"
"st cmd 0x${device.deviceNetworkId} 1 6 0 {}"
def zoff() {
"st cmd 0x${device.deviceNetworkId} 1 6 0 {}"
}
def z1on() {
"st cmd 0x${device.deviceNetworkId} 2 6 1 {}"
return manual() + "st cmd 0x${device.deviceNetworkId} 2 6 1 {}"
}
def z1off() {
"st cmd 0x${device.deviceNetworkId} 2 6 0 {}"
}
def z2on() {
"st cmd 0x${device.deviceNetworkId} 3 6 1 {}"
return manual() + "st cmd 0x${device.deviceNetworkId} 3 6 1 {}"
}
def z2off() {
"st cmd 0x${device.deviceNetworkId} 3 6 0 {}"
}
def z3on() {
"st cmd 0x${device.deviceNetworkId} 4 6 1 {}"
return manual() + "st cmd 0x${device.deviceNetworkId} 4 6 1 {}"
}
def z3off() {
"st cmd 0x${device.deviceNetworkId} 4 6 0 {}"
}
def z4on() {
"st cmd 0x${device.deviceNetworkId} 5 6 1 {}"
return manual() + "st cmd 0x${device.deviceNetworkId} 5 6 1 {}"
}
def z4off() {
"st cmd 0x${device.deviceNetworkId} 5 6 0 {}"
}
def z5on() {
"st cmd 0x${device.deviceNetworkId} 6 6 1 {}"
return manual() + "st cmd 0x${device.deviceNetworkId} 6 6 1 {}"
}
def z5off() {
"st cmd 0x${device.deviceNetworkId} 6 6 0 {}"
}
def z6on() {
"st cmd 0x${device.deviceNetworkId} 7 6 1 {}"
return manual() + "st cmd 0x${device.deviceNetworkId} 7 6 1 {}"
}
def z6off() {
"st cmd 0x${device.deviceNetworkId} 7 6 0 {}"
}
def z7on() {
"st cmd 0x${device.deviceNetworkId} 8 6 1 {}"
return manual() + "st cmd 0x${device.deviceNetworkId} 8 6 1 {}"
}
def z7off() {
"st cmd 0x${device.deviceNetworkId} 8 6 0 {}"
}
def z8on() {
"st cmd 0x${device.deviceNetworkId} 9 6 1 {}"
return manual() + "st cmd 0x${device.deviceNetworkId} 9 6 1 {}"
}
def z8off() {
"st cmd 0x${device.deviceNetworkId} 9 6 0 {}"
@@ -578,50 +699,51 @@ def z8off() {
//zones 9 - 16
def z9on() {
"st cmd 0x${device.deviceNetworkId} 10 6 1 {}"
return manual() + "st cmd 0x${device.deviceNetworkId} 10 6 1 {}"
}
def z9off() {
"st cmd 0x${device.deviceNetworkId} 10 6 0 {}"
}
def z10on() {
"st cmd 0x${device.deviceNetworkId} 11 6 1 {}"
return manual() + "st cmd 0x${device.deviceNetworkId} 11 6 1 {}"
}
def z10off() {
"st cmd 0x${device.deviceNetworkId} 11 6 0 {}"
}
def z11on() {
"st cmd 0x${device.deviceNetworkId} 12 6 1 {}"
return manual() + "st cmd 0x${device.deviceNetworkId} 12 6 1 {}"
}
def z11off() {
"st cmd 0x${device.deviceNetworkId} 12 6 0 {}"
}
def z12on() {
"st cmd 0x${device.deviceNetworkId} 13 6 1 {}"
return manual() + "st cmd 0x${device.deviceNetworkId} 13 6 1 {}"
}
def z12off() {
"st cmd 0x${device.deviceNetworkId} 13 6 0 {}"
}
def z13on() {
"st cmd 0x${device.deviceNetworkId} 14 6 1 {}"
return manual() + "st cmd 0x${device.deviceNetworkId} 14 6 1 {}"
}
def z13off() {
"st cmd 0x${device.deviceNetworkId} 14 6 0 {}"
}
def z14on() {
"st cmd 0x${device.deviceNetworkId} 15 6 1 {}"
return manual() + "st cmd 0x${device.deviceNetworkId} 15 6 1 {}"
}
def z14off() {
"st cmd 0x${device.deviceNetworkId} 15 6 0 {}"
}
def z15on() {
"st cmd 0x${device.deviceNetworkId} 16 6 1 {}"
return manual() + "st cmd 0x${device.deviceNetworkId} 16 6 1 {}"
}
def z15off() {
"st cmd 0x${device.deviceNetworkId} 16 6 0 {}"
}
def z16on() {
"st cmd 0x${device.deviceNetworkId} 17 6 1 {}"
return manual() + "st cmd 0x${device.deviceNetworkId} 17 6 1 {}"
}
def z16off() {
"st cmd 0x${device.deviceNetworkId} 17 6 0 {}"
}
}

View File

@@ -22,7 +22,7 @@ metadata
{
standardTile("mainTile", "device.status", width: 1, height: 1, icon: "st.Entertainment.entertainment11")
{
state "default", label: "Simple Sync", icon: "st.Home.home2", backgroundColor: "#55A7FF"
state "default", label: "Simple Sync", icon: "st.Home.home2", backgroundColor: "#00a0dc"
}
def detailTiles = ["mainTile"]

View File

@@ -82,8 +82,8 @@ metadata {
tiles(scale: 2) {
multiAttributeTile(name:"motion", type: "generic", width: 6, height: 4){
tileAttribute ("device.motion", key: "PRIMARY_CONTROL") {
attributeState "active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#53a7c0"
attributeState "inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#ffffff"
attributeState "active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#00A0DC"
attributeState "inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#cccccc"
}
}
valueTile("temperature", "device.temperature", inactiveLabel: false, width: 2, height: 2) {

View File

@@ -0,0 +1,2 @@
.st-ignore
README.md

View File

@@ -0,0 +1,43 @@
# Aeon Multisensor Gen5
Cloud Execution
Works with:
* [Aeon Labs MultiSensor (Gen 5)](https://www.smartthings.com/works-with-smartthings/sensors/aeon-labs-multisensor-gen-5)
## Table of contents
* [Capabilities](#capabilities)
* [Health](#device-health)
* [Troubleshooting](#troubleshooting)
## Capabilities
* **Motion Sensor** - can detect motion
* **Temperature Measurement** - defines device measures current temperature
* **Relative Humidity Measurement** - allow reading the relative humidity from devices that support it
* **Illuminance Measurement** - gives the illuminance reading from devices that support it
* **Configuration** - _configure()_ command called when device is installed or device preferences updated
* **Sensor** - detects sensor events
* **Battery** - defines device uses a battery
* **Health Check** - indicates ability to get device health notifications
## Device Health
Aeon Labs MultiSensor (Gen 5) is polled by the hub.
As of hubCore version 0.14.38 the hub sends up reports every 15 minutes regardless of whether the state changed.
Device-Watch allows 2 check-in misses from device plus some lag time. So Check-in interval = (2*15 + 2)mins = 32 mins.
Not to mention after going OFFLINE when the device is plugged back in, it might take a considerable amount of time for
the device to appear as ONLINE again. This is because if this listening device does not respond to two poll requests in a row,
it is not polled for 5 minutes by the hub. This can delay up the process of being marked ONLINE by quite some time.
* __32min__ checkInterval
## Troubleshooting
If the device doesn't pair when trying from the SmartThings mobile app, it is possible that the device is out of range.
Pairing needs to be tried again by placing the device closer to the hub.
Instructions related to pairing, resetting and removing the device from SmartThings can be found in the following link:
* [Aeon Labs MultiSensor (Gen 5) Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/206157226-Aeon-Labs-MultiSensor-Gen-5-)

View File

@@ -20,10 +20,12 @@ metadata {
capability "Configuration"
capability "Sensor"
capability "Battery"
capability "Health Check"
command "configureAfterSecure"
fingerprint deviceId: "0x0701", inClusters: "0x5E,0x86,0x72,0x59,0x85,0x73,0x71,0x84,0x80,0x30,0x31,0x70,0x98,0x7A", outClusters:"0x5A"
fingerprint mfr:"0086", prod:"0102", model:"004A", deviceJoinName: "Aeon Labs MultiSensor (Gen 5)"
}
simulator {
@@ -64,8 +66,8 @@ metadata {
tiles(scale: 2) {
multiAttributeTile(name:"motion", type: "generic", width: 6, height: 4){
tileAttribute ("device.motion", key: "PRIMARY_CONTROL") {
attributeState "active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#53a7c0"
attributeState "inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#ffffff"
attributeState "active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#00a0dc"
attributeState "inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#cccccc"
}
}
valueTile("temperature", "device.temperature", inactiveLabel: false, width: 2, height: 2) {
@@ -98,6 +100,11 @@ metadata {
}
}
def updated(){
// Device-Watch simply pings if no device events received for 32min(checkInterval)
sendEvent(name: "checkInterval", value: 2 * 15 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID])
}
def parse(String description)
{
def result = null
@@ -244,6 +251,13 @@ def configureAfterSecure() {
secureSequence(request) + ["delay 20000", zwave.wakeUpV1.wakeUpNoMoreInformation().format()]
}
/**
* PING is used by Device-Watch in attempt to reach the Device
* */
def ping() {
secure(zwave.batteryV1.batteryGet())
}
def configure() {
// log.debug "configure()"
//["delay 30000"] + secure(zwave.securityV1.securityCommandsSupportedGet())

View File

@@ -59,8 +59,8 @@ metadata {
tiles(scale: 2) {
multiAttributeTile(name:"motion", type: "generic", width: 6, height: 4){
tileAttribute ("device.motion", key: "PRIMARY_CONTROL") {
attributeState "active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#53a7c0"
attributeState "inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#ffffff"
attributeState "active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#00a0dc"
attributeState "inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#cccccc"
}
}
valueTile("temperature", "device.temperature", inactiveLabel: false, width: 2, height: 2) {

View File

@@ -53,7 +53,7 @@ metadata {
// tile definitions
tiles {
standardTile("switch", "device.switch", width: 2, height: 2, canChangeIcon: true) {
state "on", label: '${name}', action: "switch.off", icon: "st.switches.switch.on", backgroundColor: "#79b821"
state "on", label: '${name}', action: "switch.off", icon: "st.switches.switch.on", backgroundColor: "#00A0DC"
state "off", label: '${name}', action: "switch.on", icon: "st.switches.switch.off", backgroundColor: "#ffffff"
}
valueTile("power", "device.power", decoration: "flat") {

View File

@@ -0,0 +1,2 @@
.st-ignore
README.md

View File

@@ -0,0 +1,37 @@
# Aeon Siren
Cloud Execution
Works with:
* [Aeon Labs Siren (Gen 5)](https://www.smartthings.com/works-with-smartthings/aeon-labs/aeon-labs-siren-gen-5)
## Table of contents
* [Capabilities](#capabilities)
* [Health](#device-health)
## Capabilities
* **Actuator** - represents that a Device has commands
* **Alarm** - allows for interacting with devices that serve as alarms
* **Switch** - can detect state (possible values: on/off)
* **Health Check** - indicates ability to get device health notifications
## Device Health
Aeon Labs Siren (Gen 5) is polled by the hub.
As of hubCore version 0.14.38 the hub sends up reports every 15 minutes regardless of whether the state changed.
Device-Watch allows 2 check-in misses from device plus some lag time. So Check-in interval = (2*15 + 2)mins = 32 mins.
Not to mention after going OFFLINE when the device is plugged back in, it might take a considerable amount of time for
the device to appear as ONLINE again. This is because if this listening device does not respond to two poll requests in a row,
it is not polled for 5 minutes by the hub. This can delay up the process of being marked ONLINE by quite some time.
* __32min__ checkInterval
## Troubleshooting
If the device doesn't pair when trying from the SmartThings mobile app, it is possible that the device is out of range.
Pairing needs to be tried again by placing the device closer to the hub.
Instructions related to pairing, resetting and removing the device from SmartThings can be found in the following link:
* [Aeon Labs Siren (Gen 5) Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/204555240-Aeon-Labs-Siren-Gen-5-)

View File

@@ -20,10 +20,11 @@ metadata {
capability "Actuator"
capability "Alarm"
capability "Switch"
capability "Health Check"
command "test"
fingerprint deviceId: "0x1005", inClusters: "0x5E,0x98"
fingerprint deviceId: "0x1005", inClusters: "0x5E,0x98", deviceJoinName: "Aeon Labs Siren (Gen 5)"
}
simulator {
@@ -58,6 +59,9 @@ metadata {
}
def updated() {
// Device-Watch simply pings if no device events received for 32min(checkInterval)
sendEvent(name: "checkInterval", value: 2 * 15 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID])
if(!state.sound) state.sound = 1
if(!state.volume) state.volume = 3
@@ -148,3 +152,10 @@ def test() {
private secure(physicalgraph.zwave.Command cmd) {
zwave.securityV1.securityMessageEncapsulation().encapsulate(cmd).format()
}
/**
* PING is used by Device-Watch in attempt to reach the Device
* */
def ping() {
secure(zwave.basicV1.basicGet())
}

View File

@@ -42,8 +42,8 @@ metadata {
tiles {
standardTile("presence", "device.presence", width: 2, height: 2, canChangeBackground: true) {
state "present", labelIcon:"st.presence.tile.present", backgroundColor:"#53a7c0"
state "not present", labelIcon:"st.presence.tile.not-present", backgroundColor:"#ebeef2"
state "present", labelIcon:"st.presence.tile.present", backgroundColor:"#00a0dc"
state "not present", labelIcon:"st.presence.tile.not-present", backgroundColor:"#ffffff"
}
standardTile("beep", "device.beep", decoration: "flat") {
state "beep", label:'', action:"tone.beep", icon:"st.secondary.beep", backgroundColor:"#ffffff"

View File

@@ -67,10 +67,10 @@ metadata {
}
standardTile("switch", "device.switch", width: 1, height: 1, canChangeIcon: true) {
state "on", label: '${name}', action: "forceOff", icon: "st.Electronics.electronics16", backgroundColor: "#79b821", nextState:"turningOff"
state "on", label: '${name}', action: "forceOff", icon: "st.Electronics.electronics16", backgroundColor: "#00a0dc", nextState:"turningOff"
state "turningOff", label:'TURNING OFF', icon:"st.Electronics.electronics16", backgroundColor:"#ffffff"
state "off", label: '${name}', action: "forceOn", icon: "st.Electronics.electronics16", backgroundColor: "#ffffff", nextState:"turningOn"
state "turningOn", label:'TURNING ON', icon:"st.Electronics.electronics16", backgroundColor:"#79b821"
state "turningOn", label:'TURNING ON', icon:"st.Electronics.electronics16", backgroundColor:"#00a0dc"
}
valueTile("1", "device.station1", decoration: "flat", canChangeIcon: false) {
state "station1", label:'${currentValue}', action:"preset1"

View File

@@ -81,13 +81,13 @@ metadata {
state "fanCirculate", label:'${name}', action:"switchFanMode"
}
controlTile("heatSliderControl", "device.heatingSetpoint", "slider", height: 1, width: 2, inactiveLabel: false) {
state "setHeatingSetpoint", action:"quickSetHeat", backgroundColor:"#d04e00"
state "setHeatingSetpoint", action:"quickSetHeat", backgroundColor:"#e86d13"
}
valueTile("heatingSetpoint", "device.heatingSetpoint", inactiveLabel: false, decoration: "flat") {
state "heat", label:'${currentValue}° heat', backgroundColor:"#ffffff"
}
controlTile("coolSliderControl", "device.coolingSetpoint", "slider", height: 1, width: 2, inactiveLabel: false) {
state "setCoolingSetpoint", action:"quickSetCool", backgroundColor: "#1e9cbb"
state "setCoolingSetpoint", action:"quickSetCool", backgroundColor: "#00a0dc"
}
valueTile("coolingSetpoint", "device.coolingSetpoint", inactiveLabel: false, decoration: "flat") {
state "cool", label:'${currentValue}° cool', backgroundColor:"#ffffff"

View File

@@ -53,7 +53,7 @@ metadata {
tiles {
standardTile("switch", "device.switch", width: 2, height: 2, canChangeIcon: true) {
state "on", action:"switch.off", icon:"st.vents.vent-open-text", backgroundColor:"#53a7c0"
state "on", action:"switch.off", icon:"st.vents.vent-open-text", backgroundColor:"#00a0dc"
state "off", action:"switch.on", icon:"st.vents.vent-closed", backgroundColor:"#ffffff"
}
valueTile("battery", "device.battery", inactiveLabel: false, decoration: "flat") {

View File

@@ -56,9 +56,9 @@ metadata {
tiles {
standardTile("switch", "device.switch", width: 2, height: 2, canChangeIcon: true) {
state "on", label:'${name}', action:"switch.off", icon:"st.switches.switch.on", backgroundColor:"#79b821", nextState:"turningOff"
state "on", label:'${name}', action:"switch.off", icon:"st.switches.switch.on", backgroundColor:"#00a0dc", nextState:"turningOff"
state "off", label:'${name}', action:"switch.on", icon:"st.switches.switch.off", backgroundColor:"#ffffff", nextState:"turningOn"
state "turningOn", label:'${name}', action:"switch.off", icon:"st.switches.switch.on", backgroundColor:"#79b821", nextState:"turningOff"
state "turningOn", label:'${name}', action:"switch.off", icon:"st.switches.switch.on", backgroundColor:"#00a0dc", nextState:"turningOff"
state "turningOff", label:'${name}', action:"switch.on", icon:"st.switches.switch.off", backgroundColor:"#ffffff", nextState:"turningOn"
}
standardTile("refresh", "device.switch", inactiveLabel: false, decoration: "flat") {

View File

@@ -1,12 +1,12 @@
/**
* Device Type Definition File
*
* Device Type: Fibaro Flood Sensor
* File Name: fibaro-flood-sensor.groovy
* Initial Release: 2014-12-10
* @author: Todd Wackford
* Email: todd@wackford.net
* @version: 1.0
* Device Type: Fibaro Flood Sensor
* File Name: fibaro-flood-sensor.groovy
* Initial Release: 2014-12-10
* @author: Todd Wackford
* Email: todd@wackford.net
* @version: 1.0
*
* Copyright 2014 SmartThings
*
@@ -26,8 +26,8 @@
* not displayed to the user. We do this so we can receive events and display on device
* activity. If the user wants to display the tamper tile, adjust the tile display lines
* with the following:
* main(["water", "temperature", "tamper"])
* details(["water", "temperature", "battery", "tamper"])
* main(["water", "temperature", "tamper"])
* details(["water", "temperature", "battery", "tamper"])
*
* @param none
*
@@ -40,13 +40,17 @@ metadata {
capability "Configuration"
capability "Battery"
capability "Health Check"
command "resetParams2StDefaults"
command "listCurrentParams"
command "updateZwaveParam"
command "test"
capability "Sensor"
command "resetParams2StDefaults"
command "listCurrentParams"
command "updateZwaveParam"
command "test"
fingerprint deviceId: "0xA102", inClusters: "0x30,0x9C,0x60,0x85,0x8E,0x72,0x70,0x86,0x80,0x84"
fingerprint mfr:"010F", prod:"0000", model:"2002"
fingerprint mfr:"010F", prod:"0000", model:"1002"
fingerprint mfr:"010F", prod:"0B00", model:"1001"
}
simulator {
@@ -73,7 +77,7 @@ metadata {
tiles {
standardTile("water", "device.water", width: 2, height: 2) {
state "dry", icon:"st.alarm.water.dry", backgroundColor:"#ffffff"
state "wet", icon:"st.alarm.water.wet", backgroundColor:"#53a7c0"
state "wet", icon:"st.alarm.water.wet", backgroundColor:"#00a0dc"
}
valueTile("temperature", "device.temperature", inactiveLabel: false) {
state "temperature", label:'${currentValue}°',
@@ -87,9 +91,9 @@ metadata {
[value: 96, color: "#bc2323"]
]
}
standardTile("tamper", "device.tamper") {
state("secure", label:"secure", icon:"st.locks.lock.locked", backgroundColor:"#ffffff")
state("tampered", label:"tampered", icon:"st.locks.lock.unlocked", backgroundColor:"#53a7c0")
standardTile("tamper", "device.tamper") {
state("secure", label:"secure", icon:"st.locks.lock.locked", backgroundColor:"#ffffff")
state("tampered", label:"tampered", icon:"st.locks.lock.unlocked", backgroundColor:"#00a0dc")
}
valueTile("battery", "device.battery", inactiveLabel: false, decoration: "flat") {
state "battery", label:'${currentValue}% battery', unit:""
@@ -107,26 +111,17 @@ metadata {
def parse(String description)
{
def result = []
if (description == "updated") {
if (!state.MSR) {
result << response(zwave.wakeUpV1.wakeUpIntervalSet(seconds: 60*60, nodeid:zwaveHubNodeId))
result << response(zwave.manufacturerSpecificV2.manufacturerSpecificGet())
}
} else {
def cmd = zwave.parse(description, [0x31: 2, 0x30: 1, 0x70: 2, 0x71: 1, 0x84: 1, 0x80: 1, 0x9C: 1, 0x72: 2, 0x56: 2, 0x60: 3])
if (cmd) {
result += zwaveEvent(cmd) //createEvent(zwaveEvent(cmd))
}
}
result << response(zwave.batteryV1.batteryGet().format())
if ( result[0] != null ) {
def cmd = zwave.parse(description, [0x31: 2, 0x30: 1, 0x70: 2, 0x71: 1, 0x84: 1, 0x80: 1, 0x9C: 1, 0x72: 2, 0x56: 2, 0x60: 3])
if (cmd) {
result += zwaveEvent(cmd) //createEvent(zwaveEvent(cmd))
}
if ( result[0] != null ) {
log.debug "Parse returned ${result}"
result
}
}
}
@@ -143,10 +138,9 @@ def zwaveEvent(physicalgraph.zwave.commands.wakeupv1.WakeUpNotification cmd) {
def result = [createEvent(descriptionText: "${device.displayName} woke up", isStateChange: false)]
if (!isConfigured()) {
// we're still in the process of configuring a newly joined device
result += lateConfigure(true)
result << lateConfigure(true)
} else {
result += response(zwave.wakeUpV1.wakeUpNoMoreInformation())
log.debug "We're done with WakeUp!"
result << response(zwave.wakeUpV1.wakeUpNoMoreInformation())
}
result
}
@@ -154,7 +148,7 @@ def zwaveEvent(physicalgraph.zwave.commands.wakeupv1.WakeUpNotification cmd) {
def zwaveEvent(physicalgraph.zwave.commands.sensormultilevelv2.SensorMultilevelReport cmd)
{
def map = [:]
switch (cmd.sensorType) {
case 1:
// temperature
@@ -185,7 +179,7 @@ def zwaveEvent(physicalgraph.zwave.commands.sensorbinaryv1.SensorBinaryReport cm
def map = [:]
map.value = cmd.sensorValue ? "active" : "inactive"
map.name = "acceleration"
if (map.value == "active") {
map.descriptionText = "$device.displayName detected vibration"
}
@@ -200,49 +194,49 @@ def zwaveEvent(physicalgraph.zwave.commands.configurationv2.ConfigurationReport
}
def zwaveEvent(physicalgraph.zwave.commands.basicv1.BasicSet cmd) {
log.debug "BasicSet with CMD = ${cmd}"
if (!isConfigured()) {
def result = []
def map = [:]
map.name = "water"
log.debug "BasicSet with CMD = ${cmd}"
if (!isConfigured()) {
def result = []
def map = [:]
map.name = "water"
map.value = cmd.value ? "wet" : "dry"
map.descriptionText = "${device.displayName} is ${map.value}"
// If we are getting a BasicSet, and isConfigured == false, then we are likely NOT properly configured.
result += lateConfigure(true)
result << createEvent(map)
result
}
// If we are getting a BasicSet, and isConfigured == false, then we are likely NOT properly configured.
result += lateConfigure(true)
result << createEvent(map)
result
}
}
def zwaveEvent(physicalgraph.zwave.commands.sensoralarmv1.SensorAlarmReport cmd)
{
def map = [:]
if (cmd.sensorType == 0x05) {
map.name = "water"
map.value = cmd.sensorState ? "wet" : "dry"
map.descriptionText = "${device.displayName} is ${map.value}"
log.debug "CMD = SensorAlarmReport: ${cmd}"
setConfigured()
} else if ( cmd.sensorType == 0) {
map.name = "tamper"
map.isStateChange = true
map.value = cmd.sensorState ? "tampered" : "secure"
map.descriptionText = "${device.displayName} has been tampered with"
runIn(30, "resetTamper") //device does not send alarm cancelation
} else if ( cmd.sensorType == 1) {
map.name = "tamper"
map.value = cmd.sensorState ? "tampered" : "secure"
map.descriptionText = "${device.displayName} has been tampered with"
runIn(30, "resetTamper") //device does not send alarm cancelation
log.debug "CMD = SensorAlarmReport: ${cmd}"
setConfigured()
} else if ( cmd.sensorType == 0) {
map.name = "tamper"
map.isStateChange = true
map.value = cmd.sensorState ? "tampered" : "secure"
map.descriptionText = "${device.displayName} has been tampered with"
runIn(30, "resetTamper") //device does not send alarm cancelation
} else if ( cmd.sensorType == 1) {
map.name = "tamper"
map.value = cmd.sensorState ? "tampered" : "secure"
map.descriptionText = "${device.displayName} has been tampered with"
runIn(30, "resetTamper") //device does not send alarm cancelation
} else {
map.descriptionText = "${device.displayName}: ${cmd}"
}
@@ -251,10 +245,10 @@ def zwaveEvent(physicalgraph.zwave.commands.sensoralarmv1.SensorAlarmReport cmd)
def resetTamper() {
def map = [:]
map.name = "tamper"
map.value = "secure"
map.descriptionText = "$device.displayName is secure"
sendEvent(map)
map.name = "tamper"
map.value = "secure"
map.descriptionText = "$device.displayName is secure"
sendEvent(map)
}
def zwaveEvent(physicalgraph.zwave.Command cmd) {
@@ -268,10 +262,10 @@ def zwaveEvent(physicalgraph.zwave.commands.manufacturerspecificv2.ManufacturerS
def msr = String.format("%04X-%04X-%04X", cmd.manufacturerId, cmd.productTypeId, cmd.productId)
log.debug "msr: $msr"
device.updateDataValue(["MSR", msr])
if ( msr == "010F-0B00-2001" ) { //this is the msr and device type for the fibaro flood sensor
result += lateConfigure(true)
}
if ( msr == "010F-0B00-2001" ) { //this is the msr and device type for the fibaro flood sensor
result += lateConfigure(true)
}
result << createEvent(descriptionText: "$device.displayName MSR: $msr", isStateChange: false)
result
@@ -283,17 +277,17 @@ def setConfigured() {
def isConfigured() {
Boolean configured = device.getDataValue(["configured"]) as Boolean
return configured
return configured
}
def lateConfigure(setConf = False) {
def res = response(configure())
if (setConf)
setConfigured()
return res
if (setConf)
setConfigured()
return res
}
/**
@@ -305,29 +299,34 @@ def lateConfigure(setConf = False) {
*/
def configure() {
log.debug "Configuring Device..."
// Device-Watch simply pings if no device events received for 8 hrs & 2 minutes
// Device wakes up every 4 hours, this interval allows us to miss one wakeup notification before marking offline
sendEvent(name: "checkInterval", value: 8 * 60 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID])
def cmds = []
// send associate to group 2 to get alarm data
cmds << zwave.associationV2.associationSet(groupingIdentifier:2, nodeId:[zwaveHubNodeId]).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [255], parameterNumber: 5, size: 1).format()
// send associate to group 3 to get sensor data reported only to hub
cmds << zwave.associationV2.associationSet(groupingIdentifier:3, nodeId:[zwaveHubNodeId]).format()
// default initial state
sendEvent(name: "water", value: "dry")
// temp hysteresis set to .5 degrees celcius
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,50], parameterNumber: 12, size: 2).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 12).format()
def cmds = []
// send associate to group 2 to get alarm data
cmds << zwave.associationV2.associationSet(groupingIdentifier:2, nodeId:[zwaveHubNodeId]).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [255], parameterNumber: 5, size: 1).format()
// send associate to group 3 to get sensor data reported only to hub
cmds << zwave.associationV2.associationSet(groupingIdentifier:3, nodeId:[zwaveHubNodeId]).format()
// reporting frequency of temps and battery set to one hour
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,60*60], parameterNumber: 10, size: 2).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 10).format()
cmds << zwave.wakeUpV1.wakeUpNoMoreInformation().format()
// cmds << zwave.configurationV1.configurationGet(parameterNumber: 10).format()
// temp hysteresis set to .5 degrees celcius
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,50], parameterNumber: 12, size: 2).format()
// cmds << zwave.configurationV1.configurationGet(parameterNumber: 12).format()
cmds << zwave.batteryV1.batteryGet().format()
cmds << zwave.wakeUpV1.wakeUpNoMoreInformation().format()
delayBetween(cmds, 100)
}
@@ -353,18 +352,18 @@ def test() {
* @return none
*/
def updateZwaveParam(params) {
if ( params ) {
def pNumber = params.paramNumber
def pSize = params.size
def pValue = [params.value]
log.debug "Make sure device is awake and in recieve mode (triple-click?)"
log.debug "Updating ${device.displayName} parameter number '${pNumber}' with value '${pValue}' with size of '${pSize}'"
if ( params ) {
def pNumber = params.paramNumber
def pSize = params.size
def pValue = [params.value]
log.debug "Make sure device is awake and in recieve mode (triple-click?)"
log.debug "Updating ${device.displayName} parameter number '${pNumber}' with value '${pValue}' with size of '${pSize}'"
def cmds = []
cmds << zwave.configurationV1.configurationSet(configurationValue: pValue, parameterNumber: pNumber, size: pSize).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: pNumber).format()
delayBetween(cmds, 1000)
}
cmds << zwave.configurationV1.configurationSet(configurationValue: pValue, parameterNumber: pNumber, size: pSize).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: pNumber).format()
delayBetween(cmds, 1000)
}
}
/**
@@ -381,26 +380,26 @@ def updateZwaveParam(params) {
def resetParams2StDefaults() {
log.debug "Resetting ${device.displayName} parameters to SmartThings compatible defaults"
def cmds = []
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,0], parameterNumber: 1, size: 2).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [3], parameterNumber: 2, size: 1).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [255], parameterNumber: 5, size: 1).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [255], parameterNumber: 7, size: 1).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [1], parameterNumber: 9, size: 1).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,60*60], parameterNumber: 10, size: 2).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,50], parameterNumber: 12, size: 2).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0], parameterNumber: 13, size: 1).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [5,220], parameterNumber: 50, size: 2).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [13,172], parameterNumber: 51, size: 2).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,0,0,225], parameterNumber: 61, size: 4).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,255,0,0], parameterNumber: 62, size: 4).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [2], parameterNumber: 63, size: 1).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,0], parameterNumber: 73, size: 2).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [2], parameterNumber: 74, size: 1).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,0], parameterNumber: 75, size: 2).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,0], parameterNumber: 76, size: 2).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0], parameterNumber: 77, size: 1).format()
delayBetween(cmds, 1200)
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,0], parameterNumber: 1, size: 2).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [3], parameterNumber: 2, size: 1).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [255], parameterNumber: 5, size: 1).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [255], parameterNumber: 7, size: 1).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [1], parameterNumber: 9, size: 1).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,60*60], parameterNumber: 10, size: 2).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,50], parameterNumber: 12, size: 2).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0], parameterNumber: 13, size: 1).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [5,220], parameterNumber: 50, size: 2).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [13,172], parameterNumber: 51, size: 2).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,0,0,225], parameterNumber: 61, size: 4).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,255,0,0], parameterNumber: 62, size: 4).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [2], parameterNumber: 63, size: 1).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,0], parameterNumber: 73, size: 2).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [2], parameterNumber: 74, size: 1).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,0], parameterNumber: 75, size: 2).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0,0], parameterNumber: 76, size: 2).format()
cmds << zwave.configurationV1.configurationSet(configurationValue: [0], parameterNumber: 77, size: 1).format()
delayBetween(cmds, 1200)
}
/**
@@ -417,25 +416,25 @@ def resetParams2StDefaults() {
def listCurrentParams() {
log.debug "Listing of current parameter settings of ${device.displayName}"
def cmds = []
cmds << zwave.configurationV1.configurationGet(parameterNumber: 1).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 2).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 5).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 7).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 9).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 10).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 12).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 13).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 50).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 51).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 61).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 62).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 63).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 73).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 74).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 75).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 76).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 77).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 1).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 2).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 5).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 7).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 9).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 10).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 12).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 13).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 50).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 51).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 61).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 62).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 63).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 73).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 74).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 75).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 76).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 77).format()
delayBetween(cmds, 1200)
}

View File

@@ -82,8 +82,8 @@
tiles {
standardTile("motion", "device.motion", width: 2, height: 2) {
state "active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#53a7c0"
state "inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#ffffff"
state "active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#00a0dc"
state "inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#cccccc"
}
valueTile("temperature", "device.temperature", inactiveLabel: false) {
state "temperature", label:'${currentValue}°',

View File

@@ -0,0 +1,2 @@
.st-ignore
README.md

View File

@@ -0,0 +1,39 @@
# FortrezZ Water Valve
Cloud Execution
Works with:
* [FortrezZ Water Valve](https://www.smartthings.com/works-with-smartthings/other/fortrezz-water-valve)
## Table of contents
* [Capabilities](#capabilities)
* [Health](#device-health)
* [Troubleshooting](#troubleshooting)
## Capabilities
* **Actuator** - represents that a Device has commands
* **Health Check** - indicates ability to get device health notifications
* **Valve** - allows for the control of a valve device
* **Refresh** - _refresh()_ command for status updates
* **Sensor** - detects sensor events
## Device Health
FortrezZ Water Valve is polled by the hub.
As of hubCore version 0.14.38 the hub sends up reports every 15 minutes regardless of whether the state changed.
Device-Watch allows 2 check-in misses from device plus some lag time. So Check-in interval = (2*15 + 2)mins = 32 mins.
Not to mention after going OFFLINE when the device is plugged back in, it might take a considerable amount of time for
the device to appear as ONLINE again. This is because if this listening device does not respond to two poll requests in a row,
it is not polled for 5 minutes by the hub. This can delay up the process of being marked ONLINE by quite some time.
* __32min__ checkInterval
## Troubleshooting
If the device doesn't pair when trying from the SmartThings mobile app, it is possible that the device is out of range.
Pairing needs to be tried again by placing the device closer to the hub.
Instructions related to pairing, resetting and removing the device from SmartThings can be found in the following link:
* [FortrezZ Water Valve Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/202088434-FortrezZ-Water-Valve-Shutoff)

View File

@@ -14,11 +14,13 @@
metadata {
definition (name: "Fortrezz Water Valve", namespace: "smartthings", author: "SmartThings") {
capability "Actuator"
capability "Health Check"
capability "Valve"
capability "Refresh"
capability "Sensor"
fingerprint deviceId: "0x1000", inClusters: "0x25,0x72,0x86,0x71,0x22,0x70"
fingerprint mfr:"0084", prod:"0213", model:"0215", deviceJoinName: "FortrezZ Water Valve"
}
// simulator metadata
@@ -48,6 +50,11 @@ metadata {
}
}
def updated(){
// Device-Watch simply pings if no device events received for 32min(checkInterval)
sendEvent(name: "checkInterval", value: 2 * 15 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID])
}
def parse(String description) {
log.trace description
def result = null
@@ -76,6 +83,13 @@ def close() {
zwave.switchBinaryV1.switchBinarySet(switchValue: 0xFF).format()
}
/**
* PING is used by Device-Watch in attempt to reach the Device
* */
def ping() {
refresh()
}
def refresh() {
zwave.switchBinaryV1.switchBinaryGet().format()
}

View File

@@ -39,8 +39,8 @@ metadata {
tiles {
standardTile("motion", "device.motion", width: 2, height: 2) {
state "active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#53a7c0"
state "inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#ffffff"
state "active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#00A0DC"
state "inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#cccccc"
}
valueTile("temperature", "device.temperature", inactiveLabel: false) {
state "temperature", label:'${currentValue}°',

View File

@@ -21,6 +21,7 @@ metadata {
capability "Configuration"
capability "Battery"
capability "Refresh"
capability "Sensor"
command "enrollResponse"
@@ -31,8 +32,8 @@ metadata {
tiles {
standardTile("motion", "device.motion", width: 2, height: 2) {
state("active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#53a7c0")
state("inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#ffffff")
state("active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#00A0DC")
state("inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#cccccc")
}
valueTile("battery", "device.battery", decoration: "flat", inactiveLabel: false) {

View File

@@ -24,6 +24,7 @@ metadata {
capability "Contact Sensor"
capability "Refresh"
capability "Health Check"
capability "Sensor"
command "enrollResponse"
@@ -41,8 +42,8 @@ metadata {
tiles {
standardTile("contact", "device.contact", width: 2, height: 2) {
state("open", label:'${name}', icon:"st.contact.contact.open", backgroundColor:"#ffa81e")
state("closed", label:'${name}', icon:"st.contact.contact.closed", backgroundColor:"#79b821")
state("open", label:'${name}', icon:"st.contact.contact.open", backgroundColor:"#e86d13")
state("closed", label:'${name}', icon:"st.contact.contact.closed", backgroundColor:"#00a0dc")
}
valueTile("battery", "device.battery", decoration: "flat", inactiveLabel: false) {

View File

@@ -16,7 +16,7 @@
* Date: 2013-03-05
*/
metadata {
definition (name: "SmartAlert Siren", namespace: "smartthings", author: "SmartThings") {
definition (name: "SmartAlert Siren", namespace: "smartthings", author: "SmartThings", ocfDeviceType: "x.com.st.smokedetector") {
capability "Actuator"
capability "Switch"
capability "Sensor"

View File

@@ -16,7 +16,7 @@
* Date: 2013-12-04
*/
metadata {
definition (name: "SmartPower Dimming Outlet", namespace: "smartthings", author: "SmartThings") {
definition (name: "SmartPower Dimming Outlet", namespace: "smartthings", author: "SmartThings", ocfDeviceType: "oic.d.smartplug") {
capability "Switch"
capability "Switch Level"
capability "Power Meter"

View File

@@ -15,7 +15,7 @@
*/
metadata {
// Automatically generated. Make future change here.
definition(name: "SmartPower Outlet", namespace: "smartthings", author: "SmartThings") {
definition(name: "SmartPower Outlet", namespace: "smartthings", author: "SmartThings", ocfDeviceType: "oic.d.smartplug") {
capability "Actuator"
capability "Switch"
capability "Power Meter"

View File

@@ -33,6 +33,7 @@ metadata {
fingerprint inClusters: "0000,0001,0003,0402,0500,0020,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "3315"
fingerprint inClusters: "0000,0001,0003,0402,0500,0020,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "3315-Seu", deviceJoinName: "Water Leak Sensor"
fingerprint inClusters: "0000,0001,0003,0020,0402,0500,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "3315-L", deviceJoinName: "Iris Smart Water Sensor"
fingerprint inClusters: "0000,0001,0003,0020,0402,0500,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "3315-G", deviceJoinName: "Centralite Water Sensor"
fingerprint inClusters: "0000,0001,0003,000F,0020,0402,0500", outClusters: "0019", manufacturer: "SmartThings", model: "moisturev4", deviceJoinName: "Water Leak Sensor"
}
@@ -58,7 +59,7 @@ metadata {
multiAttributeTile(name: "water", type: "generic", width: 6, height: 4) {
tileAttribute("device.water", key: "PRIMARY_CONTROL") {
attributeState "dry", label: "Dry", icon: "st.alarm.water.dry", backgroundColor: "#ffffff"
attributeState "wet", label: "Wet", icon: "st.alarm.water.wet", backgroundColor: "#53a7c0"
attributeState "wet", label: "Wet", icon: "st.alarm.water.wet", backgroundColor: "#00A0DC"
}
}
valueTile("temperature", "device.temperature", inactiveLabel: false, width: 2, height: 2) {
@@ -106,6 +107,12 @@ def parse(String description) {
}
}
}
} else if (map.name == "temperature") {
if (tempOffset) {
map.value = (int) map.value + (int) tempOffset
}
map.descriptionText = temperatureScale == 'C' ? '{{ device.displayName }} was {{ value }}°C' : '{{ device.displayName }} was {{ value }}°F'
map.translatable = true
}
log.debug "Parse returned $map"

View File

@@ -34,6 +34,7 @@ metadata {
fingerprint inClusters: "0000,0001,0003,0402,0500,0020,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "3325"
fingerprint inClusters: "0000,0001,0003,0402,0500,0020,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "3326"
fingerprint inClusters: "0000,0001,0003,0402,0500,0020,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "3326-L", deviceJoinName: "Iris Motion Sensor"
fingerprint inClusters: "0000,0001,0003,0020,0402,0500,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "3328-G", deviceJoinName: "Centralite Micro Motion Sensor"
fingerprint inClusters: "0000,0001,0003,000F,0020,0402,0500", outClusters: "0019", manufacturer: "SmartThings", model: "motionv4", deviceJoinName: "Motion Sensor"
fingerprint inClusters: "0000,0001,0003,000F,0020,0402,0500", outClusters: "0019", manufacturer: "SmartThings", model: "motionv5", deviceJoinName: "Motion Sensor"
}
@@ -112,6 +113,12 @@ def parse(String description) {
map = getMotionResult(value)
}
}
} else if (map.name == "temperature") {
if (tempOffset) {
map.value = (int) map.value + (int) tempOffset
}
map.descriptionText = temperatureScale == 'C' ? '{{ device.displayName }} was {{ value }}°C' : '{{ device.displayName }} was {{ value }}°F'
map.translatable = true
}
log.debug "Parse returned $map"

View File

@@ -30,8 +30,8 @@ metadata {
tiles(scale: 2) {
multiAttributeTile(name:"motion", type: "generic", width: 6, height: 4){
tileAttribute ("device.motion", key: "PRIMARY_CONTROL") {
attributeState "active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#53a7c0"
attributeState "inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#ffffff"
attributeState "active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#00A0DC"
attributeState "inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#cccccc"
}
}
valueTile("battery", "device.battery", decoration: "flat", inactiveLabel: false, width: 2, height: 2) {

View File

@@ -33,6 +33,7 @@ metadata {
fingerprint inClusters: "0000,0001,0003,0402,0500,0020,0B05,FC02", outClusters: "0019", manufacturer: "CentraLite", model: "3320"
fingerprint inClusters: "0000,0001,0003,0402,0500,0020,0B05,FC02", outClusters: "0019", manufacturer: "CentraLite", model: "3321"
fingerprint inClusters: "0000,0001,0003,0402,0500,0020,0B05,FC02", outClusters: "0019", manufacturer: "CentraLite", model: "3321-S", deviceJoinName: "Multipurpose Sensor"
fingerprint inClusters: "0000,0001,0003,0020,0402,0500,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "3323-G", deviceJoinName: "Centralite Micro Door Sensor"
fingerprint inClusters: "0000,0001,0003,000F,0020,0402,0500,FC02", outClusters: "0019", manufacturer: "SmartThings", model: "multiv4", deviceJoinName: "Multipurpose Sensor"
attribute "status", "string"

View File

@@ -52,14 +52,14 @@ metadata {
tiles(scale: 2) {
multiAttributeTile(name:"contact", type: "generic", width: 6, height: 4){
tileAttribute ("device.contact", key: "PRIMARY_CONTROL") {
attributeState "open", label:'${name}', icon:"st.contact.contact.open", backgroundColor:"#ffa81e"
attributeState "closed", label:'${name}', icon:"st.contact.contact.closed", backgroundColor:"#79b821"
attributeState "open", label:'${name}', icon:"st.contact.contact.open", backgroundColor:"##e86d13"
attributeState "closed", label:'${name}', icon:"st.contact.contact.closed", backgroundColor:"#00a0dc"
}
}
standardTile("acceleration", "device.acceleration", width: 2, height: 2) {
state("active", label:'${name}', icon:"st.motion.acceleration.active", backgroundColor:"#53a7c0")
state("inactive", label:'${name}', icon:"st.motion.acceleration.inactive", backgroundColor:"#ffffff")
state("active", label:'${name}', icon:"st.motion.acceleration.active", backgroundColor:"#00a0dc")
state("inactive", label:'${name}', icon:"st.motion.acceleration.inactive", backgroundColor:"#cccccc")
}
valueTile("temperature", "device.temperature", width: 2, height: 2) {
state("temperature", label:'${currentValue}°',

View File

@@ -45,8 +45,8 @@ metadata {
tiles(scale: 2) {
multiAttributeTile(name: "contact", type: "generic", width: 6, height: 4) {
tileAttribute("device.contact", key: "PRIMARY_CONTROL") {
attributeState "open", label: '${name}', icon: "st.contact.contact.open", backgroundColor: "#ffa81e"
attributeState "closed", label: '${name}', icon: "st.contact.contact.closed", backgroundColor: "#79b821"
attributeState "open", label: '${name}', icon: "st.contact.contact.open", backgroundColor: "#e86d13"
attributeState "closed", label: '${name}', icon: "st.contact.contact.closed", backgroundColor: "#00A0DC"
}
}
@@ -95,6 +95,12 @@ def parse(String description) {
}
}
}
} else if (map.name == "temperature") {
if (tempOffset) {
map.value = (int) map.value + (int) tempOffset
}
map.descriptionText = temperatureScale == 'C' ? '{{ device.displayName }} was {{ value }}°C' : '{{ device.displayName }} was {{ value }}°F'
map.translatable = true
}
log.debug "Parse returned $map"

View File

@@ -88,6 +88,12 @@ def parse(String description) {
log.warn "TEMP REPORTING CONFIG FAILED- error code: ${descMap.data[0]}"
}
}
} else if (map.name == "temperature") {
if (tempOffset) {
map.value = (int) map.value + (int) tempOffset
}
map.descriptionText = temperatureScale == 'C' ? '{{ device.displayName }} was {{ value }}°C' : '{{ device.displayName }} was {{ value }}°F'
map.translatable = true
}
log.debug "Parse returned $map"

View File

@@ -41,8 +41,8 @@ metadata {
tiles {
standardTile("contact", "device.contact", width: 2, height: 2) {
state("open", label:'${name}', icon:"st.contact.contact.open", backgroundColor:"#ffa81e")
state("closed", label:'${name}', icon:"st.contact.contact.closed", backgroundColor:"#79b821")
state("open", label:'${name}', icon:"st.contact.contact.open", backgroundColor:"#e86d13")
state("closed", label:'${name}', icon:"st.contact.contact.closed", backgroundColor:"#00A0DC")
}
valueTile("temperature", "device.temperature", inactiveLabel: false) {

View File

@@ -44,7 +44,7 @@ metadata {
tiles {
standardTile("button", "device.button", width: 2, height: 2) {
state "default", label: "", icon: "st.unknown.zwave.remote-controller", backgroundColor: "#ffffff"
state "button 1 pushed", label: "pushed #1", icon: "st.unknown.zwave.remote-controller", backgroundColor: "#79b821"
state "button 1 pushed", label: "pushed #1", icon: "st.unknown.zwave.remote-controller", backgroundColor: "#00A0DC"
}
valueTile("battery", "device.battery", decoration: "flat", inactiveLabel: false) {

View File

@@ -13,7 +13,7 @@
*/
metadata {
definition (name: "ZigBee Dimmer Power", namespace: "smartthings", author: "SmartThings") {
definition (name: "ZigBee Dimmer Power", namespace: "smartthings", author: "SmartThings", ocfDeviceType: "oic.d.switch") {
capability "Actuator"
capability "Configuration"
capability "Refresh"

View File

@@ -13,7 +13,7 @@
*/
metadata {
definition (name: "ZigBee Switch Power", namespace: "smartthings", author: "SmartThings") {
definition (name: "ZigBee Switch Power", namespace: "smartthings", author: "SmartThings", ocfDeviceType: "oic.d.switch") {
capability "Actuator"
capability "Configuration"
capability "Refresh"

View File

@@ -13,7 +13,7 @@
*/
metadata {
definition (name: "ZigBee Switch", namespace: "smartthings", author: "SmartThings") {
definition (name: "ZigBee Switch", namespace: "smartthings", author: "SmartThings", ocfDeviceType: "oic.d.switch") {
capability "Actuator"
capability "Configuration"
capability "Refresh"

View File

@@ -0,0 +1,169 @@
/**
* Copyright 2016 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.
*
*/
import groovy.transform.Field
@Field Boolean hasConfiguredHealthCheck = false
metadata {
definition (name: "ZLL White Color Temperature Bulb 5000K", namespace: "smartthings", author: "SmartThings") {
capability "Actuator"
capability "Color Temperature"
capability "Configuration"
capability "Polling"
capability "Refresh"
capability "Switch"
capability "Switch Level"
capability "Health Check"
attribute "colorName", "string"
command "setGenericName"
fingerprint profileId: "C05E", deviceId: "0220", inClusters: "0000, 0004, 0003, 0006, 0008, 0005, 0300", outClusters: "0019", manufacturer: "Eaton", model: "Halo_RL5601", deviceJoinName: "Halo RL56"
}
// UI tile definitions
tiles(scale: 2) {
multiAttributeTile(name:"switch", type: "lighting", width: 6, height: 4, canChangeIcon: true){
tileAttribute ("device.switch", key: "PRIMARY_CONTROL") {
attributeState "on", label:'${name}', action:"switch.off", icon:"st.switches.light.on", backgroundColor:"#00A0DC", nextState:"turningOff"
attributeState "off", label:'${name}', action:"switch.on", icon:"st.switches.light.off", backgroundColor:"#ffffff", nextState:"turningOn"
attributeState "turningOn", label:'${name}', action:"switch.off", icon:"st.switches.light.on", backgroundColor:"#00A0DC", nextState:"turningOff"
attributeState "turningOff", label:'${name}', action:"switch.on", icon:"st.switches.light.off", backgroundColor:"#ffffff", nextState:"turningOn"
}
tileAttribute ("device.level", key: "SLIDER_CONTROL") {
attributeState "level", action:"switch level.setLevel"
}
tileAttribute ("colorName", key: "SECONDARY_CONTROL") {
attributeState "colorName", label:'${currentValue}'
}
}
standardTile("refresh", "device.refresh", inactiveLabel: false, decoration: "flat", width: 2, height: 2) {
state "default", label:"", action:"refresh.refresh", icon:"st.secondary.refresh"
}
controlTile("colorTempSliderControl", "device.colorTemperature", "slider", width: 4, height: 2, inactiveLabel: false, range:"(2700..5000)") {
state "colorTemperature", action:"color temperature.setColorTemperature"
}
valueTile("colorTemp", "device.colorTemperature", inactiveLabel: false, decoration: "flat", width: 2, height: 2) {
state "colorTemperature", label: '${currentValue} K'
}
main(["switch"])
details(["switch", "colorTempSliderControl", "colorTemp", "refresh"])
}
}
// Parse incoming device messages to generate events
def parse(String description) {
log.debug "description is $description"
def event = zigbee.getEvent(description)
if (event) {
if (event.name == "colorTemperature") {
event.unit = "K"
}
sendEvent(event)
}
else {
log.warn "DID NOT PARSE MESSAGE for description : $description"
log.debug zigbee.parseDescriptionAsMap(description)
}
}
def off() {
zigbee.off() + ["delay 1500"] + zigbee.onOffRefresh()
}
def on() {
zigbee.on() + ["delay 1500"] + zigbee.onOffRefresh()
}
def setLevel(value) {
zigbee.setLevel(value) + zigbee.onOffRefresh() + zigbee.levelRefresh()
}
def refresh() {
def cmds = zigbee.onOffRefresh() + zigbee.levelRefresh() + zigbee.colorTemperatureRefresh()
// Do NOT config if the device is the Eaton Halo_LT01, it responds with "switch:off" to onOffConfig, and maybe other weird things with the others
if (!((device.getDataValue("manufacturer") == "Eaton") && (device.getDataValue("model") == "Halo_LT01"))) {
cmds = cmds + zigbee.onOffConfig() + zigbee.levelConfig() + zigbee.colorTemperatureConfig()
}
cmds
}
def poll() {
zigbee.onOffRefresh() + zigbee.levelRefresh() + zigbee.colorTemperatureRefresh()
}
/**
* PING is used by Device-Watch in attempt to reach the Device
* */
def ping() {
return zigbee.levelRefresh()
}
def healthPoll() {
log.debug "healthPoll()"
def cmds = zigbee.onOffRefresh() + zigbee.levelRefresh()
cmds.each{ sendHubCommand(new physicalgraph.device.HubAction(it))}
}
def configureHealthCheck() {
Integer hcIntervalMinutes = 12
if (!hasConfiguredHealthCheck) {
log.debug "Configuring Health Check, Reporting"
unschedule("healthPoll")
runEvery5Minutes("healthPoll")
// Device-Watch allows 2 check-in misses from device
sendEvent(name: "checkInterval", value: hcIntervalMinutes * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID])
hasConfiguredHealthCheck = true
}
}
def configure() {
log.debug "configure()"
configureHealthCheck()
// Implementation note: for the Eaton Halo_LT01, it responds with "switch:off" to onOffConfig, so be sure this is before the call to onOffRefresh
zigbee.onOffConfig() + zigbee.levelConfig() + zigbee.colorTemperatureConfig() + zigbee.onOffRefresh() + zigbee.levelRefresh() + zigbee.colorTemperatureRefresh()
}
def updated() {
log.debug "updated()"
configureHealthCheck()
}
def setColorTemperature(value) {
setGenericName(value)
zigbee.setColorTemperature(value) + ["delay 1500"] + zigbee.colorTemperatureRefresh()
}
//Naming based on the wiki article here: http://en.wikipedia.org/wiki/Color_temperature
def setGenericName(value){
if (value != null) {
def genericName = ""
if (value < 3300) {
genericName = "Soft White"
} else if (value < 4150) {
genericName = "Moonlight"
} else if (value <= 5000) {
genericName = "Cool White"
} else {
genericName = "Daylight"
}
sendEvent(name: "colorName", value: genericName, displayed: false)
}
}

View File

@@ -40,7 +40,7 @@ metadata {
tiles {
standardTile("switch", "device.switch", width: 2, height: 2, canChangeIcon: true) {
state "on", label: '${name}', action: "switch.off", icon: "st.unknown.zwave.device", backgroundColor: "#79b821"
state "on", label: '${name}', action: "switch.off", icon: "st.unknown.zwave.device", backgroundColor: "#00A0DC"
state "off", label: '${name}', action: "switch.on", icon: "st.unknown.zwave.device", backgroundColor: "#ffffff"
}
standardTile("switchOn", "device.switch", inactiveLabel: false, decoration: "flat") {

View File

@@ -33,7 +33,7 @@ metadata {
tiles {
standardTile("switch", "device.switch", width: 2, height: 2, canChangeIcon: true) {
state "on", label: '${name}', action: "switch.off", icon: "st.unknown.zwave.device", backgroundColor: "#79b821"
state "on", label: '${name}', action: "switch.off", icon: "st.unknown.zwave.device", backgroundColor: "#00A0DC"
state "off", label: '${name}', action: "switch.on", icon: "st.unknown.zwave.device", backgroundColor: "#ffffff"
}
standardTile("switchOn", "device.switch", inactiveLabel: false, decoration: "flat") {

View File

@@ -41,8 +41,8 @@ metadata {
// UI tile definitions
tiles {
standardTile("contact", "device.contact", width: 2, height: 2) {
state "open", label: '${name}', icon: "st.contact.contact.open", backgroundColor: "#ffa81e"
state "closed", label: '${name}', icon: "st.contact.contact.closed", backgroundColor: "#79b821"
state "open", label: '${name}', icon: "st.contact.contact.open", backgroundColor: "#e86d13"
state "closed", label: '${name}', icon: "st.contact.contact.closed", backgroundColor: "#00A0DC"
}
valueTile("battery", "device.battery", inactiveLabel: false, decoration: "flat") {
state "battery", label:'${currentValue}% battery', unit:""

View File

@@ -0,0 +1,2 @@
.st-ignore
README.md

View File

@@ -0,0 +1,41 @@
# Z-wave Garage Door Opener
Cloud Execution
Works with:
* [Linear GoControl Garage Door Opener](https://www.smartthings.com/works-with-smartthings/other/linear-gocontrol-garage-door-opener)
## Table of contents
* [Capabilities](#capabilities)
* [Health](#device-health)
* [Troubleshooting](#troubleshooting)
## Capabilities
* **Actuator** - represents that a Device has commands
* **Door Control** - allow for the control of a door
* **Garage Door Control** - allow for the control of a garage door
* **Health Check** - indicates ability to get device health notifications
* **Contact Sensor** - can detect contact (with possible values - open/closed)
* **Refresh** - _refresh()_ command for status updates
* **Sensor** - detects sensor events
## Device Health
Linear GoControl Garage Door Opener is polled by the hub.
As of hubCore version 0.14.38 the hub sends up reports every 15 minutes regardless of whether the state changed.
Device-Watch allows 2 check-in misses from device plus some lag time. So Check-in interval = (2*15 + 2)mins = 32 mins.
Not to mention after going OFFLINE when the device is plugged back in, it might take a considerable amount of time for
the device to appear as ONLINE again. This is because if this listening device does not respond to two poll requests in a row,
it is not polled for 5 minutes by the hub. This can delay up the process of being marked ONLINE by quite some time.
* __32min__ checkInterval
## Troubleshooting
If the device doesn't pair when trying from the SmartThings mobile app, it is possible that the device is out of range.
Pairing needs to be tried again by placing the device closer to the hub.
Instructions related to pairing, resetting and removing the device from SmartThings can be found in the following link:
* [Linear GoControl Garage Door Opener Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/204831116-GoControl-Linear-Garage-Door-Opener-GD00Z-4-)

View File

@@ -18,12 +18,14 @@ metadata {
capability "Actuator"
capability "Door Control"
capability "Garage Door Control"
capability "Health Check"
capability "Contact Sensor"
capability "Refresh"
capability "Sensor"
fingerprint deviceId: "0x4007", inClusters: "0x98"
fingerprint deviceId: "0x4006", inClusters: "0x98"
fingerprint mfr:"014F", prod:"4744", model:"3030", deviceJoinName: "Linear GoControl Garage Door Opener"
}
simulator {
@@ -39,11 +41,11 @@ metadata {
tiles {
standardTile("toggle", "device.door", width: 2, height: 2) {
state("unknown", label:'${name}', action:"refresh.refresh", icon:"st.doors.garage.garage-open", backgroundColor:"#ffa81e")
state("closed", label:'${name}', action:"door control.open", icon:"st.doors.garage.garage-closed", backgroundColor:"#79b821", nextState:"opening")
state("open", label:'${name}', action:"door control.close", icon:"st.doors.garage.garage-open", backgroundColor:"#ffa81e", nextState:"closing")
state("opening", label:'${name}', icon:"st.doors.garage.garage-opening", backgroundColor:"#ffe71e")
state("closing", label:'${name}', icon:"st.doors.garage.garage-closing", backgroundColor:"#ffe71e")
state("unknown", label:'${name}', action:"refresh.refresh", icon:"st.doors.garage.garage-open", backgroundColor:"#ffffff")
state("closed", label:'${name}', action:"door control.open", icon:"st.doors.garage.garage-closed", backgroundColor:"#00a0dc", nextState:"opening")
state("open", label:'${name}', action:"door control.close", icon:"st.doors.garage.garage-open", backgroundColor:"#e86d13", nextState:"closing")
state("opening", label:'${name}', icon:"st.doors.garage.garage-opening", backgroundColor:"#e86d13")
state("closing", label:'${name}', icon:"st.doors.garage.garage-closing", backgroundColor:"#00a0dc")
}
standardTile("open", "device.door", inactiveLabel: false, decoration: "flat") {
@@ -63,6 +65,11 @@ metadata {
import physicalgraph.zwave.commands.barrieroperatorv1.*
def updated(){
// Device-Watch simply pings if no device events received for 32min(checkInterval)
sendEvent(name: "checkInterval", value: 2 * 15 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID])
}
def parse(String description) {
def result = null
if (description.startsWith("Err")) {
@@ -287,6 +294,13 @@ def close() {
secure(zwave.barrierOperatorV1.barrierOperatorSet(requestedBarrierState: BarrierOperatorSet.REQUESTED_BARRIER_STATE_CLOSE))
}
/**
* PING is used by Device-Watch in attempt to reach the Device
* */
def ping() {
refresh()
}
def refresh() {
secure(zwave.barrierOperatorV1.barrierOperatorGet())
}

View File

@@ -0,0 +1,2 @@
.st-ignore
README.md

View File

@@ -0,0 +1,45 @@
# Z-Wave Switch
Cloud Execution
Works with:
* [Yale Key Free Touchscreen Deadbolt (YRD240)](https://www.smartthings.com/works-with-smartthings/yale/yale-key-free-touchscreen-deadbolt-yrd240)
## Table of contents
* [Capabilities](#capabilities)
* [Health](#device-health)
* [Troubleshooting](#Troubleshooting)
## Capabilities
* **Actuator** - represents that a Device has commands
* **Battery** - defines device uses a battery
* **Lock** - allows for the control of a lock device
* **Lock Codes** - allows for the lock code control of a lock device
* **Polling** - represents that poll() can be implemented for the device
* **Refresh** - _refresh()_ command for status updates
* **Sensor** - detects sensor events
* **Health Check** - indicates ability to get device health notifications
## Device Health
Z-Wave Locks are polled by the hub.
As of hubCore version 0.14.38 the hub sends up reports every 15 minutes regardless of whether the state changed.
Device-Watch allows 2 check-in misses from device plus some lag time. So Check-in interval = (2*15 + 2)mins = 32 mins.
Not to mention after going OFFLINE when the device is plugged back in, it might take a considerable amount of time for
the device to appear as ONLINE again. This is because if this listening device does not respond to two poll requests in a row,
it is not polled for 5 minutes by the hub. This can delay up the process of being marked ONLINE by quite some time.
* __32min__ checkInterval
## Troubleshooting
If the device doesn't pair when trying from the SmartThings mobile app, it is possible that the device is out of range.
Pairing needs to be tried again by placing the device closer to the hub.
Instructions related to pairing, resetting and removing the device from SmartThings can be found in the following link:
* [General Z-Wave/ZigBee Yale Lock Troubleshooting](https://support.smartthings.com/hc/en-us/articles/205138400-How-to-connect-Yale-locks)

View File

@@ -20,11 +20,13 @@ metadata {
capability "Sensor"
capability "Lock Codes"
capability "Battery"
capability "Health Check"
command "unlockwtimeout"
fingerprint deviceId: "0x4003", inClusters: "0x98"
fingerprint deviceId: "0x4004", inClusters: "0x98"
fingerprint mfr:"0129", prod:"0002", model:"0000", deviceJoinName: "Yale Key Free Touchscreen Deadbolt"
}
simulator {
@@ -38,10 +40,10 @@ metadata {
tiles(scale: 2) {
multiAttributeTile(name:"toggle", type: "generic", width: 6, height: 4){
tileAttribute ("device.lock", key: "PRIMARY_CONTROL") {
attributeState "locked", label:'locked', action:"lock.unlock", icon:"st.locks.lock.locked", backgroundColor:"#79b821", nextState:"unlocking"
attributeState "locked", label:'locked', action:"lock.unlock", icon:"st.locks.lock.locked", backgroundColor:"#00A0DC", nextState:"unlocking"
attributeState "unlocked", label:'unlocked', action:"lock.lock", icon:"st.locks.lock.unlocked", backgroundColor:"#ffffff", nextState:"locking"
attributeState "unknown", label:"unknown", action:"lock.lock", icon:"st.locks.lock.unknown", backgroundColor:"#ffffff", nextState:"locking"
attributeState "locking", label:'locking', icon:"st.locks.lock.locked", backgroundColor:"#79b821"
attributeState "locking", label:'locking', icon:"st.locks.lock.locked", backgroundColor:"#00A0DC"
attributeState "unlocking", label:'unlocking', icon:"st.locks.lock.unlocked", backgroundColor:"#ffffff"
}
}
@@ -67,6 +69,8 @@ import physicalgraph.zwave.commands.doorlockv1.*
import physicalgraph.zwave.commands.usercodev1.*
def updated() {
// Device-Watch simply pings if no device events received for 32min(checkInterval)
sendEvent(name: "checkInterval", value: 2 * 15 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID])
try {
if (!state.init) {
state.init = true
@@ -504,6 +508,13 @@ def unlockwtimeout() {
lockAndCheck(DoorLockOperationSet.DOOR_LOCK_MODE_DOOR_UNSECURED_WITH_TIMEOUT)
}
/**
* PING is used by Device-Watch in attempt to reach the Device
* */
def ping() {
refresh()
}
def refresh() {
def cmds = [secure(zwave.doorLockV1.doorLockOperationGet())]
if (state.assoc == zwaveHubNodeId) {

View File

@@ -51,7 +51,7 @@ metadata {
// tile definitions
tiles {
standardTile("switch", "device.switch", width: 2, height: 2, canChangeIcon: true) {
state "on", label: '${name}', action: "switch.off", icon: "st.switches.switch.on", backgroundColor: "#79b821"
state "on", label: '${name}', action: "switch.off", icon: "st.switches.switch.on", backgroundColor: "#00A0DC"
state "off", label: '${name}', action: "switch.on", icon: "st.switches.switch.off", backgroundColor: "#ffffff"
}
valueTile("power", "device.power") {

View File

@@ -38,8 +38,8 @@ metadata {
tiles {
standardTile("motion", "device.motion", width: 2, height: 2) {
state("active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#53a7c0")
state("inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#ffffff")
state("active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#00A0DC")
state("inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#cccccc")
}
valueTile("battery", "device.battery", inactiveLabel: false, decoration: "flat") {
state("battery", label:'${currentValue}% battery', unit:"")

View File

@@ -37,8 +37,8 @@ metadata {
tiles(scale: 2) {
multiAttributeTile(name:"contact", type: "generic", width: 6, height: 4){
tileAttribute ("device.contact", key: "PRIMARY_CONTROL") {
attributeState "open", label:'${name}', icon:"st.contact.contact.open", backgroundColor:"#ffa81e"
attributeState "closed", label:'${name}', icon:"st.contact.contact.closed", backgroundColor:"#79b821"
attributeState "open", label:'${name}', icon:"st.contact.contact.open", backgroundColor:"#e86d13"
attributeState "closed", label:'${name}', icon:"st.contact.contact.closed", backgroundColor:"#00a0dc"
}
}
valueTile("battery", "device.battery", decoration: "flat", inactiveLabel: false, width: 2, height: 2) {

View File

@@ -32,8 +32,8 @@ metadata {
tiles {
standardTile("sensor", "device.sensor", width: 2, height: 2) {
state("inactive", label:'inactive', icon:"st.unknown.zwave.sensor", backgroundColor:"#ffffff")
state("active", label:'active', icon:"st.unknown.zwave.sensor", backgroundColor:"#53a7c0")
state("inactive", label:'inactive', icon:"st.unknown.zwave.sensor", backgroundColor:"#cccccc")
state("active", label:'active', icon:"st.unknown.zwave.sensor", backgroundColor:"#00A0DC")
}
valueTile("battery", "device.battery", inactiveLabel: false, decoration: "flat") {
state "battery", label:'${currentValue}% battery', unit:""

View File

@@ -0,0 +1,2 @@
.st-ignore
README.md

View File

@@ -0,0 +1,42 @@
# Z-wave Siren
Cloud Execution
Works with:
* [FortrezZ Siren Strobe Alarm](https://www.smartthings.com/works-with-smartthings/other/fortrezz-water-valve)
## Table of contents
* [Capabilities](#capabilities)
* [Health](#device-health)
* [Troubleshooting](#troubleshooting)
## Capabilities
* **Actuator** - represents that a Device has commands
* **Alarm** - allows for interacting with devices that serve as alarms
* **Battery** - defines device uses a battery
* **Health Check** - indicates ability to get device health notifications
* **Polling** - represents that poll() can be implemented for the device
* **Refresh** - _refresh()_ command for status updates
* **Sensor** - detects sensor events
* **Switch** - can detect state (possible values: on/off)
## Device Health
FortrezZ Siren Strobe Alarm is polled by the hub.
As of hubCore version 0.14.38 the hub sends up reports every 15 minutes regardless of whether the state changed.
Device-Watch allows 2 check-in misses from device plus some lag time. So Check-in interval = (2*15 + 2)mins = 32 mins.
Not to mention after going OFFLINE when the device is plugged back in, it might take a considerable amount of time for
the device to appear as ONLINE again. This is because if this listening device does not respond to two poll requests in a row,
it is not polled for 5 minutes by the hub. This can delay up the process of being marked ONLINE by quite some time.
* __32min__ checkInterval
## Troubleshooting
If the device doesn't pair when trying from the SmartThings mobile app, it is possible that the device is out of range.
Pairing needs to be tried again by placing the device closer to the hub.
Instructions related to pairing, resetting and removing the device from SmartThings can be found in the following link:
* [FortrezZ Siren Strobe Alarm Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/202294760-FortrezZ-Siren-Strobe-Alarm)

View File

@@ -20,6 +20,7 @@ metadata {
capability "Actuator"
capability "Alarm"
capability "Battery"
capability "Health Check"
capability "Polling"
capability "Refresh"
capability "Sensor"
@@ -27,6 +28,7 @@ metadata {
fingerprint inClusters: "0x20,0x25,0x86,0x80,0x85,0x72,0x71"
fingerprint mfr:"0084", prod:"0313", model:"010B", deviceJoinName: "FortrezZ Siren Strobe Alarm"
}
simulator {
@@ -58,6 +60,11 @@ metadata {
}
}
def updated(){
// Device-Watch simply pings if no device events received for 32min(checkInterval)
sendEvent(name: "checkInterval", value: 2 * 15 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID])
}
def createEvents(physicalgraph.zwave.commands.batteryv1.BatteryReport cmd) {
def map = [ name: "battery", unit: "%" ]
if (cmd.batteryLevel == 0xFF) {
@@ -119,6 +126,13 @@ def both() {
on()
}
/**
* PING is used by Device-Watch in attempt to reach the Device
* */
def ping() {
refresh()
}
def refresh() {
log.debug "sending battery refresh command"
zwave.batteryV1.batteryGet().format()

View File

@@ -0,0 +1,2 @@
.st-ignore
README.md

View File

@@ -0,0 +1,40 @@
# Z-wave Smoke Alarm
Cloud Execution
Works with:
* [First Alert Smoke Detector and Carbon Monoxide Alarm (ZCOMBO)](https://www.smartthings.com/works-with-smartthings/sensors/first-alert-smoke-detector-and-carbon-monoxide-alarm-zcombo)
## Table of contents
* [Capabilities](#capabilities)
* [Health](#device-health)
* [Battery](#battery-specification)
* [Troubleshooting](#troubleshooting)
## Capabilities
* **Smoke Detector** - measure smoke and optionally carbon monoxide levels
* **Carbon Monoxide Detector** - measure carbon monoxide levels
* **Sensor** - detects sensor events
* **Battery** - defines device uses a battery
* **Health Check** - indicates ability to get device health notifications
## Device Health
First Alert Smoke Detector and Carbon Monoxide Alarm (ZCOMBO) is a Z-wave sleepy device and checks in every 1 hour.
Device-Watch allows 2 check-in misses from device plus some lag time. So Check-in interval = (2*60 + 2)mins = 122 mins.
* __122min__ checkInterval
## Battery Specification
Two AA 1.5V batteries are required.
## Troubleshooting
If the device doesn't pair when trying from the SmartThings mobile app, it is possible that the device is out of range.
Pairing needs to be tried again by placing the device closer to the hub.
Instructions related to pairing, resetting and removing the device from SmartThings can be found in the following link:
* [First Alert Smoke Detector and Carbon Monoxide Alarm (ZCOMBO) Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/201581984-First-Alert-Smoke-Detector-and-Carbon-Monoxide-Alarm-ZCOMBO-)

View File

@@ -17,10 +17,12 @@ metadata {
capability "Carbon Monoxide Detector"
capability "Sensor"
capability "Battery"
capability "Health Check"
attribute "alarmState", "string"
fingerprint deviceId: "0xA100", inClusters: "0x20,0x80,0x70,0x85,0x71,0x72,0x86"
fingerprint mfr:"0138", prod:"0001", model:"0002", deviceJoinName: "First Alert Smoke Detector and Carbon Monoxide Alarm (ZCOMBO)"
}
simulator {
@@ -51,6 +53,11 @@ metadata {
}
}
def updated(){
// Device checks in every hour, this interval allows us to miss one check-in notification before marking offline
sendEvent(name: "checkInterval", value: 2 * 60 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID])
}
def parse(String description) {
def results = []
if (description.startsWith("Err")) {
@@ -65,7 +72,6 @@ def parse(String description) {
return results
}
def createSmokeOrCOEvents(name, results) {
def text = null
switch (name) {

View File

@@ -47,7 +47,7 @@ metadata {
tiles(scale: 2) {
multiAttributeTile(name:"switch", type: "lighting", width: 6, height: 4, canChangeIcon: true){
tileAttribute ("device.switch", key: "PRIMARY_CONTROL") {
attributeState "on", label: '${name}', action: "switch.off", icon: "st.switches.switch.on", backgroundColor: "#79b821"
attributeState "on", label: '${name}', action: "switch.off", icon: "st.switches.switch.on", backgroundColor: "#00A0DC"
attributeState "off", label: '${name}', action: "switch.on", icon: "st.switches.switch.off", backgroundColor: "#ffffff"
}
}

View File

@@ -46,7 +46,7 @@ metadata {
tiles(scale: 2) {
multiAttributeTile(name:"switch", type: "lighting", width: 6, height: 4, canChangeIcon: true){
tileAttribute ("device.switch", key: "PRIMARY_CONTROL") {
attributeState "on", label: '${name}', action: "switch.off", icon: "st.switches.switch.on", backgroundColor: "#79b821"
attributeState "on", label: '${name}', action: "switch.off", icon: "st.switches.switch.on", backgroundColor: "#00A0DC"
attributeState "off", label: '${name}', action: "switch.on", icon: "st.switches.switch.off", backgroundColor: "#ffffff"
}
}

View File

@@ -33,7 +33,7 @@ metadata {
tiles {
standardTile("water", "device.water", width: 2, height: 2) {
state "dry", icon:"st.alarm.water.dry", backgroundColor:"#ffffff"
state "wet", icon:"st.alarm.water.wet", backgroundColor:"#53a7c0"
state "wet", icon:"st.alarm.water.wet", backgroundColor:"#00A0DC"
}
valueTile("battery", "device.battery", inactiveLabel: false, decoration: "flat") {
state "battery", label:'${currentValue}% battery', unit:""

View File

@@ -0,0 +1,794 @@
/**
* Gideon
*
* Copyright 2016 Nicola Russo
*
* 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: "Gideon Smart Home",
namespace: "gideon.api",
author: "Braindrain Solutions ltd",
description: "Gideon Smart Home SmartApp allows you to connect and control all of your SmartThings devices through the Gideon app, making your SmartThings devices even smarter.",
category: "Family",
iconUrl: "http://s33.postimg.org/t77u7y7v3/logo.png",
iconX2Url: "http://s33.postimg.org/t77u7y7v3/logo.png",
iconX3Url: "http://s33.postimg.org/t77u7y7v3/logo.png",
oauth: [displayName: "Gideon Smart Home API app", displayLink: "gideon.ai"])
preferences {
section("Control these contact sensors...") {
input "contact", "capability.contactSensor", multiple:true, required:false
}
section("Control these switch levels...") {
input "switchlevels", "capability.switchLevel", multiple:true, required:false
}
/* section("Control these thermostats...") {
input "thermostats", "capability.thermostat", multiple:true, required:false
}*/
section("Control the color for these devices...") {
input "colors", "capability.colorControl", multiple:true, required:false
}
section("Control the color temperature for these devices...") {
input "kelvin", "capability.colorTemperature", multiple:true, required:false
}
section("Control these switches...") {
input "switches", "capability.switch", multiple:true, required:false
}
section("Control these smoke alarms...") {
input "smoke_alarms", "capability.smokeDetector", multiple:true, required:false
}
section("Control these window shades...") {
input "shades", "capability.windowShade", multiple:true, required:false
}
section("Control these garage doors...") {
input "garage", "capability.garageDoorControl", multiple:true, required:false
}
section("Control these water sensors...") {
input "water_sensors", "capability.waterSensor", multiple:true, required:false
}
section("Control these motion sensors...") {
input "motions", "capability.motionSensor", multiple:true, required:false
}
section("Control these presence sensors...") {
input "presence_sensors", "capability.presenceSensor", multiple:true, required:false
}
section("Control these outlets...") {
input "outlets", "capability.outlet", multiple:true, required:false
}
section("Control these power meters...") {
input "meters", "capability.powerMeter", multiple:true, required:false
}
section("Control these locks...") {
input "locks", "capability.lock", multiple:true, required:false
}
section("Control these temperature sensors...") {
input "temperature_sensors", "capability.temperatureMeasurement", multiple:true, required:false
}
section("Control these batteries...") {
input "batteries", "capability.battery", multiple:true, required:false
}
}
def installed() {
log.debug "Installed with settings: ${settings}"
initialize()
}
def updated() {
log.debug "Updated with settings: ${settings}"
unsubscribe()
initialize()
}
def initialize() {
}
private device(it, type) {
it ? [id: it.id, label: it.label, type: type] : null
}
//API Mapping
mappings {
path("/getalldevices") {
action: [
GET: "getAllDevices"
]
}
/*
path("/thermostat/setcool/:id/:temp") {
action: [
GET: "setCoolTemp"
]
}
path("/thermostat/setheat/:id/:temp") {
action: [
GET: "setHeatTemp"
]
}
path("/thermostat/setfanmode/:id/:mode") {
action: [
GET: "setFanMode"
]
}
path("/thermostat/setmode/:id/:mode") {
action: [
GET: "setThermostatMode"
]
}
path("/thermostat/:id") {
action: [
GET: "getThermostatStatus"
]
}
*/
path("/light/dim/:id/:dim") {
action: [
GET: "setLevelStatus"
]
}
path("/light/kelvin/:id/:kelvin") {
action: [
GET: "setKelvin"
]
}
path("/colorlight/:id/:hue/:sat") {
action: [
GET: "setColor"
]
}
path("/light/status/:id") {
action: [
GET: "getLightStatus"
]
}
path("/light/on/:id") {
action: [
GET: "turnOnLight"
]
}
path("/light/off/:id") {
action: [
GET: "turnOffLight"
]
}
path("/doorlocks/lock/:id") {
action: [
GET: "lockDoorLock"
]
}
path("/doorlocks/unlock/:id") {
action: [
GET: "unlockDoorLock"
]
}
path("/doorlocks/:id") {
action: [
GET: "getDoorLockStatus"
]
}
path("/contacts/:id") {
action: [
GET: "getContactStatus"
]
}
path("/smoke/:id") {
action: [
GET: "getSmokeStatus"
]
}
path("/shades/open/:id") {
action: [
GET: "openShade"
]
}
path("/shades/preset/:id") {
action: [
GET: "presetShade"
]
}
path("/shades/close/:id") {
action: [
GET: "closeShade"
]
}
path("/shades/:id") {
action: [
GET: "getShadeStatus"
]
}
path("/garage/open/:id") {
action: [
GET: "openGarage"
]
}
path("/garage/close/:id") {
action: [
GET: "closeGarage"
]
}
path("/garage/:id") {
action: [
GET: "getGarageStatus"
]
}
path("/watersensors/:id") {
action: [
GET: "getWaterSensorStatus"
]
}
path("/tempsensors/:id") {
action: [
GET: "getTempSensorsStatus"
]
}
path("/meters/:id") {
action: [
GET: "getMeterStatus"
]
}
path("/batteries/:id") {
action: [
GET: "getBatteryStatus"
]
}
path("/presences/:id") {
action: [
GET: "getPresenceStatus"
]
}
path("/motions/:id") {
action: [
GET: "getMotionStatus"
]
}
path("/outlets/:id") {
action: [
GET: "getOutletStatus"
]
}
path("/outlets/turnon/:id") {
action: [
GET: "turnOnOutlet"
]
}
path("/outlets/turnoff/:id") {
action: [
GET: "turnOffOutlet"
]
}
path("/switches/turnon/:id") {
action: [
GET: "turnOnSwitch"
]
}
path("/switches/turnoff/:id") {
action: [
GET: "turnOffSwitch"
]
}
path("/switches/:id") {
action: [
GET: "getSwitchStatus"
]
}
}
//API Methods
def getAllDevices() {
def locks_list = locks.collect{device(it,"Lock")}
/*def thermo_list = thermostats.collect{device(it,"Thermostat")}*/
def colors_list = colors.collect{device(it,"Color")}
def kelvin_list = kelvin.collect{device(it,"Kelvin")}
def contact_list = contact.collect{device(it,"Contact Sensor")}
def smokes_list = smoke_alarms.collect{device(it,"Smoke Alarm")}
def shades_list = shades.collect{device(it,"Window Shade")}
def garage_list = garage.collect{device(it,"Garage Door")}
def water_sensors_list = water_sensors.collect{device(it,"Water Sensor")}
def presences_list = presence_sensors.collect{device(it,"Presence")}
def motions_list = motions.collect{device(it,"Motion")}
def outlets_list = outlets.collect{device(it,"Outlet")}
def switches_list = switches.collect{device(it,"Switch")}
def switchlevels_list = switchlevels.collect{device(it,"Switch Level")}
def temp_list = temperature_sensors.collect{device(it,"Temperature")}
def meters_list = meters.collect{device(it,"Power Meters")}
def battery_list = batteries.collect{device(it,"Batteries")}
return outlets_list + kelvin_list + colors_list + switchlevels_list + smokes_list + contact_list + water_sensors_list + shades_list + garage_list + locks_list + presences_list + motions_list + switches_list + temp_list + meters_list + battery_list
}
//thermostat
/*
def setCoolTemp() {
def device = thermostats.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
if(device.hasCommand("setCoolingSetpoint")) {
device.setCoolingSetpoint(params.temp.toInteger());
return [result_action: "200"]
}
else {
httpError(510, "Not supported!")
}
}
}
def setHeatTemp() {
def device = thermostats.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
if(device.hasCommand("setHeatingSetpoint")) {
device.setHeatingSetpoint(params.temp.toInteger());
return [result_action: "200"]
}
else {
httpError(510, "Not supported!")
}
}
}
def setFanMode() {
def device = thermostats.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
if(device.hasCommand("setThermostatFanMode")) {
device.setThermostatFanMode(params.mode);
return [result_action: "200"]
}
else {
httpError(510, "Not supported!")
}
}
}
def setThermostatMode() {
def device = thermostats.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
if(device.hasCommand("setThermostatMode")) {
device.setThermostatMode(params.mode);
return [result_action: "200"]
}
else {
httpError(510, "Not supported!")
}
}
}
def getThermostatStatus() {
def device = thermostats.find{ it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
return [ThermostatOperatingState: device.currentValue('thermostatOperatingState'), ThermostatSetpoint: device.currentValue('thermostatSetpoint'),
ThermostatFanMode: device.currentValue('thermostatFanMode'), ThermostatMode: device.currentValue('thermostatMode')]
}
}
*/
//light
def turnOnLight() {
def device = switches.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
device.on();
return [Device_id: params.id, result_action: "200"]
}
}
def turnOffLight() {
def device = switches.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
device.off();
return [Device_id: params.id, result_action: "200"]
}
}
def getLightStatus() {
def device = switches.find{ it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
return [Status: device.currentValue('switch'), Dim: getLevelStatus(params.id), Color: getColorStatus(params.id), Kelvin: getKelvinStatus(params.id)]
}
}
//color control
def setColor() {
def device = colors.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
def map = [hue:params.hue.toInteger(), saturation:params.sat.toInteger()]
device.setColor(map);
return [Device_id: params.id, result_action: "200"]
}
}
def getColorStatus(id) {
def device = colors.find { it.id == id }
if (!device) {
return [Color: "none"]
} else {
return [hue: device.currentValue('hue'), saturation: device.currentValue('saturation')]
}
}
//kelvin control
def setKelvin() {
def device = kelvin.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
device.setColorTemperature(params.kelvin.toInteger());
return [Device_id: params.id, result_action: "200"]
}
}
def getKelvinStatus(id) {
def device = kelvin.find { it.id == id }
if (!device) {
return [kelvin: "none"]
} else {
return [kelvin: device.currentValue('colorTemperature')]
}
}
//switch level
def getLevelStatus() {
def device = switchlevels.find { it.id == params.id }
if (!device) {
[Level: "No dimmer"]
} else {
return [Level: device.currentValue('level')]
}
}
def getLevelStatus(id) {
def device = switchlevels.find { it.id == id }
if (!device) {
[Level: "No dimmer"]
} else {
return [Level: device.currentValue('level')]
}
}
def setLevelStatus() {
def device = switchlevels.find { it.id == params.id }
def level = params.dim
if (!device) {
httpError(404, "Device not found")
} else {
device.setLevel(level.toInteger())
return [result_action: "200", Level: device.currentValue('level')]
}
}
//contact sensors
def getContactStatus() {
def device = contact.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
def args = getTempSensorsStatus(device.id)
return [Device_state: device.currentValue('contact')] + args
}
}
//smoke detectors
def getSmokeStatus() {
def device = smoke_alarms.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
def bat = getBatteryStatus(device.id)
return [Device_state: device.currentValue('smoke')] + bat
}
}
//garage
def getGarageStatus() {
def device = garage.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
return [Device_state: device.currentValue('door')]
}
}
def openGarage() {
def device = garage.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
device.open();
return [Device_id: params.id, result_action: "200"]
}
}
def closeGarage() {
def device = garage.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
device.close();
return [Device_id: params.id, result_action: "200"]
}
}
//shades
def getShadeStatus() {
def device = shades.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
return [Device_state: device.currentValue('windowShade')]
}
}
def openShade() {
def device = shades.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
device.open();
return [Device_id: params.id, result_action: "200"]
}
}
def presetShade() {
def device = shades.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
device.presetPosition();
return [Device_id: params.id, result_action: "200"]
}
}
def closeShade() {
def device = shades.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
device.close();
return [Device_id: params.id, result_action: "200"]
}
}
//water sensor
def getWaterSensorStatus() {
def device = water_sensors.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
def bat = getBatteryStatus(device.id)
return [Device_state: device.currentValue('water')] + bat
}
}
//batteries
def getBatteryStatus() {
def device = batteries.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
return [Device_state: device.latestValue("battery")]
}
}
def getBatteryStatus(id) {
def device = batteries.find { it.id == id }
if (!device) {
return []
} else {
return [battery_state: device.latestValue("battery")]
}
}
//LOCKS
def getDoorLockStatus() {
def device = locks.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
def bat = getBatteryStatus(device.id)
return [Device_state: device.currentValue('lock')] + bat
}
}
def lockDoorLock() {
def device = locks.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
device.lock();
return [Device_id: params.id, result_action: "200"]
}
}
def unlockDoorLock() {
def device = locks.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
device.unlock();
return [Device_id: params.id, result_action: "200"]
}
}
//PRESENCE
def getPresenceStatus() {
def device = presence_sensors.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
def bat = getBatteryStatus(device.id)
return [Device_state: device.currentValue('presence')] + bat
}
}
//MOTION
def getMotionStatus() {
def device = motions.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
def args = getTempSensorsStatus(device.id)
return [Device_state: device.currentValue('motion')] + args
}
}
//OUTLET
def getOutletStatus() {
def device = outlets.find { it.id == params.id }
if (!device) {
device = switches.find { it.id == params.id }
if(!device) {
httpError(404, "Device not found")
}
}
def watt = getMeterStatus(device.id)
return [Device_state: device.currentValue('switch')] + watt
}
def getMeterStatus() {
def device = meters.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
return [Device_id: device.id, Device_type: device.type, Current_watt: device.currentValue("power")]
}
}
def getMeterStatus(id) {
def device = meters.find { it.id == id }
if (!device) {
return []
} else {
return [Current_watt: device.currentValue("power")]
}
}
def turnOnOutlet() {
def device = outlets.find { it.id == params.id }
if (!device) {
device = switches.find { it.id == params.id }
if(!device) {
httpError(404, "Device not found")
}
}
device.on();
return [Device_id: params.id, result_action: "200"]
}
def turnOffOutlet() {
def device = outlets.find { it.id == params.id }
if (!device) {
device = switches.find { it.id == params.id }
if(!device) {
httpError(404, "Device not found")
}
}
device.off();
return [Device_id: params.id, result_action: "200"]
}
//SWITCH
def getSwitchStatus() {
def device = switches.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
return [Device_state: device.currentValue('switch'), Dim: getLevelStatus(params.id)]
}
}
def turnOnSwitch() {
def device = switches.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
device.on();
return [Device_id: params.id, result_action: "200"]
}
}
def turnOffSwitch() {
def device = switches.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
device.off();
return [Device_id: params.id, result_action: "200"]
}
}
//TEMPERATURE
def getTempSensorsStatus() {
def device = temperature_sensors.find { it.id == params.id }
if (!device) {
httpError(404, "Device not found")
} else {
def bat = getBatteryStatus(device.id)
def scale = [Scale: location.temperatureScale]
return [Device_state: device.currentValue('temperature')] + scale + bat
}
}
def getTempSensorsStatus(id) {
def device = temperature_sensors.find { it.id == id }
if (!device) {
return []
} else {
def bat = getBatteryStatus(device.id)
return [temperature: device.currentValue('temperature')] + bat
}
}

View File

@@ -30,7 +30,7 @@ preferences {
input "havdalahOffset", "number", title: "Minutes After Sundown", required:true
}
section("Your ZipCode") {
input "zipcode", "number", title: "ZipCode", required:true
input "zipcode", "text", title: "ZipCode", required:true
}
section( "Notifications" ) {
input "sendPushMessage", "enum", title: "Send a push notification?", metadata:[values:["Yes","No"]], required:false
@@ -205,4 +205,4 @@ if ( sendPushMessage != "No" ) {
log.debug( "sending text message" )
sendSms( phone, msg )
}
}//END def sendMessage(msg)
}//END def sendMessage(msg)

View File

@@ -15,12 +15,13 @@
* 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. Adjust colors by going to the Thing detail screen for your Hue lights (tap the gear on Hue tiles).\n\nPlease update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.",
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",
@@ -28,11 +29,11 @@ definition(
)
preferences {
page(name:"mainPage", title:"Hue Device Setup", content:"mainPage", refreshTimeout:5)
page(name:"bridgeDiscovery", title:"Hue Bridge Discovery", content:"bridgeDiscovery", refreshTimeout:5)
page(name:"bridgeDiscoveryFailed", title:"Bridge Discovery Failed", content:"bridgeDiscoveryFailed", refreshTimeout:0)
page(name:"bridgeBtnPush", title:"Linking with your Hue", content:"bridgeLinking", refreshTimeout:5)
page(name:"bulbDiscovery", title:"Hue Device Setup", content:"bulbDiscovery", refreshTimeout:5)
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() {
@@ -47,15 +48,14 @@ def mainPage() {
}
}
def bridgeDiscovery(params=[:])
{
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
def numFound = options.size() ?: "0"
if (numFound == 0) {
if (state.bridgeRefreshCount == 25) {
log.trace "Cleaning old bridges memory"
@@ -75,25 +75,26 @@ def bridgeDiscovery(params=[:])
ssdpSubscribe()
//bridge discovery request every 15 //25 seconds
if((bridgeRefreshCount % 5) == 0) {
if ((bridgeRefreshCount % 5) == 0) {
discoverBridges()
}
//setup.xml request every 3 seconds except on discoveries
if(((bridgeRefreshCount % 3) == 0) && ((bridgeRefreshCount % 5) != 0)) {
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 "selectedHue", "enum", required:false, title:"Select Hue Bridge (${numFound} found)", multiple:false, options:options, submitOnChange: true
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") {
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.") {
}
}
@@ -109,12 +110,12 @@ def bridgeLinking() {
def paragraphText
if (selectedHue) {
if (state.refreshUsernameNeeded) {
paragraphText = "The current Hue username is invalid.\n\nPlease press the button on your Hue Bridge to re-link. "
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. "
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."
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) {
@@ -127,13 +128,13 @@ def bridgeLinking() {
paragraphText = "Linking to your hub was a success! Please click 'Next'!"
}
if((linkRefreshcount % 2) == 0 && !state.username) {
if ((linkRefreshcount % 2) == 0 && !state.username) {
sendDeveloperReq()
}
return dynamicPage(name:"bridgeBtnPush", title:title, nextPage:nextPage, refreshInterval:refreshInterval) {
return dynamicPage(name: "bridgeBtnPush", title: title, nextPage: nextPage, refreshInterval: refreshInterval) {
section("") {
paragraph """${paragraphText}"""
paragraph "$paragraphText"
}
}
}
@@ -149,18 +150,18 @@ def bulbDiscovery() {
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()}
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 existingLights = allLightsFound.findAll { getChildDevice(it.key) != null } ?: [:]
existingLights = existingLights.sort { it.value.toLowerCase() }
def numFound = newLights.size() ?: 0
if (numFound == 0)
def numFound = newLights.size() ?: "0"
if (numFound == "0")
app.updateSetting("selectedBulbs", "")
if((bulbRefreshCount % 5) == 0) {
if ((bulbRefreshCount % 5) == 0) {
discoverHueBulbs()
}
def selectedBridge = state.bridges.find { key, value -> value?.serialNumber?.equalsIgnoreCase(selectedHue) }
@@ -178,14 +179,14 @@ def bulbDiscovery() {
}
}
if (bulbRefreshCount > 200 && numFound == 0) {
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.") {
//input "selectedBulbs", "enum", required:false, title:"Select Hue Lights to add (${numFound} found)", multiple:true, submitOnChange: true, options:newLights
paragraph title: "Previously added Hue Lights (${existingLights.size()} added)", existingLightsDescription
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]
@@ -193,10 +194,10 @@ def bulbDiscovery() {
}
} else {
return dynamicPage(name:"bulbDiscovery", title:"Light Discovery Started!", nextPage:"", refreshInterval:refreshInterval, install:true, uninstall: true) {
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 "selectedBulbs", "enum", required:false, title:"Select Hue Lights to add (${numFound} found)", multiple:true, submitOnChange: true, options:newLights
paragraph title: "Previously added Hue Lights (${existingLights.size()} added)", existingLightsDescription
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]
@@ -217,19 +218,19 @@ private sendDeveloperReq() {
def token = app.id
def host = getBridgeIP()
sendHubCommand(new physicalgraph.device.HubAction([
method: "POST",
path: "/api",
method : "POST",
path : "/api",
headers: [
HOST: host
],
body: [devicetype: "$token-0"]], "${selectedHue}", [callback: "usernameHandler"]))
body : [devicetype: "$token-0"]], "${selectedHue}", [callback: "usernameHandler"]))
}
private discoverHueBulbs() {
def host = getBridgeIP()
sendHubCommand(new physicalgraph.device.HubAction([
method: "GET",
path: "/api/${state.username}/lights",
method : "GET",
path : "/api/${state.username}/lights",
headers: [
HOST: host
]], "${selectedHue}", [callback: "lightsHandler"]))
@@ -238,8 +239,8 @@ private discoverHueBulbs() {
private verifyHueBridge(String deviceNetworkId, String host) {
log.trace "Verify Hue Bridge $deviceNetworkId"
sendHubCommand(new physicalgraph.device.HubAction([
method: "GET",
path: "/description.xml",
method : "GET",
path : "/description.xml",
headers: [
HOST: host
]], deviceNetworkId, [callback: "bridgeDescriptionHandler"]))
@@ -266,18 +267,18 @@ Map bridgesDiscovered() {
}
Map bulbsDiscovered() {
def bulbs = getHueBulbs()
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
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
def key = app.id + "/" + it.id
logg += "$value - $key, "
bulbmap["${key}"] = value
}
@@ -294,7 +295,7 @@ def getHueBridges() {
}
def getVerifiedHueBridges() {
getHueBridges().findAll{ it?.value?.verified == true }
getHueBridges().findAll { it?.value?.verified == true }
}
def installed() {
@@ -331,7 +332,7 @@ def manualRefresh() {
poll()
}
def uninstalled(){
def uninstalled() {
// Remove bridgedevice connection to allow uninstall of smartapp even though bridge is listed
// as user of smartapp
app.updateSetting("bridgeDevice", null)
@@ -371,7 +372,7 @@ private getDeviceType(hueType) {
return null
}
private addChildBulb(dni, hueType, name, hub, update=false, device = null) {
private addChildBulb(dni, hueType, name, hub, update = false, device = null) {
def deviceType = getDeviceType(hueType)
if (deviceType) {
@@ -386,7 +387,7 @@ def addBulbs() {
def bulbs = getHueBulbs()
selectedBulbs?.each { dni ->
def d = getChildDevice(dni)
if(!d) {
if (!d) {
def newHueBulb
if (bulbs instanceof java.util.Map) {
newHueBulb = bulbs.find { (app.id + "/" + it.value.id) == dni }
@@ -419,11 +420,11 @@ def addBulbs() {
def addBridge() {
def vbridges = getVerifiedHueBridges()
def vbridge = vbridges.find {"${it.value.mac}" == selectedHue}
def vbridge = vbridges.find { "${it.value.mac}" == selectedHue }
if(vbridge) {
if (vbridge) {
def d = getChildDevice(selectedHue)
if(!d) {
if (!d) {
// compatibility with old devices
def newbridge = true
childDevices.each {
@@ -458,15 +459,15 @@ def addBridge() {
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)
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))
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))
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"
@@ -484,14 +485,14 @@ def ssdpBridgeHandler(evt) {
def hub = evt?.hubId
def parsedEvent = parseLanMessage(description)
parsedEvent << ["hub":hub]
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]
bridges << ["${parsedEvent.ssdpUSN.toString()}": parsedEvent]
} else {
// update the values
def ip = convertHexToIP(parsedEvent.networkAddress)
@@ -512,7 +513,7 @@ def ssdpBridgeHandler(evt) {
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}
def isSelectedValid = bridges?.find { it.value?.mac == selectedHue }
if (isSelectedValid == null) {
log.warn "Correcting selectedHue in state"
app.updateSetting("selectedHue", dniReceived)
@@ -532,7 +533,7 @@ def ssdpBridgeHandler(evt) {
dstate.ip = ip
dstate.port = port
dstate.name = "Philips hue ($ip)"
d.sendEvent(name:"networkAddress", value: host)
d.sendEvent(name: "networkAddress", value: host)
d.updateDataValue("networkAddress", host)
}
if (dstate.mac != dniReceived) {
@@ -541,7 +542,7 @@ def ssdpBridgeHandler(evt) {
}
if (selectedHue != dniReceived) {
// Check to see if selectedHue is a valid bridge, otherwise update it
def isSelectedValid = bridges?.find {it.value?.mac == selectedHue}
def isSelectedValid = bridges?.find { it.value?.mac == selectedHue }
if (isSelectedValid == null) {
log.warn "Correcting selectedHue in state"
app.updateSetting("selectedHue", dniReceived)
@@ -556,7 +557,7 @@ void bridgeDescriptionHandler(physicalgraph.device.HubResponse hubResponse) {
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())}
def bridge = bridges.find { it?.key?.contains(body?.device?.UDN?.text()) }
if (bridge) {
def idNumber = getBridgeIdNumber(body?.device?.serialNumber?.text())
@@ -565,10 +566,10 @@ void bridgeDescriptionHandler(physicalgraph.device.HubResponse hubResponse) {
def name = body?.device?.friendlyName?.text()
def index = name?.indexOf('(')
if (index != -1) {
name = name.substring(0,index)
name = name.substring(0, index)
name += " ($idNumber)"
}
bridge.value << [name:name, serialNumber:body?.device?.serialNumber?.text(), idNumber: idNumber, verified: true]
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"
}
@@ -611,7 +612,7 @@ def locationHandler(evt) {
def hub = evt?.hubId
def parsedEvent = parseLanMessage(description)
parsedEvent << ["hub":hub]
parsedEvent << ["hub": hub]
if (parsedEvent?.ssdpTerm?.contains("urn:schemas-upnp-org:device:basic:1")) {
//SSDP DISCOVERY EVENTS
@@ -621,7 +622,7 @@ def locationHandler(evt) {
if (!(bridges."${parsedEvent.ssdpUSN.toString()}")) {
//bridge does not exist
log.trace "Adding bridge ${parsedEvent.ssdpUSN}"
bridges << ["${parsedEvent.ssdpUSN.toString()}":parsedEvent]
bridges << ["${parsedEvent.ssdpUSN.toString()}": parsedEvent]
} else {
// update the values
def ip = convertHexToIP(parsedEvent.networkAddress)
@@ -656,12 +657,12 @@ def locationHandler(evt) {
networkAddress = d.latestState('networkAddress').stringValue
}
log.trace "Host: $host - $networkAddress"
if(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.sendEvent(name: "networkAddress", value: host)
d.updateDataValue("networkAddress", host)
}
}
@@ -674,14 +675,14 @@ def locationHandler(evt) {
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())}
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]
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)) {
} 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) {
@@ -706,7 +707,7 @@ def locationHandler(evt) {
}
}
def doDeviceSync(){
def doDeviceSync() {
log.trace "Doing Hue Device Sync!"
// Check if state.updating failed to clear
@@ -787,7 +788,7 @@ private void checkBridgeStatus() {
def isValidSource(macAddress) {
def vbridges = getVerifiedHueBridges()
return (vbridges?.find {"${it.value.mac}" == macAddress}) != null
return (vbridges?.find { "${it.value.mac}" == macAddress }) != null
}
def isInBulbDiscovery() {
@@ -801,19 +802,19 @@ private updateBulbState(messageBody, hub) {
def toRemove = [:]
toRemove << bulbs
messageBody.each { k,v ->
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]
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 ->
toRemove.each { k, v ->
log.warn "${bulbs[k].name} no longer exists on bridge, removing"
bulbs.remove(k)
}
@@ -937,12 +938,11 @@ private sendBasicEvents(device, param, value) {
*
* 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"}}
* ]
*{"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
@@ -995,7 +995,7 @@ private handleCommandResponse(body) {
*
* Example payload
*
* {"5":{"state": {"on":true,"bri":102,"hue":25600,"sat":254,"effect":"none","xy":[0.1700,0.7000],"ct":153,"alert":"none",
*{"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",
@@ -1069,9 +1069,9 @@ def hubVerification(bodytext) {
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())}
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]
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"
}
@@ -1107,7 +1107,7 @@ def setLevel(childDevice, percent) {
else
level = Math.min(Math.round(percent * 254 / 100), 254)
createSwitchEvent(childDevice, level > 0 ,percent)
createSwitchEvent(childDevice, level > 0, percent)
// 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
@@ -1137,7 +1137,7 @@ def setHue(childDevice, percent) {
def id = getId(childDevice)
updateInProgress()
// 0 - 65535
def level = Math.min(Math.round(percent * 65535 / 100), 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?
createSwitchEvent(childDevice, "on")
put("lights/$id/state", [hue: level, on: true])
@@ -1149,7 +1149,7 @@ def setColorTemperature(childDevice, huesettings) {
def id = getId(childDevice)
updateInProgress()
// 153 (6500K) to 500 (2000K)
def ct = hueSettings == 6500 ? 153 : Math.round(1000000/huesettings)
def ct = hueSettings == 6500 ? 153 : Math.round(1000000 / huesettings)
createSwitchEvent(childDevice, "on")
put("lights/$id/state", [ct: ct, on: true])
return "Setting color temperature to $ct"
@@ -1267,7 +1267,7 @@ private getBridgeIP() {
def d = getChildDevice(selectedHue)
if (d) {
if (d.getDeviceDataByName("networkAddress"))
host = d.getDeviceDataByName("networkAddress")
host = d.getDeviceDataByName("networkAddress")
else
host = d.latestState('networkAddress').stringValue
}
@@ -1291,26 +1291,26 @@ private getBridgeIP() {
}
private Integer convertHexToInt(hex) {
Integer.parseInt(hex,16)
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?.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) {
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(".")
[convertHexToInt(hex[0..1]), convertHexToInt(hex[2..3]), convertHexToInt(hex[4..5]), convertHexToInt(hex[6..7])].join(".")
}
private Boolean hasAllHubsOver(String desiredFirmware) {
@@ -1327,7 +1327,7 @@ private List getRealHubFirmwareVersions() {
* @param childDevice device to send event for
* @param setSwitch The new switch state, "on" or "off"
* @param setLevel Optional, switchLevel between 0-100, used if you set level to 0 for example since
* that should generate "off" instead of level change
* that should generate "off" instead of level change
*/
private void createSwitchEvent(childDevice, setSwitch, setLevel = null) {
@@ -1358,7 +1358,7 @@ private void createSwitchEvent(childDevice, setSwitch, setLevel = null) {
private colorPointsForModel(model = null) {
def result = null
switch (model) {
// Gamut A
// Gamut A
case "LLC001": /* Monet, Renoir, Mondriaan (gen II) */
case "LLC005": /* Bloom (gen II) */
case "LLC006": /* Iris (gen III) */
@@ -1368,21 +1368,21 @@ private colorPointsForModel(model = null) {
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]];
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
// 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]];
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
// 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]];
result = [r: [x: 0.675f, y: 0.322f], g: [x: 0.4091f, y: 0.518f], b: [x: 0.167f, y: 0.04f]];
}
return result;
@@ -1401,9 +1401,9 @@ private colorPointsForModel(model = null) {
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 )
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;
@@ -1473,7 +1473,6 @@ private float[] calculateXY(colorStr, model = null) {
// 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]);
@@ -1489,10 +1488,10 @@ private float[] calculateXY(colorStr, model = null) {
*
* @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.
* 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 ) {
private String colorFromXY(points, model) {
if (points == null || model == null) {
log.warn "Input color missing"
@@ -1550,9 +1549,9 @@ private String colorFromXY(points, model ) {
// 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;
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
@@ -1614,7 +1613,6 @@ private String colorFromXY(points, model ) {
return "#$r1$g1$b1"
}
/**
* Calculates crossProduct of two 2D vectors / points.
*
@@ -1643,8 +1641,8 @@ 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 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;
@@ -1684,9 +1682,9 @@ private float getDistanceBetweenTwoPoints(one, two) {
*/
private boolean checkPointInLampsReach(p, colorPoints) {
def red = colorPoints.r;
def red = colorPoints.r;
def green = colorPoints.g;
def blue = colorPoints.b;
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)];
@@ -1696,12 +1694,9 @@ private boolean checkPointInLampsReach(p, colorPoints) {
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))
{
if ((s >= 0.0f) && (t >= 0.0f) && (s + t <= 1.0f)) {
return true;
}
else
{
} else {
return false;
}
}
@@ -1714,10 +1709,10 @@ private boolean checkPointInLampsReach(p, colorPoints) {
*
* @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 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)
@@ -1727,10 +1722,10 @@ def hexToHsv(colorStr){
def d = max - min
s = max == 0 ? 0 : d / max
if(max == min){
if (max == min) {
h = 0
}else{
switch(max){
} 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
@@ -1745,13 +1740,13 @@ def hexToHsv(colorStr){
* 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)
* @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 hsvToHex(hue, sat, value = 100) {
def r, g, b;
def h = hue / 100
def s = sat / 100
@@ -1803,4 +1798,3 @@ def hsvToHex(hue, sat, value = 100){
return "#$r1$g1$b1"
}

View File

@@ -0,0 +1,19 @@
'''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 الخاصة بك. قد يستغرق الاكتشاف خمس دقائق أو أكثر، لذا اجلس واسترخِ! اختر جهازك أدناه بمجرد اكتشافه.

View File

@@ -0,0 +1,19 @@
'''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 (Лампи). Намирането може да отнеме пет минути или повече, така че седнете и се отпуснете! Изберете устройството си по-долу, след като бъде открито.

View File

@@ -0,0 +1,19 @@
'''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í.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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 σας. Η ανακάλυψη μπορεί να διαρκέσει πέντε λεπτά ή περισσότερο, επομένως, χαλαρώστε και περιμένετε! Επιλέξτε τη συσκευή σας παρακάτω μόλις ανακαλυφθεί.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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 Bridgei 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 Bridgei. Pange tähele, et peate esmalt oma Hue Bridge and Lightsi 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!'''=Bridgei 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 Bridgei. 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 Bridgeil, et uuesti ühendada.
'''Press the button on your Hue Bridge to setup a link.'''=Vajutage nuppu oma Hue Bridgeil, et ühendust seadistada.
'''You haven't selected a Hue Bridge, please Press 'Done' and select one before clicking next.'''=Te pole valinud Hue Bridgei, 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'''=Bridgeide 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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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 lapplication mobile SmartThings. Veuillez dabord mettre à jour votre Hue Bridge (pont Hue) à lextérieur de lapplication SmartThings, à laide de lapplication 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 dabord configurer votre Hue Bridge (pont Hue) et vos Hue Lights (lumières Hue) à laide de lapplication Philips Hue. La détection peut prendre cinq minutes ou plus, donc détendez-vous. Sélectionnez votre appareil ci-dessous une fois quil 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 dun 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 quil 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 dutilisateur Hue que vous utilisez nest 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 navez 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 quil est détecté.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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분 이상 걸릴 수 있으므로 편히 쉬면서 기다리세요! 검색이 완료되면 아래에서 기기를 선택하세요.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

View File

@@ -0,0 +1,19 @@
'''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.

Some files were not shown because too many files have changed in this diff Show More