I decided to make a Wi-Fi temperature sensor as a portfolio project. I have done quite a lot of work on IOT sensors before so wanted to demonstrate my end-to-end IOT skills. The PCB was designed in Altium, and has an ESP32, a buck-boost voltage converter, and a DS18B20 temperature sensor. The device can be run from a range of power supplies, but I use an 18650 lithium battery and with a small charging and battery protection board attached. Using this, one can get 1-2 weeks battery life when sampling every 10 minutes. This could be greatly extended if the device did not post the data to the server every time it samples data (i.e. it batched readings and sent them hourly/daily etc.).
The server is written in Go and the devices authenticate themselves with the server via API keys. The keys are unique per device and can be changed if needed. Currently there is no device commissioning interface, which means new devices have to be manually added to the database. The frontend is written in JavaScript using React. Currently it displays the data or the latest device to have uploaded, and other devices can be seen by changing the dropdown. If it were to be scaled to more than several devices the frontend would need a rework.
The live and historical data can be seen at temperature.natfaulk.com