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

Finally figured out how to get these floods off of Tuya with full local control, including DDP listening from a WLED controller. Best part, this is all done over the air and no hardware to mod.

Pre-Reqs

  • Need a Ubuntu/Linux machine with Docker to do the install with Tuya Cloud Cutter. Git clone the repository locally.
  • Download OpenBK7231T_UG_X.XX.XX.bin and place it in /custom-firmware folder
  • For DDP to work you for effects you need need an ESP32 running WLED or xLights. This is running separately from the Novostella floods.

Flashing

  • Run sudo ./tuya-cloudcutter.sh from the terminal, no need for additional flags
  • Choose 2 - Flash 3rd Party Firmware
  • Select OpenBeken firmware that you downloaded
  • Select By firmware version and name
  • My version was 2.9.6 - BK7231T, double check in the smart life app under device info->updates
  • Choose Tuya Generic
  • Choose GU10 RGBCT Bulb
  • Power cycle the flood light 6 times with about 1 second between on/off. If the light is flashing quickly, power cycle 3 more times. Should be flashing slowly.
    • Pro tip use a smart outlet and press the button on it.
  • Let Tuya Cloud Cutter do its magic

Setup Wifi

  • Connect to the OpenBK7231T hotspot
  • Navigate to http://192.168.4.1
  • Configure Wifi to have the device join your network
  • Let the device reboot and find the IP from your router

