Headshot of William Cooley

About Me

Welcome to the personal website of William Cooley.

Currently work as a Systems Engineer and am located in Rochester, NY, USA.
Have experience working 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:

  • Linux - Ubuntu and CentOS system administration
  • Ansible for deploying applications
  • Prometheus monitoring software. Hardware, OS, Networking, Databases and Custom application metrics
  • Grafana metrics visualization. Creating custom dashboards for Prometheus datasources
  • Physical datacenter operations - PXE machine provisioning / IPMI, BMC, iDRAC management / iSCSI storage array implementation and management
  • Cloud / Virtual datacenter - AWS, Digital Ocean, Rackspace, Linode / VMware Vsphere
  • Firewall / Routing / VLAN switching / VPN tunneling (Layer 2 / 3)
  • Scripting applications - Python, PHP, JavaScript (Node.js)
  • Mysql databases - administration, backup, migration, tuning and replication
  • Basic understanding of electronics and RF systems - Amateur Radio Technician Class license (2004) / example project

Native English and German* speaker and dual citizenship holder.

Building an ESPHome environmental multi-sensor

Envirosense ESP8266 take 2

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. [Read More]

Raspberry Pi Camera RTSP Streaming with multiple resolution feeds

Using GPU accelerated H.264 encoding

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.

[Read More]

Hoverboard motor hall sensor replacement

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.

[Read More]

Envirosense ESP8266 Prometheus Exporter

Exporting ambient motion, temperature, humidity and barometric pressure metrics with a WiFI IoT board

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.

Two completed boards in 3D printed cases

Two completed boards in 3D printed cases

[Read More]