Ask HN: What language/stack to use for “customer ready” SBCs/sensors/GUI?

2 points by ObsoleteNerd ↗ HN
I've been making various systems using RPi/Arduino/ESP8266 and sensors for a while, but very hobby level. Adafruit parts, prototyped using breadboards, copy/paste code from online and modify it. Have made a few weather stations, and basic home automation.

I'm completely in love with this, and want to take it further, and do these projects "properly".

I don't know any "real" programming languages, but have been tinkering with web projects for 30+ years (php, mysql, js, css, cgi/perl back in the day). Just for background. So I'm willing to learn anything required from scratch, and timeframe doesn't matter, I'm willing to commit long term.

What absolutely matters, is I want to learn stuff that will still be around years from now. I don't care about the latest/greatest frameworks/languages, but longevity and reliability are paramount. These projects will end up being used in real-life situations on family farms and in family companies, and I want them to be good enough to set/forget.

Getting sensor data read and stored is easy enough in any language, but I'd really also like to be able to put nice GUIs on touchscreens for it. I currently do that with Raspbian + i3wm and web apps, which has ridiculous overhead. I'd like the final products to be on-par quality-wise with in-car headunits and other commercially available touch interfaces.

Python + Qt/PyQT? Python + Kivy? Something entirely different?

Any suggestions on stacks/pathways for this are appreciated.

2 comments

[ 2.9 ms ] story [ 17.3 ms ] thread
Take a look at Nerves built on Elixir which just hit 1.0. While Elixir is a new language the Beam VM has been around for a long time and is stable. Partly what makes it great for embedded dev is Mix and the fantastic dependency management combined with fwup. Those make the "set and forget" portion much easier. That and a great community on the Elixir slack channel.

Unfortunately the UI side of things is a bit of a pain still. Many Nerves people are using web ui’s served from rpi’s, or embedded chromium. There’s some people working on OpenGL rendering, which could be long term stable (presuming OpenGL survives...). Qt actually has great support for embedded GPU rendering sans X11. Its late and I don’t have links for these all, but Googling will bring them up. Not sure about PyQT as I’ve seen it’s support vary widely, as in QT5 support was hit and miss even a couple of years ago.

Last I heard, the “FarmBot" project uses Nerves and is open source. Also I’d recommend trying KiCad and building a few pcb’s. It’ll drastically increase the quality of your boards. JLC PCB, or Seeed Studios do 5 board packs for under $50.

Happy building!

Thanks so much for all that. Definitely given me plenty to read up on.