Repository navigation
Smart Plugs
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.
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.
There are three ways to set up a plug:
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).
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. |
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.
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.jsonformat. The split into Role + Fermenter is purely a UI convenience.
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.
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.
- 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
delaywrong 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.