Fadecandy, Raspberry Pi, Balena and 250 LED Holiday Lighting Woes

Team Balena-

First and foremost - thanks to the entire Balena team for the powerful container / IoT platform (courtesy of introduction via the updated Etcher UI) which I’ve used to manage a small fleet of air quality sensors around the house.

Special thanks to Chris for his original (definitely not TL;DR) blog post, as well as the more succinct / updated 2019 post. These posts not only motivated me to build this project - but also to finally take the plunge and add a 3D printer to my bench. That has been a great adventure in and of itself.

Now for my trouble:

After getting my case printed, FadeCandy all soldered up, all my JST pigtails soldered and connected to the power supply - finally it was the moment of truth. I have 5 strings of these Alitove 5v WS2811 LEDs, though I only connected one string as my initial test (I have since connected all 5).

Within Balena, I’ve created the application (“fadecandy”), cloned the git repo, and using the CLI, have pushed the project to the cloud, and ultimately, down to the device. All containers start and show status “Running” in the console. I can connect to the VNC server and see the Glediator UI (whoa :))

Alas, no LEDs illuminate, under any circumstances. I’ve since attached all 5 strings - using channels 0-4 on the fadecandy (though I wired all 8 while I was there). I’ve checked and re-checked all my solder connections, rung out all my splices and power distribution with a meter - even confirmed that I’ve got 5v at the two additional ‘feeder wires’ attached to each strand. I even considered that I might have used the wrong JST SM pigtail gender - so soldered up a quick “male-male” adapter, so I could plug in the other end of the strand (near as I can tell, there’s no indication which end is ‘data in’?) - but achieved the same results. :frowning:

I was following the original blog post - so I was surprised to find Glediator and associated lib files already installed, and then when I went to add the serial number of my fadecandy board to the fc server.json file - found that this configuration is apparently no longer required.

I can connect directly to the fadecandy server, using the url:

http://:7890, which (typically) shows that my fadecandy board is connected and detected:

I can even use the ‘Identify’ button, and confirm that the LED on the fadecandy board blinks.

However - using the ‘test pattern’ dropdown: All Pixels Off, Full Brightness, 50% Brightness – I can’t get ANY LEDs to light up.

Just to ‘half split’ the problem - I grabbed another strip of WS2811 LEDs I had handy, and attached it. Interestingly, regardless of which channel it connects to - the very FIRST led on the strip is a dim green, and no other activity.

While I’m moderately familiar with pixels - I’ve only driven them with an Arduino in the past, and this is my first experience with the FadeCandy board. I’m off to read up on that repo to see if I can figure out some additional diagnostics to further isolate the problem.

Thanks in advance for any #ProTips – and thanks again for the inspiring project!

3 Likes

Hey @SnoWake welcome to the forums! I’m super happy my posts inspired you to get started with not only the project in itself but 3D printing too - awesome :slight_smile:

It sounds like you’ve got everything up and running software wise; the fact you’re able to access the Fadecandy Server and it shows your board & serial number is a good sign. As you’ve found, there were some improvements made to the project since that first blog post so it’s a bit easier to get running.

I’ve just checked my board to make sure it’s running the same software and firmware version as yours and it is. Whenever I’ve worked with the project I’ve always found the test pattern dropdown within Fadecandy to be the sure fire method of checking things are working.

The only thing that comes to mind is to make sure both your Fadecandy board, and then by association the LEDs themselves are properly grounded. You’ll see in my diagram (copied below), I connected the ground of channel 7 to the ground of the LEDs. I remember when I was first building my setup, I had some strange issues that were resolved once I added this. Technically the board should be getting a good ground via the USB connection but apparently mine wasn’t.

I liked the Fadecandy board as it did make using these things a lot easier than driving them directly, so it’s strange you’re having issues. Nevertheless thanks for trying the project and keep us posted here, hopefully together we can figure out what is going wrong.

Hey Chris! Thanks for the quick reply. In answer to your questions above - and adding photos:




I definitely hooked up a dedicated ground lead to the fadecandy. I chose the channel 0 port instead of 7 - but that doesn’t seem likely to be the culprit.

