Novostella Blaze 25W RGB Flood Lights Local Control w/DDP

Many thanks to you on this!

For anyone that isn’t aware, if you don’t want to go to the trouble of doing the build manually, you can install a LibraTiny ESPhome Add-on: GitHub - libretiny-eu/esphome-hass-addon: LibreTuya ESPHome Home Assistant Add-on

I then grabbed the binary from

/usr/share/hassio/addons/data/[random]_libretiny-esphome/<device_name>/.pioenvs/<device_name>

(I’m running on Debian… your originating path my vary).

I still need to play with my WLED config… I don’t think I have it configured/segmented properly.

Unrelated to installation, I do have a question about DDP: did you have any trouble getting it to work?

I added my two new Novostella 60W devices (which I can control via HA) to my WLED config that’s on another ESP32, but the Novstellas never seem to receive a command when I put them in DDP mode. I am running Sound Reactive WLED, so I wonder if it’s behind in its DDP support.

> [17:13:08][D][light:035]: ‘Novo Flood 1’ Setting:
> [17:13:08][D][light:108]: Effect: ‘DDP’
> [17:13:08][D][ddp:048]: Starting UDP listening for DDP

Glad its working! I am running the LibreTiny docker to manage all my DDP devices. I have been replacing all my outdoor bulbs with flashable options.

Current setup:

  • 4 Novostella Floods RGB
  • 2 Onforu Floods RGBW (plastic, got them for $10 each)
  • 3 Feit BR30 RGBW
  • 6 Daybetter Bulbs RGBW
  • 3 WLED RGB Strips in upstairs Windows
  • 3 WLED controllers for bulbs/flood groups
  • 3 cheap projectors projecting onto windows (only for the big holidays)

I mapped everything in xLights and using Falcon Player to run lighting sequences. Over the summer I am going to create sequences for all the holidays.

I forgot to mention, for anyone curious - I was able to flash these without taking them out of the box!

The power cord is at the top of the box, so simply plug it into the wall (ideally a plug with an on-off switch) while leaving everything else in the box alone. If you can’t intercept and reprogram, just close the box and return it.

I was successfully able to flash the 80w version using the 1.3.21 - BK7231N version. I was not able to get the 100w working. Tuya is reporting it as version 2.9.29. I attempted to use 2.9.6, 2.9.3, and 2.9.27 without success.

For the 80w you have to flip P26 / P24

  • P6 (PWM0) - PWM - 1
  • P24 (PWM4) - PWM - 2
  • P26 (PWM5) - PWM - 0
1 Like

Update! Libretiny was merged into ESPHome. This is the ESPHome Config.

substitutions:
  name: flood-light-1
  friendly_name: Flood Light 1

esphome:
  name: ${name}
  friendly_name: ${friendly_name}

bk72xx:
  board: generic-bk7231t-qfn32-tuya

external_components:
  - source:
      type: git
      url: https://github.com/KaufHA/common
    components: [ ddp ]
    refresh: always

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: !secret key

ota:
  password: !secret ota_password

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  power_save_mode: none

  # Enable fallback hotspot in case wifi connection fails
  ap:
    ssid: ${name}
    password: !secret fallback_password

web_server:
captive_portal:

output:
  - platform: libretiny_pwm
    id: red
    pin: PWM4
  - platform: libretiny_pwm
    id: green
    pin: PWM0
  - platform: libretiny_pwm
    id: blue
    pin: PWM5

ddp:

light:
  - platform: rgb
    name: ${friendly_name}
    red: red
    green: green
    blue: blue
    restore_mode: RESTORE_DEFAULT_OFF
    effects:
      - ddp
      - random:
      - strobe:
1 Like

I picked up two packs of these and have successfully flashed them using Tuya Cloud Cutter!

NOVOSTELLA Smart Led Flood Lights,RGBCW 200w Equivalent 2000lm,Color Changing Stage Landscape Lights&16 Million Colors&Timing&Music Sync&IP66&APP Alexa Wall Wash Uplights Indoor Outdoor 4 Pack