Configure OpenBeken

  • Navigate to your flood light (http://192.168.xx.xxx)
  • Go to Config->Configure Module
  • Set these pins
    • P6 (PWM0) - PWM - 1
    • P24 (PWM4) - PWM - 0
    • P26 (PWM5) - PWM - 2
  • Choose Return to Menu then *Launch Web Application"
  • Choose Tools from top menu
  • Under LED tools click “100% Red, Blue, Green” to test out colors

Misc Settings

  • Go to Config->Configure General/Flags
  • Flags I turn on:
    • Flag 0,1,2,10 for MQTT Broadcasts
    • Flag 24, for a decent white mode
  • Config->Configure Name - Name of the device

Configure Home Assistant

  • From the main menu choose Config->Configure MQTT
    • Enter in your host info
    • For Client Topic I use “flood_light_X”
    • Group Topic I use “novestella”
  • Check from Main Menu that MQTT is connected
  • Navigate to Config->Home Assistant Configuration
  • Click Start Home Assistant Discovery
  • Message should queue and show up in Home Assistant MQTT
  • Control you lights from Home Assistant

DDP for WLED listening
In WLED under LED preferences you can add DDP(Network) under led outputs and add the IP address for the flood light.

You can turn on/off WLED DDP listening through MQTT. This is the scripts I use:

connect_flood_lights_wled:
  alias: Connect Flood Lights to WLED
  sequence: 
    - service: light.turn_on
      entity_id:
        - light.flood_light_1
    - service: mqtt.publish
      data:
        topic: cmnd/flood_light_1/startDriver
        payload: DDP

disconnect_flood_lights_wled:
  alias: Disconnect Flood Lights to WLED
  sequence: 
    - service: mqtt.publish
      data:
        topic: cmnd/flood_light_1/stopDriver
        payload: DDP
    - service: light.turn_off
      entity_id:
        - light.flood_light_1

I have flashed 6 Novostellas. Four from August 2021, and a couple I got under warranty replacement last year (Sept 2022)

Product Link: https://www.amazon.com/gp/product/B08WX4QN63
OpenBeken Teardown: https://www.elektroda.com/rtvforum/viewtopic.php?p=20552462

9 Likes

Quick Video of the lights with DDP running a chase effect:

1 Like

Thanks for posting this! I originally bought the four pack and then decided to return them and build my own waterproof box and use a “normal” pixel flood light. But I have a location that I’d prefer not to do that.

I wouldn’t mind a higher power one though… I’ve searched around (not just your links), and don’t see anyone messing with the 60 and 100 Watt options. Are you aware of any info if they have a BK7231T or not?

Also, from my understanding of your steps, you linked yours to a Tuya/Smart Life account first (to check version number?). Is that required, or any way around that?

Thanks!

I had a friend that was able to directly flash them without connecting to Tuya (smart life), he used LibreTiny (EspHome) instead of OpenBeken. I plan to switchover in the next few weeks.

Somewhere in discord I think they said the 60w uses the same chip, can’t find it so no guarantees.

Greatly appreciate the response.
Are you saying he linked it with an account on Tuya or Smart Life? I was hoping to avoid doing that… is there a way to?
Same with your conversion… is there a way around activating via Tuya or Smart Life first? (other than opening the unit up)

Thanks again!

Doh, typo. He did NOT connect it to Tuya or Smart Life.

No need to open it up. I only opened up one to figure out the chip and I had one unit that the Blue LEDs stopped working.

Ah!

I guess my only remaining point of confusion is that it seemed like you were saying to check the version number before upgrading, and that required connecting to Tuya/Smart Life.

Temporally adding the devie to the Generic Tuya app (I am not sure about the many other private label apps) is a bit of extra work, however, in my experience this Tuya app defaults to NOT upgrading the firmware of device you are installing, rather it requiring you to manually do the upgrade, so playing around in the generic Tuya app, unless you select a firmware upgrade, is harmless IHMO and may offer some useful info if you encounter issues in later steps (which for the goal of replacing the device firmware, do NOT upgrade the device firmware). So I add the device to this generic Tuya app and take iOS screen shots of the various UI screens. The most important screen to grab a screen shot of is the device and MCU current version number. This is mostly a CYA step in case your device has a firmware version that is not supported by the Cloud Cutter process, having this info might help you to understand if you might have made a mistake during the cloud cutter steps or if the device is not able to ‘cut’. This is found by clicking the ‘pencil’ icon in the upper right of the iOS screen and then selecting the ‘Device Update’ option at the bottom of the screen, select this even if it says ‘No updates available’. This will take you to a screen that shows the current Main Module and MCU Module firmware versions. Again, do NOT do any firmware updates! Take a screen shot of this screen with the version info. Navigate back one level and select the ‘Remove Device’ selection at the bottom of the screen. Then select the ‘Remove and Erase Data’ option to set the device back to it current ‘not installed’ state. Then move forward with the ‘cloud cutter’ steps to replace the devices firmware with a open local only firmware. Good hunting!

In my experience its not uncommon for brands to update chipsets and versions.

If my versions settings don’t work, connect to Smart Life and check version number and try again. While I prefer not to use Tuya cloud, I am not overly paranoid about it and they do have US servers. I recently ran into this issue with a few Feit bulbs that had different chipsets.

I do have a separate IoT network that does not have access to may main network and monitor for misbehaving devices.

Moved to LibreTiny (ESPHome Fork).

I like how it handles DDP better. No need for MQTT, you can just choose DDP effect. Bonus after about 20-30 seconds without a DDP command the flood lights revert back to its last manually set state.

Yaml:

substitutions:
  name: flood-light
  friendly_name: Flood Light

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

libretiny:
  board: generic-bk7231t-qfn32-tuya
  framework:
    version: dev

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

# Enable logging
logger:

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

ota:
  password: !secret fallback_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: ledc
    id: red
    pin: PWM4
  - platform: ledc
    id: green
    pin: PWM0
  - platform: ledc
    id: blue
    pin: PWM5

ddp:

light:
  - platform: rgb
    name: ${friendly_name}
    red: red
    green: green
    blue: blue
    restore_mode: ALWAYS_ON #Start with light on after reboot/power-loss event
    effects:
      - ddp
      - random:
      - strobe:
1 Like

I’m very new to the Tuya stuff, do you have to use CloudCutter again, or can you upload a compiled LibreTiny firmware directly to the light?

If you flashed it with OpenBeken you can rename LibreTiny file and flash it OTA from OpenBeken’s web app.

1 Like

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