An interesting observation: I’ve noted that I seem to have the opposite gender of JST SM connectors attached to my fadecandy: I used the ‘female’ ones (without exposed pins). This creates a bit of a dilemma as to which end of the string of the Alitove LEDs I should connect to, as there is one of each. As mentioned, I soldered up a ‘converter’ and this didn’t seem to make any difference. Also confusing the matter is that the connectors I have installed ‘mate’ with those of pre-wired strips I have. I’m contemplating busting out an arduino with some simple sketch just to see if I can get something to work :slight_smile:

I am measuring 5vdc across red and (white in my case) leads at each of the 5 channels I’m expecting output on (channels 0-4). After seeing that LED flashing on the fadecandy, indicating that I was definitely communicating with the board - I really expected the LEDs to come on, and then be focusing my troubleshooting on the ‘upstream’ software components. At this point, it sure seems like I’ve got a hardware problem - but I’ll be damned if I can figure it out. :frowning:

Any insight on determining the input and output end of these Alitove lights? Is there a ‘standard’ / convention around this? As noted above, it’s strange as what I installed matches a couple of pre-wired strands I have, which only have connectors on the DATA IN -> end.

Hi @SnoWake,

I noticed you mentioned the JST connectors are the wrong gender. Adafruit (and most others) will send you cut lengths from larger rolls, and the last length to come off the roll has the “far end” connector on it. You can’t connect that end to your control circuits. But you can connect that end to another string with a matching connector, assuming you have power handled correctly. It sounds to me like you’ve connected your data wire to the “far end”, and need to connect it to the other end of your LED string(s).

Also, I can’t see from your descriptions or pictures whether you have successfully run +5v and Ground to each LED string directly from the power supply. You may already know this, but the Arduino and control circuits cannot provide enough current to power more than about one or two LEDs directly from any pins. The +5v and Ground MUST come directly from the power supply, and of course, all your ground connections must be common and connected together.

Cheers!
Mark-

2 Likes

Hi @koyaanisqatsi!

Thanks for the specific reply and follow-on questions. I’ll post a few more ‘targeted’ photos later - but yes, all the +5v and Ground leads are soldered together - and I’ve individually measured voltage (while hot) and impedence (while disconnected) to ensure each connection back the the V+ / V- on the Meanwell power supply are solid.

I soldered up a quick “gender-bender” with two of the male JST SM connected so that I could attach the Alitove string from either end - and get the same result in both cases :frowning:

Again - more detailed / specific photos to follow – right now, time to take advantage of some awesome weather and get out on a family hike. Thanks again for all the great engagement, feedback, and additional guidance.

Just as an aside, the pre-wired strips that I’ve tried as additional diagnostics have worked well with other (arduino-powered) rigs and are one of several factors I used when deciding which gender connector to put on the power supply end. Not having exposed (though ‘shielded’ by the plug) 5v pins was my primary consideration, and the fact that it matched up with an existing, functional strip.

Any obvious tips as to how I would determine which end is intended to be the ‘input’ (I can see an arrow on the PCB inside the LED body - but can’t really interpret which strands terminate on that ‘end’). I’m obviously over-looking something. :smiley:

Cheers!

1 Like

Yep, that arrow is telling you which direction the data must flow. I can see it on a few of the LEDs in your pics. The same side of the tiny LED circuit board with the arrow is your data input side.

1 Like

Hi Mark-

Thanks for the quick response. That’s sort of what I’d figured from visual inspection - which means I’ve got the wrong plugs coming out of the fadecandy. Oh well - I’ve got a ton of the JST SM connectors, so I guess I’ll just solder up my ‘extension’ cables with the corresponding connectors to do the conversion. Still has me scratching my head as to why I’ve got no lights when using the dropdown in the fadecandy server UI - but I’ll give it another try with a strand wired what I believe to be properly. Detailed photos to follow.

Thanks again for all the engagement and support!

Peace,
Billy

Chris / Mark / Team-

Now we’re getting somewhere:

With my ‘adapter’ in place and connected to the DATA IN end of the strand, and using the fadecandy drop-down… EUREKA!

I also received my IEC 613 Inlet plug (had to go with the screw-mount style as I couldn’t locate the ‘side-clip’ variety for which the case is optimized) and discarded my ‘hard-wired’ hack.

Once I confirmed the LEDs functioned from fadecandy - I moved ‘upstream’ and started the output from Glediator…

