With Vertiv unceremoniously stop-shipping and then discontinuing the Geist Watchdog 15 during our deployment, we had to scramble to find a suitable equivalent device. We were shocked to find a lack of decent options for small form-factor, PoE-powered devices that were not astronomically priced. With M5Stack's PoE-powered ESP32 device in hand, we developed a network SNMP environmental monitor with a total all-in cost of less than 20% of competing products. The IP101G onboard Ethernet chip is not supported by Arduino Ethernet, thus no existing SNMP library would work for this device, so we wrote a purpose-built SNMP parser for this project.
- M5Stack PoESP32 device, currently $25.90 USD
- M5Stack ENV IV sensor unit, currently $5.95 USD
- A single M5Stack ESP32 Downloader kit, currently $9.95 USD
One-time cost for a USB-to-serial device: $9.95 plus tax and shipping
Total cost per unit: $31.85 plus tax and shipping
Programming time per unit: < 10 minutes
- $32: this PoESP32-based device
- $220 before stop-ship: Vertiv Watchdog 15P (discontinued)
- $190 on sale: AKCP sensorProbe1+ Pro
- $315: NTI E-MICRO-TRHP
- $199: MONNIT PoE-X Temperature
- $295: Room Alert 3S
This project produces a SNMPv1/2c temperature and humidity monitoring device with flashed configuration settings and no remote management capability. Some would see this as a positive from a security-perspective, but it could prove challenging in network environments where change is constant. A re-flash/re-programming is required to modify any configuration options:
- Host name
- Device IP and subnet
- IP gateway
- SNMP read community string
- Authorized SNMP monitoring node IP address list
Bottom line: If you need SNMPv3 or desire web management and/or SNMP write functionality, you could enhance this project's code or simply purchase a commercial product.
Once you've successfully programmed a single unit, skip step 1. Repeating this process takes 5 minutes from start to finish.
- Set up your Arduino programming environment
- Disassemble the PoESP32 case
Tip
If you have fingernails, it can be quicker to slide a nail between the case halves, starting with the end opposite the Ethernet port and using another nail to pull the retaining tabs back
- In Arduino, open the project file (PoESP32-SNMP-Sensor.ino)
- Edit the hostname, IP address, subnet, gateway, SNMP read community, and authorized hosts lists at the very top of the file.
- Select Tools->Board->esp32 and select "ESP32 Dev Module"
- With the USB-to-serial adapter unplugged, insert the pins in the correct orientation on the back of the PoESP32 mainboard pic
Warning
Do not plug the PoESP32 device into Ethernet until after step 7 or you risk damaging your USB port!
- With light tension applied to ensure good connectivity to the programming through-hole vias on the PoESP32 (see step 4 pic), plug in the USB-to-serial adapter
- The device is now in bootloader mode
- In Arduino
- Select Tools->Port and select the USB-to-serial adapter
- If you're unsure, unplug the USB-to-serial adapter, look at the port list, then plug it back in and select the new entry (repeating step 5)
- Select Sketch->Upload to flash the device
- When you see something similar to the following, proceed to step 7
Writing at 0x000d0502... (100 %) Wrote 790896 bytes (509986 compressed) at 0x00010000 in 8.9 seconds (effective 714.8 kbit/s)... Hash of data verified. Leaving... Hard resetting via RTS pin...
- Select Tools->Port and select the USB-to-serial adapter
- Disconnect the USB-to-serial adapter and reassemble the case
- Plug in the ENV IV sensor unit pic
- Connect the PoESP32 to a PoE network port and mount as appropriate
- The holes in the PoESP32 and ENV IV sensor cases work great with zip ties for rack install or screws if attaching to a backboard
- See the /3Dmodels folder for print-able mounting plates or Guidance and Limitations for more detail
- Do not mount the ENV IV directly on top of the PoESP32, as it generates enough heat to affect sensor readings
- The holes in the PoESP32 and ENV IV sensor cases work great with zip ties for rack install or screws if attaching to a backboard
- Configure your monitoring platform as appropriate
- A list of valid OIDs this sensor will respond to can be found here
- Paessler (PRTG) produce a great freely-downloadable SNMP tester for Windows, available here
- If you have PRTG, pre-configured device templates are available for this project at https://github.com/Xorlent/PRTG-OIDLIBS
- Don't have a monitoring platform? PRTG Freeware would support monitoring and alerting for up to 20 of these devices
- For monitoring, configure one OID per sensor. This custom SNMP parser will only respond to one OID per request.
- If you receive a "General Failure" when requesting a valid measurement OID, this means the device is having trouble communicating with the temperature/humidity sensor.
- If you request an invalid OID, expect no response. The device will not process packets for requests that are not authorized or not a match for a valid OID.
- For high humidity environments, this device will activate an internal sensor heater under certain conditions to ensure more accurate readings.
- The device will respond to pings from any IP address within the routable network.
- Don't have PoE ports on your network switch? No problem: https://www.amazon.com/gp/product/B0C239DGJF
- Need a simple solution for mounting the PoESP32 and environmental monitor as a unitized assembly? Within the /3Dmodels folder you will find:
- PoESP32-Environmental-1RU-Base.step : 3D print model to mount the PoESP32 assembly into a 1U rack space (w/optional wire cover and LED lightguides)
- PoESP32-Environmental-Mini.step : 3D print model for zip tie mounting (space constrained)
- PoESP32-Environmental-Mini-Magnet.step : 3D print model for magnet mounting (space constrained, compatible with 8mm x 2mm disc magnets)
- PoESP32-Environmental-Mid.step : 3D print model for zip tie mounting
- PoESP32-Environmental-Mid-Magnet.step : 3D print model for magnet mounting (compatible with 8mm x 2mm disc magnets)
- If you want to modify the models and make your own custom design:
- Operating Specifications
- Operating temperature: 0°F (-17.7°C) to 140°F (60°C)
- Operating humidity: 5% to 90% (RH), non-condensing
- Sensor Accuracy
- ±0.1 °C,±1.5 %RH
- Power Consumption
- 6W maximum via 802.3af Power-over-Ethernet
- Ethernet
- IP101G PHY
- 10/100 Mbit twisted pair copper
- IEEE 802.3af Power-over-Ethernet
- I/O Configuration
- SHT40 temperature and humidity sensor
- See PORTINFO.md