Semua yang Kamu Butuhkan

OpenRelay hadir dengan fitur lengkap — dari firmware ESP32 yang robust hingga dashboard web modern dan protokol komunikasi industrial.

MQTT Control

Kontrol relay real-time menggunakan protokol MQTT standar. Kompatibel dengan Home Assistant, Node-RED, dan semua MQTT client.

broker.hivemq.com
Web Dashboard

Dashboard responsif via GitHub Pages (HTTPS + MQTT WSS) dan dashboard lokal tersimpan di LittleFS ESP32.

GitHub Pages · LittleFS
REST API

API HTTP untuk integrasi dengan sistem eksternal. Mendukung kontrol per-channel dan status query JSON.

JSON · HTTP
WebSocket Lokal

Koneksi WebSocket langsung ke ESP32 untuk latensi rendah tanpa perlu koneksi internet.

ws://relaycrtl.local
I2C Expander

Dukung PCF8574 dan MCP23017 untuk ekspansi hingga 128 channel relay via bus I2C.

PCF8574 · MCP23017
OTA Updates

Update firmware over-the-air menggunakan ArduinoOTA tanpa perlu kabel USB atau bongkar perangkat.

ArduinoOTA · relay_ota
Pattern Sequencer

Jalankan pola relay otomatis dengan langkah-langkah bitmask dan durasi yang dapat dikonfigurasi. Repeat -1 untuk loop.

JSON Pattern · Repeat
Hardware Watchdog

Watchdog hardware 10 detik memastikan ESP32 reset otomatis jika firmware hang — untuk sistem yang harus selalu online.

Failsafe · 10s timeout
LittleFS Storage

Konfigurasi WiFi, MQTT, dan relay tersimpan di flash 8MB. Persisten meski restart — tidak perlu setup ulang.

8MB · JSON Config

Alur Sinyal Sistem

Dari MQTT broker di cloud hingga relay fisik — data mengalir melalui lapisan yang terstruktur dan dapat diandalkan.

01
Cloud Layer
MQTT Broker (HiveMQ)
GitHub Pages Dashboard
MQTT over WSS (port 8884)
LWT Online/Offline tracking
02
Processing Layer
ESP32 Firmware (C++)
MQTT Client + WebSocket
REST API + OTA Handler
LittleFS Config Storage
03
Physical Layer
I2C Bus (SDA/SCL)
MCP23017 16-bit Expander
PCF8574 8-bit Expander
SPDT Relay Channels

Integrasi Mudah

Kontrol relay dengan JSON payload sederhana — dari Python, Node-RED, Home Assistant, atau client MQTT apapun.

control.py Python
import paho.mqtt.client as mqtt import json client = mqtt.Client() client.connect("broker.hivemq.com", 1883) # Turn relay 3 ON payload = json.dumps({ "relay": 3, "on": True }) client.publish("home/relay/api", payload) # Pulse relay 1 for 500ms client.publish( "home/relay/api", json.dumps({"relay": 1, "pulse": 500}) )
pattern.json JSON
// Pattern sequencer — repeating loop { "pattern": { "steps": [ { "mask": 0b00001111, "duration_ms": 300 }, { "mask": 0b11110000, "duration_ms": 300 } ], "repeat": -1 } }
configuration.yaml HA YAML
# Home Assistant MQTT Switch switch: - platform: mqtt name: "Relay 1" command_topic: "home/relay/relay/1/set" state_topic: "home/relay/relay/1/v" payload_on: "ON" payload_off: "OFF" availability_topic: "home/relay/status"
relay_api.cpp C++
// MQTT message handler void onMqttMessage( const char* topic, uint8_t* payload, int len ) { auto doc = parseJson(payload, len); int ch = doc["relay"]; bool on = doc["on"]; relays[ch].setState(on); publishState(ch); }

Tabel Spesifikasi Relay

Mapping pin ekspander ke channel relay dan fungsi masing-masing.

Expander Address Pins Channels Function
MCP23017 #1 0x20 GPA0–GPA7 CH 1–8 Main relay bank A
MCP23017 #1 0x20 GPB0–GPB7 CH 9–16 Main relay bank B
MCP23017 #2 0x21 GPA0–GPB7 CH 17–32 Expansion bank
PCF8574 #1 0x38 P0–P7 CH 33–40 Auxiliary / sensor
PCF8574 #2 0x39 P0–P7 CH 41–48 Auxiliary / sensor
… up to 8 × MCP23017 + 8 × PCF8574 … CH 49–128 Full expansion