Capturing Envoy Data

Wed 22 February 2012 by Lars Kellogg-Stedman

Pursuant to my last post, I've written a simple man-in-the-middle proxy to intercept communication between the Envoy and the Enphase servers. The code is available here.

What it does

As I detailed in my previous post, the Envoy sends data to Enphase via http POST requests. The proxy intercepts these …

read more

Enphase Envoy XML Data Format

Mon 13 February 2012 by Lars Kellogg-Stedman

We recently installed a (photovoltaic) solar array on our house. The system uses Enphase microinverters, and includes a monitoring device called the "Envoy". The Envoy collects data from the microinverters and sends it back to Enphase. Enphase performs monitoring services for the array and also provides access to the data …

read more

Rate limiting made simple

Mon 26 December 2011 by Lars Kellogg-Stedman Tags networking linux

I use CrashPlan as a backup service. It works and is very simple to set up, but has limited options for controlling bandwidth. In fact, if you're running it on a headless system (e.g., a fileserver of some sort), your options are effectively "too slow" and "CONSUME EVERYTHING". There …

read more

Puppet, scope, and inheritance

Tue 16 August 2011 by Lars Kellogg-Stedman Tags puppet

I note this here because it wasn't apparent to me from the Puppet documentation.

If you have a Puppet class like this:

class foo {
  File {  ensure  => file,
          mode    => 600,

And you use it like this:

class bar {
  include foo

  file { '/tmp/myfile': }

Then /tmp/myfile will not be created. But …

read more

Fixing RPM with evil magic

Tue 26 July 2011 by Lars Kellogg-Stedman Tags rpm

Fixing rpmsign with evil magic

At my office we are developing a deployment mechanism for RPM packages. The general workflow looks like this:

  • You build a source rpm on your own machine.
  • You sign the rpm with your GPG key.
  • You submit the source RPM to our buildserver.
  • The buildserver …
read more