It seems Novosetella has moved from ESP to BK chips.

Here’s my working code:

substitutions:
  device_name: novostella-flood-light-1
  device_description: 20W RGBWW flood light
  friendly_name: Novostella Flood Light 1

esphome:
  name: ${device_name}
  comment: ${device_description}
  friendly_name: ${friendly_name}

bk72xx:
  board: generic-bk7231n-qfn32-tuya

logger:

web_server:

captive_portal:

mdns:

api:

ota:

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  ap:

button:
  - platform: restart
    name: Restart

debug:
  update_interval: 30s

text_sensor:
  - platform: debug
    reset_reason:
      name: Reset Reason
  - platform: libretiny
    version:
      name: LibreTiny Version

binary_sensor:
  # Reports if this device is Connected or not
  - platform: status
    name: ${friendly_name} Status

sensor:
  # Reports the WiFi signal strength
  - platform: wifi_signal
    name: ${friendly_name} Signal
    update_interval: 60s

  # Reports how long the device has been powered (in minutes)
  - platform: uptime
    name: ${friendly_name} Uptime
    filters:
      - lambda: return x / 60.0;
    unit_of_measurement: minutes

output:
  - platform: libretiny_pwm
    id: red
    pin: P6
  - platform: libretiny_pwm
    id: green
    pin: P7
  - platform: libretiny_pwm
    id: blue
    pin: P8
  - platform: libretiny_pwm
    id: cold_white
    pin: P26
  - platform: libretiny_pwm
    id: warm_white
    pin: P24

light:
  - platform: rgbww
    name: ${friendly_name}
    red: red
    green: green
    blue: blue
    cold_white: cold_white
    warm_white: warm_white
    cold_white_color_temperature: 6500 K
    warm_white_color_temperature: 2700 K
    id: thelight
    color_interlock: true #Prevent white leds being on at the same time as RGB leds
    restore_mode: restore_default_off
    effects:
      - random:
      - strobe:
      - flicker:
          alpha: 50% #The percentage that the last color value should affect the light. More or less the “forget-factor” of an exponential moving average. Defaults to 95%.
          intensity: 50% #The intensity of the flickering, basically the maximum amplitude of the random offsets. Defaults to 1.5%.
      - lambda:
          name: Throb
          update_interval: 1s
          lambda: |-
            static int state = 0;
            auto call = id(thelight).turn_on();
            // Transtion of 1000ms = 1s
            call.set_transition_length(1000);
            if (state == 0) {
              call.set_brightness(1.0);
            } else {
              call.set_brightness(0.01);
            }
            call.perform();
            state += 1;
            if (state == 2)
              state = 0;

I could us a hand… I got through the CloudCutterFlash just fine (well, a bit of trial and error) and got to the end when it gives me the Mac, ID, Key, etc. The device is now on my network and pingable.

But the top entries say to browse to the IP address – no luck. nmap says no ports are open.

Am I missing a big part of this, should I be able to browse to it?

