Projects
This page lists projects that I am currently working on. If I end up releasing any code for them, I will link to their GitHub pages.
Current list of projects:
acme.sh Deployment Script
Thanks to the ACME protocol and Let’s Encrypt, HTTPS certificates are incredibly simple to get and use now. It makes the web much more secure! I use a Let’s Encrypt certificate for this site as well as all of my internal services. This is all thanks to the DNS challenge and the use of wildcard certificates.
Unfortunately, due to the nature of Let’s Encrypt, certificates are only valid for 90 days. This means automation is very important to keep your certificates up to date. Many years ago, I set up acme.sh to handle automatic renewal, but found that I could only run a single command on successful renewal for each certificate. This was frustrating for me, so I wrote a Python script that parses a config file and runs various commands and handles the copying of the certificate to the appropriate locations for me.
The script deploys the certificates to my Docker host, Synology NAS, Proxmox server, and backup Pi-Hole servers seamlessly. It also sends a notification to Home Assistant giving me the status of the renewal, as well as any errors that may have occurred. It is an old script, but I cleaned it up a little and posted it to GitHub.
GitHub link: https://github.com/adamculbertson/deploy
National Weather Service Hazardous Weather Outlook
I recently took the two storm spotter classes offered by the National Weather Service in Louisville. They tend to publish a document called a Hazardous Weather Outlook (HWO) during any sort of hazardous conditions (tornadoes, fire, high heat index, winter weather, etc). This document also includes a Spotter Information Statement that indicates whether storm spotter activation will be needed during the hazardous event.
I wrote a script that parses this document and gives me the day one conditions, days two through seven conditions, and spotter information statement. This information is then fed to an API that I use via Siri Shortcuts on iPhone to tell me the current conditions and spotter status.
You can view the current HWO for the Louisville and surrounding offices here: https://forecast.weather.gov/wwamap/wwatxtget.php?cwa=LMK&wwa=hazardous%20weather%20outlook
If you know your office’s code (LMK is Louisville’s for instance), you can replace “LMK” in the “cwa” parameter to view nearby HWOs for your location.
GitHub link: https://github.com/adamculbertson/nws-api
Weather Radio
As a ham radio enthusiast, I have radios. One type of radio is a Software Defined Radio (SDR). Using an SDR, you can view the spectrum as well as listen in on frequencies that the SDR supports. One very cheap SDR is the RTL-SDR. They’re ~$20-$30 and support a very wide range of frequencies. Using the RTL-SDR and an older, cheaper Raspberry Pi, I am currently feeding the local NOAA Weather Radio to a local IceCast2 server where I can listen to it if needed. This uses RTLSDR-Airband to send the audio to IceCast2 and it also pipes it to a UDP server to be processed.
The UDP server is currently in-progress and not fully functional. It will eventually take the input from RTLSDR-Airband and run it through multimon-ng to parse any messages that may come through the Emergency Alert System. Once the message is decoded, it will be sent to a script to process. The script will then determine any actions that need to be taken based on the type of alert. The script is a very heavily modified version of dsame3.
Using these alerts, I could take various actions in my Home Assistant automations, such as flashing lights or something when a Tornado Warning occurs. This is as a supplement to the already existing alerts that happen with phone apps.