As described, the system needs to be secure, so the goals are:
- During normal operation, no network ports on the device should be open
- The device should connect to an MQTT broker using TLS encryption
- The device needs to verify the host that it is connecting to is who it says it is
- Configuration will be done via a captivate portal that will only be created when physical buttons on the device are pressed.
I want to the build to look like a finished piece, so I'm going to design a custom PCB for it.
I also want to investigate building a user-friendly, usable, well designed single-page web app for the captivate portal configuration screen. The design goals for this part are:
- Useability is the highest priority, followed by size, followed by speed. Browsers run on powerful computers, so they can do a bit more work if it means shaving size off the deliverable.
- Ideally it should be bundled as part of the firmware, and not as a binary blob uploaded to the ESP8266 filesystem.
- It should require no external network assets - everything delivered must live on the ESP8266.