dimswitch

Example of the component sinricpro/esp-idf v1.1.1
# SinricPro DimSwitch Example

Control a dimmable light with voice commands - brightness control with PWM.

## Hardware

- ESP32 board
- High-power LED or LED strip
- MOSFET or LED driver (e.g., IRF520, IRLZ44N)
- Current-limiting resistor (if using single LED)
- External power supply (12V for LED strip)

## Wiring

### For LED Strip (12V)

```
ESP32 GPIO25      → MOSFET Gate
MOSFET Source     → GND (common ground with ESP32)
MOSFET Drain      → LED Strip Negative (-)
LED Strip (+)     → 12V Power Supply (+)
Power Supply (-)  → GND (common ground)
```

### For Single High-Power LED

```
ESP32 GPIO25      → MOSFET Gate
MOSFET Source     → GND
MOSFET Drain      → LED Cathode (-)
LED Anode (+)     → Current Resistor → 12V+
```

## Features

- Dimmable brightness 0-100%
- PWM-based LED control (5kHz)
- Brightness adjustment (increase/decrease)
- Physical button for on/off toggle
- Smooth dimming transitions
- Auto turn-on when brightness is set

## Voice Commands

- "Alexa, turn on the light"
- "Alexa, turn off the light"
- "Alexa, dim the light"
- "Alexa, brighten the light"
- "Alexa, set light to 50 percent"
- "Alexa, set light brightness to 75"

## Build

```bash
cd examples/dimswitch
idf.py build flash monitor
```

## Configuration

Edit `main/dimswitch_example.c` - update WiFi and SinricPro credentials.

For different GPIO or PWM settings, modify:
```c
#define LED_GPIO                (25)
#define LED_FREQUENCY           (5000)  /* 5 kHz */
#define BUTTON_GPIO             (0)
```

## Physical Button

Press BOOT button (GPIO0) to toggle light on/off. The state is sent to SinricPro.

## DimSwitch vs Light Device

- **DimSwitch**: Simple brightness control only (this example)
- **Light**: Adds color control, color temperature (see `examples/light`)

Choose DimSwitch for:
- Single-color LED strips
- Dimmable white bulbs
- Simple lamp control

Choose Light for:
- RGB LED strips
- Color-changing bulbs
- Color temperature control

## Hardware Notes

1. **PWM Frequency**: 5kHz is flicker-free for most LEDs
2. **MOSFET**: Use logic-level MOSFETs (gate threshold < 3.3V)
3. **Heat Sinking**: Use heatsink for high-power applications
4. **Current Limit**: Calculate resistor: R = (Vsupply - Vled) / Iled
5. **Common Ground**: ESP32 and LED power supply must share GND

## Recommended MOSFETs

- **IRF520**: Good for 5-10A loads
- **IRLZ44N**: Logic-level, handles up to 47A
- **IRL540N**: Logic-level, handles up to 33A

## Safety

- Never exceed MOSFET current rating
- Add proper heat dissipation for continuous operation
- Use appropriate gauge wire for high currents
- Fuse the power supply for protection

To create a project from this example, run:

idf.py create-project-from-example "sinricpro/esp-idf=1.1.1:dimswitch"

or download archive (~5.09 KB)