LIFX Local Control

@dkilgore90
Saw you updated master 4hr ago. so updated and ran through commands again.
see below logs from master.

app:372020-05-15 13:58:10.079 errorjava.lang.NullPointerException: Cannot invoke method multiply() on null object on line 1368 (deviceSetSaturation)

app:372020-05-15 13:58:04.460 errorjava.lang.NullPointerException: Cannot invoke method multiply() on null object on line 1368 (deviceSetHue)

app:372020-05-15 13:58:00.800 errorgroovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (com.hubitat.app.DeviceWrapper, java.lang.String, java.lang.Integer, java.lang.Integer, [Ljava.util.Map;) values: [Living Room Tiles, OFF, 30, 16, [null, null]] Possible solutions: wait(), any(), trim(), next(), dump(), size() on line 103 (deviceSetTileEffect)

app:372020-05-15 13:57:58.417 errorgroovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (com.hubitat.app.DeviceWrapper, java.lang.String, java.lang.Integer, java.lang.Integer, [Ljava.util.Map;) values: [Living Room Tiles, FLAME, 30, 16, [null, null]] Possible solutions: wait(), any(), trim(), next(), dump(), size() on line 103 (deviceSetTileEffect)

app:372020-05-15 13:57:55.992 errorgroovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (com.hubitat.app.DeviceWrapper, java.lang.String, java.lang.Integer, java.lang.Integer, [Ljava.util.Map;) values: [Living Room Tiles, MORPH, 30, 16, [null, null]] Possible solutions: wait(), any(), trim(), next(), dump(), size() on line 103 (deviceSetTileEffect)

app:372020-05-15 13:57:54.369 errorjava.lang.NullPointerException: Cannot invoke method multiply() on null object on line 1368 (deviceSetColorTemperature)

app:372020-05-15 13:57:52.288 errorjava.lang.NullPointerException: Cannot invoke method multiply() on null object on line 1368 (deviceSetColor)

app:372020-05-15 13:57:45.058 errorgroovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.getAt() is applicable for argument types: (java.lang.Long) values: [0] Possible solutions: getAt(int), getAt(java.util.Collection), getAt(java.lang.String), getAt(groovy.lang.Range), getAt(groovy.lang.EmptyRange), getAt(int) on line 898 (parseForDevice)

app:372020-05-15 13:57:43.510 errorgroovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.getAt() is applicable for argument types: (java.lang.Long) values: [0] Possible solutions: getAt(int), getAt(java.util.Collection), getAt(java.lang.String), getAt(groovy.lang.Range), getAt(groovy.lang.EmptyRange), getAt(int) on line 898 (parseForDevice)

BELOW FROM TILE
dev:13352020-05-15 14:11:43.370 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

dev:13352020-05-15 14:11:43.256 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:13352020-05-15 14:11:43.172 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:13352020-05-15 14:10:43.301 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

dev:13352020-05-15 14:10:43.215 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:13352020-05-15 14:10:43.110 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:13352020-05-15 14:09:43.357 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

dev:13352020-05-15 14:09:43.239 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:13352020-05-15 14:09:43.139 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:13352020-05-15 14:08:43.341 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

dev:13352020-05-15 14:08:43.263 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:13352020-05-15 14:08:43.150 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:13352020-05-15 14:07:43.310 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

dev:13352020-05-15 14:07:43.196 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:13352020-05-15 14:07:43.122 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:13352020-05-15 14:06:43.334 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

dev:13352020-05-15 14:06:43.232 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:13352020-05-15 14:06:43.153 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:13352020-05-15 14:05:43.280 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

dev:13352020-05-15 14:05:43.195 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:13352020-05-15 14:05:43.119 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:13352020-05-15 14:04:43.310 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

dev:13352020-05-15 14:04:43.202 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:13352020-05-15 14:04:43.120 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:13352020-05-15 14:03:43.318 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

dev:13352020-05-15 14:03:43.211 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:13352020-05-15 14:03:43.135 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:13352020-05-15 14:02:43.321 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

dev:13352020-05-15 14:02:43.241 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:13352020-05-15 14:02:43.163 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:13352020-05-15 14:01:43.354 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

dev:13352020-05-15 14:01:43.273 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:13352020-05-15 14:01:43.146 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:13352020-05-15 14:00:43.278 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

dev:13352020-05-15 14:00:43.180 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:13352020-05-15 14:00:43.105 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:13352020-05-15 13:59:43.318 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

dev:13352020-05-15 13:59:43.234 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:13352020-05-15 13:59:43.139 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:13352020-05-15 13:58:43.303 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

dev:13352020-05-15 13:58:43.217 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:13352020-05-15 13:58:43.132 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:13352020-05-15 13:58:10.113 errorjava.lang.NullPointerException: Cannot get property 'commands' on null object on line 131 (setSaturation)

dev:13352020-05-15 13:58:10.005 debugsetSat: 50

dev:13352020-05-15 13:58:04.487 errorjava.lang.NullPointerException: Cannot get property 'commands' on null object on line 131 (setHue)

dev:13352020-05-15 13:58:04.393 debugsetHue: 50

dev:13352020-05-15 13:58:00.822 errorjava.lang.NullPointerException: Cannot get property 'commands' on null object on line 131 (setEffect)

dev:13352020-05-15 13:58:00.752 debugSending effect command -- type: OFF, speed: 30, palette_count: 16, hsbkList: [null, null]

dev:13352020-05-15 13:58:00.747 debugEffect inputs -- type: OFF, speed: 30, palette_count: 16, colors: []

dev:13352020-05-15 13:57:58.440 errorjava.lang.NullPointerException: Cannot get property 'commands' on null object on line 131 (setEffect)

dev:13352020-05-15 13:57:58.348 debugSending effect command -- type: FLAME, speed: 30, palette_count: 16, hsbkList: [null, null]

dev:13352020-05-15 13:57:58.343 debugEffect inputs -- type: FLAME, speed: 30, palette_count: 16, colors: []

dev:13352020-05-15 13:57:56.019 errorjava.lang.NullPointerException: Cannot get property 'commands' on null object on line 131 (setEffect)

dev:13352020-05-15 13:57:55.925 debugSending effect command -- type: MORPH, speed: 30, palette_count: 16, hsbkList: [null, null]

dev:13352020-05-15 13:57:55.920 debugEffect inputs -- type: MORPH, speed: 30, palette_count: 16, colors: []

dev:13352020-05-15 13:57:54.390 errorjava.lang.NullPointerException: Cannot get property 'commands' on null object on line 131 (setColorTemperature)

dev:13352020-05-15 13:57:54.313 debugsetTemp: 5000

dev:13352020-05-15 13:57:52.312 errorjava.lang.NullPointerException: Cannot get property 'commands' on null object on line 131 (setColor)

dev:13352020-05-15 13:57:52.231 debugsetColor: [saturation:100, hue:29, level:100]

dev:13352020-05-15 13:57:44.849 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

dev:13352020-05-15 13:57:44.768 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:13352020-05-15 13:57:44.691 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:13352020-05-15 13:57:43.310 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

dev:13352020-05-15 13:57:43.230 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:13352020-05-15 13:57:43.147 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:13352020-05-15 13:57:39.434 debug[42, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 255, 255, 0, 0, 0, 0]

dev:13352020-05-15 13:57:34.832 debug[42, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0]

dev:13352020-05-15 13:57:29.480 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

--- Live Log Started, waiting for events ---

Ok - I think I've sorted out most of the issues with setEffect, give that another try.

For setColor, setHue, setSaturation, setColorTemperature (not fixed yet) - the issue seems to be with determining the currentHue, currentcolorTemperature, etc - these are returning as null. Do values display for these attributes in the device details page?

Hi Rob, I can discover my Lifx z strip with Lifx Master, any idea what is the problem? But I can control it with Lifx app.
Thanks for your time.

I'm assuming this should be "cannot discover" - not much to go on, but a few items to check:

  • If your z strip is on a different subnet than HE, ensure udp packets can be routed between them
  • Do you have the MultiZone driver installed on HE?
  • Capture logs from the Lifx Master App and post them here to give us more clues

Hi, your assumption was right on! I'm a beginner with HE, so I might not have the right answers, sorry.

So I install the MultiZone driver and now it's dicovered and I can control it with HE.

I have those driver install:

Should I install other drivers?
Is it possible to set or use Theme that are in the LIFX app or set manually different colors?

Thanks!

No worries - users of all skill levels welcome.

Glad to hear it is now discovered! You only need the drivers for devices you want to discover/control. Crossover of themes from the Lifx app is indirectly possible by setting it once from the app, then capturing it using the zonesSave command. You can then reload that later using the zonesLoad command.

To manually set different colors in different zones, you can use the setZones command - the README mentions the format for the input there, but hit us up here (with any logs from the device/app) if you run into trouble.

One additional option is to install the LIFXMultiZoneChild driver, and run the createChildDevices command on the current z strip device. This will create additional devices in HE for each zone in your z strip, which can be used and set like a standard RGBW light. On my hub, I set up dashboards with the child devices that mirror the physical layout of the zones where I installed the strip, making it easy to conceptualize how it will appear. One note if you go this route: after creating the child devices, you may have to toggle each one on and off before they start behaving properly. Any changes made in the parent device will update the child by the next 1min poll.

Hey all! I've been struggling to get my hubitat to control one of my two Lifx A19s. Any help would be greatly appreciated. I made a thread over here about it with screenshots and stuff.

One bulb is newer than the other, but both Lifx A19s. One is a much newer version with different firmware. Is that newer bulb version just not included in the current release?
Older bulb that works in hubitat- "LIFX (A19)" with v2.77 Firmware
Newer bulb that I can't add to hubitat- "LIFX (A19) LCM3" with v3.60 Firmware

Both bulbs claim to be fully up to date.

from logs:
app:482020-05-22 08:24:41.709 pm warnDevice type 'null' in namespace 'robheyes' not found - you need to install the appropriate driver

app:482020-05-22 08:24:40.449 pm infoDiscovery started

thank you!

You hit the nail on the head - should be a simple fix. From your other thread, your newer bulb reports product id 62. Need to update the LIFXMasterApp in private Map deviceVersion with a case for this id. Looks like it should belong between lines 1569 and 1570 in Rob's current Master branch, with the other A19 IDs.

PR to update: Device types by dkilgore90 · Pull Request #84 · robheyes/lifxcode · GitHub

1 Like

Thank you, I was trying something similar before but over complicating it.

It works now after I put "case 62:" on line 1570 as per your instructions. I'm a little shocked I had to add so little. Thanks again.

Are there drivers for the Candle Color bulb?

I may have missed it but I didn't see them anywhere.

@setheryb Not yet. I've been working on the tile capabilities in some spare time, though - and the candle bulb uses the same messages - so most of it should translate. The catch on my side is that I don't have either device type (tile or candle) to test against. If you'd like to test it out for me, I can throw something together and point you to the code (may take me a couple days)

@ozsmarthome @setheryb check out this branch: lifxcode/ at candle · dkilgore90/lifxcode · GitHub

Updated MasterApp and Tile driver, plus new drivers TileChild and Candle. As mentioned before, I don't have these devices myself to test out the code, but feel free to take it for a whirl and let me know how it goes (debug logs appreciated for any bugs found). We may want a separate thread to discuss initial testing and issues found?

On the candle driver...looks like there is an error thrown in the driver code on Line 72...there's a left paren missing and I think an extra right bracket or a bracket missing

I really appreciate the effort by @rob and @dkilgore90 in developing and maintaining this.

When I updated to the latest master app and the latest drivers, I started getting a block of error messages every minute.

Copy/pasted, it looks like this:

dev:5422020-06-05 14:58:55.176 warnError occured with UDP message: SocketTimeoutException: Receive timed out

dev:5452020-06-05 14:58:42.444 warnError occured with UDP message: SocketTimeoutException: Receive timed out

app:82020-06-05 14:58:32.585 warnUnhandled response for 509

app:82020-06-05 14:58:22.652 warnUnhandled response for 720

dev:15512020-06-05 14:58:22.525 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

app:82020-06-05 14:58:22.464 errorgroovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (com.hubitat.app.DeviceWrapper, java.lang.String, java.util.LinkedHashMap, user_driver_robheyes_LIFX_Tile_228$_poll_closure4) values: [Colour tiles, TILE.GET_TILE_STATE, [tile_index:4, length:1, ...], ...] Possible solutions: wait(), any(), trim(), next(), dump(), size() on line 86 (lifxQuery)

app:82020-06-05 14:58:22.411 errorgroovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (com.hubitat.app.DeviceWrapper, java.lang.String, java.util.LinkedHashMap, user_driver_robheyes_LIFX_Tile_228$_poll_closure4) values: [Colour tiles, TILE.GET_TILE_STATE, [tile_index:3, length:1, ...], ...] Possible solutions: wait(), any(), trim(), next(), dump(), size() on line 86 (lifxQuery)

app:82020-06-05 14:58:22.365 errorgroovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (com.hubitat.app.DeviceWrapper, java.lang.String, java.util.LinkedHashMap, user_driver_robheyes_LIFX_Tile_228$_poll_closure4) values: [Colour tiles, TILE.GET_TILE_STATE, [tile_index:2, length:1, ...], ...] Possible solutions: wait(), any(), trim(), next(), dump(), size() on line 86 (lifxQuery)

app:82020-06-05 14:58:22.319 errorgroovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (com.hubitat.app.DeviceWrapper, java.lang.String, java.util.LinkedHashMap, user_driver_robheyes_LIFX_Tile_228$_poll_closure4) values: [Colour tiles, TILE.GET_TILE_STATE, [tile_index:1, length:1, ...], ...] Possible solutions: wait(), any(), trim(), next(), dump(), size() on line 86 (lifxQuery)

app:82020-06-05 14:58:22.274 errorgroovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (com.hubitat.app.DeviceWrapper, java.lang.String, java.util.LinkedHashMap, user_driver_robheyes_LIFX_Tile_228$_poll_closure4) values: [Colour tiles, TILE.GET_TILE_STATE, [tile_index:0, length:1, ...], ...] Possible solutions: wait(), any(), trim(), next(), dump(), size() on line 86 (lifxQuery)

dev:15512020-06-05 14:58:22.227 debugstate.tileCount: null

dev:15512020-06-05 14:58:22.198 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:15512020-06-05 14:58:22.097 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:15512020-06-05 14:58:22.032 debugpolling tiles

In the above, App 8 is LIFX Master, dev:1551 is LIFX Colour Tiles, dev:545 is LIFX Light Strip, and dev:542 is a LIFX Color bulb.

Looks like you're using the updated code that I've been working on for the TILE (I don't think @rob's code even has these packets defined) - I've been working with @ozsmarthome on the side to test it out, and we're gradually getting there. Latest source is here: lifxcode/ at candle · dkilgore90/lifxcode · GitHub

Note that the logging is verbose, the debug toggle wasn't working for Gary so I've bypassed it with log.debug in places.

We've been discussing tests and issues for the tile driver and capabilities in a side thread: https://community.hubitat.com/t/re-lifx-local-control/42045 - please let me know what's working, what's not, and any suggestions

Cheers for the swift response. I'll try the candle branch version.

If I get tired of the logging, do I just comment out the log.debug lines?

Exactly, you can comment those lines (or try switching them back to logDebug which should respect the preferences flag.)

1 Like

Hi all again

I have one of the LIFX Strip LEDs and configured as a Multizone using LocalControl.
I am trying to change the color temp and level to reflect the lighting conditions but am getting these errors -


I am using the 'Color Temperature: Lounge TV Light: 3500: 100' command.
Maybe there is a better way...can anyone advise please?

The error is coming as we try to read in the state variable lastMultizone to then apply the changed values on top - and this variable is apparently null. We would need more information about your device and any other errors (perhaps during the poll every minute?).

The only specific thing that comes to mind is that the drivers are written to use the "extended MultiZone" packets, which are supported by the gen2+ devices running a specific (or newer) firmware. Looking for the specific requirements on that, but perhaps your device is older and doesn't support it?

Hi again
How can I find out more about device.
I have just turned on the debugging for the device and turned on and off and tried to change the level.
THis is what appeared in the logs -

Happy to help diagnose if I can