Skip to main content

Introduction

So- for Valentines day- since my wife is a huge fan of Disney cartoons, I got her a “Enchanted Rose”

It…. looks like this:

“Enchanted Rose”

You can find it here on Amazon: Enchanted Rose

Well- overall, I guess it looks decent, and works as expected… However- it does not turn it self on at sunrise, or turn itself off when I go to sleep. This is unacceptable!

The goal of this article, is to fully automate this “Enchanted rose” using home assistant.

Do note- as far as I can tell- the LEDs contain an embedded chip, controlling their own lighting. If you desire to be able to customize the colors, or lightshow- you will need to replace the LED strips which came with this product. I cannot find a method to do this, without replacing the LEDs.

Disclaimer- Amazon affiliate links are used in this article. For this site, I choose to not pesture my audience with annoying advertisements, and instead, only rely on affiliate links to support this hobby. By using the affiliate link, you will pay the same price on Amazon, as you would otherwise pay, however, a small percentage will be given to me.. To note- I DID buy all of the seen products with my own money, and did not receive any incentive to feature or utilize them.

Parts and Tools Required.

  1. Enchanted Rose, or something similar.
  2. D1 Mini (Or other ESP8266 variant.)

Below are tools/parts I assume you should already have…

  1. Soldering Iron.
  2. Solder
  3. A small phillips screwdriver…
  4. Helping Hands – Not required, however- this makes many projects much easier. Also- these things are quite solid. I was very surprised at the build quality.

Getting Started

The first step, was to remove the bottom plate to expose the circuitry. I expected to find a small circuit for controlling the color LEDs. However, Instead, I only found a few diodes, and resistors.

I am far from being an electrical engineer, so- don’t quite me. However, the only purpose I can find in this circuit, is to reduce the incoming 5v, down to around 3v.

For anybody who actually does electrical work- Here is the data sheet for the diodes.

Having discovered this, I determined the best course of action, was to connect the d1 mini directly to the 5v power coming from the USB plug. I decided to remove support for batteries.

Using my “Helping Hands“…. I used some COPPER ethernet cable pairs to connect to power and ground on the circuit board. (Cheap ethernet cable is copper-coated aluminum, which does not solder worth a damn.) Any decent wire will work. I just had this laying around close.

After this was done, I used my die grinder to cut out the battery compartment. Any sane person should probably stick to using a dremel tool, or something… BUT, I used a die grinder which is typically used for automotive and other metal working……

This is technically not required, as there is plenty of space to fit the d1 mini, without sacrificing the battery compartment. But- I had no intentions on using this with battery power.

The next step, was to solder in the d1 mini (or nodemcu… or other esp8266 variant.)

For connections-

  1. 5v power is connected to the 5v pin. This power comes from the 5v+ from the circuit board.
  2. Ground is connected to the GND pin.
  3. One of the sets of lights connects to PIN D1, the other, to pin D2. (Don’t use D3 or D4, they are reserved pins!) ESP8266 PIN Reference

After I tested locally, I reattached the bottom cover… and did my final testing.

Within Home Assistant, the esphome device had already discovered itself. I just whipped up a very quick dashboard for testing.

Simple, Stupid testing dashboard.

Finally- after having confirmed everything works as expected, I utilized the scheduling card and added schedules to turn it on and off. This can be installed via HACs.

Setting the schedule with the scheduler card.
But- ignore when we are on vacation.

After setting the schedule- everything else is handled automatically.

Lastly- here is my config for ESPHome.

Don’t laugh at my device name. It works. I didn’t know what else to refer to it as….

substitutions:
  devicename: "pretty_flower"
  friendly_name: "Pretty Flower"
  ip_address: 10.100.3.108
  gateway: 10.100.3.1
  <<: !include secrets.yaml

<<: !include config/common.yaml

esphome:
  name: ${devicename}
  platform: ESP8266
  board: nodemcuv2


switch:
  - platform: gpio
    pin: D2
    restore_mode: ALWAYS_OFF
    name: "${friendly_name} - White"
    icon: "mdi:string-lights"
  - platform: gpio
    pin: D1
    restore_mode: ALWAYS_OFF
    name: "${friendly_name} - Color"
    icon: "mdi:string-lights"

status_led:
  pin:
    number: GPIO0
    inverted: yes