Available from:
Banggood.com
Aliexpress.com
Amazon.co.uk
Manufacturer:
Yeelight.com
Install method:
USB to Serial
GPIO # | Component |
---|---|
GPIO00 | None |
GPIO01 | None |
GPIO02 | None |
GPIO03 | None |
GPIO04 | None |
GPIO05 | None |
GPIO09 | None |
GPIO10 | None |
GPIO12 | None |
GPIO13 | None |
GPIO14 | None |
GPIO15 | None |
GPIO16 | None |
GPIO17 | None |
GPIO18 | None |
GPIO19 | PWM 5 |
GPIO20 | None |
GPIO21 | PWM 4 |
GPIO22 | None |
GPIO23 | None |
GPIO24 | None |
GPIO25 | None |
GPIO26 | PWM 2 |
GPIO27 | PWM 3 |
GPIO6 | None |
GPIO7 | None |
GPIO8 | None |
GPIO11 | None |
GPIO32 | None |
GPIO33 | PWM 1 |
GPIO34 | None |
GPIO35 | None |
GPIO36 | None |
GPIO37 | None |
GPIO38 | None |
GPIO39 | None |
{"NAME":"Yeelight Meteorite","GPIO":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,420,0,419,0,0,0,0,417,418,0,0,0,0,0,416,0,0,0,0,0,0],"FLAG":0,"BASE":1,"CMND":"SO37 128"}
tasmota32solo1...
binaries.
Applying the template adds SetOption37 128
(ChannelRemap) to split ambient RGB (top) and main white into two PWM lights for better control.
Notice: there is some variant that changed RED channel from GPIO33 to GPIO22. If yours is always RED, then change manually PWM1 from GPIO33 to GPIO22
- GPIO33 - red - PWM1
- GPIO26 - green - PWM2
- GPIO27 - blue - PWM3
- GPIO21 - cold white - PWM4
- GPIO19 - warm white - PWM5
- GPIO23 - Night Light (not defined in template)
- GPIO22 - ON/OFF, not needed as ON/OFF works via PWM too
While operation without using GPIO22 is simpler, the default if not configured is always on (even with PWM channels at zero), meaning that idle power draw is >1W higher than if this pin is used to fully switch off.
If you configure GPIO22 as a relay, Power1 will become main power, Power2 will become the ambient RGB light on top, and Power3 the main CCT lamp. You can then use this small Berry program, mainpower.be
to automatically turn on the main power if one of the two light channels are on, and off if both are off.
class MainPower
var powerstate
def init()
self.powerstate = 0
tasmota.add_rule("Power2#State", / value -> self.setpower(1, value))
tasmota.add_rule("Power3#State", / value -> self.setpower(2, value))
self.setpower(1, tasmota.get_power()[1] ? 1 : 0)
self.setpower(2, tasmota.get_power()[2] ? 1 : 0)
end
def setpower(channel, statechange)
self.powerstate = self.powerstate & (3 - channel) | (channel * statechange)
var lamppower = self.powerstate > 0
if lamppower != tasmota.get_power()[0]
tasmota.set_power(0, lamppower)
print("Setting lamp main power: " .. lamppower)
end
end
end
var mainpower=MainPower()
Store it in the file system, and put load("mainpower.be")
in autoexec.be
, or even just put the code in autoexec.be
. Can save you a bit of energy.