ESPHome OTA update doesn’t work either by the way(I tried modeling it after the one above from @Bryan_Fleming . It’s not that it doesn’t run, it doesn’t upload. It is like I have created a wifi device that will ping and nothing else.

**** Update **** : Never mind. I found I needed to then rerun the cloudcutter to flash the appropriate esphome kickstarter. once done, then everything seemed to work fine.

1 Like

That’s exactly right; sorry I didn’t post more details. I’ve been traveling for the past week… Here’s a great guide that covers things: How To Guide - Tuya CloudCutter with ESPHome LibreTiny - No soldering

You can install the ESPHome Kickstarter the first time you run Tuya-CloudCutter. I used these steps once Tuya CloudCutter was installed on the Pi.

Run: sudo ./tuya-cloudcutter.sh -f ESPHome-Kickstart-v23.08.29_bk7231t_app.ota.ug.bin

I had some trouble finding an option that worked, but finally was successful with “By firmware version and name” and using 2.0.0 - BK7231N / oem_bk7231n_strip_ty

Let it run the exploit; once finished, you should see an open network (I forget the name, but it should be easy to identify). Connect to it and add your network credentials. Then, you can use ESPHome in HA to adopt it and push updated firmware (such as my example above).

I also have the 20w lights not 25w, which is interesting. One of the four just doesn’t work, won’t power on. Wrote the vendor but not expecting much, but want some more so am ordering 4 of the 25w since they apparently work was well.

Thank you for doing this, been searching for a known-working set of color floods.

1 Like

A couple of years ago, I converted a couple of the old ESP versions of these lights and was disappointed when I recently ordered more for Halloween decorations, and the jailbreak didn’t work. I stumbled across Tuya-CloudCutter and was pleasantly surprised to discover the new ones are using BK chipsets and are hackable. I ordered another two sets of four and converted all of them without any issues.

Another quick note: I used the Itchiptool to generate the initial config for the light. That might help you if your 20w lights have a different pin configuration. You need to do this while the ESPHome-Kickstart is still on the device.

Thanks for the pointers, it worked out of the box (or maybe I switched the cold/warm, I can’t recall).

The only thing that does not work the way I expect, and I think is more implementation of the RGBWW, is that “random”, which to me means color, will not change the mode to color if it was already warm or cold white. I tried doing a lambda implementation and first setting mode and then setting effect in code, but it just ran amok. I’m not sure how to make it reset mode to color when switching to an effect if it was white before.

But for automation purposes it is easy, I can do that switch in HA or Node Red.

I got 4 of the 25W’s yesterday, and all worked great. Found their template in the OpenBK7231T image even set pins. These join the three 20W versions I had gotten (of four, one was DOA). The 20W ones, despite being older, I think are better as they have separate warm, cold and RGB LED’s.

Anyway… now that the programming is mostly done, and slightly (but not completely I hope) off topic - has anyone found good mounting stakes or bases to mount them outside? And did you just use an outdoor extension cord without water-sealed outlets, or some kind of boxes to protect the plugs on each? I found a 50’ cord with evenly spaced outlets that worked fine for length/spacing, but worried over time it will start tripping the GFCI.

1 Like

I picked these from Amazon: 8 Packs Threaded Spike Flood Light Ground Stake. I haven’t used them yet, but they seem like they will do the trick. I’m only planning to use the lights for tempory stuff during holidays and such.

Yes, looks perfect, not sure about the AC connections, might wrap in tape. Other alternative I’ve found is a dry box with cable entrances, could screw the light on top and use it as a mount. More expensive.

In case anyone else may be interested in this approach, I ended up buying some extension cord connection boxes, a bit large for just extension cords, but barely large enough to hold the “T” type connector and extra cord. This ends up producing a fairly water tight construct that also lifts the flood a bit off the ground where water may stand. I need some gaskets for the screws to be actually water tight but I suspect this is good enough.

They are here: https://www.amazon.com/dp/B0C5X43Q9X?th=1

They are a bit light… I might get some lead weight like fishing weights for the bottom (we are in a windy area here), but it’s a lot better than a bare connection on the ground. About $10 each.

This is the cord I used:

https://www.amazon.com/dp/B0B4BXSJ74

Linwood

I have 8 of the floodlights working, but only the first one receives DDP messages. Is there a setting or command I need to send to allow the extra ddp messages to pass on to the other lights?

Do these lights not support DDP?

Can’t seem to find these 25w lights available anymore. I bought the updated 30w ones but can’t seem to flash them. Tuya app is showing V1.5.21. Any thoughts?

send them back. I have 8 of the 30W. 7 of them were 1.3.21, 1 was 1.5.31. I ordered another 4, will find one with 1.3.21 and send the rest back.