Hey folks, my team at work is going to be deploying an increasing number of production Nerves devices over the coming weeks/months, and I’m hoping to start a conversation about the common issues many of us face or will face as we undertake production Nerves projects.
A little background
The main purpose of these devices will be to collect various environmental data from sensors and push it over network to a data lake for further use. Think temperature/humidity/pressure/vibration/light, etc.
For this data to be useful, it will be important to know which device/sensor it came from.
The Nerves devices will be at least Raspberry Pi Zero W’s, Pi 3 B+s, and possibly more.
The sensor hardware will be at least Si7021 temperature/humidity, TMP102 for temperature, and likely more soon.
Quantity wise, it will be something like 5-10 devices in the near term, likely with dozens following that as the team gets more capacity and we get approval for more applications.
We have investigated NervesHub and will likely be using it (and contributing) as we are able.
We control the network/environment the devices will be in, so we will have physical and network access.
We’ve had some good experience so far doing over-the-air updates to a small number of devices, but are starting to feel the growing pains of configuring these devices as their numbers grow.
Some initial questions/thoughts
- Naming: Do you autogenerate names? Do you give devices “human” names?
- What kind of hardware identifiers make sense to rely on? Which don’t?
- What approaches have you been sucessful using to push configuration (env vars, etc) to hardware deployments? Pubsub? Erlang distribution?
- Any general advice or experience reports regarding naming/provisioning fleet hardware like this? Any war stories that are good to know?
- Automated monitoring/alerting/logging: general experience with these on Nerves hardware. We previously used a Cloudwatch/Logger integration and found it pretty unreliable. Anybody have good luck with any approaches in this area?
Thanks in advance