Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/rbaron/deskmate

A tiny MQTT-powered dashboard and control center.
https://github.com/rbaron/deskmate

arduino mqtt sdl2 smart-home

Last synced: 3 months ago
JSON representation

A tiny MQTT-powered dashboard and control center.

Awesome Lists containing this project

README

        

[![deskmate build](https://github.com/rbaron/deskmate/workflows/deskmate%20build/badge.svg)](https://github.com/rbaron/deskmate/actions?query=workflow%3A%22deskmate+build%22)
[![deskmate-sdl2 build](https://github.com/rbaron/deskmate/workflows/deskmate-sdl2%20build/badge.svg)](https://github.com/rbaron/deskmate/actions?query=workflow%3A%22deskmate-sdl2+build%22)
[![deskmate-arduino build](https://github.com/rbaron/deskmate/workflows/deskmate-arduino%20build/badge.svg)](https://github.com/rbaron/deskmate/actions?query=workflow%3A%22deskmate-arduino+build%22)
# deskmate
A hackable & portable [MQTT](https://mqtt.org/)-powered mini dashboard and control center.

Photo of deskmate prototype on a desk

For clarity, in this specific configuration, the display above shows:
* **Left panel** - The states of MQTT "smart" switches. Clicking turns them ON/OFF
* **Top right panel** - Soil moisture status of some of the plants around the house
* **Bottom right panel** - Current temperature in different rooms

## Hardware & portability
The main components in the photo above are:
* An [ESP32](https://docs.platformio.org/en/latest/boards/espressif32/lolin32.html) development board
* A 2.7" SHARP Memory Display by [Adafruit](https://www.adafruit.com/product/4694)
* A rotary encoder (similar to [this one from Adafruit](https://www.adafruit.com/product/377))
* Three mechanical switches from [Pimoroni](https://shop.pimoroni.com/products/kailh-mechanical-switches-pack-of-12?variant=32056315314259)

The core software should be fairly hardware-agnostic and the concrete implementations should be relatively portable to a bunch of other boards and displays.

As an example, this repo contains [a pure software implementation](code/sdl2) of the whole system. Here it is running on my macbook:


Screenshot of deskmate running on macos

## Software
The software is organized into three directories:
* [`code/lib/`](code/lib) - Platform-agnostic core. Relies on abstract input/output systems
* [`code/arduino/`](code/arduino) - Arduino instantiation of the input/output systems & MQTT client
* [`code/sdl2/`](code/sdl2) - [SDL](https://www.sdl.com/)-based software-only instantiation of the input/output systems & MQTT client

## Case
The `.stl` files for the 3D printed frame can be found under `case/stl/`.