smrtnt / arilux_al-lc0x Goto Github PK
View Code? Open in Web Editor NEWAlternative firmware for Arilux AL-LC0X LED controllers, based on the MQTT protocol and a TLS connection
License: MIT License
Alternative firmware for Arilux AL-LC0X LED controllers, based on the MQTT protocol and a TLS connection
License: MIT License
It would be nice if the device could remember the last color set, eg.: by storing it in its EEPROM so that the next time I plug it in it doesn't start as green.
I'd like to request a feature so that when I turn off the device it fades into black with the specified transition
duration.
For example:
{ "state": "ON", "transition": 3 }
would turn on the lights with a black to color transition of 3 seconds.
{ "state": "OFF", "transition": 1 }
would turn on the lights with a color to black transition of 1 second.
I have a few of these and I'm likely to buy more...
I also have a bunch of esp8266 units of other flavors. Hooking up a WS2812 strip to them is easy enough (and either bit banging or faster ways of pushing pixels have been found, lots of GitHub repos with code) but I'm wondering if they could be made to support ws2812 as well.
From https://www.muzik.ca/2016/11/30/hacked-esp8266-rgb-led-controller/
A 5v source is available at the IR, and there is at least one more data line available it seems.
Neopixels need 5v, ground, and data. Depending on method used, data line can vary... ( I2S Output pin is the same as RX1 (pin 25), and the I2S method is fast... See https://github.com/cnlohr/esp8266ws2812i2s )
Does the above mean that potentially, an Arilux could be wired to drive Neopixels too, at worst needing a breakout of the RX pad combined with the IR cable?? If so, anyone interested in trying this out and seeing if it's worth adding support for this... Essentially making it drive an addressable strip with full mqtt/OTA/etc firmware?
It appears there are new versions of the LC-01 and LC-02 boards, coming without the metal shield on top of the wifi module.
This firmware doesn't boot on the new version, here is the serial log:
` ets Jan 8 2013,rst cause:1, boot mode:(3,2)
load 0x4010f000, len 1384, room 16
tail 8
chksum 0xef
csum 0xef
csum err
ets_main.c q `
Looking at the serial boot log before and after the flash, I think these are booting in the wrong mode for some reason:
Original firmware: ets Jan 8 2013,rst cause:1, boot mode:(3,7)
After flashing: ets Jan 8 2013,rst cause:1, boot mode:(3,2)
Here you can find some info on boot modes:
digistump/OakCore#45
MTD0 GPIO0 GPIO2 Mode
0 0 0 Remapping
0 0 1 UART boot
0 1 0 Jump boot
0 1 1 Flash boot
1 0 0 SDIO LowSpeed V2 IO
1 0 1 SDIO HighSpeed V1 IO
1 1 0 SDIO LowSpeed V1 IO
1 1 1 SDIO HighSpeed V2 IO
A related discussion:
https://community.smartthings.com/t/release-smartlife-h801-rgbw-led-strip-wifi-controller-bulb/51182/1253
I need some help with DEBUG_TELNET.
nmap
on the IP address, it showed port 23 opentelnet 192.168.1.73
from my RPi which showed Connected
Connection closed by foreign host
So for me it looks like the debugging over telnet isn't really working.
Any help would be great!
It looks like device name used for MQTT discovery gets corrupt. Here is what I get in the MQTT after some time:
homeassistant/light/ARILUX_LC11_RGBWW_000EDAA8/config {"name":"Arilux LC11 RGBWW LED Controller{\"state\":\"OFF\",\"brightness\":255,\"white_value\":118,\"color\":{\"r\":245,\"g\":3,\"b\":0}}","platform":"mqtt_json","state_topic":"RGBWW/000EDAA8/json/state","command_topic":"RGBWW/000EDAA8/json/set","brightness":true,"rgb":true,"white_value":true}
instead of
homeassistant/light/ARILUX_LC11_RGBWW_000EDAA8/config {"name":"Arilux LC11 RGBWW LED Controller 000EDAA8","platform":"mqtt_json","state_topic":"RGBWW/000EDAA8/json/state","command_topic":"RGBWW/000EDAA8/json/set","brightness":true,"rgb":true,"white_value":true}
IMO the problem is
char friendlyName[32];
as length of "Arilux LC11 RGBWW LED Controller 000EDAA8" is > 32
I simply changed it to
char friendlyName[48];
will see if it fixes the problem.
Hi there,
I noticed there are also RGBW controllers:
http://www.banggood.com/ARILUX-AL-LC02-Super-Mini-LED-WIFI-APP-Controller-Dimmer-for-RGBW-LED-Strip-Light-DC-9-12V-p-1060222.html
would support be possible? :)
When in JSON mode and changing the state, the color is not being sent.
This is what is being sent
{"state":"OFF","brightness":145,"white_value":0}
and this is what should be sent
{"state":"OFF","brightness":145,"white_value":0,"color":{"r":224,"g":72,"b":90}}
I have a fix for this, but it exposes another bug when transition is set. but will discuss that separately.
Even if the unit is off, and you send the {"state":"OFF"} message to RGB/XXXXXXXX/json/set, it results in turning the unit on. Unit can be turned off with IR though. The problem lies in the callback method which always sets the startFade=true.
I have a fix I will create a pull request for. I just did the minimum to fix this, although there are a few too many nested if statements in that method, might be cleaner to rework it a bit.
hi,
I installed IRremoteESP8266.h
on compile I am getting the following
Arduino: 1.6.12 (Windows 7), Board: "Generic ESP8266 Module, 80 MHz, 40MHz, DIO, 115200, 1M (64K SPIFFS), ck, Serial, None"
Arilux_AL-LC0X:82: error: 'IRrecv' does not name a type
IRrecv irRecv(ARILUX_IR_PIN);
^
C:\Users\SSS\Desktop\Arilux_AL-LC0X\Arilux_AL-LC0X.ino: In function 'void handleIRRemote()':
Arilux_AL-LC0X:590: error: 'decode_results' was not declared in this scope
decode_results results;
^
Arilux_AL-LC0X:590: error: expected ';' before 'results'
decode_results results;
^
Arilux_AL-LC0X:592: error: 'irRecv' was not declared in this scope
if (irRecv.decode(&results)) {
^
Arilux_AL-LC0X:592: error: 'results' was not declared in this scope
if (irRecv.decode(&results)) {
^
C:\Users\SSS\Desktop\Arilux_AL-LC0X\Arilux_AL-LC0X.ino: In function 'void setup()':
Arilux_AL-LC0X:908: error: 'irRecv' was not declared in this scope
irRecv.enableIRIn();
^
exit status 1
'IRrecv' does not name a type
Hi,
I've got an Arilux AL-LC01 controller. Can you please add support for this device as well?
Thank you!
I have the LC03 from Banggood but my IR codes were different to what you had in the code. I changed mine in Arilux.h to:
#ifdef IR_REMOTE
#define ARILUX_IR_CODE_KEY_UP 0xE5CFBD7F
#define ARILUX_IR_CODE_KEY_DOWN 0xA23C94BF
#define ARILUX_IR_CODE_KEY_OFF 0xE721C0DB
#define ARILUX_IR_CODE_KEY_ON 0xF0C41643
#define ARILUX_IR_CODE_KEY_R 0x97483BFB
#define ARILUX_IR_CODE_KEY_G 0x86B0E697
#define ARILUX_IR_CODE_KEY_B 0x9EF4941F
#define ARILUX_IR_CODE_KEY_W 0xA3C8EDDB
#define ARILUX_IR_CODE_KEY_1 0x5BE75E7F
#define ARILUX_IR_CODE_KEY_2 0xF377C5B7
#define ARILUX_IR_CODE_KEY_3 0xC101E57B
#define ARILUX_IR_CODE_KEY_FLASH 0x7EC31EF7
#define ARILUX_IR_CODE_KEY_4 0xD7E84B1B
#define ARILUX_IR_CODE_KEY_5 0xEE4ECCFB
#define ARILUX_IR_CODE_KEY_6 0x51E43D1B
#define ARILUX_IR_CODE_KEY_STROBE 0xFA3F159F
#define ARILUX_IR_CODE_KEY_7 0x2A89195F
#define ARILUX_IR_CODE_KEY_8 0xF63C8657
#define ARILUX_IR_CODE_KEY_9 0x44C407DB
#define ARILUX_IR_CODE_KEY_FADE 0xDC0197DB
#define ARILUX_IR_CODE_KEY_10 0x488F3CBB
#define ARILUX_IR_CODE_KEY_11 0x13549BDF
#define ARILUX_IR_CODE_KEY_12 0x35A9425F
#define ARILUX_IR_CODE_KEY_SMOOTH 0x9716BE3F
#endif
I've ordered a AL-LC03 on bang good. After opening it and trying to identify which pin I've to connect to flash firmware, I've noticed that the wifi chip is not a 8266 but a 8285.
Is there a way to flash a firmware with mqtt feature ?
Given the fix for #18 there is now a new bug that is visible where the returned state is incorrect.
When in JSON mode and an MQTT command is sent to change the color the following is observed:
Changing color without transition works fine
SET: { 'color': {'r':0, 'g':255, 'b':0}}
STATE: {"state":"ON","brightness":145,"white_value":0,"color":{"r":0,"g":255,"b":0}}
but when a transition is set, it returns the state of the first step in the fade sequence rather than the actual set color. ie.
SET: { 'color': {'r':255, 'g':0, 'b':0}, 'transition': 4}
STATE: {"state":"ON","brightness":145,"white_value":0,"color":{"r":1,"g":254,"b":0}}
The returned color state is wrong.
This is related a bit to do with the flow of the program and the way the fade changes the m_color variables instead of setting m_color to be the final color and using other variables to handle the fading.
Juste a simple question that I think most of them will laugh at it ... Is there a particular way to open the enclosure of the AL-LC03 ? (Youtube video welcomed ๐ )
Thank you for your work !
I'm trying to flash a v1.4 board, but I can't get it to boot in flash mode. I have it connected up as follows:
FTDI Board
Rx --> Tx
Tx --> Rx
GND --> GND
GND --> GPIO0
Using ESPtool I'm getting the error: A fatal error occurred: Invalid head of packet ('\x00'), I've also tried with PIO and the recommended settings from the Readme with Arduino IDE with similar results.
When the device is off. if you send just a color command via json/mqtt such as follows, it will turn on the light to the specified color but the state that is returned is OFF, instead of ON. The same happens if you use the IR remote...
SET: { 'color': {'r':0, 'g':255, 'b':0}}
STATE: {"state":"OFF","brightness":145,"white_value":0,"color":{"r":0,"g":255,"b":0}}
Further in this state, you can't turn it off. you first have to send an ON command and then an OFF command to turn the device off. This is due to the checking of m_state variable on lines 57 and 60 of arilux.cpp.
After getting my hands on an LC-01 from Banggood.com , I attempted to reflash with this firmware following the instructures in the README.md here.
Unfortunately, it seems that on this particular model the low-cost ESP8266 module is used, in which the PN25F08B flash chip is wired in DOUT mode, not DIO mode as referred to in the readme.
Here's some reference to a similar problem with a different branded LED controller
https://www.letscontrolit.com/forum/viewtopic.php?t=3071
First of all, thank you for your program.
With IRremoteESP8266 in Version 2.3.2 I get the following errors:
Arilux_AL-LC0X:80: error: 'IRrecv' does not name a type IRrecv irRecv(ARILUX_IR_PIN); ^
And after downgrade to V1.2.0 I get some errors like this:
/Volumes/myData/Documents/Arduino/libraries/IRremoteESP8266-1.2.0/IRKelvinator.cpp: In member function 'void IRKelvinatorAC::setTemp(uint8_t)': /Volumes/myData/Documents/Arduino/libraries/IRremoteESP8266-1.2.0/IRKelvinator.cpp:96:41: error: no matching function for call to 'max(unsigned int, uint8_t&)' temp = max(KELVINATOR_MIN_TEMP, temp); ^
I hope, you can help me
thx
Allow light to be controlled (on/off) from the wall toggle switch for the backwards compatibility with non-geek family members.
Had to do this to meet minimum WAF.
Have simple working code that I wanted to share, but could not push it to new branch in this repo. Is it not allowed or it is my ignorance issue?
I just got a number of LC02 devices, some are 1.4 and some are 2.0. Before I dive in what are the issues with the 2.0 boards not being compatible? Is it just pin mappings or something more fundamental?
Under paragraph MQTT. chapter one it states: "For example, if you wanted to turn the light on, set it to full brightness, and make it red, you would have to publish to the state topic, the brightness topic and the color topic. JSON also allows effects and transitions to be specified"
It appears that is not true as I had to publish under the set topic in order to change colours.
Can you pls adapt the docu and give an example also such as:
{"state":"ON","brightness":145,"white_value":0,"color":{"r":224,"g":99,"b":90}}
Thanks
Hi,
I think your project is great but it would be even greater (I think) if it was part of the ESP Easy community. Would you consider converting this to a ESP Easy plugin?
Was able to control LC11 with remote before flashing Arilux_AL-LC0X, besides this remote interferes with other RF LED controller, so it sends something.
But no reaction on pressing remote button with Arilux_AL-LC0X. Not even "ERROR: RF code not defined" in debug messages.
Tried to change ARILUX_RF_PIN to 2 and 16 - no luck. Out of troubleshooting ideas. Would appreciate any suggestions.
Does anyone have RF remote working with LC11?
Brightness will go to 235 but won't go to 255. It is because of the default step of 25+235>255.
Here is my patched code:
uint8_t Arilux::increaseBrightness(void) {
if (!m_state)
return false;
if ((m_brightness+ARILUX_BRIGHTNESS_STEP) >= ARILUX_PWM_RANGE)
return setBrightness(ARILUX_PWM_RANGE);
if (m_brightness < (ARILUX_PWM_RANGE - ARILUX_BRIGHTNESS_STEP))
return setBrightness(m_brightness + ARILUX_BRIGHTNESS_STEP);
return false;
}
Hi all,
Not sure what I'm doing wrong but I can't flash this firmware on my LC01 v1.4
But I get this error:
Arduino: 1.8.4 (Windows 7), Board: "Generic ESP8266 Module, Serial, 80 MHz, 40MHz, DOUT, 115200, 1M (64K SPIFFS), ck, Disabled, None"
...
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed
If I don't short GPIO0 then the onboard LED blinks once when it starts up. I tried shorting GPIO0 with GND that comes with the power cable also.
Any idea or help would be appreciated!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.