Welcome to the personal website of William Cooley.
Currently working as a Systems Engineer and located in Rochester, NY, USA. Have experience in various System Administration, DevOps and Software development capacities.
Ran a SaaS business for a number of years, worked as a consultant and employee.
I enjoy finding open-source solutions to technology problems. Some of my experience includes:
This is an update to my previous blog post where I wrote about how to stream a high and low resolution hardware encoded H.264 video feed from a Raspberry Pi and Camera Module over RTSP.
With the release of Raspberry Pi OS based on Debian Bullseye in November 2021, there were some significant changes to the camera driver that deprecated1 the Picamera V1 Python library that I had been using in my previous code. At the time of publishing this post, Picamera2, which is the new library that is compatible with the Bullseye based OS is still a Beta release. With the release of version 0.3.10, the library finally has support for running “multiple encoders, either on the same or different streams”2. This seemed like an appropriate time upgrade the OS on the Pi and redo the script to work with the new Python library.
I recently completed a LED conversion on a Dazor P-2134 fluorescent tube task lamp.
Dazor has been making variations of this lamp since 1938. The newly converted lamp has adjustable brightness and color temperature and uses a 20kHz PWM frequency to avoid any image banding on digital camera image capture.
I’ve had a Polycom VVX 500 “business media phone” on my desk since 2016 and have only used it for making phone calls since then.
However this series of Polycom VVX phones also has a built in limited-capability web browser.
The phone can display a non interactive web page on it’s idle screen and an interactive page that’s accessible through the phone’s “Applications” menu.
On a side note, I think I’ve been running a VOIP PBX for personal or business use, more or less continuously since 2006. Starting with open source systems based on Asterisk, then FreeSWITCH and then in 2019 I migrated to a proprietary 3CX Phone System. The best part for me about 3CX has been that it’s painless to configure and keep up to date.
Sometime early last year I replaced my SmartThings home automation hub with a Home Assistant VM running on an Intel NUC.
Not long after that I converted my Envirosense boards (see previous post) to run the ESPHome firmware and started scraping Prometheus metrics from Home Assistant.
There was one thing I wasn’t happy about with my original design.
The PIR sensor was frequently showing false positive motion events. This seems to have gotten worse with the switch to the ESPHome firmware. It appears to be a known issue that these HC-SR501 modules are easily triggered by Wifi interference.
Update July 2023: The setup instructions below work with Raspberry Pi OS (Legacy) based on Debian 10 (buster). For instructions that will work with Raspberry Pi OS based on Debian 11 (bullseye), please have a look at my updated blog post here.
I was looking for a way to stream two H.264 video feeds from an old Raspberry Pi 2 and Raspberry Pi Camera Module with the first feed being the highest resolution that I could achieve from the camera and the second being a lower resolution that would be more suitable for analysis.
To monitor the Pi Camera and perform motion and AI object detection with a Frigate NVR system, I wanted the feeds served from an RTSP server.
I have a couple Hoverboard (self-balancing scooter) motors that I’m intending to use for a project with an oDrive motor controller.
One of the motors was causing an ERROR_ILLEGAL_HALL_STATE on the oDrive and after swapping the motor channels and some troubleshooting with a multimeter I had determined that 1 of the 3 internal hall-effect sensors was not functioning as expected. Digi-Key has a nice article on how these hall sensors function in BLDC (Brushless DC) motors.
Over the last few years I’ve spent a considerable amount of time working with the Prometheus monitoring system and time series database in combination with the Grafana visualization platform. I had been wanting to track the temperature and humidity of a few rooms and was looking for an excuse to run a Prometheus server at home.
I thought it would be neat to use a Wi-Fi microcontroller to collect this sensor data and expose it directly in the Prometheus simple text-based exposition format.