The incubator monitor consists of:
IoT node
Implemented on a Raspberry Pi Zero W. A python script reads each sensor approx every minute and publishes the temperature and humidity values to the data service via http. Support libraries used include Adafruit_Python_SHT31 , Bluepy , and Pygatt
Sensors
Wired sensors
Up to four wired sensors are attached to the Pi Zero with a custom hat board to provide four i2c channels. One channel is the Pi hardware i2c, the other 3 are software bit-banged using i2c-gpio driver. Each sensor is a Sensirion SHT31 on an Adafruit breakout board. A custom designed and 3D printed enclosure is used to protect the sensor (and make it look pretty)
Wireless sensors
Three different sensors are currently in use:
Sensirion SmartGadget eval board. This was the inspiration to actually use the SHT31 sensor for the wired sensors as well as expanding to wireless sensors. It has proprietary (non-standard) vendor UUID characteristics to read temperature and humidity
Custom designed Nordic nRF51822 + SHT31 sensor. Originally intended to just be a SmartGadget minus the display it rapidly became obvious it should be all new code. This now supports standard profiles and connection-less temperature and humidity reading using advertising packet manufacturer data
Xiaomi smart temperature and humidity sensor. Unknown sensor - one ebay listing says Sensirion but no model number. Readings are quantized in 0.1 increments. It supports connection-less temperature and humidity reading using the advertising packet service data
Data service
The data service is ThingSpeak which stores the reported data
Web page
The web pages are built in Google Sites pages. Each of the charts is embedded html/javascript to retrieve and render the data using Highcharts . Code is stored at github and served via jsdelivr and githack and/or gitcdn