# Configuration Parameters Reference Any information about this page goes here. | `logger` | `[]` | | | `api` | `[]` | | ## `esphome` ============================================================================== ESP32-C3 SUPER MINI - CT RELAY CONTROLLER WITH OLED & ROTARY ENCODERS ============================================================================== UPDATED GPIO ASSIGNMENTS OVERVIEW: ------------------------------------------------------------------------------ GPIO 0 : Rotary Encoder 1 - Phase A (Current Threshold) GPIO 1 : Rotary Encoder 1 - Phase B (Current Threshold) GPIO 2 : Rotary Encoder 1 - Push Button (Toggle Display On/Off) GPIO 3 : Rotary Encoder 2 - Phase A (Off-Delay) GPIO 4 : CT Current Sensor (Analog Input ADC1_CH4) [MOVED FROM GPIO7] GPIO 7 : Rotary Encoder 2 - Phase B (Off-Delay) [MOVED FROM GPIO4] GPIO 5 : I2C - SCL (SH1106 Display) GPIO 6 : I2C - SDA (SH1106 Display) GPIO 8 : Relay Output (Active High) ============================================================================== **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `name` | `afzuiginglageweg` | | ## `esp32` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `board` | `esp32-c3-devkitm-1` | | | `variant` | `esp32c3` | | ## `preferences` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `flash_write_interval` | `1min` | | ## `ota` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `platform` | `esphome` | | ## `wifi` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `ssid` | `!secret wifi_ssid` | | | `password` | `!secret wifi_password` | | | `manual_ip` | | | | `ap` | | | ### `manual_ip` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `static_ip` | `192.168.1.173` | | | `gateway` | `192.168.1.1` | | | `subnet` | `255.255.255.0` | | | `dns1` | `192.168.1.1` | | ### `ap` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `ssid` | `"CT-Relay Fallback AP"` | | | `password` | `!secret ap_password` | | ## `i2c` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `sda` | `GPIO6` | | | `scl` | `GPIO5` | | | `scan` | `true` | | ## `font` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `file` | `"gfonts://Roboto"` | | | `id` | `font_main` | | | `size` | `10` | | ## `globals` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `id` | `current_threshold` | | | `type` | `float` | | | `restore_value` | `true` | | | `initial_value` | `'0.5'` | | | `id` | `off_delay_seconds` | | | `type` | `int` | | | `restore_value` | `true` | | | `initial_value` | `'5'` | | | `id` | `display_timeout_timer` | | | `type` | `int` | | | `restore_value` | `false` | | | `initial_value` | `'0'` | | ## `binary_sensor` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `platform` | `gpio` | | | `pin` | | | | `id` | `encoder_1_button` | | | `name` | `"Display Toggle Button"` | | | `on_press` | | | | `id` | `load_detected` | | | `platform` | `template` | | | `name` | `"Load Detected"` | | | `lambda` | `|-` | | | `return id(ct_current).state >= id(current_threshold);` | | | | `on_state` | | | ### `pin` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `number` | `GPIO2` | | | `mode` | `INPUT_PULLUP` | | ### `on_press` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `then` | | | #### `then` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `lambda` | `|-` | | | `id(display_timeout_timer) = 10;` | | | | `id(main_display).turn_on();` | | | ### `on_state` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `then` | | | #### `then` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `if` | | | ##### `if` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `condition` | | | | `then` | | | | `else` | | | ###### `condition` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `binary_sensor.is_on` | `load_detected` | | ###### `then` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `switch.turn_on` | `relay_output` | | | `script.stop` | `delay_off_script` | | ###### `else` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `script.execute` | `delay_off_script` | | ## `sensor` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `# Current Transformer Reading on valid ADC Pin (GPIO4)` | | | | `platform` | `ct_clamp` | | | `sensor` | `adc_sensor` | | | `name` | `"CT Measured Current"` | | | `id` | `ct_current` | | | `update_interval` | `500ms` | | | `sample_duration` | `200ms` | | | `accuracy_decimals` | `0` | | | `force_update` | `true` | | | `filters` | | | | `platform` | `adc` | | | `pin` | `GPIO4` | | | `id` | `adc_sensor` | | | `attenuation` | `12db` | | | `# Rotary Encoder 1` | `Threshold Control` | | | `platform` | `rotary_encoder` | | | `name` | `"Threshold Setting"` | | | `pin_a` | `GPIO0` | | | `pin_b` | `GPIO1` | | | `id` | `encoder_threshold` | | | `on_value` | | | | `# Rotary Encoder 2` | `Delay Control` | | | `platform` | `rotary_encoder` | | | `name` | `"Delay Setting"` | | | `pin_a` | `GPIO3` | | | `pin_b` | `GPIO7` | | | `id` | `encoder_delay` | | | `on_value` | | | ### `filters` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `calibrate_linear` | `['0.01 -> 0', '1 -> 1']` | | ### `on_value` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `then` | | | #### `then` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `lambda` | `|-` | | | `static int last_val = 0;` | | | | `int diff = x - last_val;` | | | | `last_val = x;` | | | | `id(current_threshold) += (diff * 0.1);` | | | | `if (id(current_threshold) < 0.0) id(current_threshold) = 0.0;` | | | | `id(display_timeout_timer) = 10;` | | | | `id(main_display).turn_on();` | | | ### `on_value` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `then` | | | #### `then` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `lambda` | `|-` | | | `static int last_val = 0;` | | | | `int diff = x - last_val;` | | | | `last_val = x;` | | | | `id(off_delay_seconds) += diff;` | | | | `if (id(off_delay_seconds) < 0) id(off_delay_seconds) = 0;` | | | | `id(display_timeout_timer) = 10;` | | | | `id(main_display).turn_on();` | | | ## `switch` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `platform` | `gpio` | | | `pin` | `GPIO8` | | | `inverted` | `true` | | | `name` | `"Relay Output"` | | | `id` | `relay_output` | | ## `script` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `id` | `delay_off_script` | | | `mode` | `restart` | | | `then` | | | ### `then` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `delay` | `!lambda "return id(off_delay_seconds) * 1000;"` | | | `switch.turn_off` | `relay_output` | | ## `display` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `platform` | `ssd1306_i2c` | | | `model` | `"SH1106 128x64"` | | | `address` | `0x3C` | | | `id` | `main_display` | | | `update_interval` | `0.1s` | | | `lambda` | `|-` | | | `it.printf(0, 0, id(font_main), "Current` | `%.2f A", id(ct_current).state);` | | | `it.printf(0, 11, id(font_main), "Threshold` | `%.1f A", id(current_threshold));` | | | `it.printf(0, 22, id(font_main), "Delay Set` | `%d s", id(off_delay_seconds));` | | | `it.printf(0, 33, id(font_main), "Relay State` | `%s", id(relay_output).state ? "ON" : "OFF");` | | | `it.printf(0, 44, id(font_main), "Delay` | `%d s", id(display_timeout_timer));` | | ## `interval` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `interval` | `1s` | | | `then` | | | ### `then` **Member variables:** | Key | Value | Information | | :-: | :-: | :-- | | `lambda` | `|-` | | | `if (id(display_timeout_timer) > 0) {` | | | | `id(display_timeout_timer)--;` | | | | `if (id(display_timeout_timer) == 0) {` | | | | `id(main_display).turn_off();` | | | | `}` | | | | `}` | | | --- Generated by [yamldoc](https://github.com/chris1221/yaml.doc) v0.4.1 on 2026-09-07