Has anyone managed to build a luminosity sensor?

As in the title.

I've sorted out a standard AC dusk/Dawn sensor via a relay & dry contacts, but I find the activation levels to be less than desirable. I have a number of projects I could incorporate lux levels into.

Ideally, something nodemcu based would be amazing.

Any ideas? I'm sure someone must have came up with something similar in the past.. TIA! =)

Don't know what that is so I can't comment on compatibility. Many motion sensors also have light readings but I've found them to be unsatisfactory in various ways, mostly infrequent reporting. Some, though, do OK if you send a refresh to them as frequently as you wish to see the current level.

What I use for any/all illuminance I care about are @iharyadi's devices:

These things are fast for all sensors and are great Zigbee repeaters too. I have 10 of them.

Looked it up... and Iman's devices are not.


Thanks for the reply.

At more than 20 quid a go, it's not something I'd like to pursue. Thanks again though.

So here’s another choice - the xiaomi mijia lux sensors are zigbee 3.0 devices and there’s a community driver for them.

I purchased them at ~$10 apiece - took a while to arrive, but they work well.


You can use HubDuino to easily build a low cost illuminance sensor using a NodeMCU. HubDuino supports a variety of light level sensors, documented in the ReadMe.

I built 2 of them with a lux sensor and a temp/humidity sensor using a Tasmotized NodeMCU. It sends values to MQTT broker that is read by Node Red that then uses Hubitat Nodes to update virtual devices in HE. It is not discrete. :slightly_smiling_face:


... And others.

Thanks so much, I'll attempt the Hubduino solution after my sensors arrive. Much appreciated!


If you need any assistance with HubDuino, please feel free to reach out.

1 Like

Before I order, can I just check... I haven't gone through the docs as yet (I will when the time comes), but is this going to be, essentially, a case of flash thr node, add the sensor and drivers, then use an app to configure, after which, I can see say, a new luninisity device in hubitat. From which I can view light levels via webcore etc?

If its a bit of a steep curve, I'll hang fire until I have enough time free.

Much appreciated!

You’ll need to manually add at least two Hubitat Groovy Drivers from my ST_Anything repository. Specifically the Parent Ethernet driver and the Child Illuminance driver. On the Arduino side, you’ll need to download all of the ST_Anything Arduino libraries and sketches as a zip file, and then copy those folders to the correct location on your computer so the Arduino IDE can find them. Then, it is a simple matter of using an example sketch as a starting point to create your own sketch and loading the NodeMCU.

Wiring your sensor to the NodeMCU can be an issue if you’ve never worked with microcontrollers/low voltage electronics, but there are plenty of guides available online. Make sure you figure out all of the parts you need before ordering to make sure everything goes smoothly.

Note: I actually use @iharyadi’s awesome Environment Sensor to measure illuminance on my screened porch. His devices work really well for this purpose!


the hue outdoor motion does this also. no need to buid something special.

True, but it does a horrible job of it in my experience. Here it is compared to one of @iharyadi's modules. The 2 devices are only 5' apart on my porch.



not really if you look at it the digital approx of the curve is good enough that a rule should work fine.. at least it is not really jumping around. ie up down up down etc.

Cheers @ogiewon.

I've got a fair few nodes wired up already. Hopefully it'll be a doddle.

(He says, expecting agro and confusion)

1 Like

Well, my expectations of granularity beg to differ but to each his own.

1 Like

I use my Weatherflow weather station for outside lux and uv. Works well, updates 1x/min. Obviously not applicable for indoor lux measurements though.

1 Like

Cheers, but need a few kicked around the house. And that looks awesome, but expensive =p