Holman RGB Wifi Connected Controller
General Notes
Available from Bunnings
Uses TYWE3L module. Can be programmed without removing from PCB.

GPIO Pinout
| Pin | Function |
|---|---|
| GPIO0 | Panel Button |
| GPIO12 | PWM Green |
| GPIO13 | PWM Red |
| GPIO14 | PWM Blue |
Status LED Not Implemented
The user manual says that the power led on the panel will flash on initialisation (wifi status?). I have not been able to determine what pin this led is connected so this configuration does not support status_led.
Configuration
substitutions:
name: "rgb-01"
friendly_name: "RGB 01"
project_name: "holman.CLXRGB60"
project_version: "1.0"
device_description: "RGB Light"
esphome:
name: "${name}"
comment: "${device_description}"
project:
name: "${project_name}"
version: "${project_version}"
esp8266:
board: esp01_1m
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "your key"
ota:
password: "your password"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Rgb-01 Fallback Hotspot"
password: "fallback password"
captive_portal:
sensor:
- platform: wifi_signal
name: "${friendly_name} wifi signal"
update_interval: 600s
- platform: uptime
name: Uptime Sensor
id: uptime_sensor
update_interval: 60s
disabled_by_default: true
on_raw_value:
then:
- text_sensor.template.publish:
id: uptime_human
state: !lambda |-
int seconds = round(id(uptime_sensor).raw_state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
return (
(days ? to_string(days) + "d " : "") +
(hours ? to_string(hours) + "h " : "") +
(minutes ? to_string(minutes) + "m " : "") +
(to_string(seconds) + "s")
).c_str();
#################################
binary_sensor:
# Front Panel On/Off
- platform: gpio
pin:
number: GPIO0
inverted: true
mode:
input: true
pullup: true
name: "${friendly_name} Panel Button"
id: panelButton
on_click:
min_length: 50ms
max_length: 350ms
then:
- light.toggle: rgbLight
light:
- platform: rgb
name: "RGB Lights"
red: output_component_red
green: output_component_green
blue: output_component_blue
effects:
# Use default parameters:
- random:
# Customize parameters
- random:
name: "Slow Random Effect"
transition_length: 30s
update_interval: 30s
- random:
name: "Fast Random Effect"
transition_length: 4s
update_interval: 5s
- pulse:
- pulse:
name: "Fast Pulse"
transition_length: 0.5s
update_interval: 0.5s
- pulse:
name: "Slow Pulse"
# transition_length: 1s # defaults to 1s
update_interval: 2s
- strobe:
- strobe:
name: Strobe Effect With Custom Values
colors:
- state: true
brightness: 100%
red: 100%
green: 90%
blue: 0%
duration: 500ms
- state: false
duration: 250ms
- state: true
brightness: 100%
red: 0%
green: 100%
blue: 0%
duration: 500ms
- flicker:
- flicker:
name: Flicker Effect With Custom Values
alpha: 95%
intensity: 1.5%
output:
- platform: esp8266_pwm
id: output_component_red
pin: GPIO13
- platform: esp8266_pwm
id: output_component_green
pin: GPIO12
- platform: esp8266_pwm
id: output_component_blue
pin: GPIO14
button:
- platform: restart
id: restart_button
name: "${friendly_name} Restart"
disabled_by_default: true
text_sensor:
- platform: wifi_info
ip_address:
name: "${friendly_name} IP Address"
disabled_by_default: true
bssid:
name: "${friendly_name} BSSID"
disabled_by_default: true
- platform: template
name: Uptime
id: uptime_human
icon: mdi:clock-start
entity_category: diagnostic