and… Bob’s my uncle. WooHOO!!

Now to solder up my gender-adapting extension cables (serendipity: creating the 5 x ~8’ extension cables exactly drained my current box of CAT6 cable :))

I’ll update the thread one last time once I get all the extensions created, and get the rig deployed somewhere. Can’t be on the family tree in the living room, as it’s already completed dressed and has an ‘all white’ lighting scheme this year. I’m going to fabricate some sort of tree-shaped deployment on our front deck - perhaps using a large / inverted tomato plant cage? Will share whatever I come up with.

Thanks again for this fun project, and the great inspiration on many fronts. I’ve got a veritable fleet of raspberry pis of all generations - and see a couple other projects here I think I’m going to build!

Happy Holidays!
Billy

2 Likes

@SnoWake this is so awesome to see! and what an awesome observation about the JST connectors by @koyaanisqatsi, great work :smiley: Really nice colour for the enclosure too, mine is bright blue which doesn’t camouflage well under a tree!

I’ll probably do some updates to the project in the coming weeks so please do add any issues you find or feature requests you have to the repo. It is supposed to have a scheduling feature and to start the output of Glediator automatically but I noticed on my own setup that didn’t seem to be working this year so I’ll definitely look into that as well.

Thanks again for building and sharing - if you PM me an address we’ll send you some stickers at the very least :slight_smile:

2 Likes

@chrisys @koyaanisqatsi / Team balena-

All ‘extension’ cables soldered / heat shrink’d up, everything tested – all 250 LEDs going STRONG!

My experiment of using an inverted ‘tomato plant cage’ as a tree-shaped frame didn’t really pan out - so I just went to Walmart and picked up a low-cost fake tree, and dressed it. Could have used a foot taller one, but – it’s a start:

Thanks again for this great project that inspired learning on multiple fronts, from 3D printing to hardware to electronics to containers to software! Tackling the learning curve on Glediator, now - and, inspired by some other threads here in the forums, starting to look at xLights.

I’ll try to out the scheduler today: I’ve got most of my other holiday lighting on SmartThings-controlled switches and such - and so being able to automate this will be consistent with my approach and prevent me from having to turn it on and off.

One more quick question: I tried the ‘noVNC’ connection to port 80 - and I see the splash screen, but then, attempting to connect - get the following error:

I’ll have to dig into what this is doing under the covers, and see if I can figure it out. My goal would be to be able to use a phone, without having to fire up a VNC connection from the laptop, for control.

Thanks - AGAIN!

3 Likes

Nice! Glad we could help. Have fun with those lights. I have some like that on the outside of my house (although I used the wrong kind of LED strings and they started failing quickly). They’re pretty awesome to have. I leave them up all year and change the color palettes and designs for the various holidays and events through the year. Check out holidaycoro.com for supplies. (I have no affiliation - I just like their site).

Cheers!
Mark-

2 Likes

Mark-

Thanks again. Yeah, I’m definitely geeking out on this long-admired and just recently fully engaged rabbit hole. I just ordered another 10 strands on the LEDs (cuz - you know, they’re cheaper that way) and a couple more fadecandy microcontrollers, and a little 8x8 pixel matrix. I really like the ‘year-round’ idea - and am also contemplating (as Chris suggested in one of his posts as well) - a more ‘traditional’ matrix, as a potential permanent display, as well. I figure with 8 channels of 50 driven by a fadecandy and beefy power supply - I should be able to create a 10x40 matrix, and do all kinds of cool things. :smiley:

Happy to have this community, and platform, to rapidly prototype and deploy. I’ve been working with containers, and container management / orchestration services for awhile - and even IoT services (like AWS’ IoT and related services) - but the balena platform sure simplifies and ‘value-adds’ over those basic offerings.

Peace!
Billy

1 Like

Amazing stuff Billy! While we wait for Chris or Mark to chime in, real quickly, is VNC setup to run on port 80? I recall in the past seeing it usually on port 5000 or 5001, so, it might be worth quickly checking to see if it is listening there instead of 80.

1 Like

Hi David-

I’ll have to look at the underlying configuration but, FWIW: I can connect to VNC, with an ‘out-of-box’ configuration with RealVNC client from the MacBook. At first I thought it could be ‘contention’ as I might have already been connected to VNC w/ a client - but I ensured I wasn’t connected during my last test, and still get the ‘unable to connect to server’ from NoVNC (which seems to be what’s bound to port 80 with the current build).

