I have ordered some hardware to start building my prototype, and begun developing the software stack to run the platform.
Since I am a C#/.NET guy mainly, I have gone with what I know and am developing a service that runs ASP.NET Core 2.2 to both serve up the API and to actually do the work making things function.
The administrative interface used to control the platform is a plain HTML/JS SPA package that runs on the client and communicates with the API.
It is my plan to turn both the SPA and API into debian packages that I can update via an APT repository.
The hardware I have settled on so far is a Raspberry Pi 3 for my initial prototyping, with the option of switching to a Pi Zero W for a production run if I get that far. The reasons I am going with the Raspberry Pi are:
- Well supported platform that receives updates to it's OS stack.
- Integrated WiFi with full firewall.
- Can run ASP.NET Core as a 1st class citizen
- Has kernel framebuffer support for the chosen LCD modules.
On the linux software front I will be looking at doing the following:
- Serving a friendly name to connect to the device via mDNS
- On initial powerup or after a "Factory Reset" running an Open WiFi network with Captive Portal to do initial device setup (Setting host name, WiFi network settings, Changing admin credentials, etc)
- Checking for updates to the platform via apt.
- Read-Only root filesystem, only allowing writes during a system update process.
- Configuration and database on a second writable filesystem.