An educator-turned-developer, Daniel got his start in the software industry testing embedded automotive infotainment systems for Johnson Controls in 2014. While he was there, Daniel created new components for and maintained the company's Python automated testing framework. Daniel held other QA-related roles until becoming a Software Engineer at Blue Medora in 2016. While at Blue Medora, he served as a project lead, a platform extensions software engineer, and a recruitment and outreach advocate. In 2017, Daniel joined Spantree, where he worked on planning and optimization problems, data pipelines, and search solutions.
Internet of Things projects are challenging because they contain comical exaggerations of the pitfalls you find in distributed systems. In the case of developing a Solar Microgrid Controller, like I did, you'll face bonus challenges like, "When will the internet be in town?", "How do I create clean architecture when the hardware is shifting under my feet?", and "How do I quickly pivot to a different peripheral?"
In this talk, I'll share some of the ways our team leveraged Elixir, Nerves, and NervesHub to build robust Solar Microgrid Controller firmware. I'll also share development patterns and practices that you can take back to your next firmware project.
Because micro grids can be deployed in remote locations without reliable Internet access, data minimization is a must. We'll talk about the tools you can use to provide full utility data when low bandwidth internet might not be in town until next month.
Next, we'll look at a couple of different ways Nerves and Elixir can keep our software tidy by decoupling the firmware from the hardware.
We’ll wrap up by looking at hardware. While commodity hardware like BeagleBone or Raspberry Pi are great for prototyping, they're far too expensive for mass production. For this project, we built our own custom hardware and ported Nerves to it. We'll take a look at some of the considerations you might make if you develop for novel hardware, and what you might do to bring your next project to life with Nerves.