HUE Api Lightlevel naar lux converteren
Geen idee of iemand bekend is met Philips HUE, maar ik heb een aantal motionsensors die ik via de API uitlees en opsla. De motionsensor heeft een motion-, temperature- en lightsensor. De waarde van de lightsensor ligt volgens mij tussen 0 en 30000.
Ik zou dit graag weer willen geven in LUX.
Volgens de HUE Developers pagina:
Quote:
"Light level in 10000 log10 (lux) +1 measured by sensor. Logarithm scale used because the human eye adjusts to light levels and small changes at low lux levels are more noticeable than at high lux levels."
Volgens wikipedia:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Illuminance (lux) Surfaces illuminated by
0.0001 Moonless, overcast night sky (starlight)[4]
0.002 Moonless clear night sky with airglow[4]
0.050.3 Full moon on a clear night[5]
3.4 Dark limit of civil twilight under a clear sky[6]
2050 Public areas with dark surroundings[7]
50 Family living room lights (Australia, 1998)[8]
80 Office building hallway/toilet lighting[9][10]
100 Very dark overcast day[4]
150 Train station platforms[11]
320500 Office lighting[8][12][13][14]
400 Sunrise or sunset on a clear day.
1000 Overcast day;[4] typical TV studio lighting
10,00025,000 Full daylight (not direct sun)[4]
32,000100,000 Direct sunlight
0.0001 Moonless, overcast night sky (starlight)[4]
0.002 Moonless clear night sky with airglow[4]
0.050.3 Full moon on a clear night[5]
3.4 Dark limit of civil twilight under a clear sky[6]
2050 Public areas with dark surroundings[7]
50 Family living room lights (Australia, 1998)[8]
80 Office building hallway/toilet lighting[9][10]
100 Very dark overcast day[4]
150 Train station platforms[11]
320500 Office lighting[8][12][13][14]
400 Sunrise or sunset on a clear day.
1000 Overcast day;[4] typical TV studio lighting
10,00025,000 Full daylight (not direct sun)[4]
32,000100,000 Direct sunlight
Maar dat komt totaal niet overeen met wat ik nu heb. Als het al een beetje donker is, vanaf een uur of 17.30 tot 8:00 is de waarde 1 en dat is het laagste wat ik krijg. Ik heb verschillende manieren geprobeerd, maar zonder het gewenste resultaat.
Code (php)
1
2
3
4
2
3
4
$lux = (10000*log($row['lightlevel'] | float, 10) + 1);
$lux = (10000*log10($row['lightlevel']) + 1);
$lux = (10 ^ (($row['lightlevel'] - 1) / 10000));
$lux = number_format(round(pow(10, ($row['lightlevel'] - 1) / 10000),2), 2, '.', ''); // Deze gebruik ik nu
$lux = (10000*log10($row['lightlevel']) + 1);
$lux = (10 ^ (($row['lightlevel'] - 1) / 10000));
$lux = number_format(round(pow(10, ($row['lightlevel'] - 1) / 10000),2), 2, '.', ''); // Deze gebruik ik nu
Waardes die ik nu krijg met de laatste functie
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
9.04 Trappengat 9 Feb 14:24
70.21 Keuken 9 Feb 14:24
9.04 Hal 9 Feb 14:20
8.82 Trappengat 9 Feb 14:19
64.80 Keuken 9 Feb 14:19
9.92 Hal 9 Feb 14:15
8.93 Trappengat 9 Feb 14:14
78.47 Keuken 9 Feb 14:14
9.70 Hal 9 Feb 14:10
10.03 Trappengat 9 Feb 14:09
65.24 Keuken 9 Feb 14:09
7.94 Hal 9 Feb 14:05
8.82 Trappengat 9 Feb 14:04
69.87 Keuken 9 Feb 14:04
7.94 Hal 9 Feb 14:00
11.24 Trappengat 9 Feb 13:59
69.87 Keuken 9 Feb 13:59
70.21 Keuken 9 Feb 14:24
9.04 Hal 9 Feb 14:20
8.82 Trappengat 9 Feb 14:19
64.80 Keuken 9 Feb 14:19
9.92 Hal 9 Feb 14:15
8.93 Trappengat 9 Feb 14:14
78.47 Keuken 9 Feb 14:14
9.70 Hal 9 Feb 14:10
10.03 Trappengat 9 Feb 14:09
65.24 Keuken 9 Feb 14:09
7.94 Hal 9 Feb 14:05
8.82 Trappengat 9 Feb 14:04
69.87 Keuken 9 Feb 14:04
7.94 Hal 9 Feb 14:00
11.24 Trappengat 9 Feb 13:59
69.87 Keuken 9 Feb 13:59
Iemand meer verstand van wiskundige formules in PHP?
Die waarden die je nu krijgt lijken me ook eigenlijke wel te kloppen (donker in de hal+trappengat), "office" niveautje in de keuken. Alleen je "nachtwaarden" kloppen dus niet (dan zou je een negatieve lightlevel moeten krijgen - maar ik weet niet of dat allemaal nog wel meetbaar is).
Het is dan denk ik ook een beperking van de lightsensor dat ie 't niet meer kan meten en daarom 1 weergeeft.
Als je zegt dat de formule klopt, dan ga ik daar vanuit. Zit er nog een verschil in die 4 formules? Voor mij is het niet echt leesbaar.
Die laatste 2 zijn gelijk, alleen is de 1e (de 3e dus eigenlijk) wat wiskundiger, en de laatste de PHP implementatie daarvan. De eerste 2 zijn de originele formule, en voor jouw geval dus "verkeerd om" (de variabelen namen zijn verkeerd om; d'r gaat $lux in, en er komt $lightlevel uit).
Bedankt voor de opheldering! Je bent duidelijk meer wiskundig aangelegd dan ik ;-)