HomeHome AutomationStrip time! Sonoff L1 Lite RGB LED

Strip time! Sonoff L1 Lite RGB LED

It's like Sonoff L1 but...

I know you got overly excited, but it’s not that kind of “strip”. It’s a strip in which I take a look at the latest product in Sonoff lineup: Sonoff L1 Lite – talk about differences between the original L1 and take things apart to see if it’s flashable! If you are into tech – it’s the best strip you can ask for!

Sonoff L1 Lite RGB LEDs

It’s common knowledge, everything with RGB LEDs is cooler, faster, stronger, better – so why don’t you treat yourself to a LED strip that you can add to anything you want. In case you wondered about the differences between Sonoff L1 and Sonoff L1 Lite – there are two:

  • L1 Lite – doesn’t have an IP rating (not weather resistant),
  • L1 Lite – it’s cheaper
  • L1 Lite – it’s lighter and more flexible

Sonoff L1 Lite should be used indoors unless you will weatherproof it yourself. You can definitely take the advantage of the cheaper price if you keep the lights inside. As with all Sonoff products, Sonoff L1 Light follows the same pattern: it’s ESP8285 based and used with eWeLink app. Pairing takes only a couple of moments, but I had to resort to the compatible mode as for some reason the Quick Pairing mode didn’t work for me. (hold the ON button on the remote to enter the pairing mode)


Sonoff L1 Lite is not made of individually addressable 5050 LEDs, these are pitched at roughly 2.5cm giving an LED count of about 40 per/m. It’s bright enough for the ambience lights, and the strip is very light, which means less peel-off issues. You could cut Sonoff L1 Lite every 10cm as the strip has cut off points.


An inline controller takes care of the IR controls from one of these cheap IR remote controls and provides you with connectivity via eWeLink app. It’s nice to see IR sensor on a small extension wire, so you can expose the sensor without exposing the entire controller.

While the IR remote does feel cheap, it’s responsive and easy to use, with most of the options present. If you want to get more advanced or get the access to the built-in microphone, you have to link the controller with eWeLink app. The app comes with standard controls over colour, brightness schedules and full integration with Alexa & Google Assistant.

If this is not enough, you can link the Sonoff L1 Lite with other ITEAD products and create automation scenes to trigger the strip in a specific mode. It’s nice to see predefined effects as well as slots to define your own even if the options are just basic.

Until I opened Sonoff L1 Lite I thought that the Music option implementation is done in the software like in example in Yeelight lights, but I’m pleased to say that it’s not the case. Just like Zemismart panels, Sonoff L1 Lite come with a microphone that can be used to listen to the ambient sounds and to generate light effects.

What’s particularly cool are music preferences. Thanks to speed and responsiveness, you can set the Sonoff L1 Lite in the eWeLink app to respond to claps or clicks! And as you can see in the Instagram post below – it’s a cool trick!

Thanks to IR diode you can also issue controls from other sources. I can copy the codes and use it with my Xiaomi Mi 9 (review) or Xiaomi Redmi Note 9 (review) IR blaster. Or I could do the same with Switchbot Hub (review) and take over controls with NodeRED thanks to Switchbot API without flashing a custom firmware.

Don’t worry though, from years of use of random RGB products, you will end up using 2-3 colours and brightness settings in the long run.


The controller isn’t sealed so it encourages you top peek inside. At first, I was a little disappointed to see densely populated board without any dev pins, but turns out the dev access is available at the bottom of the PCB board.

Sonoff L1 Lite is built around ESP8285 so hacking this thing is a piece of cake if you are prepared to get your hands on soldering tools. That’s what’s gonna happen next and we will connect the strip to NodeRED with Tasmota! I love stuff that can be hacked! Be advised though, IR remote will work fine, but you won’t be able to use the microphone.

Flashing Tasmota on Sonoff L1 Lite

Almost all pins are exposed on the board, but GPIO0 isn’t. This means that I have to check the specification sheet to locate the pin on the IC itself. Luckily for me, this pin is used only to push the ESP8285 into flash mode so there is no need to solder anything to the mini pin of the IC.

To push Tasmota, I’m going to follow the steps from my flash guide. Tasmotiser is a great tool to get it done. Take a moment to identify the pins on the board (and the picture) and connect it to a FTD1232 or a similar according to the scheme:

FTD1232Sonoff L1 Lite
GNDESP8285 GPIO00 on boot

While it’s possible to do it yourself, you probably want to ask someone to give you a hand. Use a spare cable connected to GND on FTD1232 and touch the GPIO00 on ESP8285. Then plug the power in – if you did this correctly, blue LED should not come up, ESP is in flash mode, you can disconnect the GPIO00, and you are fine to flash Tasmota.

