S_RGB_LIGHT
-
Using the code below I seem to be having trouble getting the control to show in the UI. When I include the device only the arduino node shows up.
Where have I gone wrong?/* https://forum.mysensors.org/topic/7456/ws2812b-information-leds-blinking https://www.domoticz.com/forum/viewtopic.php?t=8039 */ // Enable debug prints #define MY_DEBUG // Enable and select radio type attached #define MY_RADIO_NRF24 //#define MY_RADIO_RFM69 // Set LOW transmit power level as default, if you have an amplified NRF-module and // power your radio separately with a good regulator you can turn up PA level. /** * @def MY_RF24_PA_LEVEL * @brief Default RF24 PA level. Override in sketch if needed. * * - RF24_PA_MIN = -18dBm * - RF24_PA_LOW = -12dBm * - RF24_PA_HIGH = -6dBm * - RF24_PA_MAX = 0dBm */ #define MY_RF24_PA_LEVEL RF24_PA_LOW // ENABLE REPEATER MODE //#define MY_REPEATER_FEATURE // ENABLE LOOP EVEN IF RADIO FAILS. #define MY_TRANSPORT_WAIT_READY_MS 15000 #include <MySensors.h> #include <SPI.h> #include <FastLED.h> const int stripPin = 4 ; // pin where 2812 LED strip is connected const int numPixel = 3 ; // set to number of pixels CRGB leds[numPixel]; char actRGBvalue[] = "000000"; // Current RGB value uint16_t actRGBbrightness = 0xFF ; // Controller Brightness int actRGBonoff=0; // OnOff flag #define CHILD_ID 0 MyMessage lastColorStatusMsg(CHILD_ID,V_VAR1); void setup() { FastLED.addLeds<NEOPIXEL, stripPin >(leds, numPixel); // initialize led strip // Flash the "hello" color sequence: R, G, B, black. colorBars(); } void presentation() { //begin(incomingMessage, NODE_ID, false); // initialize MySensors sendSketchInfo("AWI RGB Light", "1.1"); present(CHILD_ID, S_RGB_LIGHT, "RGB Strip"); // present to controller //Request the last stored colors settings request(CHILD_ID, V_VAR1); } void loop() { //gw.process(); // wait for incoming messages } void colorBars() { SendColor2AllLEDs( CRGB::Red ); FastLED.show(); delay(500); SendColor2AllLEDs( CRGB::Green ); FastLED.show(); delay(500); SendColor2AllLEDs( CRGB::Blue ); FastLED.show(); delay(500); SendColor2AllLEDs( CRGB::Black ); FastLED.show(); delay(500); } void SendColor2AllLEDs(const CRGB lcolor) { for(int i = 0 ; i < numPixel ; i++) { leds[i] = lcolor; } } void SendLastColorStatus() { String cStatus=actRGBvalue+String("&")+String(actRGBbrightness)+String("&")+String(actRGBonoff); send(lastColorStatusMsg.set(cStatus.c_str())); } String getValue(String data, char separator, int index) { int found = 0; int strIndex[] = {0, -1}; int maxIndex = data.length()-1; for(int i=0; i<=maxIndex && found<=index; i++){ if(data.charAt(i)==separator || i==maxIndex){ found++; strIndex[0] = strIndex[1]+1; strIndex[1] = (i == maxIndex) ? i+1 : i; } } return found>index ? data.substring(strIndex[0], strIndex[1]) : ""; } // ############################ INCOMING MESSAGE ########################### void incomingMessage(const MyMessage &message) { if (message.type == V_RGB) { // check for RGB type actRGBonoff=1; strcpy(actRGBvalue, message.getString()); // get the payload SendColor2AllLEDs(strtol(actRGBvalue, NULL, 16)); SendLastColorStatus(); } else if (message.type == V_DIMMER) { // if DIMMER type, adjust brightness actRGBonoff=1; actRGBbrightness = map(message.getLong(), 0, 100, 0, 255); FastLED.setBrightness( actRGBbrightness ); SendLastColorStatus(); } else if (message.type == V_STATUS) { // if on/off type, toggle brightness actRGBonoff = message.getInt(); FastLED.setBrightness((actRGBonoff == 1)?actRGBbrightness:0); SendLastColorStatus(); } else if (message.type==V_VAR1) { // color status String szMessage=message.getString(); strcpy(actRGBvalue, getValue(szMessage,'&',0).c_str()); actRGBbrightness=atoi(getValue(szMessage,'&',1).c_str()); actRGBonoff=atoi(getValue(szMessage,'&',2).c_str()); SendColor2AllLEDs(strtol(actRGBvalue, NULL, 16)); FastLED.setBrightness((actRGBonoff == 1)?actRGBbrightness:0); } FastLED.show(); }```
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login