MCPcopy Index your code
hub / github.com/LightJockey/MqttDroid

github.com/LightJockey/MqttDroid @1.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.2 ↗ · + Follow
239 symbols 619 edges 22 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

MqttDroid 🤖📡

logo

Overview and Purpose

MqttDroid is an Android app that aims to provide MQTT support to Android's built-in device controls (Android 11+).

It provides a friendly interface to create and edit custom devices with user-defined MQTT actions that will be usable in the device controls hub. Unlike other home automation apps, MqttDroid will connect directly to the MQTT broker, no special setup is needed.

NOTE: This app is NOT a standalone MQTT dashboard. It relies on Android's device controls to actually send and display MQTT messages.

It was mainly tested on stock Android. Different vendors and Android flavors may have implemented device controls in a way that could make this app less straightforward to use or straight up useless.

✨ Features

  • Robust MQTT client based on HiveMQ
  • Supports these control types: toggle, toggle with slider, range, trigger and gauge
  • One MQTT topic per control action, with separable pub / sub, QoS and retain support
  • Customizable title, subtitle and group per control
  • Customizable look and feel of each control tile (a range of stock Android flavors are offered. Alternatively, a custom icon and color can be chosen)
  • Customizable toggle on / off payloads
  • Customizable min, max, and step values for slider actions. Display as values or percentage
  • Unlock to use can be set per control (only available on Android 13+)
  • Live updates while on the device controls screen
  • In-app log to check for recent MQTT activity
  • A single broker with support for basic authentication
  • Backup and restore all controls via a retained MQTT message on the broker
  • Material You

📸 Screenshots

May implement in the future 🧐

  • ~~Separate pub / sub topics~~
  • Thermostat control (two separate controls are needed as of now, one toggle with slider for settings and one gauge for readings)
  • RGB control with color picker
  • Multiple topics and payloads for triggers
  • Offer a way to combine actions into a json payload targeted at a single topic
  • Multiple brokers

Libraries

  • HiveMQ MQTT Client: https://github.com/hivemq/hivemq-mqtt-client
  • Icon picker dialog: https://github.com/maltaisn/icondialoglib
  • ColorPickerView: https://github.com/skydoves/ColorPickerView
  • Google Gson: https://github.com/google/gson

Extension points exported contracts — how you extend this code

MqttControlDao (Interface)
(no doc) [1 implementers]
app/src/main/java/lightjockey/mqttdroid/MqttControlDao.java

Core symbols most depended-on inside this repo

equals
called by 23
app/src/main/java/lightjockey/mqttdroid/MqttControl.java
getIndex
called by 15
app/src/main/java/lightjockey/mqttdroid/MqttControl.java
getId
called by 13
app/src/main/java/lightjockey/mqttdroid/MqttControl.java
isStringNullOrEmpty
called by 10
app/src/main/java/lightjockey/mqttdroid/ui/helpers/Utils.java
boolToInt
called by 10
app/src/main/java/lightjockey/mqttdroid/ui/helpers/Utils.java
getName
called by 9
app/src/main/java/lightjockey/mqttdroid/MqttControl.java
getTopicSub
called by 8
app/src/main/java/lightjockey/mqttdroid/MqttControl.java
isToggleRange
called by 8
app/src/main/java/lightjockey/mqttdroid/MqttControl.java

Shape

Method 209
Class 26
Enum 3
Interface 1

Languages

Java100%

Modules by API surface

app/src/main/java/lightjockey/mqttdroid/MqttControl.java88 symbols
app/src/main/java/lightjockey/mqttdroid/ui/controls/ControlActivity.java24 symbols
app/src/main/java/lightjockey/mqttdroid/MqttClient.java16 symbols
app/src/main/java/lightjockey/mqttdroid/ui/helpers/UtilsSecurity.java14 symbols
app/src/main/java/lightjockey/mqttdroid/ui/helpers/Utils.java13 symbols
app/src/main/java/lightjockey/mqttdroid/MqttDroidControlsService.java13 symbols
app/src/main/java/lightjockey/mqttdroid/ui/controls/ControlListAdapter.java10 symbols
app/src/main/java/lightjockey/mqttdroid/AppRepository.java9 symbols
app/src/main/java/lightjockey/mqttdroid/MqttControlsViewModel.java8 symbols
app/src/main/java/lightjockey/mqttdroid/MqttControlDao.java8 symbols
app/src/main/java/lightjockey/mqttdroid/ui/settings/SettingsFragment.java7 symbols
app/src/main/java/lightjockey/mqttdroid/ui/helpers/MaterialSpinnerAdapter.java5 symbols

For agents

$ claude mcp add MqttDroid \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact