Why Merle?

Merle is a scratch for an itch. The itch was I wanted to build, for my Mom, a robotic chicken coop, one that would occasionally lift itself up and move to fresher ground, as well as monitor water/feed levels and keep count of the chickens to make sure they're put away at night. And I wanted a phone interface to the coop so she could keep an eye on the coop, from anywhere. I imagined some phone app like the one shown here.

Ignoring the act of physically moving the coop, the hardware side for everything else is fairly straight forward. Maybe a Raspberry Pi with some sensors, some actuators, a camera, a cellular modem to connect the coop to the internet, and a solar panel to power it all.

The software side is where it gets interesting and hard. Some wants and constraints:

  • I wanted a phone app but I don't know how to write phone apps, nor do I care to learn

  • The cellular modem doesn't have a routable public IP address, so there is no way to address the coop directly, from my Mom's phone

  • There is a plethora of IoT solutions to solve the problem of getting your Thing on the Internet. I didn't find any I liked. MQTT and publish/subscribe and REST makes for a cumbersome application stack. It feels so 1999.

  • I wanted to own the software and internet resources, or at least not be locked-in to third party hosting services.

  • My mom's software budget is $10/month for the chicken coop, including data costs

Merle is my solution, my scratch, to an IoT software stack. I decided to start over, ignoring existing IoT stacks; a first principles approach (or maybe a NIH approach). Merle is an IoT stack using proven off-the-shelf software components: HTML, Websockets, JavaScript, JSON, TLS, SSH, and the Go-language.

I hope you find Merle useful and build something cool with it. I still need to build that chicken coop.

Merle is named after and dedicated to my Mother.

Cloud-lassoing-gopher image is copyright 2021 Todd Feldman