added WireViz and ESPHome

This commit is contained in:
Ton
2026-09-09 08:09:30 +02:00
parent 046313eff5
commit b556e6a073
36 changed files with 7825 additions and 0 deletions

View File

@@ -0,0 +1,195 @@
#' ==============================================================================
#' 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)
#' ==============================================================================
esphome:
name: afzuiginglageweg
esp32:
board: esp32-c3-devkitm-1
variant: esp32c3
preferences:
flash_write_interval: 1min
logger:
api:
ota:
- platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
manual_ip:
static_ip: 192.168.1.173
gateway: 192.168.1.1
subnet: 255.255.255.0
dns1: 192.168.1.1
ap:
ssid: "CT-Relay Fallback AP"
password: !secret ap_password
i2c:
sda: GPIO6
scl: GPIO5
scan: true
font:
- file: "gfonts://Roboto"
id: font_main
size: 10
globals:
- 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:
- platform: gpio
pin:
number: GPIO2
mode: INPUT_PULLUP
id: encoder_1_button
name: "Display Toggle Button"
on_press:
then:
- lambda: |-
id(display_timeout_timer) = 10;
id(main_display).turn_on();
- id: load_detected
platform: template
name: "Load Detected"
lambda: |-
return id(ct_current).state >= id(current_threshold);
on_state:
then:
- if:
condition:
binary_sensor.is_on: load_detected
then:
- switch.turn_on: relay_output
- script.stop: delay_off_script
else:
- script.execute: delay_off_script
sensor:
# 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:
- calibrate_linear:
- 0.01 -> 0
- 1 -> 1
- 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:
then:
- 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();
# Rotary Encoder 2: Delay Control
- platform: rotary_encoder
name: "Delay Setting"
pin_a: GPIO3
pin_b: GPIO7
id: encoder_delay
on_value:
then:
- 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:
- platform: gpio
pin: GPIO8
inverted: true
name: "Relay Output"
id: relay_output
script:
- id: delay_off_script
mode: restart
then:
- delay: !lambda "return id(off_delay_seconds) * 1000;"
- switch.turn_off: relay_output
display:
- 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:
- interval: 1s
then:
- lambda: |-
if (id(display_timeout_timer) > 0) {
id(display_timeout_timer)--;
if (id(display_timeout_timer) == 0) {
id(main_display).turn_off();
}
}

371
esphome/x.html Normal file
View File

@@ -0,0 +1,371 @@
# 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

371
esphome/x.md Normal file
View File

@@ -0,0 +1,371 @@
# 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

View File

@@ -0,0 +1,13 @@
Id Description Qty Unit Designators
1 Cable, 1 wires 0 m
2 Cable, 2 wires 0 m
3 Cable, 3 wires 0 m
4 Cable, 5 wires 0 m
5 Connector, 15 pins 1 ESP32Module
6 Connector, 2 pins 1 Buzzer
7 Connector, 4 pins 1 Relay5v
8 Connector, 5 pins 2 400Strip, CurrentSensor
9 Connector, 6 pins 2 PowerStrip, Relay230v
10 Connector, 8 pins 1 I2CStrip
11 Connector, Schuko, female, 3 pins 3 230UitAfzuiger, 230UitCirkelzaag, 230UitExtra
12 Connector, male, 5 pins 1 400Entree
1 Id Description Qty Unit Designators
2 1 Cable, 1 wires 0 m
3 2 Cable, 2 wires 0 m
4 3 Cable, 3 wires 0 m
5 4 Cable, 5 wires 0 m
6 5 Connector, 15 pins 1 ESP32Module
7 6 Connector, 2 pins 1 Buzzer
8 7 Connector, 4 pins 1 Relay5v
9 8 Connector, 5 pins 2 400Strip, CurrentSensor
10 9 Connector, 6 pins 2 PowerStrip, Relay230v
11 10 Connector, 8 pins 1 I2CStrip
12 11 Connector, Schuko, female, 3 pins 3 230UitAfzuiger, 230UitCirkelzaag, 230UitExtra
13 12 Connector, male, 5 pins 1 400Entree

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 721 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 856 KiB

View File

