14.04.2022, 16:09
(This post was last modified: 14.04.2022, 16:10 by Odd Egil Aasheim.)
Hi.
Just bought this outdoor sensor from Philips, but struggeling to get some data out where it can be used.
I don't want to do something directly inside the Hue system, but to extract data.
The device does not come up in http://<ipadress>/api/<userid>/lights along with my other lamps/led's.
Instead it is visible http://<ipadress>/api/<userid>/sensors
Therefore I tried to modify the user.hue script by adding a section for sensors to search and get data from them.
So far so good.
This is a snippet from the user.hue script where I have duplicated the code, but renamed the original code from i.e function searchHueLights() to function searchHueSensors() and so on.
So "function" 2 and 4 below is new regarding the sensors
By using this code I then can make a new script for searching
the log showing that the search is started.
And a new script for reading data
I get a looooong string, but how can i break it up into the pieces that I want?
Output from Log window, (it all comes in one long line in the log window starting with * string: {... )
Let's say that I'm interested in the lightlevel and temperature
I can't find the fomat to extract the data for now.
Any thoughts how to extract?
Just bought this outdoor sensor from Philips, but struggeling to get some data out where it can be used.
I don't want to do something directly inside the Hue system, but to extract data.
The device does not come up in http://<ipadress>/api/<userid>/lights along with my other lamps/led's.
Instead it is visible http://<ipadress>/api/<userid>/sensors
Therefore I tried to modify the user.hue script by adding a section for sensors to search and get data from them.
So far so good.
This is a snippet from the user.hue script where I have duplicated the code, but renamed the original code from i.e function searchHueLights() to function searchHueSensors() and so on.
So "function" 2 and 4 below is new regarding the sensors
Code:
-- function 1 existing huesearch
function searchHueLights()
local response = {}
body_searchHueLights= ''
-- Set username for LogicMachine
socket.http.request({
url = "http://"..ip_add.."/api/"..user.."/lights",
method = 'POST',
sink = ltn12.sink.table(response),
headers = {
['content-length'] = #body_searchHueLights,
['content-type'] = 'application/json',
},
source = ltn12.source.string(body_searchHueLights),
})
return response
end
-- function 2 new huesearch
function searchHueSensors()
local response = {}
body_searchHueSensors= ''
-- Set username for LogicMachine
socket.http.request({
url = "http://"..ip_add.."/api/"..user.."/sensors",
method = 'POST',
sink = ltn12.sink.table(response),
headers = {
['content-length'] = #body_searchHueSensors,
['content-type'] = 'application/json',
},
source = ltn12.source.string(body_searchHueSensors),
})
return response
end
-- function 3 existing hue datacollection
function getHueLights()
local response = {}
body_searchHueLights= ''
-- Set username for LogicMachine
socket.http.request({
url = "http://"..ip_add.."/api/"..user.."/lights",
method = 'GET',
sink = ltn12.sink.table(response),
headers = {
['content-length'] = #body_searchHueLights,
['content-type'] = 'application/json',
},
source = ltn12.source.string(body_searchHueLights),
})
return response
end
-- function 4 new hue datacollection
function getHueSensors()
local response = {}
body_searchHueSensors= ''
-- Set username for LogicMachine
socket.http.request({
url = "http://"..ip_add.."/api/"..user.."/sensors",
method = 'GET',
sink = ltn12.sink.table(response),
headers = {
['content-length'] = #body_searchHueSensors,
['content-type'] = 'application/json',
},
source = ltn12.source.string(body_searchHueSensors),
})
return response
end
By using this code I then can make a new script for searching
Code:
require('user.hue')
-- get bridge to search for new lights
result = searchHueLights()
log(result)
And a new script for reading data
Code:
require('user.hue')
-- get all sensordata from bridge
result = getHueSensors()
log(result)
Output from Log window, (it all comes in one long line in the log window starting with * string: {... )
Code:
Read Hue devices 14.04.2022 17:50:36
* table:
[1]
* string: {"1":{"state":{"daylight":null,"lastupdated":"none"},"config":{"on":true,"configured":false,"sunriseoffset":30,"sunsetoffset":-30},"name":"Daylight","type":"Daylight","modelid":"PHDL00","manufacturername":"Signify Netherlands B.V.","swversion":"1.0"},"2":{"state":{"presence":false,"lastupdated":"2022-04-14T15:29:10"},"swupdate":{"state":"noupdates","lastinstall":"2022-04-13T18:57:32"},"config":{"on":true,"battery":100,"reachable":true,"alert":"none","sensitivity":2,"sensitivitymax":4,"ledindication":false,"usertest":false,"pending":[]},"name":"OutdoorSensor","type":"ZLLPresence","modelid":"SML004","manufacturername":"Signify Netherlands B.V.","productname":"Hue outdoor motion sensor","swversion":"2.53.6","uniqueid":"00:17:88:01:0b:d1:3a:b5-02-0406","capabilities":{"certified":true,"primary":true}},"3":{"state":{"lightlevel":7186,"dark":true,"daylight":false,"lastupdated":"2022-04-14T15:50:23"},"swupdate":{"state":"noupdates","lastinstall":"2022-04-13T18:57:32"},"config":{"on":true,"battery":100,"reachable":true,"alert":"none","tholddark":16000,"tholdoffset":7000,"ledindication":false,"usertest":false,"pending":[]},"name":"Hue outdoor light sensor 1","type":"ZLLLightLevel","modelid":"SML004","manufacturername":"Signify Netherlands B.V.","productname":"Hue outdoor light sensor","swversion":"2.53.6","uniqueid":"00:17:88:01:0b:d1:3a:b5-02-0400","capabilities":{"certified":true,"primary":false}},"4":{"state":{"temperature":2410,"lastupdated":"2022-04-14T15:48:19"},"swupdate":{"state":"noupdates","lastinstall":"2022-04-13T18:57:32"},"config":{"on":true,"battery":100,"reachable":true,"alert":"none","ledindication":false,"usertest":false,"pending":[]},"name":"Hue outdoor temp. sensor 1","type":"ZLLTemperature","modelid":"SML004","manufacturername":"Signify Netherlands B.V.","productname":"Hue outdoor temp. sensor","swversion":"2.53.6","uniqueid":"00:17:88:01:0b:d1:3a:b5-02-0402","capabilities":{"certified":true,"primary":false}}}
Let's say that I'm interested in the lightlevel and temperature
I can't find the fomat to extract the data for now.
Any thoughts how to extract?