Skip to content

Getting Started

Dan Roberts edited this page Jan 16, 2026 · 1 revision

Getting Started

This guide assumes you already have BedJetWebSchedule running on your LAN and it can control your BedJet over BLE.

Prerequisites

Hardware

  • ESP32 supported by the Arduino Matter stack (Arduino-ESP32 core with #include <Matter.h> support)
  • A device running BedJetWebSchedule (often another ESP32) reachable by HTTP

Software

  • Arduino IDE or PlatformIO
  • Espressif Arduino-ESP32 core that includes Matter
  • Serial monitor access (115200)

Flash

  1. Open BedJetMatterBridge.ino.
  2. Select your board + port.
  3. Build and flash.
  4. Open Serial Monitor at 115200.

On boot the firmware prints:

  • reset reason
  • saved SSID/base URL
  • Matter pairing code if not commissioned

First boot configuration

If any of the following are true, the bridge enters setup mode:

  • No Wi-Fi SSID saved
  • No BedJetWebSchedule base URL saved
  • You hold BOOT while powering on

Setup portal

  1. Connect to the SoftAP:
    • SSID: BedJetBridge-XXXX
  2. Browse to: http://192.168.4.1/
  3. Fill in:
    • Wi-Fi SSID
    • Wi-Fi Password
    • BedJetWebSchedule Base URL (example: http://192.168.1.253)
    • Default Mode (HEAT or COOL) used when the BedJet is off and you set temp/fan
  4. Click Save & Restart

The bridge stores values in NVS Preferences under the namespace bjbridge and reboots.

Join Wi-Fi

On normal boot the firmware connects STA mode and waits up to ~30 seconds.

  • Success prints IP + RSSI.
  • Failure falls back to the setup portal AP.

Pair Matter

When not commissioned, the bridge prints pairing info every ~10 seconds:

  • Manual pairing code
  • QR onboarding URL

You can also view it on the local status page:

  • http://<bridge-ip>/

Controllers

Use any Matter controller that supports commissioning a thermostat/fan. Typical examples:

  • Apple Home (via a Matter hub)
  • Google Home
  • Amazon Alexa (Matter)

Quick functional test

  1. Browse to http://<bridge-ip>/ and confirm:
    • Base URL is correct
    • Commissioned state (true/false)
  2. Verify BedJetWebSchedule responds:
    • From another device: http://<bedjetwebschedule-ip>/api/state
  3. After pairing, try:
    • Thermostat mode: OFF -> HEAT
    • Set heat setpoint
    • Set fan speed to ~50%

Field recovery shortcuts

  • Force setup portal: hold BOOT at power-on
  • Factory decommission: hold BOOT for ~5 seconds while running (decommissions Matter + reboots)

Clone this wiki locally