Files
OpenMQTT-Gateway/docs/index.md
T
f5b33104ef [DOCS] Overhaul new-user onboarding, home page, and upload flow (#2347)
Getting started:
- New 15-minute Getting Started guide featuring the two most popular
  tracks (BLE on esp32dev-ble, RF on lilygo-rtl_433), with broker setup
  and a verification step
- Sidebar restructured around the new-user journey; upload options
  numbered by ease; Gitpod upload method removed

Home page:
- VitePress hero with clear actions, larger hero image
- How-it-works pipeline diagram shared as a component (responsive via
  container queries), use-case grid, bigger video tiles without the
  image lightbox, refreshed press coverage list, functions pills
- Support section pointing to Theengs Bridge and
  github.com/sponsors/1technophile

Upload flow:
- Decision-oriented upload landing page (journey strip, method cards,
  comparison table)
- Pre-flight checklist and driver troubleshooting on the web installer
- Guided environment picker (bridge + hardware wizard) replacing the
  filter chips, with manifest-verified recommendations
- Post-flash next-steps card linking to the portal and verification

Board images:
- custom_img key in environments.ini and board photos for all
  web-flashable environments (licenses recorded); private prod_env.ini
  environments excluded from boards-info.json

Corrections:
- RF frequency coverage stated as 433/315/868/915MHz
- Removed references to the retired compatible.openmqttgateway.com
  site (BLE list is decoder.theengs.io), the discontinued Theengs
  Plug, and the private sponsor forum


Claude-Session: https://claude.ai/code/session_01TYysQW8tpmt1dWWuzKhTLi

Co-authored-by: Florian <1technophile@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 10:23:43 -05:00

11 KiB

layout, hero, features
layout hero features
home
name text tagline image actions
OpenMQTTGateway One gateway, many technologies Bridge RF, Infrared, Bluetooth LE, LoRa and more to MQTT, and to your home automation platform.
src alt
/img/OpenMQTTGateway.png Overview of the protocols and compatible controllers
theme text link
brand Get started /getting-started
theme text link
alt Flash from your browser /upload/web-install
theme text link
alt Supported BLE devices https://decoder.theengs.io/devices/devices.html
icon title details
📶 Bluetooth Low Energy 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.

Decodes more than 100 BLE devices and many RF protocols (433/315/868/915MHz) through RTL_433 decoders — and the BLE decoding also runs on Raspberry Pi, Windows or Linux with Theengs Gateway.

What will you automate?

{{ uc.icon }} {{ uc.text }}

The limit is your imagination 😀

See it in action

In the press: {{ p.name }} ·

Under the hood

{{ f }}

Support the project

Theengs Bridge, BLE to MQTT gateway with Ethernet and external antenna

Theengs Bridge — ready-to-use BLE gateway

Pre-flashed with OpenMQTTGateway, with an Ethernet port and an external antenna for enhanced BLE range. Every purchase directly funds the project.

Get the Theengs Bridge

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.

<style scoped> .omg-section { max-width: 1152px; margin: 0 auto; padding: 24px 24px 0; } .omg-section h2 { border-top: 1px solid var(--vp-c-divider); padding-top: 24px; margin-bottom: 16px; font-size: 24px; font-weight: 600; letter-spacing: -0.02em; } .omg-lead { color: var(--vp-c-text-1); max-width: 720px; margin: 0 0 8px; } .omg-caption { color: var(--vp-c-text-2); font-size: 14px; margin-top: 16px; } .omg-caption a { color: var(--vp-c-brand-1); } .omg-lead a { color: var(--vp-c-brand-1); } /* Use cases grid */ .omg-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 12px; } .omg-card { display: flex; align-items: center; gap: 12px; background: var(--vp-c-bg-soft); border-radius: 12px; padding: 14px 16px; font-size: 14px; line-height: 1.5; transition: transform 0.2s ease, box-shadow 0.2s ease; } .omg-card:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12); } .omg-card-icon { font-size: 24px; flex-shrink: 0; } /* Videos */ .omg-videos { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 20px; } .omg-video { display: flex; flex-direction: column; gap: 2px; text-decoration: none; color: var(--vp-c-text-1); } .omg-video img { width: 100%; border-radius: 12px; aspect-ratio: 16 / 9; object-fit: cover; transition: transform 0.2s ease; } .omg-video:hover img { transform: scale(1.03); } .omg-video-title { font-size: 14px; font-weight: 600; margin-top: 8px; } .omg-video-author { font-size: 13px; color: var(--vp-c-text-2); } /* Function pills */ .omg-pills { display: flex; flex-wrap: wrap; gap: 8px; } .omg-pill { background: var(--vp-c-bg-soft); border: 1px solid var(--vp-c-divider); border-radius: 999px; padding: 6px 14px; font-size: 13px; color: var(--vp-c-text-1); } /* Product card */ .omg-product { display: flex; align-items: center; gap: 32px; background: var(--vp-c-bg-soft); border-radius: 12px; padding: 24px; flex-wrap: wrap; } .omg-product > a { flex: 0 1 280px; min-width: 200px; } .omg-product img { width: 100%; border-radius: 8px; } .omg-product > div { flex: 1 1 300px; } .omg-product h3 { margin: 0 0 8px; font-size: 18px; font-weight: 600; } .omg-product p { color: var(--vp-c-text-2); margin: 0 0 16px; } .omg-cta { display: inline-block; background: var(--vp-c-brand-1); color: var(--vp-c-white, #fff); border-radius: 20px; padding: 8px 20px; font-size: 14px; font-weight: 600; text-decoration: none; transition: background 0.2s ease; } .omg-cta:hover { background: var(--vp-c-brand-2); } .omg-disclaimer { border-top: 1px solid var(--vp-c-divider); padding: 24px 0 32px; color: var(--vp-c-text-3); font-size: 12px; line-height: 1.6; } @media (max-width: 640px) { .omg-pipeline { flex-direction: column; } .omg-arrow { transform: rotate(90deg); } } </style>