Projects

This page and its subpages are about work that I do for fun or pro-bono--hobbies and volunteer gigs, basically.

Current "Just for Fun" Projects

  • My boys and I are in the early, early stages of building an R2D2, the iconic "droid" from the Star Wars franchise. We're waiting for our aluminum frame parts to arrive. The goal is a high quality "2-3-2" (able to transition from 2 legs to 3 wheels and back to 2 legs) likeness. The project itself will be a teaching platform for my boys for everything from basic electronics and mechanical design to materials science, welding, and machining. Good thing there's a makerspace in town!
  • I've always been intrigued by the guidance computer used on the Apollo missions. What better way to answer that than to build one. The actual software used is now in the public domain, and there is a very good emulator for the CPU written in C, so it's possible to run the original AGC programs on a $30 Raspberry Pi (and yes, the Pi is far faster than the AGC ever was). The majority of what I will be building is the DSKY, the display-keyboard interface. It's not a complex hardware project, but I'm using Eagle for the schematic capture and board design, and Fusion360 for the parts--I'm new to both, so throwing myself into something detailed is, I feel, a great way to learn the tools.

Recent Software Projects

Vera Home Automation

I've authored and support several plugins for the Vera home automation gateway/controller. Among these are:

  • DeusExMachinaII - A plugin to simulate presence in a home when unoccupied. The plugin controls any number of loads, configurable by the user. Operation begins at a random time soon after sunset (default) or a specific user-determine time, or under script or scene control. Operation stops at a random time after a user-specified time (default) or under scene or script control. This plugin was originally authored by another Vera user, who subsequently turned the project over to me.
  • DelayLight - A plugin to provide timer control of a set of lights/loads, with optional sensor capability for presence detection or other purposes.
  • Rachio Service - A plugin to interface Rachio Iro irrigation controls with Vera. The plugin allows the user to monitor the operation of the controls, start and stop watering schedules, start and stop watering of individual zones, and enable or disable controllers, schedules, or individual zones.
  • Intesis WMP Gateway - A plugin to interface Intesis heating/cooling gateway products with the Vera. This plugin supports network-accessible devices using Intesis' WMP protocol, and presents a simple thermostat interface to the Vera user. The project was done at the request of Intesis, but was done on a pro-bono basis.
  • AutoVirtualThermostat - A plugin to allow Vera users to use switch-controllable heating and cooling units like a full air handling system. AVT implements the features of a dual heating-cooling thermostat with auto-changeover. Features include separate heating and cooling setpoints, fan control, Comfort/Economy modes, scene control, and scriptability.
  • SiteSensor - A plugin to allow Vera users to collect data from remote services (e.g. text streams, RESTful APIs) and make it readily available within the Vera scene and scripting environment. In addition to data collection, parsing and storage, in uses the "security sensor" behavior to signal a simple binary (tripped/not tripped) state in response to a test of a value in the response. For example, it can query a publicly-available RESTful API that returns current air quality for a specified geographic location, store the Air Quality Index (AQI), and also signal tripped state if the AQI exceeds a user-provided threshold.
  • Virtual Sensor - A plugin to emulate the behavior of a variety of sensors. Used for testing automations, scripting, and other plugins, it is a simple test tool grown of necessity, as the best tools are.
  • SceneSlayer - This is project currently in progress to work around some of the gaps and short-comings of Vera's built-in scene controller management. It offers coordination between scene controllers, scenes and loads, proper management of scene controller displays, and additional control features such as the ability to have a button reverse the effect of a previously-executed scene.

Open Source

  • lexp.js - A lightweight infix expression parser I wrote for a JavaScript project. While it's possible to evaluate expressions directly in JavaScript, ensuring security can leave one wondering if all the holes are plugged, and perhaps finding out the hard when one is not. The lexp.js project addresses this by creating a limited grammar and contained execution environment. This project can be found on GitHub.
  • luaxp - An outgrowth of lexp.js that was born when I started implementing the SiteSensor plugin for Vera Home Automation, luaxp is an infix expression parser written entirely in Lua. It is found on GitHub.

As Dad and Household Handyman

As a homeschool classroom instructor, I am always dreaming up projects to do with my tween/teen boys. We are currently in the beginning stages of building an R2-D2, which is probably our biggest current project. Smaller projects abound, such as this RGB LED Strip Sequencer I put together to give them both a cool lighting source for their desks and an Arduino-based platform for their ongoing instruction in programming and algorithms. This project became my first Instructable.