I noticed that the you made a config front-end using a web page and claimed that you're not up to date with web development. Indeed, I do find that it's unsatisfying to configure IoT devices over the web, although the web is one of the most compatible solutions. The drawbacks include the fact that if you want to configure it you always have to be on the same LAN and figure out its IP or port-forward, but if you port-…
I added that link to my reading list. Very interesting idea. I'll be looking more into MQTT. But I don't see the issue with exposing the HTTP interface to the world? I'm always leaning towards solutions that ship with web interfaces, especially over mobile apps because I can use third party apps to work with them. Especially IP cameras.
It's a quick solution, but it is not user friendly.
- What the IP it has is highly dependent on your router config. Even finding the IP requires work from the end user and you, every time. You can tell the router to give the device a static DHCP allocation, sure, but that will break as soon as you switch to a new router.
- Browser changes might break rendering of the config pages.
- The config interface is not standardized: it works for now but it will look outdated a couple of years from now. It can't be improved upon. Understanding and working with it is another annoyance that the user has to learn.
- You need to handle credentials management, which is messy, or you can put nginx or whatever in front and let the proxy handle authentication. The first solution requires a whole bunch of boilerplates on the device and is not secure. The second one is secure, however, it requires you to have control of a nginx server that has to know specifically about your IoT device.
- On a small device, you likely are unable to host and deliver all assets on the device (for example, boostrap). That means you'll have to rely on a third party to deliver those resources for you. It might break in the future.
- Let's say a person wants to know all the params and controls, they have to read your web page source code. They have to tease out UI intermingled with logic.
- All of those is well if you know you'll gonna deploy it at home where you control everything and reconfig it every time you have a new router. But let's say you want to gift it to a friend or deploy to the end users. The amount of work you'll need to setup for that HTTP config thing to work consistently for the friend is a lot. You can't tell him/her "just find the device's IP and go to the website..."