HUE Api Lightlevel naar lux converteren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Michael -

Michael -

09/02/2020 14:29:51
Quote Anchor link
Beste,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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


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)
PHP script in nieuw venster Selecteer het PHP script
1
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


Waardes die ik nu krijg met de laatste functie
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


Iemand meer verstand van wiskundige formules in PHP?
 
PHP hulp

PHP hulp

25/11/2024 16:07:47
 
Rob Doemaarwat

Rob Doemaarwat

09/02/2020 15:44:39
Quote Anchor link
Die laatste is het omgekeerde van wat de Hue developers schrijven, dus dat zou moeten kloppen. Het is dan wel logisch dat het laagste wat je krijgt 1 is, want "de macht" (2e param van de pow()) gaat naar 0, dus dan wordt het 10^0, en dat is 1.

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).
 
Michael -

Michael -

09/02/2020 19:39:05
Quote Anchor link
Tot zover ben ik het met je eens. Denk dat t overdag wel redelijk klopt.
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.
 
Rob Doemaarwat

Rob Doemaarwat

09/02/2020 20:17:22
Quote Anchor link
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).
 
Michael -

Michael -

09/02/2020 20:24:03
Quote Anchor link
Bedankt voor de opheldering! Je bent duidelijk meer wiskundig aangelegd dan ik ;-)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.