devices.esphome.io
Tuya Galaxy / Laser Star Projector (RSH-WiFi-Sky01)
Tuya Galaxy / Laser Star Projector (RSH-WiFi-Sky01)
Device Type: lightElectrical Standard: globalBoard: esp8266
Manufacturer: tuya
- Original hardware mod: 3ATIVE VFX Studio
- Modified YAML by kireque
- Custom firmware flash instructions and esphome config for Tuya SK20 nebula light (no disassembly / soldering required)
Hardware
replacing WB3S chip with ESP12
GPIO Pinout
Pin | Function |
---|---|
GPIO0 | LED outside case #1 |
GPIO4 | Red Output |
GPIO5 | Laser Output |
GPIO12 | Green Output |
GPIO13 | Motor Output |
GPIO14 | Blue Output |
GPIO15 | LED outside case #2 |
GPIO16 | Button |
Basic Configuration
# Basic Config
substitutions: device_description: 'RSH Tuya Smart Star Projector WiFi Laser Starry Projector Waving Led Colorful Home Atmosphere Light Wireless Control' friendly_name: 'Galaxy' device_name: esp-galaxy node_name: esp_galaxy
esphome: name: $device_name comment: $device_description platform: ESP8266 board: esp12e esp8266_restore_from_flash: true project: name: 'tuya.galaxy' version: 'RSH-WiFi-Sky01'
globals: - id: dim type: bool restore_value: no initial_value: 'false'
api:
ota:
web_server:
wifi: ap: {} # This spawns an AP with the device name and mac address with no password.
captive_portal:
logger: logs: light: none
light: - platform: rgb name: ${friendly_name} Light icon: mdi:star-shooting id: rgb_light red: red green: green blue: blue restore_mode: RESTORE_DEFAULT_OFF default_transition_length: 2s effects: - random: name: Random transition_length: 5s update_interval: 5s - random: name: Random Slow transition_length: 10s update_interval: 5s on_turn_on: then: - light.turn_on: btn_led on_turn_off: then: - light.turn_off: btn_led
- platform: monochromatic name: ${friendly_name} Laser icon: mdi:laser-pointer id: laser output: laser_pwm restore_mode: ALWAYS_OFF default_transition_length: 3s
- platform: status_led name: ${friendly_name} Status Led icon: mdi:led-outline entity_category: diagnostic id: ${node_name}_status_led pin: GPIO0 internal: true
- platform: monochromatic name: ${friendly_name} Button Led icon: mdi:led-outline entity_category: diagnostic id: btn_led output: btn_led_pwm restore_mode: ALWAYS_OFF
fan: platform: speed name: ${friendly_name} Motor icon: mdi:play-speed id: motor output: motor_pwm restore_mode: ALWAYS_OFF
output: - platform: esp8266_pwm id: red pin: GPIO4 inverted: true
- platform: esp8266_pwm id: green pin: GPIO12 inverted: true
- platform: esp8266_pwm id: blue pin: GPIO14 inverted: true
- platform: esp8266_pwm id: laser_pwm pin: GPIO5 inverted: true
- platform: esp8266_pwm id: motor_pwm pin: GPIO13 min_power: 15%
- platform: esp8266_pwm id: btn_led_pwm pin: GPIO15 inverted: true
binary_sensor: - platform: gpio pin: number: GPIO16 mode: INPUT_PULLDOWN_16 inverted: true name: ${friendly_name} Button id: ${node_name}_button on_multi_click: # single click - timing: - ON for at most 1s - OFF for at least 0.350s then: - light.toggle: rgb_light # double click - timing: - ON for at most 1s - OFF for at most 0.35s - ON for at most 1s - OFF for at least 0.35s then: - light.toggle: laser # hold on_press: then: - if: condition: lambda: |- return id(dim); then: - delay: 0.1s - while: condition: binary_sensor.is_on: ${node_name}_button then: - light.dim_relative: id: rgb_light relative_brightness: 5% - delay: 0.1s - lambda: |- id(dim) = (false); else: - delay: 0.1s - while: condition: binary_sensor.is_on: ${node_name}_button then: - light.dim_relative: id: rgb_light relative_brightness: 5% - delay: 0.1s - lambda: |- id(dim) = (true);