Started some work on the mesh network side of things. Started with the Espressif MESH_DEMO and went from there. It was pretty easy to get up an running. I ripped out a majority of the tests in the demo that weren't necessary. Instead of sending a fixed piece of JSON in the demo, it now just sends a string containing MAC address, temp, humidity, and light level readings. Eventually, I'll re-code this to send it in proper json format or something for better server side processing. The example demo_server.py app was modified to spit out the received data on the command line.
MAC: 5c:cf:7f:80:d3:3b Temp: 19.64 Humidity: 54.65 Light: 35
MAC: 5c:cf:7f:81:06:7b Temp: 19.22 Humidity: 55.90 Light: 26
MAC: 5c:cf:7f:13:91:41 Temp: 20.76 Humidity: 51.52 Light: 60
MAC: 5c:cf:7f:80:13:e7 Temp: 20.13 Humidity: 49.98 Light: 0
Above is output from a 4-node mesh network. Powering down the closest node disconnects the other nodes for no more than about a minute while they time-out and reconfigure the mesh to get back online. Works pretty well so far :)
Next step is to write up some server-side code to collect the data and dump it into a database of some kind. I'm looking at using the TICK stack (Influx DB) for storage.
Current setup is simple: Raspberry Pi 3 using the built in Wifi as an AP.