Skip to content

Smart Plugs

Sean Cardus edited this page May 17, 2026 · 1 revision

Smart Plugs Tab

The Smart Plugs tab configures the 433 MHz RF-controlled smart plugs that switch heating and cooling appliances on and off. The controller has up to 10 plug slots (one card each), each holding an On Code and an Off Code that get transmitted over the on-board FS1000A RF transmitter.

A plug is assigned a function (e.g. "Fermenter 1 Hot") and a fermenter. The Fermenter control loop fires the plug's On / Off codes whenever it needs to heat or cool that fermenter.


Page Layout

The tab shows one card per plug slot. The card header shows:

  • The slot index (Plug 0 – 9)
  • The plug's Manufacturer / Model in cyan (once configured)
  • An ON badge in red when the plug's state is currently ON

Inactive (unconfigured) plug slots show only the slot index.


Configuring a Plug

There are three ways to set up a plug:

Method 1 — Apply a Preset (easiest)

The Preset picker at the top of each card contains 12 known plug codesets — most "Dial" 410 µs Codeset families, plus ZAP USA, Arlec, and a few alternates. Pick a preset and a button number (1 – 4), then click Apply. The card's fields are populated with the on / off codes, manufacturer, protocol (1), bit length (24), and pulse delay. Click Save to commit.

Codesets 1 – 4 have been verified with an RF sniffer. The remaining presets are estimates — if the plug doesn't respond, sniff the real codes with the RF Sniffer (System Settings → RF Sniffer).

Method 2 — Manually enter codes

If you already know the codes (e.g. from another OurBrewbot, or from your plug's documentation):

Field Typical Value
Manufacturer Free text, e.g. Dial, ZAP, Arlec. Used for the header label only.
Model Free text, e.g. Codeset 1. Used for the header label only.
On Code Integer code transmitted to switch the plug ON.
Off Code Integer code transmitted to switch the plug OFF.
Protocol rc-switch protocol number — usually 1.
Bits Code length in bits — usually 24.
Delay µs Pulse-length microseconds. 410 for most Dial-pattern plugs; 160 for ZAP / Arlec.

Method 3 — Sniff the codes

If you don't know the codes, use the RF Sniffer page (System Settings → RF Sniffer). Hold the remote close to the device and press the remote's button. The captured code, protocol, bit length, and pulse length are shown. Make a note of them & enter them by hand into a plug card and save.


Role & Fermenter

After the codes are set, tell the controller what the plug is for:

Field Description
Role What this plug does — see below.
Fermenter Which fermenter (0 – 3, or None) the plug is wired to. Required when Role is Hot or Cold.

Available roles:

Role Used by
Hot Heating side of the selected fermenter.
Cold Cooling side of the selected fermenter.
Aux 1 / Aux 2 Auxiliary plugs not tied to fermenter control.
Unassigned Plug is configured but not actively controlled.

For temperature control to actuate a fermenter, you need both a Hot and a Cold plug assigned to it (unless that fermenter genuinely only has one side, e.g. heating-only).

Internally the device still stores a single combined function code per the original schema (e.g. "F1 Hot" = Hot + Fermenter 0), preserving compatibility with the original plugs.json format. The split into Role + Fermenter is purely a UI convenience.


Testing a Plug

Each card has two test buttons:

  • Test On — transmits the On Code immediately (does not save).
  • Test Off — transmits the Off Code immediately (does not save).

Use these to verify that codes work before committing, and to manually power-cycle a plug for diagnostics.

Test buttons send the code regardless of any fermenter logic — they will override the controller's current state, so the next control tick may switch the plug back. Use them as one-shot verification, not as a manual switch.


How Plugs are Fired

The fermenter control loop runs every 10 seconds. On each tick it decides — based on temperature and the heating/cooling state machine — whether each plug should be ON or OFF, and re-transmits the matching On or Off code over the RF transmitter. A few details to know:

  • Codes are re-sent on every control tick (every 10 s), not only when the state changes. This is deliberate — it keeps the plug in sync even if a single burst is missed due to RF interference. If your plug occasionally misses a command, the next 10-second tick will repeat it.
  • Each transmission repeats the code 10 times internally (RCSwitch setRepeatTransmit(10)) for extra reliability against momentary interference.
  • Hot and Cold plugs are independent. The controller will never command "Hot ON + Cold ON" simultaneously, but if both plugs share the same codes (a mis-configuration), each 10-second tick will re-send the same code to both.
  • Compressor Delay (set per-fermenter on the Fermenters tab) prevents the Cold plug from firing inside the delay window, even if the temperature is above the ceiling.

Tips

  • Match each plug to a single function. Two plugs with the same function will both fire — useful for redundancy, but usually not intended.
  • Pulse delay matters. Setting delay wrong by ~50 µs can stop a plug from responding even if the code is right.
  • Test Aux plugs only from the API or via direct test buttons — they aren't driven by fermenter logic.
  • Re-flashing firmware preserves your plug config — it lives in LittleFS, separate from the firmware partition.

Clone this wiki locally