How to - Everspring EH403 FloodLight

This is my thread for the Everspring EH403 Floodlight device.

Manufacturers product page here

User Manual here

Specs document here

I added it to Vera Plus as a generic Z-Wave device. Only two devices were added a GenericIO device (parent) with ON/OFF buttons and a LUX Sensor device (child).

First thoughts I’d like to have seen three devices, I seem to be missing the motion sensor part. But lets see what we can do to improve this?


The On / Off buttons work and turn the light on and off but the LUX sensor wasn’t displaying any value initially.

Before I start modifying these devices in any way, I am making a note of their settings and variables out of the box:

GenericIO device:

device_type = urn:schemas-micasaverde-com:device:GenericIO:1
device_file = D_GenericIO1.xml
device_json = D_GenericIO1.json
category_num = 11
subcategory_num = 0


Lux Sensor device:

device_type = urn:schemas-micasaverde-com:device:LightSensor:1
device_file = D_LightSensor1.xml
device_json = D_LightSensor1.json
category_num = 18
subcategory_num = 0



Initially I wasn’t sure if to change the GenericIO device (parent) in to a motion sensor device or into a binary light device, ideally I want both, so looks like I need to create a virtual device also.

I am going to create a virtual motion sensor device and change the GenericIO device (parent) in to a binary light device.

You can use one of the various Vera plugins to create a virtual motion sensor device, or you can upload the attached unzipped implementation file to Vera and then create a virtual motion sensor using the Apps → Develop Apps → Create Device, which is what I did. (352 Bytes)

device_type = urn:schemas-micasaverde-com:device:MotionSensor:1
device_file = D_MotionSensor1.xml
impl_file = I_MotionSensor1.xml

You specify these in the devices Advanced area after its been created:

device_json = D_MotionSensor1.json
category_num = 4
subcategory_num = 3


Now to change the GenericIO device (parent) in to a Binary Light device:

urn:schemas-micasaverde-com:device:GenericIO:1 → urn:schemas-upnp-org:device:BinaryLight:1

D_GenericIO1.xml → D_BinaryLight1.xml

D_GenericIO1.json → D_BinaryLight1.json

category_num = 11 → 3
subcategory_num = 0 → 0


Now we need to look at getting the “Tripped” variable value from the parent device which is now a binary light device into the virtual motion sensor device.

There are various ways you could do this using PLEG or Reactor or Multi-System Reactor to monitor that value and then set the value on the virtual motion sensor device etc.

Or you can simply use this LUA code in your Vera’s startup LUA area. Whenever the “tripped” value of the parent device changes, it will change the virtual motion sensor device to match.

Credit to @therealdb for this code and you can also find it on his Github page here.

“100” is the device ID of the “Binary Light” (parent) device and “101” is the device ID of the virtual motion sensor, change these to suit your own device numbers.

devices = {
	[100] = {sensorID = 101} 

function copyVariable(dev_id, service, variable, oldValue, newValue)
	if tonumber(oldValue) ~= tonumber(newValue) then
		luup.log(string.format("Setting %s - %s for #%s to %s", service, variable, tostring(deviceID), tostring(newValue)))

		local deviceID = devices[dev_id].sensorID
		luup.variable_set(service, variable, newValue, deviceID)

for deviceID, _ in next, devices do
	luup.variable_watch("copyVariable", "urn:micasaverde-com:serviceId:SecuritySensor1", "Tripped", deviceID)

Once you have set that up, you can test your virtual motion sensor is working correctly? By moving in front of the Everspring Floodlight’s PIR sensor to trip it and then your virtual motion sensor should be tripped as a result and it should also un-trip after a period of time with no movement.

Z-Wave parameters:

I set the TIME and the LUX with the Z-Wave parameters instead of trying to use the dials on the back of the PIR, they override them anyway.


Here is what I have set currently:

Parameter 1 = 60 seconds the light will stay turned on for that amount of time after a PIR detection event.

Parameter 2 = 30 LUX - I wish I could set this lower to like <10 LUX but I cannot so 30 it is. The light will only turn on after a PIR detection event when its 30 LUX or below.

Parameter 3 - Lux auto report, presumably the interval the device will report its current LUX level to Vera, I have it set at the lowest setting of 1 minute. Default is 0 / OFF.

Parameter 4 - I’ve not changed this as yet.

The onboard LUX sensor can only report to a MAX level of 250 Lux which is a shame, so you won’t be using it for day time LUX level readings.

And here are my final devices renamed in the Vera UI7 web GUI.

LUX Sensor device showing the max LUX level value of 250 (Day time)


LUX Sensor device showing the min LUX level value of 0 (Night time)


Not Tripped:




That’s it for now, I’ll post some actual photos of the floodlight and I still need to mount the thing yet over my patio door for my decking seating area and see how I get on with it once its in proper operation.

1 Like

Some photos of the actual device.


It looks like Everspring at some point sold the PIR part separately but I can’t see any for sale now.

Part number is ES160 mine says ES160-3.

Theres a user manual here just for the PIR.

Shame you still can’t get these stand alone.

HomeSeer do them also but only US frequency no EU.

HomeSeer HS-FLS100+

Got the light fitted, only complaint I wish it’s bracket arms were longer so the light could be tilted down more towards the ground, as it is the PIR hits the wall and that’s your lot for tilt angle.

@BenjaminB @DzhanAli

Has the Ezlo device integration team looked at these Everspring flood light devices?

As you can see on the Vera platform I had to jump through lots of hoops to get it working properly.


10 posts were merged into an existing topic: HomeSeer HS-FLS100+ Z-Wave Plus Outdoor Floodlight Sensor

Best Home Automation shopping experience. Shop at getvera!

© 2021 Ezlo Innovation, All Rights Reserved. Terms of Use | Privacy Policy | Forum Rules