The home hero image overlapped the hero title on phones: the default theme
pulls the stacked image up with negative margins (-76px -24px -48px), which
only works because it normally sits absolutely positioned inside a fixed
320px box. custom.css lets the image flow to enlarge it, so those margins
made it bleed off-screen and collide with the title. Reset them below 960px,
and hide the image entirely under 640px -- at phone size it is a wall of
unreadable logos that pushes the title, tagline and call-to-action buttons
below the fold.
Also fixes, found while sweeping every page at 360/400/900px:
- Nav bar: the shared Theengs nav has seven top-level entries and the theme
swaps to the desktop nav bar at 768px, where it does not fit. From 768px to
~1180px, Shop, Sponsor, the appearance switch and the GitHub link were
clipped or off-screen and the page scrolled sideways. Keep the hamburger +
full-screen menu until the full menu genuinely fits.
- upload/binaries: indented (non-fenced) code blocks render as a bare <pre>,
which the theme only makes scrollable inside a language-* wrapper, so the
long esptool.py commands pushed the page sideways.
- use/lora: the YouTube embed is raw HTML with width="560", wider than a
phone. Make video embeds fluid at a 16/9 ratio.
- OmgPipeline: stack below a 680px container instead of 480px -- in between,
the "OpenMQTTGateway" label spilled out of its node and over the arrows.
Drop the media query in index.md that meant to do this: it was scoped to
index.md and could never match an element inside the child component.
No horizontal overflow remains on any of the 50 pages at 360px, 400px or
900px; desktop is unchanged.
Claude-Session: https://claude.ai/code/session_01Nj6xa5Mk5wi8XWtgJG7w5D
Co-authored-by: Florian <1technophile@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Decodes more than 100 BLE sensors out of the box thanks to Theengs Decoder — Mi Flora, Xiaomi, Govee, Inkbird, SwitchBot and more.
icon
title
details
📡
RF 433/315/868/915MHz
Receive and transmit RF signals with RTL_433, RCSwitch, KaKu or Pilight — weather stations, door sensors, remotes, PIR sensors.
icon
title
details
🔴
Infrared & LoRa
Make your old TV or AC smart through IR, or reach far-away sensors with LoRa.
icon
title
details
🏠
Home automation ready
Home Assistant MQTT auto-discovery enabled by default. Works with OpenHAB, Domoticz, Jeedom, Node-RED, FHEM and any MQTT-capable software.
icon
title
details
⚡
Easy to install
Flash an ESP32 or ESP8266 directly from your browser, then configure WiFi and MQTT through a web portal. No development tools required.
icon
title
details
🔧
Extensible
Add sensors (BME280, DHT, INA226...) and actuators (relays, PWM, LED), secure connections with TLS, and update over the air.
<script setup>
import { useData } from 'vitepress'
import { computed } from 'vue'
const { theme } = useData()
const isDev = theme.value.mode === 'dev'
const version = theme.value.version
const commitUrl = computed(() =>
theme.value.repo && version
? `https://github.com/${theme.value.repo}/commit/${version}`
: null
)
const useCases = [
{ icon: '🌱', text: 'Water the garden when a Mi Flora sensor says the soil is dry' },
{ icon: '🚪', text: 'Detect opened doors and windows through 433MHz or BLE' },
{ icon: '🧊', text: 'Get alerted when the fridge or freezer gets too warm' },
{ icon: '📺', text: 'Make your old TV or AC smart through infrared control' },
{ icon: '⌚', text: 'Run a welcome scenario when your smartwatch comes home' },
{ icon: '🥩', text: 'Follow your meat temperature while cooking with an Inkbird IBBQ' },
{ icon: '💧', text: 'Detect water leakage or smoke remotely' },
{ icon: '📬', text: 'Know when a distant mailbox is opened, over LoRa' },
{ icon: '🌡️', text: 'Trigger a fan from a Mi Jia temperature and humidity sensor' },
{ icon: '🚨', text: 'Sound a siren if something is going wrong' },
{ icon: '⚖️', text: 'Log your weight automatically from a BLE scale' },
{ icon: '🛞', text: 'Monitor your vehicle tire pressure' }
]
const functions = [
'Home Assistant auto-discovery', 'Message deduplication', 'Simple MQTT API',
'Signal forward & repeat', 'WiFi onboarding portal', 'Web UI configuration',
'Whitelist & blacklist', 'TLS secure connections', 'Over-the-air updates',
'Local first, cloud optional'
]
const videos = [
{ id: '_gdXR1uklaY', title: '433MHz and BLE gateway', author: 'Andreas Spiess' },
{ id: 'noUROhtf0E0', title: 'BLE gateway', author: 'Andreas Spiess' },
{ id: 'H-JXWbWjJYE', title: 'RTL_433 on ESP32', author: 'Tech Mind' },
{ id: '6DftaHxDawM', title: 'LoRa gateway', author: 'PricelessToolkit' }
]
const press = [
{ name: 'ESPHome vs OMG', url: 'https://medium.com/@zediot/esphome-vs-openmqttgateway-choosing-the-right-esp32-bridge-model-7126379e36be' },
{ name: 'ZedIoT', url: 'https://zediot.com/blog/what-is-openmqttgateway/' },
{ name: 'HomeTechHacker', url: 'https://hometechhacker.com/theengs-bridge-ble-mqtt-gateway-review/' },
{ name: 'Squix', url: 'https://blog.squix.org/2023/04/esp32-cheap-sensor-network-with-openmqttgateway.html' },
{ name: 'Hackaday', url: 'https://hackaday.com/2023/01/13/arduino-library-brings-rtl_433-to-the-esp32' },
{ name: 'CNX Software', url: 'https://www.cnx-software.com/2023/01/14/esp32-board-with-lora-433-mhz-sensors/' },
{ name: 'RTL-SDR', url: 'https://www.rtl-sdr.com/rtl_433-ported-to-esp32-microcontrollers-with-cc1101-or-sx127x-transceiver-chips/' },
{ name: 'LWN.net', url: 'https://lwn.net/Articles/921497/' }
]
</script>
Development Version
This is the edge version of the documentation, built from commit {{ version }}{{ version }}. It is under active development and may contain bugs, incomplete features, or breaking changes. Use it at your own risk.
How it works
OpenMQTTGateway is a firmware for ESP32 and ESP8266 boards that translates your devices' signals into MQTT messages — and back. One board replaces a drawer full of proprietary bridges.
You can also sponsor the development to help keep the project healthy and evolving.
The material and information contained in this documentation is for general information purposes only. You should not rely upon it as a basis for making any business, legal or any other decisions. There is no warranty given on this documentation content; if you decide to follow the information and materials given it is at your own risk.