@@ -0,0 +1,294 @@
templates: # defining templates to be used later on
- &molex_f
type: Molex KK 254
subtype: female
- &con_i2c
pinlabels: [GND,+3.3v,SCL,SDA]
- &wire_i2c
category: bundle
gauge: 0.14 mm2
colors: [BK, RD, YE, GN]
connectors:
ESP32Module:
pins: [fase, nul, aarde,GPIO0, GPIO1,GPIO2,GPIO3,GPIO4,GPIO5,GPIO6,GPIO7,GPIO8,+3.3v,GND,+5v]
#style: simple
#image:
# src: images/ac 90-250v esp32 relay.png
# width: 75
CurrentSensor:
pins: [GND, +3.3v, signal, CurrentIn, CurrentOut]
image:
src: images/currentsensor.png
width: 75
Display:
<<: *con_i2c
#pins: [+3.3v, GND, SDA, SCL]
#pincolors: [RD, BK, WH, YE]
Encoder:
pins: [+3.3v, GND, A, B, Switch]
Buzzer:
pins: [GND, Signal]
400Entree:
pinlabels: [R,S,T,N,E]
pincolors: [GY, BN, BK, BU,GNYE]
subtype: male
image:
src: images/stekker400v.jpeg
width: 75
#image:
# src: images/stekker400v.jpeg
# width: 75
400Strip:
pins: [ R, S, T, N, E]
230Uit: &230
pinlabels: [fase,nul, aarde]
pincolors: [BN,BU,GNYE]
type: Schuko
subtype: female
image:
src: images/schukkoStekker230v.jpeg
width: 75
Relay5v:
pins: [GND, Signal, in 230v F, out 230v F]
Relay230v:
pins: [N, F, in 230v N, in 230v F, out 230v N, out 230v F]
#apparaat
230UitAfzuiger:
<<: *230
image:
src: images/schukkoChassis230v.jpeg
width: 75
230UitCirkelzaag:
<<: *230
image:
src: images/schukkoChassis230v.jpeg
width: 75
230UitExtra:
<<: *230
image:
src: images/schukkoChassis230v.jpeg
width: 75
230Sense:
<<: *230
image:
src: images/schukkoChassis230v.jpeg
width: 75
PowerStrip:
pins: [+3.3vIn,GNDIn,+5vIn,
+3.3v, GND, +5v]
I2CStrip:
pins: [ SDAin, SCLin, +3.3vin, GNDin, SDA, SCL, +3.3v, GND]
cables:
400v:
wirelabels: [R, S, T, N, E]
colors: [GY, BN, BK, BU,GNYE]
color_code: DIN
show_name: false
show_wirecount: false
show_wirenumbers: false
230v: &230v
#length: 0.71111
# gauge: 1.5
wirelabels: [fase,nul, aarde]
colors: [BN,BU, GNYE]
show_name: false
show_wirecount: false
show_wirenumbers: false
230vAfzuiger:
<<: *230v
230vExtra:
<<: *230v
230vCirkelzaag:
wirelabels: [nul, aarde]
colors: [BU, GNYE]
show_name: false
show_wirecount: false
show_wirenumbers: false
230vCurrentSensor:
wirelabels: [fase]
colors: [BN]
show_name: false
show_wirecount: false
show_wirenumbers: false
dcPower:
#length: 0.71111
# gauge: 1.5
wirelabels: [DC+, GND]
colors: [RD, BK]
show_name: false
show_wirecount: false
show_wirenumbers: false
dcPowerStrip:
#length: 0.71111
# gauge: 1.5
wirelabels: [+3.3v, GND, +5v]
colors: [OG, BK, RD]
show_name: false
show_wirecount: false
show_wirenumbers: false
Sensor:
#length: 0.71111
# gauge: 1.5
wirelabels: [GN,RD,BU,YE]
shield: true
colors: [GN,RD,BU,YE]
show_name: false
show_wirecount: false
show_wirenumbers: false
singleWire: &singleW
#wirelabels: [DC+, GND]
#colors: [RD, BK]
show_name: false
show_wirecount: false
show_wirenumbers: false
wF:
<<: *singleW
wirelabels: [F]
colors: [BN]
wN:
<<: *singleW
wirelabels: [N]
colors: [BU]
wE:
<<: *singleW
wirelabels: [E]
colors: [YE]
connections:
-
- 400Entree: [R,S,T,N,E]
- 400v: [R,S,T,N,E]
- 400Strip: [R,S,T,N,E]
-
- 400Strip: [T]
- 230vCurrentSensor.A1: [fase]
- CurrentSensor: [CurrentIn]
-
- CurrentSensor: [CurrentOut]
- 230vCurrentSensor.A2: [fase]
- 230UitCirkelzaag: [fase]
-
- 400Strip: [N,E]
- 230vCirkelzaag: [nul, aarde]
- 230UitCirkelzaag: [nul,aarde]
-
- 400Strip: [R,N,E]
- 230vExtra: [fase, nul, aarde]
- 230UitExtra: [fase,nul,aarde]
# -
# - 230Entree: [fase, nul]
# - 230v: [fase, nul]
# - ESP32Module: [fase, nul]
# -
# - 230Entree: [fase, nul, aarde]
# - 230v: [fase, nul, aarde]
-
- ESP32Module: [+3.3v, +5v, GND]
- <->
- PowerStrip: [+3.3vIn, +5vIn, GNDIn]
-
- CurrentSensor: [signal]
- ->
- ESP32Module: [GPIO4]
-
- CurrentSensor: [+3.3v, GND]
- dcPowerStrip: [+3.3v, GND]
- PowerStrip: [+3.3v, GNDIn]
-
- ESP32Module: [GPIO8]
- <->
- Relay5v: [Signal]
-
- Relay5v: [GND]
- <->
- PowerStrip: [GND]
-
- PowerStrip: [GND]
- <-->
- Buzzer: [GND]
-
- 400Strip: [S]
- <->
- Relay5v: [in 230v F]
-
- Relay5v: [out 230v F]
- wF: [F]
- Relay230v: [F]
-
- 400Strip: [N]
- wN: [N]
- Relay230v: [N]
-
- 400Strip: [N, R]
- <->
- Relay230v: [in 230v N, in 230v F]
-
- Relay230v: [out 230v F, out 230v N]
- 230vAfzuiger: [fase, nul]
- 230UitAfzuiger: [fase, nul]
-
- 400Strip: [E]
- 230vAfzuiger: [aarde]
- 230UitAfzuiger: [aarde]
-
- ESP32Module: [GPIO6, GPIO5]
- <->
- I2CStrip: [SDAin,SCLin]
-
- PowerStrip: [+3.3v, GND]
- <->
- I2CStrip: [+3.3vin, GNDin]
# -
# - I2CStrip: [SDA, SCL, +3.3v, GND]
# - <->
# - Display: [SDA, SCL, +3.3v, GND]
tweak:
override:
# graph:
# ranksep: "0.5" # Reduce the horizontal spacing (default 2)
wireTweak: &wireTweak
shape: invis # Hide the surrounding frame
fontsize: "12" # Reduce the space needed for text
fontcolor: white # Same as background to hide the text
230v:
<<: *wireTweak
dcPower:
<<: *wireTweak
Sensor:
<<: *wireTweak
metadata: &metadata
title: Cirkelzaag tafel afzuiging, 3 fase Lageweg 3
pn: PSU
authors:
Created:
name: Ton
date: 2026-09-01
Approved:
name: Ton
date: 2026-09-01
revisions:
A:
name: Ton
date: 2026-09-01
changelog: aanpassingen
template:
name: din-6771
sheetsize: A3

View File

@@ -0,0 +1,15 @@
Id Description Qty Unit Designators
1 Cable, 3 wires 0 m
2 Cable, 8 wires 0 m 6poligW
3 Connector, 10 pins 1 HX711
4 Connector, 19 pins 1 ESP32Module
5 Connector, 2 pins 3 Buzzer, resistor1, resistor2
6 Connector, 3 pins 5 230Entree, LevelSwitches, loadcell1, loadcell2, loadcell3
7 Connector, 4 pins 2 Display, sht3xd
8 Connector, 6 pins 1 PowerStrip
9 Connector, 8 pins 1 I2CStrip
10 Connector, female, 6 pins 1 6poligKabel
11 Connector, male, 6 pins 1 6poligChassis
12 Wire, 0.75 mm², BK 0.3 m 50KgLoadCellW
13 Wire, 0.75 mm², RD 0.3 m 50KgLoadCellW
14 Wire, 0.75 mm², YE 0.3 m 50KgLoadCellW
1 Id Description Qty Unit Designators
2 1 Cable, 3 wires 0 m
3 2 Cable, 8 wires 0 m 6poligW
4 3 Connector, 10 pins 1 HX711
5 4 Connector, 19 pins 1 ESP32Module
6 5 Connector, 2 pins 3 Buzzer, resistor1, resistor2
7 6 Connector, 3 pins 5 230Entree, LevelSwitches, loadcell1, loadcell2, loadcell3
8 7 Connector, 4 pins 2 Display, sht3xd
9 8 Connector, 6 pins 1 PowerStrip
10 9 Connector, 8 pins 1 I2CStrip
11 10 Connector, female, 6 pins 1 6poligKabel
12 11 Connector, male, 6 pins 1 6poligChassis
13 12 Wire, 0.75 mm², BK 0.3 m 50KgLoadCellW
14 13 Wire, 0.75 mm², RD 0.3 m 50KgLoadCellW
15 14 Wire, 0.75 mm², YE 0.3 m 50KgLoadCellW

1674
wireviz/dompelpomp.html Normal file

File diff suppressed because one or more lines are too long

BIN
wireviz/dompelpomp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 KiB

