Design parameters:
1) Must be cheap $12 - $15 for low volume, and components easy to find.
2) Small so the sensor can be used in a variety of places
3) Low power, and supply power to the sensor
4) plug & play (eg. DHCP), web accessible (HTTP Server)
5) Easy to program and change (no flashing, no complex language to learn)
6) Power over Ethernet, using 802.3af standards
What did I end up with:
1) Component sourced from Aliexpress.com. As I don't live in the US, the low volume site of Alibaba.com, Aliexpress, is a massive electronics parts bazaar, which has a huge range at excellent prices (although shipping is slow). I wanted this project to see how practical it was to use Alibaba for parts sourcing. I did end up with a couple of parts from RS Components because they were either not available on Aliexpress or cheaper, but 90% are from Aliexpress.
2) Microchip PIC (as I'm familiar with PICs) with integrated Ethernet MAC/PHY (10Base-T) PIC 18F66J60
3) Used this project to learn & use Kicad for the schematic & PCB. I used the new CERN push and shove router version and that made things a LOT easier (although the learning curve for Kicad wasn't particularly short...)
3) Power over Ethernet was a lot harder than I thought, there are a number of considerations (eg. selecting the right RJ45 magjack) and added a lot of complexity & cost to the project. However I persevered and found a decent chip from Silicon Labs that integrates the 802.3af PD with a switcher to convert the 48v from PoE to 3.3v for the PIC.
4) To power the sensor I initially wanted to use the PIC PWM to drive a MOSFET as a switcher to create a variable voltage for the sensor, however the switcher in the Silicon Labs Si3402 is a little unorthodox and switches the negative rail (PoE is -48v), so using another switcher which also switched the negative rail would mean the grounds would not be common - not very usable (I need to revisit this concept at a later point as it there may be other options). I ended up using the 3.3v output of the Si3402 switcher to boost the voltage up to either 5v or 12v (selectable). Not the most efficient but a sensor usually will draw only a small amount of current - the PIC has quite a current draw, about 250mA due to the Ethernet module, and a sensor would typically use much less, so boosting the 3,3v doesn't hurt efficiency too much.
5) To program the IoT platform I took inspiration from Tim Wilkinson's BluBasic project (http://hackaday.io/project/2386) where Tim uses an old version of Basic called TinyBasic now available in the public domain, and used it to create an interpreter environment to access and program the Bluetooth chip. I wanted to use TIm's project however he only wrote the console used to program the device for Apple OSX/IoS which isn't a platform I use. I liked the idea but not the execution, so I though why not do something similar with a platform everyone has access to - a browser! This is easier as the PIC has a webserver, using the public domain C version of TinyBasic as well as a simple console written in JavaScript to run on the browser hosted by the PIC webserver.