Do you have a dark stairway at night and you want it to be illuminated when you come across? This is why you bought the eufy Lumi Stick-On pack? Now you don’t use it because it switches on immediately when you get in its range?

I encountered this situation an thought about it. In conclusion I came up with modifying the inner circuit by adding an ATtiny10 to slowly ramp up the LED brightness with a PWM.

1. Open up Lumi

After unscrewing four screws inside the battery housing you can easily pull the housing into two pieces. But don’t pull to far and watch the wires connected to either pieces.

2. Desolder R9

Carefully desolder R9, marked in red.

3. Resolder R9

Then resolder R9 in a 90° angle like so and connect OC0A to the resistor (green wire).

4. Solder supply wires for the ATtiny10

Make sure to solder one wire to the same terminal as the red wire from the battery housing, this is VCC for the ATtiny10.

Connect GND to the open pad of R9 which is DRAIN from Q1.

5. Write some piece of code

To put some life in the Tiny, compile this piece of code below or from https://github.com/shyd/eufy-lumi.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/*
 * fader.c
 *
 * Created: 03.01.2018 20:55:13
 * Author : Dennis Schuett <https://schuett.io>
 */

#define F_CPU 1000000UL

#include <avr/io.h>
#include <util/delay.h>


int main(void)
{
    /* OC0A as output */
    DDRB |= (1 << PINB0);

    /* Set OC0A/OC0B on Compare Match when up-counting.
    Clear OC0A/OC0B on Compare Match when down-counting.
    Mode 5: Fast PWM, 8-bit (with WGM02) */
    TCCR0A |= (1 << COM0A1) | (1 << COM0A0) | (1 << WGM00);

    /* Prescaler clk/8 */
    TCCR0B |= (1 << CS01) | (1 << WGM02);

    OCR0A = 0;
    for (uint8_t i=0; i<0xFF; i++)
    {
        _delay_us(2250);
        OCR0A = i;
    }
    OCR0A = 0xFF;

    while (1)
    {
    }
}

And flash this little guy:

Wire the Tiny—then darken your room and give it a test. Lumi should now smoothly fade on.