home industries $projects docs hoff.kitchen metapages

M.A.R-T>Y. Distributed Ecosystem

M.A.R-T>Y. was originally intended to be a distributed, low-latency and minimalist home automation engine. Although it can kind of be used for anything!

Quality Status: Gold Master

Functionality Status: Iterative

M.A.R-T>Y. - Matt's Asynchronous Receive + Transmit Yutilities (yes I'm aware of the spelling here) was built based on my want: a minimalist and tweakable home automation engine. I wanted to automate my home, but without all the bloat. I wanted a messaging protocol I understood all the way down to the packet level, and is so simple I can inspect the raw data and immediately know what's going on. Despite these constraints, it still has to be fault-tolerant and versatile - a tricky challenge!

For the first iteration of this the transport layers were chosen to be TCP and UNIX sockets - however a cut-down version of the messaging protocol exists for low-power embedded devices, and a bridge is planned for development. For now consider 'modules' in the home automation engine as UNIX hosts, e.g. desktop Linux computers, Raspberry Pi's or a FreeBSD server (this setup is exactly how I'm running this). Microservices can be run on these modules, which connect to a message broker and are identified by a 3-part key of priority, hostname and service name.

The following microservices are currently finished:

  1. martss: Time-based event scheduler,
  2. swiper: RFID-card-swipe based event executor,
  3. reictl: CLI application for manual event execution,
  4. radio: Push notification receiver for Linux desktops (libnotify),
  5. cubular: LED and light controller,
  6. voodooacpi: Remote sleep, shutdown and wake (wake on LAN),
  7. marqtt: MQTT bridge,
  8. discourse: Discord messaging platform bridge,
  9. conartist: Automated SSH port-forward utility for secure remote connection.

The message broker admiral has been running 24/7 and M.A.R-T>Y. automates my life without major issues so far.

M.A.R-T>Y. is currently undergoing a major refactor and re-architecture, so downloads for the services are not available at the moment, but development builds are available on request. You can download the libraries implementing the protocol from here in the meantime.