Welcome to ScriptedVestige!

I’m an IT guy documenting my home lab which covers networking, infrastructure, automation, and everything in between. This is a living record of things I’ve built, broken, and fixed.

Right now, my current quest is to build a data-driven, machine learning powered irrigation system. Once that is complete, I’ll probably use the same data to optimize my HVAC system. Stay tuned!

Have a question or want to get in touch? Reach me at contact@scriptedvestige.com!

VPD Analysis

What Is VPD? VPD stands for Vapor Pressure Deficit and is affected by temperature and humidity. This calculation shows the difference between how much moisture is in the air versus what it can hold when saturated. When VPD is in an ideal range, this allows plants to basically act like a straw pulling water up from the soil, taking in carbon dioxide, and releasing oxygen and moisture into the air. ...

May 10, 2026 · 6 min · ScriptedVestige

Expanding the Manual Event Logger

Tomorrow I’ve got some fertilizer arriving, so I wanted to expand the manual event logging service so I can track the fertilizer application and other things as well. Here is the first post about setting the service up. And here is the repo on my GitHub. In a nutshell, this is a Python script running as a service using Uvicorn and FastAPI to present HTML forms at the specified endpoints. When the form is submitted, the data is inserted into the appropriate table in the database. ...

May 9, 2026 · 4 min · ScriptedVestige

Initial Data Analysis

Having a lot of data collected can be a good thing, but it’s important to be able to pull the signal from the noise to be able to act upon the data. What’s the point in collecting all of this data if I’m not going to use it? I’m going to create some materialized views in Timescale that I can query with Grafana that will show me useful data that I can act on. ...

April 11, 2026 · 8 min · ScriptedVestige

Lightning Strike Detection

Alright, so we’re adding more sensors to the stack! I went with more Ecowitt sensors because they’ll just connect to the existing console and send data through the existing pipeline. Hardware I’m going to start with the WH57 lightning strike detector. I’ve selected this sensor to pair with an AQI sensor to build a home brew wildfire detection and alerting system. The lightning strike detector will detect strikes up to 25 miles out. The physical installation is easy and it comes with the mount and hardware necessary, just add batteries. ...

April 10, 2026 · 5 min · ScriptedVestige

Data Gap & Outage Detection

I’ve had some outages over time due to planned maintenance or severe weather. What I’m going to work on today is a way to detect missing data in my tables so I can investigate. TimescaleDB Gap Detection In my database, I’m going to create some views that will show me gaps in data so I can investigate why those gaps exist if the cause is not planned or apparent. I’ll start using pgAdmin4 which gives me direct access to my database to create tables and views as well as run queries. I’ll also open my TimescaleDB directory where I store .sql files that contain table schemas or SQL statements and queries in VSCode. I like to create my queries and statements in VSCode, then copy and paste into pgAdmin4. ...

March 7, 2026 · 5 min · ScriptedVestige

Network Outage

Ah, Sunday. The day of rest and relaxation… and troubleshooting why your entire network is down when you wake up. Now, I’m not superstitious, but I am a little stitious, I should have seen this coming. Last night, I woke up in the middle of the night and noticed my watch’s screen was completely white and battery reporting 1%, which never happens as I charge every morning while I get ready and the battery will last until the next morning. The watch is unrelated, but it was a sign for sure. ...

March 1, 2026 · 7 min · ScriptedVestige

Unplanned Outage Troubleshooting

Power & ISP Outages While at work, I received a notification at 14:35 local time from my power company that there was an outage in my area. I then received a notification at 15:50 that the power was back up. I also received notification from my ISP reporting an outage at 15:45 local due to the power outage, which is weird, but after I got home, I could see multiple occurrences of losing connectivity to my ISP in the UDM. ...

February 24, 2026 · 7 min · ScriptedVestige

Manual Event Logging

There is a lot of data that I want to collect that my sensors can’t. With automation and machine learning application being the goal, I want to gather as much data as I possibly can to really create a complete picture of events in the yard. Snow events are one example of that, so that’s where I started. Check out the repo on GitHub I again used Python, FastAPI, and uvicorn to define some API endpoints on the same Pi that runs my Ecowitt ingest API. Just like the Ecowitt ingest, I’ll make this API a service also. The difference with this one though is that when the endpoint is requested in the browser, an HTML form is presented. ...

February 14, 2026 · 3 min · ScriptedVestige

Grafana

Grafana is a tool that allows you to build dashboards to visualize data. I haven’t gone too deep into the full capabilities yet, but I wanted a way to display the weather data from my database without reinventing the wheel and building dashboards manually myself. Install & Config Grafana is available as an app on TrueNAS SCALE, which is the OS that runs on my NAS. In the configuration, I’ll select “Publish port on the host for external access” for the Port Bind Mode in the network configuration so other hosts on my LAN can access the Grafana web UI with the default port 3000. Timescale and Portainer are using different ports, so I’ll have no conflicts between the three services and all can be accessed via their respective ports on the NAS IP (and hostname down the road when I get around to setting up Pi-hole). For the host IP, I’ll select ‘0.0.0.0’ (aka any) IP address because TrueNAS isn’t allowing me to select the host IP, but I’ve got traffic locked down pretty well with my VLAN and firewall rules setup. ...

February 7, 2026 · 5 min · ScriptedVestige

Weather Station Deployment

Today I’m going to set up my local weather station in my yard that will feed data to my database that stores the forecast data I’m pulling from NWS. NWS gives me projected future data, but I’m not able to see what’s happening in my yard, until now. Down the road, I’ll perform some analysis comparing forecast data to observed data which will be useful for future automation and machine learning. ...

January 31, 2026 · 5 min · ScriptedVestige