Welcome to one of my favorite ongoing builds—an environmental monitoring system made specifically for my frog terrariums and exotic pets. This project started as a way to keep an eye on temperature and humidity in my Whites Tree Frog and Green Tree Frog enclosures, but it quickly grew into something bigger: a full-stack, scalable home automation system with live dashboards, push notifications, and species-specific care profiles.
The Goal: Peace of Mind for My Frogs
Reptiles and amphibians are highly sensitive to their environments. Too cold, and their metabolism slows. Too dry, and they risk dehydration or stress. This system ensures that each tank stays within ideal parameters 24/7, even when I’m not around to check manually.
With this setup, I can instantly see:
- Current temperature and humidity in each tank
- Graphical trends over time
- Alerts when anything goes out of range
- Uptime status for each sensor (so I know if a device goes offline)
Where to See It:
You can view the live dashboard and individual graphs here:
http://averyizatt.com/frogtank/

System Overview
The system currently monitors the following zones:
- Whites Tree Frog Terrarium
- Green Tree Frog Terrarium
- Office Environment
- Other/Experimental Sensors
- (Soon to include Living Room, Bedroom, and 3D Printer)
Each zone has its own DHT11 sensor feeding data into a centralized API every few minutes.
Push Notifications with Ntfy
If any sensor detects a value outside the safe range—for example, a drop below 65°F for the frogs—I get an instant push notification via ntfy.sh. This means I don’t have to constantly check the dashboard—I’ll know right away if something’s wrong.
Example:
“ALERT: Green Tree Frog Terrarium temperature is 59.8°F — below safe threshold!”
Notifications are:
- Lightweight and fast (sent via HTTP)
- Platform-agnostic (can hit my phone, desktop, or browser)
- Easy to configure per sensor profile
Each species has its own care range. For instance:
- White Tree Frogs: 70–85°F and 50–80% humidity
- Red Knee Tarantulas: 75–80°F and 60–70% humidity
- Office sensors: monitored, but do not trigger alerts
How the data flows
Each room or enclosure has its own microcontroller node (an ESP32, ESP32-C3 or ESP8266 depending on the room) reading a DHT11 for temperature and humidity, and in places a BH1750 light sensor, a TDS probe for water quality and an ultrasonic sensor for water level. Firmware for each location lives in its own folder of the repository, and a node simply POSTs a small JSON document every few minutes:
{ "sensor": "Whites Tree Frog Terrarium", "temp": 79.3, "humidity": 68.5, "lux": 320 }
Only sensor, temp and humidity are required. Light, TDS and water level are optional, so a simple node and a fully loaded one use the same endpoint.
The backend is a small Python Flask app behind nginx, which terminates HTTPS and proxies /frogtank/ to the app on port 5020. Each reading is appended to a plain CSV file per sensor (time, sensor, temp, humidity[, lux][, tds]). Storage is that plain CSV file: trivial to back up and easy to open in a spreadsheet. The same app serves the latest reading for any sensor and the raw log, and the dashboard (vanilla JavaScript with Chart.js) draws live tiles with mini-charts, popup history graphs and an offline indicator when a node stops reporting.
Alerting happens at write time: when a reading arrives, the API compares it with that sensor’s range and, if it’s outside, sends a push notification through ntfy.sh. Each animal gets its own range, because “too cold” for a Whites tree frog isn’t the same as for a tarantula:
| Sensor | Temperature (°F) | Humidity (%) |
|---|---|---|
| Whites tree frog | 70 to 85 | 50 to 80 |
| Green tree frog | 72 to 85 | 50 to 80 |
| Red knee tarantula | 75 to 80 | 60 to 70 |
| Avicularia tarantula | 75 to 85 | 70 to 80 |
| Living room, bedroom | 60 to 85 | 20 to 60 |
Full Tech Stack Breakdown
This is a mix of hardware and software designed to be flexible, scalable, and DIY-friendly.
Hardware:
- ESP8266 / ESP32 Boards (Wi-Fi enabled microcontrollers)
- DHT11 Sensors (Temperature and humidity)
- CQRobot TDS Sensors
- BH1750 Lux Sensors
- Power via USB (plugged into a powered USB hub on the server rack)
Software:
- Firmware: Custom C++ sketch using Arduino libraries, sending JSON via HTTP POST
- Flask API (Python):
- Accepts and logs incoming sensor data
- Serves real-time values and CSV logs via REST endpoints
- Mounted at
/terrariumsand served securely with Nginx
- Data Logging:
- Sensor logs saved in
/home/thefrogpit/frog-api/logs/as CSV files - Timestamps included for graph generation and device health checks
- Sensor logs saved in
- Dashboard UI:
- Built from scratch using HTML/CSS + Chart.js for rendering graphs
- Hosted at
/var/www/dashboardon thefrogpit
- Reverse Proxy + HTTPS:
- Nginx routes traffic and handles SSL (Let’s Encrypt via Certbot)
- Push Notifications:
- Ntfy topics configured per sensor using Python
requestsandifstatements in the app
- Ntfy topics configured per sensor using Python

Why It Matters
This project isn’t just about cool graphs or smart home bragging rights—it’s about preventing harm and improving care. I’ve caught real issues early because of this system:
- A heater failure that dropped temps dangerously low
- A sensor cable that came loose and triggered a “sensor offline” status
- Unexpected humidity spikes due to a malfunctioning fogger
Plus, it’s totally expandable. I can easily add:
- More tanks and terrariums
- Outdoor sensors for gardening or weather
- Air quality, light, or motion sensors
If you’re into DIY electronics, exotic animal care, or just like building things that actually help in the real world—this system is for you.
Want to Build Your Own?
If you want a copy of the code, wiring diagrams, or help setting up your own system, feel free to reach out. I’m planning to release a GitHub repo and setup guide soon.