Once flashed and connected, configure Tasmota with Sonoff L1 template – or use the following schema:

{"NAME":"Sonoff L1 Lite","GPIO":[1,3200,0,3232,1,0,0,0,0,320,1,0,0,0],"FLAG":0,"BASE":70}

From now, it’s just plain sailing. All controls are mapped correctly, so you can use whatever you wish to control the strip.

NodeRED controls

I’ve done my homework already with Novostella RGB lights. I flashed these before and set up a whole control scheme. As both lights are running Tasmota, modifications will only take a moment. You will be able to:

  • toggle the bulb
  • change the brightness
  • change the colour values
  • Use Alexa to control the light
  • Use Google Assistant to control the light

Of course, nothing stops you from integrating Sonoff L1 Lite with other Sonoff products like Sonoff ZigBee series etc.

bear in mind I’m awkward and I usually swap the %topic and %prefix in my MQTT Tasmota flow around. It wouldn’t be a complete NodeRED revamp without a nice Dashboard widget to go with it so each section comes with the associated dashboard features.

It’s a good practice to have the state of each bulb available in the flow context, so I will take care of this first. I already know some of that code will be used later on while processing Google Assistant responses so I modified the update so it always holds the last values:

Example Response

var current = flow.get("SonoffL1");
var data = msg.payload;
var state;
if(data.POWER === "ON"){
data.POWER = true;
msg.label = "ON";
if(data.POWER === "OFF"){
data.POWER = false;
msg.label = "OFF";
var save = Object.assign(current, data);
flow.set("SonoffL1", save);
return msg;

For the sake of consistency, I translated the ON|OFF payloads to true|false.


Turning things on and off with Tasmota is an easy task. Tasmota is able to accept ON|OFF1|0 and true|false values. For the sake of consistency, I use true|false in my flows. Submit the msg.payload of your choice to the correct topic SonoffL1/cmnd/Power. Now that the programming warm-up is over, let’s move to the more exciting stuff.


To change the brightness level, an integer 0-100 has to be sent to SonoffL1/cmnd/Dimmertopic. There are many ways in which you can set the brightness. I have included in my flow a random value, inject node and a dashboard slider.

The slider comes with 2 buttons set to min (10) and max (100) for quick toggling. Why min value of 10? If you want to turn the light off just use a toggle!

Colours (HSB or HSV or HSL)

By far this was the most annoying to figure out. Mostly because of the HSx naming standard. Regardless of the name HSB, HSV, HSL it represents the same thing and once you know how to send the correct values it’s not that complicated.

There is a colour picker in NodeRED dashboard that can actually deliver HSV data to NodeRED. The data isn’t directly usable, so to convert it to a string that is formatted like this (H [0-360], S [0-100], V [0-100]) a function node is required.

Example Response

var h = Math.round(msg.payload.h);
var s = msg.payload.s *100;
var v = msg.payload.v *100;
msg.topic = "SonoffStrip/cmnd/HSBCOLOR";
msg.payload = h.toString() +","+s.toString()+"," + v.toString();
return msg;

Tasmota requires the payload to be a string with Saturation and Value as % rather than ranges from 0-1. So that’s what this script does. Now I can pick the colours using colour picker with the HSV option.

Alexa (NodeRED skill)

This skill is my go-to for IoT devices in my house. It’s relatively easy to use, and I wrote about it extensively before. Take a look at how to use Alexa in NodeRED, as here I will only explain the conversion that needs to take place to make the voice commands for toggle, brightness, temperature and colour working.

Example Response

var command = msg.command;
if(command === "TurnOnRequest" || command === "TurnOffRequest"){
msg.topic = "SonoffStrip/cmnd/Power"; return msg;
if(command === "SetPercentageRequest"){
msg.topic = "SonoffStrip/cmnd/Dimmer";
return msg;
if(command === "SetColorRequest"){
var h = Math.round(msg.payload.hue);
var s = msg.payload.saturation * 100;
var v = msg.payload.brightness * 100;
msg.topic = "SonoffStrip/cmnd/HSBCOLOR";
msg.payload = h.toString() +","+s.toString()+"," + v.toString();
return msg;

Alexa node issues different commands for each action. I’m taking advantage of this to create 3 different if() conditions to set the correct values and send it to the correct topic (MQTT out node won’t be configured for that).

The toggle action is self-explanatory and Alexa’s payload is already true|false. Simple enough. Dimming action is works in a similar way, and the payload comes as a value set between 0-100. With colour, I needed to repurpose the script I made for the HSV control. Fortunately, the values provided by Alexa are the same so it was a simple copy and paste job.

Google Assistant (NORA)

I’m using NORA to emulate the Google home – if you want to know in detail how NORA works – there is an entire write up about connecting NORA in NodeRED. I will cover the changes in the light device that had to be made to use voice and widget control correctly.

Unlike Alexa, requests coming from NORA don’t have the command information. I’m not able to tell what changed without looking at the values directly. I need a different system to deal with it. I’m going to save the updated values in a flow context (learn how to save the context data), and use these to compare the differences.

Function Node

function convert(y){
y = y.toFixed(2)
return y;
function color_convert(h,s,v){
let h1 = Math.round(h);
let s1 = convert(s) * 100;
let v1 = convert(v) * 100;
let z = h1.toString() +","+s1.toString()+"," + v1.toString(); return z;
var msg1 = null;
var msg2 = null;
var hue = msg.payload.color.spectrumHsv.hue;
var sat = msg.payload.color.spectrumHsv.saturation;
var val = msg.payload.color.spectrumHsv.value;
// passed value
var color_val = color_convert(hue, sat, val);
// current values
var data = flow.get("SonoffL1");
var power = data.POWER;
var dimmer = data.Dimmer;
var colour = data.HSBColor;
var ct = data.CT;

// toggle
if(msg.payload.on !== power) {
msg = {payload: msg.payload.on, topic: "SonoffStrip/cmnd/Power"};
return msg;
// dimmer
if(msg.payload.brightness !== dimmer || color_val === colour) {
msg1 = {payload: 350, topic: "SonoffStrip/cmnd/CT"};
msg2 = {payload: msg.payload.brightness, topic: "SonoffStrip/cmnd/Dimmer"};
return [[msg1,msg2]];
// colour
if(color_val !== colour) {
msg1 = {payload: color_val, topic: "SonoffStrip/cmnd/HSBCOLOR"};
msg2 = {payload: msg.payload.brightness, topic: "SonoffStrip/cmnd/Dimmer"};
return [[msg1,msg2]];

Unfortunately, the system isn’t perfect. I had to come up with a solution to colour changes, as each colour from the Google Home widget would supply a different brightness level. At the moment, the flow will set the arbitrary colour temperature to control the brightness since NORA doesn’t support temperature changes directly.

On top of that to change the colour in this situation I have to change the colour value first and then adjust the brightness which results in a small flash. I had very little to work with and this is the best I could come up with.

Buy Sonoff L1 Lite

Buy it using these links to support NotEnoughTech.

Final Thoughts

I think that’s all you need to know to make up your mind about Sonoff L1 Lite. If you need a waterproof version, pick the Sonoff L1 instead. Whichever you end up ordering you will know how to flash it, use it with NodeRED or do whatever you want. If come across the microphone controls I will let you know. Until then, you can always stay on eWeLink app and use the mic mode. If you have any questions, let me know in this Reddit thread.

Project Download

Download project files here. Bear in mind that Patreon supporters have early access to project files and videos.


This product has been sponsored by itead.cc, but I reserve the rights to a honest and unbiased opinion about the product..

Sponsored byreview


Other reviews

Small, but featured: Wanbo New T2 Max

It's small but packs a bunch of features and supports 1080P natively - close look at Wanbo New T2 Max projector.

Every portable monitor needs this

Uperfect Ucolor panel looks great in 4K but there are limitations that you should be aware of - let's take a closer look at this portable display.

The mini version of my favourite gimbal

I have a smaller version of my Feiyu Scorp Pro gimbal to test - lighter, more porable but equally capable? Check out Feiyu Scorp Mini 2

Backpack for techies? Samsonite SPECTROLITE 3.0

On my second trip to LA, I decided to treat myself to a backpack upgrade. It was an unexpected, impulse buy. It was either that or meet the city of Angels with an old backpack full of holes. Is Samsonite Spectrolite 3.0 a backpack for tech people?

Half the DJI’s price, just as nice? Hohem Mic 01

I have been enjoying my DJI Mic, and you can attest to its quality in my videos, but Hohem decided to undercut them with Hohem Mic-01 that cost 3 times less! Have I overpaid? Let's see what can you do with this little microphone.

The holey GravaStar Mercury M2

Has GravaStar outdone itself again and produced a gaming mouse that catches your eye with unique design without sacrificing features? GravaStar Mercury M2

LIMINK S20 – doubling the screen estate

I have added LIMINK S20 display to my computer to increase the screen estate and these are my thoughts about these dual displays.