About OpenSensie.org

Ive been builing and maintaining hosting environments for 20+ years, and everything has gotten better, cheaper, smaller, more flexible and more open ... except, for some reason, temperature sensors.

Maybe this is just a sweet spot where you purchase so few of them, and the last forever, and everything else in the server-room cost 10x the sensor ... but still, i took a quite a lot of them apart, and most of the contains components that where cheap and easy available 15+ years ago, most of them could not be updated partly because the company behind where gone, partly because nobody botheres. Few of them would even be bricked if you forgot the password ... yes there where no way of resetting the password on a 500€ temperatur sensor ... i'm speechless.

This leads me to the other huge problem i have with these propriotary temperatur propes, the hardware is often easily capable of running multiple sensors or maybe running a different protocol. But adding features to hardware that you own is for some reason considered extraordinary. If i call the company i bought the device from they will just tell me to buy a new and more expensive device which have the features im requesting, and throw away the old one.

But i wont do that! We have enough ewaste on the landfelds and i really don't wanna throw away perfectly working hardware just because the morons who wrote the original software and/or made the hardware decided that they didn't care enough to futureproof their product!

Building a temperatur sensor is often one of the first examples you are tasked with when trying to learn about micro-controllers, it is really simple and the basic hardware can be purchased four around 10€, and the software can be written in an afternoon. I am having a really hard time understanding the price point the propriotary suppliers charge to close that gap, and i decided to do something about it.

The goals of this project:

With these goals in mind i built OpenSensei.

The design - and future ideas

The mainboard: I choose to go with the ESP32-POE from Olimex Ltd in Bulgaria, which is a contry in the European Union, which means they are covered by some of the strictest rules and regulations in the world, it also ment that i didn't have to worry about power delivery since every datacenter these days have POE if not for anything else, then for wifi.

The company have existed since the late 90s which means they survived two economical crisies and a pandamecic, so theres a good chance they stick around for a few years still.

Even if they decide to discontinue this product, the source-code should be easily adaptable to any platform who uses the ESP32, there are even a few alternatives with POE available already today, however the few i decided to test out where not woth the ink of the receipt and if you buy more than fifty at a time you can get them as low as 15 EUR/unit.

As the time of writing this Digikey sells individual units for 18€, you can get them at Ebay, Amazon, Aliexpress ... however i would recomend to buy directly from the vendor or a reputable electronics supplier to avoid fakes and scammers.

The casing: Olimex do offer official casing for the ESP32 which is, if you wish, a fine alternative to my version. Theres a few reasons i don't like it, the main reason is that i wanted to be able to customize it ... if i need room for an extra sensor, or possibly an LCD display or something else fun or interesting, i wanted to be able to do that

I also want to give the users of the OpenSensie the option to be creating, to use company colors or to add features as they see fit - and if anybody rather want to do something else besides play with a 3D printer, they can order the official casing or maybe order a preassembled unit from me.

The first, and currently final, version of my casing is made on a Creality Mage 8K Resin printer, but it can also be printed on classical FDM printer or ordered from a print-shop near you. The case are made to fit the board so its can be preasure fittet inthere, there a hole for the usb-port so you can program it. But you can also choose to comment out the usb-port-hole in the OpenSCAD file if you want cabinet without that port available.

I thought a long time about mounting, there was another cabinet for the same board available on ThingieVerse, but in my mind it was way to big and way to clunky and their way of wallmounting was to add a couple of huge years to the cabinet - and i really didnt like that. So i decided to do a bit thicker bottom and make room for a couple of countersunk screws.

So the procedure of mounting is that you drill a holw in the wall, and scren the casing to the wall, put a piece of electrical tape between the screw and the board for good measures sake, install the board, the sensor, mount the preasure-fitted lid and finally plug in your Ethernet jack thats it. Admitedly, it's maybe a bit clunky that you need to take it apart if you want to take it down, but i looks really need and it's not comming down unless you really want it. .

My 3D modeling software os choise is OpenSCAD and that enables me to create parameterized models that are easy to modify, export and print on more or less any printer that is able to print with the desired degree of precision, i've been experimenting with several ways of assembly - different kind of screw inserts, preasure fitting and i am not yet sure what is going to end up being the best,but that does not matter - the whole point is that it is possible for it to evolve and become better and we can build a community around it and help each other device the best solution, not just for the case, but for everything.

The daughterboard: this is the only real electronics i had to make myself, and it is very simple. But thats the whole point of this ... this i really not complicated, i made a mock-up out of wire-wrap pcb og then i designed and orderen a pcb, took two revisions until i was satisfied.

The ESP32-POE has a nice 10 pin header for what they call UEXT modules, so you can already purchase a lot of premade modules which are just ready to deplay, but the interface itself have 8 gpio ports, some of which can also be used for I2C and SPI, so for now we only have this simple daughterboard which adds support for one temperature probe, but i already have ideas for versions with more sensors and one with a small display aswell.

If we, for some reason, in the future decide to produce a maxi-version. Who am i kidding, ofcourse we are gonna do that ... thats gonna be awesome! When that going to happend we actually have up to 16 available gpio's and we should be able to hook up at least three sensors to each ports, i havent tried it yet - but at some point im gonna play around with that to.

The software: the primary monitoring tools i use are Promtheus and Nagios, so i wanted it to be really easy to integrate with these software suites. Most existing monitor deliver SNMP only, which probably are nice and a must have for somebody, but i don't use it ... for me it's a hassle that i have to put op a system that reads out snmp from the sensors and provides metrics for prometheus or nrpe for Nagios.

Another thing i would like to be able to, is to hack something together in a hurry, like if i want on-screen temperature on one of my YouTube videos or a public readout of the temperature of our hottub at Bornhack.

This is the main reason i choose to go with json which is very hackable and can be included in more or less everything. If you know how Prometheus work you probably also know that when you have something exposed as json it's fairly easy to turn it into a Prometheus exporter.

I also decided not to do a webinterface for configuration, first of all, i think it's really hard to make a good and robust webinterface and i don't want to do a half-assed job, second of all i actually prefer to configure devices like this from a computer through a cable - this also give a degree of security in that you cannot chance any settings through the network, that requires a usb cable.

Does that mean that i will never add a webinterface and/or snmp support? Not really, but is in no way anything that i plan to prioritize, at least not until someone offers to pay me for it. Thats one of the great things with opensource, i get to do what i think is fun and important - and if somebody else thinks something else is more important, they can either do it themself or pay someone to do it for them.

So when will it be ready? Good question ... in a few days or a few weeks? maybe?