BTW: Tree deployed to front deck, up high - and visible from around the neighborhood. I expect the comments to start coming in tomorrow… :smiley:

Thanks - AGAIN! Diving into Glediator now, and trying to get more advanced that just applying the presets that Chris provided - and looking to re-create some of the effects seen in his ‘demo’ video!

Too cool. Let the learning continue!

Peace,
Billy

Hey Billy, this thread continues to be awesome and possibly my all time favourite (I am a sucker for RGB LEDs :joy:).

but I ensured I wasn’t connected during my last test, and still get the ‘unable to connect to server’ from NoVNC

I think you’re on to something here; noVNC just works as a regular VNC client app, running in a browser. For example if it was configured as such you could use it to make connections to any VNC server, but in this instance it’s configured on startup to connect to the Glediator container. Therefore it’s strange that you can connect with a client but not with the noVNC client. I have encountered the situation before where my desktop/iOS client disconnected but left the session open and hence there were no free slots for the web client to connect. If it’s ongoing please add it as an issue and I’ll help look into it - it’s working on mine right now but it’s still on a deploy and release from last year.

That being said though, for reasons that I couldn’t immediately work out and haven’t dug into any more, the performance via noVNC is terrible compared to a direct connection. I ended up using a dedicated iOS VNC app for mobile access which is buttery smooth. NoVNC has some graphical glitches around the matrix previews in Glediator and the frame rate is pretty low which make it hard to use. If we can figure out how to improve that it would be a much more worthwhile feature; I mainly added it to help folks get up and running with it without any external software.

Don’t forget to try the steamed hams mode :wink:

Actually @SnoWake I think I can reproduce this now (noVNC not connecting) so will see what I can do about it :+1:

Awesome - thanks @chrisys! I was able to confirm that it was not session contention - and that with a freshly-rebooted, never-connected-to system, I still wasn’t able to get to it via the noVNC interface on port 80. As suggested, I installed a VNC client on my iOS device, and - which a bit cumbersome, I can accomplish the basics (start / stop, change presets) easy enough. I wouldn’t prioritize the noVNC ‘fix’ on my behalf… :slight_smile:

Given my penchant for home automation, I’m going to noodle on, and try to whip up some integrations with a couple of ecosystems - SmartThings and Alexa. I’ll get major bonus points with the family for providing voice-control to the shiny new toy. Anything I come up with will for sure be shared back via PR.

I knew I recognized the animated GIF as a Simpsons character - and thought I was hip enough to know all the memes - but I just learned a new one (somehow I missed the episode with “Skinner and the Superintendent”:


Steamed Hams, indeed! Not in Utica - it’s an Albany thing. :slight_smile:

One more quick note: I tried the to enable the timer by setting the required Service Environment Variables for the Glediator container:

But haven’t seen any effect. As I’m writing this I’m realizing - I’m not certain I restarted the container or device after setting these variables – might that be required? I considered just setting it up on the same ‘smart switch’ that is turning on/off some ‘dumb’ lights – but a) not the most graceful way to shut down the Pi, and b) as noted, the Glediator output doesn’t auto-start on power-up. So - having this timer capability, and just leaving the device ‘powered on’ 24x7, seems like the best approach (at least given my current perspective :)).

Too much fun! Stand by for some more photos now that it’s prominently displayed. Got my first comments from a neighbor a block away while walking the dog this morning. Feeling my inner Clark Griswold coming on…

Peace,
Billy

Off the top of my head, that schedule pattern is likely a crontab schedule. Try setting it to “0 2 * * *” and “0 9 * * *”, rather than zeros. The last three fields should be set to wildcards, rather than numbers so you don’t narrow down the schedule to a invalid value (i.e the zero’th day of the month)

1 Like

@koyaanisqatsi That is too funny: I even meant to say in my post “It’s been a while since I’ve crontab -e - but I think this syntax (copied from the blog post) looks good.” As you so accurately point out, AND provide the link to the man page… it was not (correct). Editing now and replacing the (wouldn’t even function on ONE day of the month :wink: ) zeros with the appropriate wildcards. Will report back results…

1 Like