1283
wireviz/dompelpomp.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@@ -0,0 +1,123 @@
/* Compatability shim for jQuery and underscores.js.
*
* Copyright Sphinx contributors
* Released under the two clause BSD licence
*/
/**
* small helper function to urldecode strings
*
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
*/
jQuery.urldecode = function(x) {
if (!x) {
return x
}
return decodeURIComponent(x.replace(/\+/g, ' '));
};
/**
* small helper function to urlencode strings
*/
jQuery.urlencode = encodeURIComponent;
/**
* This function returns the parsed url parameters of the
* current request. Multiple values per key are supported,
* it will always return arrays of strings for the value parts.
*/
jQuery.getQueryParameters = function(s) {
if (typeof s === 'undefined')
s = document.location.search;
var parts = s.substr(s.indexOf('?') + 1).split('&');
var result = {};
for (var i = 0; i < parts.length; i++) {
var tmp = parts[i].split('=', 2);
var key = jQuery.urldecode(tmp[0]);
var value = jQuery.urldecode(tmp[1]);
if (key in result)
result[key].push(value);
else
result[key] = [value];
}
return result;
};
/**
* highlight a given string on a jquery object by wrapping it in
* span elements with the given class name.
*/
jQuery.fn.highlightText = function(text, className) {
function highlight(node, addItems) {
if (node.nodeType === 3) {
var val = node.nodeValue;
var pos = val.toLowerCase().indexOf(text);
if (pos >= 0 &&
!jQuery(node.parentNode).hasClass(className) &&
!jQuery(node.parentNode).hasClass("nohighlight")) {
var span;
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
if (isInSVG) {
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
} else {
span = document.createElement("span");
span.className = className;
}
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
document.createTextNode(val.substr(pos + text.length)),
node.nextSibling));
node.nodeValue = val.substr(0, pos);
if (isInSVG) {
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
var bbox = node.parentElement.getBBox();
rect.x.baseVal.value = bbox.x;
rect.y.baseVal.value = bbox.y;
rect.width.baseVal.value = bbox.width;
rect.height.baseVal.value = bbox.height;
rect.setAttribute('class', className);
addItems.push({
"parent": node.parentNode,
"target": rect});
}
}
}
else if (!jQuery(node).is("button, select, textarea")) {
jQuery.each(node.childNodes, function() {
highlight(this, addItems);
});
}
}
var addItems = [];
var result = this.each(function() {
highlight(this, addItems);
});
for (var i = 0; i < addItems.length; ++i) {
jQuery(addItems[i].parent).before(addItems[i].target);
}
return result;
};
/*
* backward compatibility for jQuery.browser
* This will be supported until firefox bug is fixed.
*/
if (!jQuery.browser) {
jQuery.uaMatch = function(ua) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
/(msie) ([\w.]+)/.exec(ua) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
jQuery.browser = {};
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 471 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

View File

@@ -0,0 +1,156 @@
/*
* doctools.js
* ~~~~~~~~~~~
*
* Base JavaScript utilities for all Sphinx HTML documentation.
*
* :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
"use strict";
const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([
"TEXTAREA",
"INPUT",
"SELECT",
"BUTTON",
]);
const _ready = (callback) => {
if (document.readyState !== "loading") {
callback();
} else {
document.addEventListener("DOMContentLoaded", callback);
}
};
/**
* Small JavaScript module for the documentation.
*/
const Documentation = {
init: () => {
Documentation.initDomainIndexTable();
Documentation.initOnKeyListeners();
},
/**
* i18n support
*/
TRANSLATIONS: {},
PLURAL_EXPR: (n) => (n === 1 ? 0 : 1),
LOCALE: "unknown",
// gettext and ngettext don't access this so that the functions
// can safely bound to a different name (_ = Documentation.gettext)
gettext: (string) => {
const translated = Documentation.TRANSLATIONS[string];
switch (typeof translated) {
case "undefined":
return string; // no translation
case "string":
return translated; // translation exists
default:
return translated[0]; // (singular, plural) translation tuple exists
}
},
ngettext: (singular, plural, n) => {
const translated = Documentation.TRANSLATIONS[singular];
if (typeof translated !== "undefined")
return translated[Documentation.PLURAL_EXPR(n)];
return n === 1 ? singular : plural;
},
addTranslations: (catalog) => {
Object.assign(Documentation.TRANSLATIONS, catalog.messages);
Documentation.PLURAL_EXPR = new Function(
"n",
`return (${catalog.plural_expr})`
);
Documentation.LOCALE = catalog.locale;
},
/**
* helper function to focus on search bar
*/
focusSearchBar: () => {
document.querySelectorAll("input[name=q]")[0]?.focus();
},
/**
* Initialise the domain index toggle buttons
*/
initDomainIndexTable: () => {
const toggler = (el) => {
const idNumber = el.id.substr(7);
const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`);
if (el.src.substr(-9) === "minus.png") {
el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`;
toggledRows.forEach((el) => (el.style.display = "none"));
} else {
el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`;
toggledRows.forEach((el) => (el.style.display = ""));
}
};
const togglerElements = document.querySelectorAll("img.toggler");
togglerElements.forEach((el) =>
el.addEventListener("click", (event) => toggler(event.currentTarget))
);
togglerElements.forEach((el) => (el.style.display = ""));
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler);
},
initOnKeyListeners: () => {
// only install a listener if it is really needed
if (
!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS &&
!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
)
return;
document.addEventListener("keydown", (event) => {
// bail for input elements
if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
// bail with special keys
if (event.altKey || event.ctrlKey || event.metaKey) return;
if (!event.shiftKey) {
switch (event.key) {
case "ArrowLeft":
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
const prevLink = document.querySelector('link[rel="prev"]');
if (prevLink && prevLink.href) {
window.location.href = prevLink.href;
event.preventDefault();
}
break;
case "ArrowRight":
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
const nextLink = document.querySelector('link[rel="next"]');
if (nextLink && nextLink.href) {
window.location.href = nextLink.href;
event.preventDefault();
}
break;
}
}
// some keyboard layouts may need Shift to get /
switch (event.key) {
case "/":
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break;
Documentation.focusSearchBar();
event.preventDefault();
}
});
},
};
// quick alias for translations
const _ = Documentation.gettext;
_ready(Documentation.init);

View File

@@ -0,0 +1,13 @@
const DOCUMENTATION_OPTIONS = {
VERSION: '',
LANGUAGE: 'en',
COLLAPSE_INDEX: false,
BUILDER: 'html',
FILE_SUFFIX: '.html',
LINK_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt',
NAVIGATION_WITH_KEYS: false,
SHOW_SEARCH_SUMMARY: true,
ENABLE_SEARCH_SHORTCUTS: true,
};

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,75 @@
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; }
.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #9C6500 } /* Comment.Preproc */
.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #E40000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #008400 } /* Generic.Inserted */
.highlight .go { color: #717171 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #687822 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #767600 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #666666 } /* Literal.Number.Bin */
.highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #A45A77 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0000FF } /* Name.Function.Magic */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,154 @@
/* Highlighting utilities for Sphinx HTML documentation. */
"use strict";
const SPHINX_HIGHLIGHT_ENABLED = true
/**
* highlight a given string on a node by wrapping it in
* span elements with the given class name.
*/
const _highlight = (node, addItems, text, className) => {
if (node.nodeType === Node.TEXT_NODE) {
const val = node.nodeValue;
const parent = node.parentNode;
const pos = val.toLowerCase().indexOf(text);
if (
pos >= 0 &&
!parent.classList.contains(className) &&
!parent.classList.contains("nohighlight")
) {
let span;
const closestNode = parent.closest("body, svg, foreignObject");
const isInSVG = closestNode && closestNode.matches("svg");
if (isInSVG) {
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
} else {
span = document.createElement("span");
span.classList.add(className);
}
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
const rest = document.createTextNode(val.substr(pos + text.length));
parent.insertBefore(
span,
parent.insertBefore(
rest,
node.nextSibling
)
);
node.nodeValue = val.substr(0, pos);
/* There may be more occurrences of search term in this node. So call this
* function recursively on the remaining fragment.
*/
_highlight(rest, addItems, text, className);
if (isInSVG) {
const rect = document.createElementNS(
"http://www.w3.org/2000/svg",
"rect"
);
const bbox = parent.getBBox();
rect.x.baseVal.value = bbox.x;
rect.y.baseVal.value = bbox.y;
rect.width.baseVal.value = bbox.width;
rect.height.baseVal.value = bbox.height;
rect.setAttribute("class", className);
addItems.push({ parent: parent, target: rect });
}
}
} else if (node.matches && !node.matches("button, select, textarea")) {
node.childNodes.forEach((el) => _highlight(el, addItems, text, className));
}
};
const _highlightText = (thisNode, text, className) => {
let addItems = [];
_highlight(thisNode, addItems, text, className);
addItems.forEach((obj) =>
obj.parent.insertAdjacentElement("beforebegin", obj.target)
);
};
/**
* Small JavaScript module for the documentation.
*/
const SphinxHighlight = {
/**
* highlight the search words provided in localstorage in the text
*/
highlightSearchWords: () => {
if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight
// get and clear terms from localstorage
const url = new URL(window.location);
const highlight =
localStorage.getItem("sphinx_highlight_terms")
|| url.searchParams.get("highlight")
|| "";
localStorage.removeItem("sphinx_highlight_terms")
url.searchParams.delete("highlight");
window.history.replaceState({}, "", url);
// get individual terms from highlight string
const terms = highlight.toLowerCase().split(/\s+/).filter(x => x);
if (terms.length === 0) return; // nothing to do
// There should never be more than one element matching "div.body"
const divBody = document.querySelectorAll("div.body");
const body = divBody.length ? divBody[0] : document.querySelector("body");
window.setTimeout(() => {
terms.forEach((term) => _highlightText(body, term, "highlighted"));
}, 10);
const searchBox = document.getElementById("searchbox");
if (searchBox === null) return;
searchBox.appendChild(
document
.createRange()
.createContextualFragment(
'<p class="highlight-link">' +
'<a href="javascript:SphinxHighlight.hideSearchWords()">' +
_("Hide Search Matches") +
"</a></p>"
)
);
},
/**
* helper function to hide the search marks again
*/
hideSearchWords: () => {
document
.querySelectorAll("#searchbox .highlight-link")
.forEach((el) => el.remove());
document
.querySelectorAll("span.highlighted")
.forEach((el) => el.classList.remove("highlighted"));
localStorage.removeItem("sphinx_highlight_terms")
},
initEscapeListener: () => {
// only install a listener if it is really needed
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return;
document.addEventListener("keydown", (event) => {
// bail for input elements
if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
// bail with special keys
if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return;
if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) {
SphinxHighlight.hideSearchWords();
event.preventDefault();
}
});
},
};
_ready(() => {
/* Do not call highlightSearchWords() when we are on the search page.
* It will highlight words from the *previous* search query.
*/
if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords();
SphinxHighlight.initEscapeListener();
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

35
wireviz/t.yml Normal file
View File

@@ -0,0 +1,35 @@
connectors:
SOURCE:
type: Power Source
pinlabels: [L1, N]
CT1:
type: Current Transformer
pincount: 4
pinlabels: [IN_L1, OUT_L1, S1, S2] # IN/OUT is de doorgeluste hoofddraad, S1/S2 zijn de meetuitgangen
LOAD:
type: Main Load
pinlabels: [L1, N]
cables:
C1:
wirecount: 2
colors: [BN, BU]
C2:
wirecount: 2
colors: [BN, BU]
connections:
# Draad van de bron NAAR de stroomtransformator
-
- SOURCE: [L1, N]
- C1: [1, 2]
- CT1: [IN_L1, N] # N kan eventueel direct door naar LOAD lopen
# Draad VANAF de stroomtransformator naar de belasting
-
- CT1: [OUT_L1, N]
- C2: [1, 2]
- LOAD: [L1, N]

5
wireviz/t2.bom.tsv Normal file
View File

@@ -0,0 +1,5 @@
Id Description Qty Unit Designators
1 Cable, 2 wires 0 m C1
2 Connector, Belasting, 2 pins 1 LOAD
3 Connector, Current Transformer (SCT-013), 4 pins 1 CT1
4 Connector, Voeding, 2 pins 1 SOURCE
1 Id Description Qty Unit Designators
2 1 Cable, 2 wires 0 m C1
3 2 Connector, Belasting, 2 pins 1 LOAD
4 3 Connector, Current Transformer (SCT-013), 4 pins 1 CT1
5 4 Connector, Voeding, 2 pins 1 SOURCE

231
wireviz/t2.html Normal file
View File

@@ -0,0 +1,231 @@
<!DOCTYPE html>
<html lang="en"><head>
<meta charset="UTF-8">
<meta name="generator" content="WireViz 0.4.2-dev - https://github.com/wireviz/WireViz">
<title>t2</title>
<style>
#bom table, th, td {
border: 1px solid black;
border-collapse: collapse;
}
#bom th, td {
padding: 4px;
text-align: left;
}
.bom_col_qty {
text-align: right;
}
</style>
</head><body style="font-family:arial;background-color:#ffffff">
<h1>t2</h1>
<h2>Diagram</h2>
<div id="description">
<!-- %description% -->
</div>
<div id="diagram">
<!-- XML and DOCTYPE declarations from SVG file removed -->
<!-- Generated by graphviz version 2.43.0 (0)
-->
<!-- Title: %3 Pages: 1 -->
<svg width="909pt" height="262pt"
viewBox="0.00 0.00 908.70 262.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 258)">
<title>%3</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-258 904.7,-258 904.7,4 -4,4"/>
<!-- SOURCE -->
<g id="node1" class="node">
<title>SOURCE</title>
<polygon fill="#ffffff" stroke="black" points="96,-161 0,-161 0,-69 96,-69 96,-161"/>
<polygon fill="none" stroke="black" points="0,-138 0,-161 96,-161 96,-138 0,-138"/>
<text text-anchor="start" x="18.5" y="-145.8" font-family="arial" font-size="14.00">SOURCE</text>
<polygon fill="none" stroke="black" points="0,-115 0,-138 57,-138 57,-115 0,-115"/>
<text text-anchor="start" x="4" y="-122.8" font-family="arial" font-size="14.00">Voeding</text>
<polygon fill="none" stroke="black" points="57,-115 57,-138 96,-138 96,-115 57,-115"/>
<text text-anchor="start" x="61" y="-122.8" font-family="arial" font-size="14.00">2&#45;pin</text>
<polygon fill="none" stroke="black" points="0,-92 0,-115 52,-115 52,-92 0,-92"/>
<text text-anchor="start" x="18" y="-99.8" font-family="arial" font-size="14.00">L1</text>
<polygon fill="none" stroke="black" points="52,-92 52,-115 96,-115 96,-92 52,-92"/>
<text text-anchor="start" x="70" y="-99.8" font-family="arial" font-size="14.00">1</text>
<polygon fill="none" stroke="black" points="0,-69 0,-92 52,-92 52,-69 0,-69"/>
<text text-anchor="start" x="21" y="-76.8" font-family="arial" font-size="14.00">N</text>
<polygon fill="none" stroke="black" points="52,-69 52,-92 96,-92 96,-69 52,-69"/>
<text text-anchor="start" x="70" y="-76.8" font-family="arial" font-size="14.00">2</text>
</g>
<!-- C1 -->
<g id="node4" class="node">
<title>C1</title>
<polygon fill="#ffffff" stroke="black" points="502,-191 240,-191 240,-57 502,-57 502,-191"/>
<polygon fill="none" stroke="black" points="240,-168 240,-191 502,-191 502,-168 240,-168"/>
<text text-anchor="start" x="362" y="-175.8" font-family="arial" font-size="14.00">C1</text>
<polygon fill="none" stroke="black" points="240,-145 240,-168 502,-168 502,-145 240,-145"/>
<text text-anchor="start" x="363.5" y="-152.8" font-family="arial" font-size="14.00">2x</text>
<text text-anchor="start" x="284.5" y="-131.8" font-family="arial" font-size="14.00"> </text>
<text text-anchor="start" x="242" y="-112.8" font-family="arial" font-size="14.00">SOURCE:1:L1</text>
<text text-anchor="start" x="335" y="-112.8" font-family="arial" font-size="14.00"> &#160;&#160;&#160;&#160;1:BN:Fase &#160;&#160;&#160;</text>
<text text-anchor="start" x="441" y="-112.8" font-family="arial" font-size="14.00">CT1:1:IN</text>
<polygon fill="#000000" stroke="transparent" points="240,-105 240,-107 502,-107 502,-105 240,-105"/>
<polygon fill="#895956" stroke="transparent" points="240,-103 240,-105 502,-105 502,-103 240,-103"/>
<polygon fill="#000000" stroke="transparent" points="240,-101 240,-103 502,-103 502,-101 240,-101"/>
<text text-anchor="start" x="244.5" y="-87.8" font-family="arial" font-size="14.00">SOURCE:2:N</text>
<text text-anchor="start" x="340" y="-87.8" font-family="arial" font-size="14.00"> &#160;&#160;&#160;&#160;2:BU:Nul &#160;&#160;&#160;</text>
<text text-anchor="start" x="437" y="-87.8" font-family="arial" font-size="14.00">LOAD:2:N</text>
<polygon fill="#000000" stroke="transparent" points="240,-80 240,-82 502,-82 502,-80 240,-80"/>
<polygon fill="#0066ff" stroke="transparent" points="240,-78 240,-80 502,-80 502,-78 240,-78"/>
<polygon fill="#000000" stroke="transparent" points="240,-76 240,-78 502,-78 502,-76 240,-76"/>
<text text-anchor="start" x="284.5" y="-62.8" font-family="arial" font-size="14.00"> </text>
</g>
<!-- SOURCE&#45;&#45;C1 -->
<g id="edge1" class="edge">
<title>SOURCE:e&#45;&#45;C1:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M96,-101C160.13,-101 176.12,-102 240,-102"/>
<path fill="none" stroke="#895956" stroke-width="2" d="M96,-103C160,-103 176,-104 240,-104"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M96,-105C159.88,-105 175.87,-106 240,-106"/>
</g>
<!-- SOURCE&#45;&#45;C1 -->
<g id="edge5" class="edge">
<title>SOURCE:e&#45;&#45;C1:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M96,-78C159.88,-78 175.87,-77 240,-77"/>
<path fill="none" stroke="#0066ff" stroke-width="2" d="M96,-80C160,-80 176,-79 240,-79"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M96,-82C160.13,-82 176.12,-81 240,-81"/>
</g>
<!-- CT1 -->
<g id="node2" class="node">
<title>CT1</title>
<polygon fill="#ffffff" stroke="black" points="883,-254 646,-254 646,-116 883,-116 883,-254"/>
<polygon fill="none" stroke="black" points="646.5,-231 646.5,-254 883.5,-254 883.5,-231 646.5,-231"/>
<text text-anchor="start" x="752" y="-238.8" font-family="arial" font-size="14.00">CT1</text>
<polygon fill="none" stroke="black" points="646.5,-208 646.5,-231 844.5,-231 844.5,-208 646.5,-208"/>
<text text-anchor="start" x="650.5" y="-215.8" font-family="arial" font-size="14.00">Current Transformer (SCT&#45;013)</text>
<polygon fill="none" stroke="black" points="844.5,-208 844.5,-231 883.5,-231 883.5,-208 844.5,-208"/>
<text text-anchor="start" x="848.5" y="-215.8" font-family="arial" font-size="14.00">4&#45;pin</text>
<polygon fill="none" stroke="black" points="646.5,-185 646.5,-208 718.5,-208 718.5,-185 646.5,-185"/>
<text text-anchor="start" x="678.5" y="-192.8" font-family="arial" font-size="14.00">1</text>
<polygon fill="none" stroke="black" points="718.5,-185 718.5,-208 812.5,-208 812.5,-185 718.5,-185"/>
<text text-anchor="start" x="758.5" y="-192.8" font-family="arial" font-size="14.00">IN</text>
<polygon fill="none" stroke="black" points="812.5,-185 812.5,-208 883.5,-208 883.5,-185 812.5,-185"/>
<text text-anchor="start" x="844" y="-192.8" font-family="arial" font-size="14.00">1</text>
<polygon fill="none" stroke="black" points="646.5,-162 646.5,-185 718.5,-185 718.5,-162 646.5,-162"/>
<text text-anchor="start" x="678.5" y="-169.8" font-family="arial" font-size="14.00">2</text>
<polygon fill="none" stroke="black" points="718.5,-162 718.5,-185 812.5,-185 812.5,-162 718.5,-162"/>
<text text-anchor="start" x="750.5" y="-169.8" font-family="arial" font-size="14.00">OUT</text>
<polygon fill="none" stroke="black" points="812.5,-162 812.5,-185 883.5,-185 883.5,-162 812.5,-162"/>
<text text-anchor="start" x="844" y="-169.8" font-family="arial" font-size="14.00">2</text>
<polygon fill="none" stroke="black" points="646.5,-139 646.5,-162 718.5,-162 718.5,-139 646.5,-139"/>
<text text-anchor="start" x="678.5" y="-146.8" font-family="arial" font-size="14.00">3</text>
<polygon fill="none" stroke="black" points="718.5,-139 718.5,-162 812.5,-162 812.5,-139 718.5,-139"/>
<text text-anchor="start" x="757" y="-146.8" font-family="arial" font-size="14.00">S1</text>
<polygon fill="none" stroke="black" points="812.5,-139 812.5,-162 883.5,-162 883.5,-139 812.5,-139"/>
<text text-anchor="start" x="844" y="-146.8" font-family="arial" font-size="14.00">3</text>
<polygon fill="none" stroke="black" points="646.5,-116 646.5,-139 718.5,-139 718.5,-116 646.5,-116"/>
<text text-anchor="start" x="678.5" y="-123.8" font-family="arial" font-size="14.00">4</text>
<polygon fill="none" stroke="black" points="718.5,-116 718.5,-139 812.5,-139 812.5,-116 718.5,-116"/>
<text text-anchor="start" x="757" y="-123.8" font-family="arial" font-size="14.00">S2</text>
<polygon fill="none" stroke="black" points="812.5,-116 812.5,-139 883.5,-139 883.5,-116 812.5,-116"/>
<text text-anchor="start" x="844" y="-123.8" font-family="arial" font-size="14.00">4</text>
</g>
<!-- CT1&#45;&#45;C1 -->
<g id="edge3" class="edge">
<title>CT1:e&#45;&#45;C1:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M884.5,-171C907.89,-173.44 899.13,-134.69 882.06,-117.39 865.27,-98.97 672.1,-109.78 645.64,-104.97 578.13,-91.72 566.59,-68.23 501.69,-58.98 385.53,-40.49 321.8,23.04 241.4,-58.43 227.02,-72.04 220.06,-104.42 239,-102"/>
<path fill="none" stroke="#895956" stroke-width="2" d="M884.5,-173C909.84,-173 901.08,-134.25 883.5,-116 865.16,-96.97 671.99,-107.78 646,-103 579.92,-90.84 568.38,-67.35 502,-57 386.94,-39.07 323.21,24.46 240,-57 225.07,-71.62 218.11,-104 239,-104"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M884.5,-175C911.79,-172.56 903.03,-133.8 884.94,-114.61 865.05,-94.97 671.88,-105.79 646.36,-101.03 581.72,-89.96 570.18,-66.46 502.31,-55.02 388.36,-37.65 324.62,25.87 238.6,-55.57 223.11,-71.2 216.15,-103.58 239,-106"/>
</g>
<!-- LOAD -->
<g id="node3" class="node">
<title>LOAD</title>
<polygon fill="#ffffff" stroke="black" points="816,-92 713,-92 713,0 816,0 816,-92"/>
<polygon fill="none" stroke="black" points="713.5,-69 713.5,-92 816.5,-92 816.5,-69 713.5,-69"/>
<text text-anchor="start" x="746" y="-76.8" font-family="arial" font-size="14.00">LOAD</text>
<polygon fill="none" stroke="black" points="713.5,-46 713.5,-69 777.5,-69 777.5,-46 713.5,-46"/>
<text text-anchor="start" x="717.5" y="-53.8" font-family="arial" font-size="14.00">Belasting</text>
<polygon fill="none" stroke="black" points="777.5,-46 777.5,-69 816.5,-69 816.5,-46 777.5,-46"/>
<text text-anchor="start" x="781.5" y="-53.8" font-family="arial" font-size="14.00">2&#45;pin</text>
<polygon fill="none" stroke="black" points="713.5,-23 713.5,-46 761.5,-46 761.5,-23 713.5,-23"/>
<text text-anchor="start" x="733.5" y="-30.8" font-family="arial" font-size="14.00">1</text>
<polygon fill="none" stroke="black" points="761.5,-23 761.5,-46 816.5,-46 816.5,-23 761.5,-23"/>
<text text-anchor="start" x="781" y="-30.8" font-family="arial" font-size="14.00">L1</text>
<polygon fill="none" stroke="black" points="713.5,0 713.5,-23 761.5,-23 761.5,0 713.5,0"/>
<text text-anchor="start" x="733.5" y="-7.8" font-family="arial" font-size="14.00">2</text>
<polygon fill="none" stroke="black" points="761.5,0 761.5,-23 816.5,-23 816.5,0 761.5,0"/>
<text text-anchor="start" x="784" y="-7.8" font-family="arial" font-size="14.00">N</text>
</g>
<!-- C1&#45;&#45;CT1 -->
<g id="edge2" class="edge">
<title>C1:e&#45;&#45;CT1:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M502,-102C580.18,-104.18 571.81,-197.18 646,-195"/>
<path fill="none" stroke="#895956" stroke-width="2" d="M502,-104C578.19,-104 569.81,-197 646,-197"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M502,-106C576.19,-103.82 567.82,-196.82 646,-199"/>
</g>
<!-- C1&#45;&#45;LOAD -->
<g id="edge4" class="edge">
<title>C1:e&#45;&#45;LOAD:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M502,-102C598.63,-103.63 611.94,-33.63 712.5,-32"/>
<path fill="none" stroke="#895956" stroke-width="2" d="M502,-104C600.59,-104 613.91,-34 712.5,-34"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M502,-106C602.56,-104.37 615.87,-34.37 712.5,-36"/>
</g>
<!-- C1&#45;&#45;LOAD -->
<g id="edge6" class="edge">
<title>C1:e&#45;&#45;LOAD:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M502,-77C598.36,-78.6 612.22,-10.6 712.5,-9"/>
<path fill="none" stroke="#0066ff" stroke-width="2" d="M502,-79C600.32,-79 614.18,-11 712.5,-11"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M502,-81C602.28,-79.4 616.14,-11.4 712.5,-13"/>
</g>
</g>
</svg>
</div>
<div id="notes">
<!-- %notes% -->
</div>
<h2>Bill of Materials</h2>
<div id="bom">
<table class="bom">
<tr>
<th class="bom_col_id">Id</th>
<th class="bom_col_description">Description</th>
<th class="bom_col_qty">Qty</th>
<th class="bom_col_unit">Unit</th>
<th class="bom_col_designators">Designators</th>
</tr>
<tr>
<td class="bom_col_id">1</td>
<td class="bom_col_description">Cable, 2 wires</td>
<td class="bom_col_qty">0</td>
<td class="bom_col_unit">m</td>
<td class="bom_col_designators">C1</td>
</tr>
<tr>
<td class="bom_col_id">2</td>
<td class="bom_col_description">Connector, Belasting, 2 pins</td>
<td class="bom_col_qty">1</td>
<td class="bom_col_unit"></td>
<td class="bom_col_designators">LOAD</td>
</tr>
<tr>
<td class="bom_col_id">3</td>
<td class="bom_col_description">Connector, Current Transformer (SCT-013), 4 pins</td>
<td class="bom_col_qty">1</td>
<td class="bom_col_unit"></td>
<td class="bom_col_designators">CT1</td>
</tr>
<tr>
<td class="bom_col_id">4</td>
<td class="bom_col_description">Connector, Voeding, 2 pins</td>
<td class="bom_col_qty">1</td>
<td class="bom_col_unit"></td>
<td class="bom_col_designators">SOURCE</td>
</tr>
</table>
</div>
</body></html>

BIN
wireviz/t2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

151
wireviz/t2.svg Normal file
View File

@@ -0,0 +1,151 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.43.0 (0)
-->
<!-- Title: %3 Pages: 1 -->
<svg width="909pt" height="262pt"
viewBox="0.00 0.00 908.70 262.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 258)">
<title>%3</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-258 904.7,-258 904.7,4 -4,4"/>
<!-- SOURCE -->
<g id="node1" class="node">
<title>SOURCE</title>
<polygon fill="#ffffff" stroke="black" points="96,-161 0,-161 0,-69 96,-69 96,-161"/>
<polygon fill="none" stroke="black" points="0,-138 0,-161 96,-161 96,-138 0,-138"/>
<text text-anchor="start" x="18.5" y="-145.8" font-family="arial" font-size="14.00">SOURCE</text>
<polygon fill="none" stroke="black" points="0,-115 0,-138 57,-138 57,-115 0,-115"/>
<text text-anchor="start" x="4" y="-122.8" font-family="arial" font-size="14.00">Voeding</text>
<polygon fill="none" stroke="black" points="57,-115 57,-138 96,-138 96,-115 57,-115"/>
<text text-anchor="start" x="61" y="-122.8" font-family="arial" font-size="14.00">2&#45;pin</text>
<polygon fill="none" stroke="black" points="0,-92 0,-115 52,-115 52,-92 0,-92"/>
<text text-anchor="start" x="18" y="-99.8" font-family="arial" font-size="14.00">L1</text>
<polygon fill="none" stroke="black" points="52,-92 52,-115 96,-115 96,-92 52,-92"/>
<text text-anchor="start" x="70" y="-99.8" font-family="arial" font-size="14.00">1</text>
<polygon fill="none" stroke="black" points="0,-69 0,-92 52,-92 52,-69 0,-69"/>
<text text-anchor="start" x="21" y="-76.8" font-family="arial" font-size="14.00">N</text>
<polygon fill="none" stroke="black" points="52,-69 52,-92 96,-92 96,-69 52,-69"/>
<text text-anchor="start" x="70" y="-76.8" font-family="arial" font-size="14.00">2</text>
</g>
<!-- C1 -->
<g id="node4" class="node">
<title>C1</title>
<polygon fill="#ffffff" stroke="black" points="502,-191 240,-191 240,-57 502,-57 502,-191"/>
<polygon fill="none" stroke="black" points="240,-168 240,-191 502,-191 502,-168 240,-168"/>
<text text-anchor="start" x="362" y="-175.8" font-family="arial" font-size="14.00">C1</text>
<polygon fill="none" stroke="black" points="240,-145 240,-168 502,-168 502,-145 240,-145"/>
<text text-anchor="start" x="363.5" y="-152.8" font-family="arial" font-size="14.00">2x</text>
<text text-anchor="start" x="284.5" y="-131.8" font-family="arial" font-size="14.00"> </text>
<text text-anchor="start" x="242" y="-112.8" font-family="arial" font-size="14.00">SOURCE:1:L1</text>
<text text-anchor="start" x="335" y="-112.8" font-family="arial" font-size="14.00"> &#160;&#160;&#160;&#160;1:BN:Fase &#160;&#160;&#160;</text>
<text text-anchor="start" x="441" y="-112.8" font-family="arial" font-size="14.00">CT1:1:IN</text>
<polygon fill="#000000" stroke="transparent" points="240,-105 240,-107 502,-107 502,-105 240,-105"/>
<polygon fill="#895956" stroke="transparent" points="240,-103 240,-105 502,-105 502,-103 240,-103"/>
<polygon fill="#000000" stroke="transparent" points="240,-101 240,-103 502,-103 502,-101 240,-101"/>
<text text-anchor="start" x="244.5" y="-87.8" font-family="arial" font-size="14.00">SOURCE:2:N</text>
<text text-anchor="start" x="340" y="-87.8" font-family="arial" font-size="14.00"> &#160;&#160;&#160;&#160;2:BU:Nul &#160;&#160;&#160;</text>
<text text-anchor="start" x="437" y="-87.8" font-family="arial" font-size="14.00">LOAD:2:N</text>
<polygon fill="#000000" stroke="transparent" points="240,-80 240,-82 502,-82 502,-80 240,-80"/>
<polygon fill="#0066ff" stroke="transparent" points="240,-78 240,-80 502,-80 502,-78 240,-78"/>
<polygon fill="#000000" stroke="transparent" points="240,-76 240,-78 502,-78 502,-76 240,-76"/>
<text text-anchor="start" x="284.5" y="-62.8" font-family="arial" font-size="14.00"> </text>
</g>
<!-- SOURCE&#45;&#45;C1 -->
<g id="edge1" class="edge">
<title>SOURCE:e&#45;&#45;C1:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M96,-101C160.13,-101 176.12,-102 240,-102"/>
<path fill="none" stroke="#895956" stroke-width="2" d="M96,-103C160,-103 176,-104 240,-104"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M96,-105C159.88,-105 175.87,-106 240,-106"/>
</g>
<!-- SOURCE&#45;&#45;C1 -->
<g id="edge5" class="edge">
<title>SOURCE:e&#45;&#45;C1:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M96,-78C159.88,-78 175.87,-77 240,-77"/>
<path fill="none" stroke="#0066ff" stroke-width="2" d="M96,-80C160,-80 176,-79 240,-79"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M96,-82C160.13,-82 176.12,-81 240,-81"/>
</g>
<!-- CT1 -->
<g id="node2" class="node">
<title>CT1</title>
<polygon fill="#ffffff" stroke="black" points="883,-254 646,-254 646,-116 883,-116 883,-254"/>
<polygon fill="none" stroke="black" points="646.5,-231 646.5,-254 883.5,-254 883.5,-231 646.5,-231"/>
<text text-anchor="start" x="752" y="-238.8" font-family="arial" font-size="14.00">CT1</text>
<polygon fill="none" stroke="black" points="646.5,-208 646.5,-231 844.5,-231 844.5,-208 646.5,-208"/>
<text text-anchor="start" x="650.5" y="-215.8" font-family="arial" font-size="14.00">Current Transformer (SCT&#45;013)</text>
<polygon fill="none" stroke="black" points="844.5,-208 844.5,-231 883.5,-231 883.5,-208 844.5,-208"/>
<text text-anchor="start" x="848.5" y="-215.8" font-family="arial" font-size="14.00">4&#45;pin</text>
<polygon fill="none" stroke="black" points="646.5,-185 646.5,-208 718.5,-208 718.5,-185 646.5,-185"/>
<text text-anchor="start" x="678.5" y="-192.8" font-family="arial" font-size="14.00">1</text>
<polygon fill="none" stroke="black" points="718.5,-185 718.5,-208 812.5,-208 812.5,-185 718.5,-185"/>
<text text-anchor="start" x="758.5" y="-192.8" font-family="arial" font-size="14.00">IN</text>
<polygon fill="none" stroke="black" points="812.5,-185 812.5,-208 883.5,-208 883.5,-185 812.5,-185"/>
<text text-anchor="start" x="844" y="-192.8" font-family="arial" font-size="14.00">1</text>
<polygon fill="none" stroke="black" points="646.5,-162 646.5,-185 718.5,-185 718.5,-162 646.5,-162"/>
<text text-anchor="start" x="678.5" y="-169.8" font-family="arial" font-size="14.00">2</text>
<polygon fill="none" stroke="black" points="718.5,-162 718.5,-185 812.5,-185 812.5,-162 718.5,-162"/>
<text text-anchor="start" x="750.5" y="-169.8" font-family="arial" font-size="14.00">OUT</text>
<polygon fill="none" stroke="black" points="812.5,-162 812.5,-185 883.5,-185 883.5,-162 812.5,-162"/>
<text text-anchor="start" x="844" y="-169.8" font-family="arial" font-size="14.00">2</text>
<polygon fill="none" stroke="black" points="646.5,-139 646.5,-162 718.5,-162 718.5,-139 646.5,-139"/>
<text text-anchor="start" x="678.5" y="-146.8" font-family="arial" font-size="14.00">3</text>
<polygon fill="none" stroke="black" points="718.5,-139 718.5,-162 812.5,-162 812.5,-139 718.5,-139"/>
<text text-anchor="start" x="757" y="-146.8" font-family="arial" font-size="14.00">S1</text>
<polygon fill="none" stroke="black" points="812.5,-139 812.5,-162 883.5,-162 883.5,-139 812.5,-139"/>
<text text-anchor="start" x="844" y="-146.8" font-family="arial" font-size="14.00">3</text>
<polygon fill="none" stroke="black" points="646.5,-116 646.5,-139 718.5,-139 718.5,-116 646.5,-116"/>
<text text-anchor="start" x="678.5" y="-123.8" font-family="arial" font-size="14.00">4</text>
<polygon fill="none" stroke="black" points="718.5,-116 718.5,-139 812.5,-139 812.5,-116 718.5,-116"/>
<text text-anchor="start" x="757" y="-123.8" font-family="arial" font-size="14.00">S2</text>
<polygon fill="none" stroke="black" points="812.5,-116 812.5,-139 883.5,-139 883.5,-116 812.5,-116"/>
<text text-anchor="start" x="844" y="-123.8" font-family="arial" font-size="14.00">4</text>
</g>
<!-- CT1&#45;&#45;C1 -->
<g id="edge3" class="edge">
<title>CT1:e&#45;&#45;C1:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M884.5,-171C907.89,-173.44 899.13,-134.69 882.06,-117.39 865.27,-98.97 672.1,-109.78 645.64,-104.97 578.13,-91.72 566.59,-68.23 501.69,-58.98 385.53,-40.49 321.8,23.04 241.4,-58.43 227.02,-72.04 220.06,-104.42 239,-102"/>
<path fill="none" stroke="#895956" stroke-width="2" d="M884.5,-173C909.84,-173 901.08,-134.25 883.5,-116 865.16,-96.97 671.99,-107.78 646,-103 579.92,-90.84 568.38,-67.35 502,-57 386.94,-39.07 323.21,24.46 240,-57 225.07,-71.62 218.11,-104 239,-104"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M884.5,-175C911.79,-172.56 903.03,-133.8 884.94,-114.61 865.05,-94.97 671.88,-105.79 646.36,-101.03 581.72,-89.96 570.18,-66.46 502.31,-55.02 388.36,-37.65 324.62,25.87 238.6,-55.57 223.11,-71.2 216.15,-103.58 239,-106"/>
</g>
<!-- LOAD -->
<g id="node3" class="node">
<title>LOAD</title>
<polygon fill="#ffffff" stroke="black" points="816,-92 713,-92 713,0 816,0 816,-92"/>
<polygon fill="none" stroke="black" points="713.5,-69 713.5,-92 816.5,-92 816.5,-69 713.5,-69"/>
<text text-anchor="start" x="746" y="-76.8" font-family="arial" font-size="14.00">LOAD</text>
<polygon fill="none" stroke="black" points="713.5,-46 713.5,-69 777.5,-69 777.5,-46 713.5,-46"/>
<text text-anchor="start" x="717.5" y="-53.8" font-family="arial" font-size="14.00">Belasting</text>
<polygon fill="none" stroke="black" points="777.5,-46 777.5,-69 816.5,-69 816.5,-46 777.5,-46"/>
<text text-anchor="start" x="781.5" y="-53.8" font-family="arial" font-size="14.00">2&#45;pin</text>
<polygon fill="none" stroke="black" points="713.5,-23 713.5,-46 761.5,-46 761.5,-23 713.5,-23"/>
<text text-anchor="start" x="733.5" y="-30.8" font-family="arial" font-size="14.00">1</text>
<polygon fill="none" stroke="black" points="761.5,-23 761.5,-46 816.5,-46 816.5,-23 761.5,-23"/>
<text text-anchor="start" x="781" y="-30.8" font-family="arial" font-size="14.00">L1</text>
<polygon fill="none" stroke="black" points="713.5,0 713.5,-23 761.5,-23 761.5,0 713.5,0"/>
<text text-anchor="start" x="733.5" y="-7.8" font-family="arial" font-size="14.00">2</text>
<polygon fill="none" stroke="black" points="761.5,0 761.5,-23 816.5,-23 816.5,0 761.5,0"/>
<text text-anchor="start" x="784" y="-7.8" font-family="arial" font-size="14.00">N</text>
</g>
<!-- C1&#45;&#45;CT1 -->
<g id="edge2" class="edge">
<title>C1:e&#45;&#45;CT1:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M502,-102C580.18,-104.18 571.81,-197.18 646,-195"/>
<path fill="none" stroke="#895956" stroke-width="2" d="M502,-104C578.19,-104 569.81,-197 646,-197"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M502,-106C576.19,-103.82 567.82,-196.82 646,-199"/>
</g>
<!-- C1&#45;&#45;LOAD -->
<g id="edge4" class="edge">
<title>C1:e&#45;&#45;LOAD:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M502,-102C598.63,-103.63 611.94,-33.63 712.5,-32"/>
<path fill="none" stroke="#895956" stroke-width="2" d="M502,-104C600.59,-104 613.91,-34 712.5,-34"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M502,-106C602.56,-104.37 615.87,-34.37 712.5,-36"/>
</g>
<!-- C1&#45;&#45;LOAD -->
<g id="edge6" class="edge">
<title>C1:e&#45;&#45;LOAD:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M502,-77C598.36,-78.6 612.22,-10.6 712.5,-9"/>
<path fill="none" stroke="#0066ff" stroke-width="2" d="M502,-79C600.32,-79 614.18,-11 712.5,-11"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M502,-81C602.28,-79.4 616.14,-11.4 712.5,-13"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

40
wireviz/t2.yml Normal file
View File

@@ -0,0 +1,40 @@
connectors:
SOURCE:
type: Voeding
pinlabels: [L1, N]
# De CT heeft 2 pinnen voor de doorgeluste hoofddraad, en 2 voor de meting
CT1:
type: Current Transformer (SCT-013)
pincount: 4
pinlabels: [IN, OUT, S1, S2]
LOAD:
type: Belasting
pinlabels: [L1, N]
cables:
C1:
wirecount: 2
colors: [BN, BU]
wirelabels: [Fase, Nul]
connections:
# L1 gaat de CT in (pin IN)
-
- SOURCE: [L1]
- C1: [1]
- CT1: [IN]
# L1 komt er aan de andere kant weer uit (pin OUT) richting de Load
# WireViz heeft hier een tweede kabeldefinitie voor nodig om de ketting heel te houden:
-
- CT1: [OUT]
- C1: [1] # Of gebruik een tweede kabel C2
- LOAD: [L1]
# De Nul-draad loopt gewoon buiten de CT om direct naar de Load
-
- SOURCE: [N]
- C1: [2]
- LOAD: [N]