For the past few weeks (months?) whenever I was flashing an SD card with Balena Etcher I would see an ad for creating a Spotify Connect server out of a Raspberry Pi. I never really thought about it until I was cleaning the garage (not for fun, I’m moving to Texas) and I wanted to play some music. I have had a standard stereo receiver with some stand up cabinet speakers for a while it just hasn’t gotten much use this year. When I had used it I would just plug my phone into a cable I had directly plugged into the receiver and I would play songs that way. Well now I have an iPhone, no more Androids, and now I don’t have a headphone jack. Great. Fuck the dongles. I now had a need for a Spotify Connect server, which honestly is what I should have done a while back. Balena has their own special way of doing things, which I kinda don’t like so I searched out a different solution.
The software I used is called Raspotify and it is really simple to get up and running. All you need is a (any) Raspberry Pi, the SD card for it, power, and a way to plug it into your stereo. Almost any Pi except a Zero are basically plug-n-play as they have a 3.5mm audio jack. Super simple. After flashing Raspbian Lite to the SD card, boot the Pi and then run one command:
curl -sL https://dtcooper.github.io/raspotify/install.sh | sh
That will get you going, after the Pi is finished you should now see a Spotify Connect server named “raspotify” on your Spotify app. You can edit
/etc/default/raspotify to change the defaults if you want. Like stream quality and the server name etc. I highly recommend doing this. I noticed the volume was super low by default, well the Pi had its volume set to 40%, dang. Use the command
alsamixer that will let you up the volume. I tend not to use things at 100% of the volume available, most times devices start to distort at max levels. I usually stick to 90% for my volume level.
I initially got it setup and running on a Pi 3B+ and it worked just fine, except it didn’t sit well with me using a full blown Pi for such a simple task as streaming music. It just isn’t right. You could use one single Pi as a Spofity connect server as well as host many other things (Pihole etc) but I like to keep things separate. Less chance of failure for me, since I tend to not leave shit alone. Enter the Raspberry Pi Zero W. But the RPi Zero doesn’t have an audio output, ha-hah! There are a few audio DAC hats out there for the Zero that add outputs, but I don’t have one and I didn’t want to buy one or wait for it to get delivered. So we have to make one! It is actually very simple, as long as you have the parts around that is. We are going to create a pair of basic line-out outputs. Good for receivers not so good for things like headphones. Its also just a basic output no extra DAC here. If you find the audio quality isn’t up to snuff (I have not noticed a difference but I have not also tested it thoroughly or compared it to other sources, yet) then a DAC hat is for you.
The title pretty much says it all. We were sitting in bed late one night and the wife yelled “Alexa, turn this shit off!”. Yet nothing happened. Well thats just not good enough. The next morning I opened Node-Red on the house server. I added a new Wemo Emulator node and named it “this shit”. I then connected the new node to the house lights via Hue nodes. Bam! Now whenever we yell at the echo “Alexa, turn this shit off!” you get greeted with “OK” and all the lights shut off! I couldn’t be happier. Now the wife laughs every night when I say it, go figure.
(on the flip side I can now tell her to “turn this shit on” and all the lights will turn on)
No fancy scripts needed, just install the Wemo Emulation node, and then connect it to whatever you want to control. Then tell Alexa to “discover devices” and you should be set.
I have an old CCTV DVR with two older analog cameras attached. It was all top of the line security gear 10 years ago when I was active in the field, and it has not aged well. The DVR has a very old and obviously no longer maintained android app, and the desktop software is just the same. I am not even sure if the company still sells standard DVRs anymore. The image quality on the cameras is horrible, somewhere around 480. To top it off my once prized analog security camera died while I was writing this.
Everything is IP and all the recorders are now NVRs these days. I was looking at possible new solutions to upgrading and there are some decent options out there. Theres the Blink XT2 and Arlo Pro cameras, they seem to be the most popular. There are also the super cheap (but indoor only at this time) Wyze cameras. They all have pretty decent apps but they all rely on cloud storage or record to local SD cards. If you want IP cameras without the cloud you are looking at going through a security professional or something you can get from Costco, Home Depot or Amazon etc. Now I can’t afford a new IP camera package at the moment but they seem nice, but with no local storage I decided to see if I could roll my own NVR and IP camera.
Before you go any further you should read this blog article, it has a ton of info on the options you have available to you. He goes in depth about the options, I am going to give you my experience with them, what I ended up sticking with and how I got it setup. I recommend trying out all the options if you are so inclined, it took me about a day or two to bounce between them all and settle on one. I have been writing this article for two weeks now.
I have a home server running on an old slim desktop computer (that someone dumped off on my curb one day). I am running Ubuntu Server 18.04 headless. I have a few programs and services running on it as well as a few terabytes of media that I cannot risk losing. Even losing the OS would be a pain in the ass as my Plex server would have to re-crawl the folders. That takes a long while, an event I would like to avoid if at all possible. So I am always hesitant on installing and trying new things that look like they need a lot of tweaking and trial & error. Enter the Raspberry Pi. This little SBC makes testing things perfect for me (I have still yet to dive into Docker and VMs). If it proves not too problematic then I can toss it on ye ole server.
I started writing this over a weekend, I thought I could turn my experience into a quick write up and oh man did this thing grow. I just want to state up front that I was kinda sideswiped during my process of doing this as a motionEyeOS prerelease came out and the official github has updated a few things which also match what I wrote here now (like they now cover the install on Buster which they did not before). So you may find some redundancies between our pages. Go figure.
I had been looking for a STL of a stoplight to print for about a year now. I wanted to use the colors of the stoplight to signal to my younger kids when it was ok to wake up in the morning, and when it was time to go back to sleep. My ideal was that I could use Node-Red running on the home server via MQTT to regulate when the stoplight changed colors. Thingiverse’s search is horrible and you could spend days there and not actually get what you are looking for so I never found one that would work. The other day I was searching for some reference STLs of something and accidentally came across a STL for a stoplight. Not one, but three (two remixed from the other).
The first one looked great, good size and decent design. Except it was designed for LEDs and an ATTiny to drive its sequence. The second was a remix of the first. The third was another remix that extended the back casing. The remixes made things easier to print but still relied on LEDs and an ATTiny of sorts. This was a great starting point for me. I have no problems modifying STLs for my purposes. I like to use Tinkercad, not very good with Fusion 360. I downloaded the files and started my own remix. I took elements from all three versions of the stoplight.
I modified the back case to allow a Lolin v3 to be able to mount to it. Then I had to create a cover for the Lolin. I took the front from the original thing, I preferred its one piece to the remixes four piece but I filled in the slot for the little switch. I used the LED panes/covers from the original, unmodified. This was great, I had a front and back a cover, LED panes and the inlay to hold the LEDs. So I printed it all out and went to work. First things first, I tested the LEDs. Like I thought, the LEDs I have are not the super bright ones and running off of the Lolins 3v they just didn’t have enough brightness to shine through very well. No super bright LEDs but I do have some WS2812 neopixels. I hooked one up to test and yes they were perfect. So I modified the LED inlay to hold three neopixels.
I wanted to be able to control the stoplight via MQTT from my server running Node-Red. I used the neopixel example from Adafruit and the default Pubsubclient example for an ESP8266. Mashed the two together and I was able to change the colors on the fly with no problems. I showed off the stoplight to a friend of mine and he loved it. He wanted one for himself, but he doesn’t have a server or anything that runs MQTT. No problem, the Lolin can handle web GUIs. A quick google for a web server on an ESP turned up a nice little tutorial on how to turn on and off GPIO pins from a web GUI. BAM! I took that code and mashed it up with the neopixel code I already had an I was able to get a nice little web page displayed to change the colors of the stoplight. This is awesome.
I decided to make the jump to 32bit printing. I upgraded from a stock Melzi on a Monoprice Maker Select v2.1 (a rebranded Wanhao i3, Cocoon Create). I had no real reason to other than I wanted something to do and I figured this would be a good project, and as always I’m looking for better prints. So why not? I got a BIGTREETECH SKR 1.3 and five (5) TMC2208 v3.0 UART ready steppers. I pulled the trigger and went all in head first after a single night of research. To be honest though when I started this journey there was not a lot of info for doing this just yet, the SKR was still pretty new. What info I have found came mostly from some facebook groups (BIGTREETECH) I am in and a few YouTube videos. But as I type this there is now tons of info available, just most of seems to be directed towards the Ender printers, yay.
Things to note up front:
This guide is a long one, I would read this all the way through first it’ll save you a headache. From what I read the TMC2208s don’t support Linear Advance while in stealthchop. It must be disabled and used as spreadcycle over UART instead if you want Linear Advance. The other option is to use a different driver than a 2208 for the extruder. This would get around the Linear Advance issue. It may also be fixed in Marlin further down the line, who knows.
Getting everything setup including the new programming environment was a pain in the ass, hopefully this “guide” will alleviate some of the pain.
I recommend that you DO NOT buy the TFT35 or any TFT (except maybe the new dual mode TFTs). The dual screens can switch between TFT mode and 12864 LCD mode. The regular TFTs do not have all the functionality of a regular LCD screen. I ordered the TFT35 at first and after two days I sent it back and got a LCD12864 Graphical display instead. Thats the route I am gonna go. The stock screen on a Wanhao i3 is not compatible with the SKR as far as I have been able to find, unless you rewire the plug (see comments below for pinout). The TFT35 was $32 and the LCD12864 was only $12. Heres a good video showing the TFT35.