IPEM SIX 1.00.03

This commit is contained in:
Dave Williams | DitroniX | G8PUO
2026-06-21 02:49:21 +01:00
parent 5e0f13a6a1
commit b6b3e5d996
@@ -48,12 +48,21 @@ esp32:
substitutions: substitutions:
author: "DitroniX - Dave Williams" author: "DitroniX - Dave Williams"
firmware_version: "1.00.02" firmware_version: "1.00.03"
release_date: "2026-06-20" release_date: "2026-06-20"
board_name: "IPEM SIX" board_name: "IPEM SIX"
board_mcu: "ESP32-C5" board_mcu: "ESP32-C5"
board_rev: "1.2606.102" board_rev: "1.2606.102"
# ======================== Current Input Names ===========================
bank_a_1_name: "CTA-1"
bank_a_2_name: "CTA-2"
bank_a_3_name: "CTA-3"
bank_b_1_name: "CTB-1"
bank_b_2_name: "CTB-2"
bank_b_3_name: "CTB-3"
# ======================== MAINS CONFIG =========================== # ======================== MAINS CONFIG ===========================
line_frequency: "50Hz" # Change to "60Hz" for US/Canada/etc. line_frequency: "50Hz" # Change to "60Hz" for US/Canada/etc.
line_voltage: "230V" # For status thresholds and comments line_voltage: "230V" # For status thresholds and comments
@@ -76,7 +85,7 @@ substitutions:
# =============================================================== # ===============================================================
# ========================= MISC ================================ # ========================= MISC ================================
tmp102_name: "Board Temperature" tmp102_name: "Temperature"
tmp102_update_interval: 30s tmp102_update_interval: 30s
# =============================================================== # ===============================================================
@@ -86,7 +95,7 @@ substitutions:
api: api:
encryption: encryption:
key: "xxxx=" key: "xxxx"
ota: ota:
- platform: esphome - platform: esphome
@@ -153,25 +162,19 @@ globals:
type: float type: float
initial_value: "0.54" initial_value: "0.54"
################################## LIGHT ##################################
light:
# ===================================================== # =====================================================
# HEARTBEAT # HEARTBEAT
# ===================================================== # =====================================================
light:
- platform: esp32_rmt_led_strip - platform: esp32_rmt_led_strip
id: heartbeat_led id: heartbeat_led
# name: "Heartbeat LED" # name: "Heartbeat LED"
pin: GPIO27 pin: GPIO27
num_leds: 1 num_leds: 1
chipset: WS2812 chipset: WS2812
rgb_order: GRB rgb_order: GRB
effects: effects:
- addressable_lambda: - addressable_lambda:
name: "Green Heartbeat" name: "Green Heartbeat"
@@ -201,17 +204,14 @@ light:
step = 0; step = 0;
################################## NUMBER ################################## ################################## NUMBER ##################################
number:
# ===================================================== # =====================================================
# USER ADJUSTMENTS # USER ADJUSTMENTS
# ===================================================== # =====================================================
number:
- platform: template - platform: template
name: "CT Activity Threshold"
name: "IPEM SIX CT Activity Threshold"
id: ct_activity_threshold id: ct_activity_threshold
min_value: 0.100 min_value: 0.100
max_value: 5.00 max_value: 5.00
step: 0.100 step: 0.100
@@ -221,10 +221,8 @@ number:
initial_value: 0.100 initial_value: 0.100
- platform: template - platform: template
name: "High Load Threshold"
name: "IPEM SIX High Load Threshold"
id: high_load_threshold id: high_load_threshold
min_value: 1 min_value: 1
max_value: 100 max_value: 100
step: 1 step: 1
@@ -233,6 +231,9 @@ number:
restore_value: true restore_value: true
initial_value: 10 initial_value: 10
################################## TEXT ##################################
text:
################################## TEXT SENSOR ################################## ################################## TEXT SENSOR ##################################
text_sensor: text_sensor:
@@ -307,7 +308,7 @@ text_sensor:
return {"${gain_pga_baseline}"}; return {"${gain_pga_baseline}"};
- platform: template - platform: template
name: "Phases" name: "Current Phase Voltage"
icon: mdi:current-ac icon: mdi:current-ac
entity_category: diagnostic entity_category: diagnostic
update_interval: 60s update_interval: 60s
@@ -336,77 +337,33 @@ text_sensor:
lambda: |- lambda: |-
return {"${current_type}"}; return {"${current_type}"};
# =====================================================
# IPEM SIX CHANNEL METADATA
# =====================================================
- platform: template - platform: template
name: "Bank A Channel 1 Description" name: "Product"
id: bank_a_1_description
icon: mdi:information icon: mdi:information
lambda: |- entity_category: diagnostic
return {"Kitchen"}; update_interval: 60s
- platform: template
name: "Bank A Channel 2 Description"
id: bank_a_2_description
icon: mdi:information
lambda: |-
return {"EV Charger"};
- platform: template
name: "Bank A Channel 3 Description"
id: bank_a_3_description
icon: mdi:information
lambda: |-
return {"Solar Inverter"};
- platform: template
name: "Bank B Channel 1 Description"
id: bank_b_1_description
icon: mdi:information
lambda: |-
return {"Heat Pump"};
- platform: template
name: "Bank B Channel 2 Description"
id: bank_b_2_description
icon: mdi:information
lambda: |-
return {"Workshop"};
- platform: template
name: "Bank B Channel 3 Description"
id: bank_b_3_description
icon: mdi:information
lambda: |-
return {"Ring"};
- platform: template
name: "IPEM SIX Product"
icon: mdi:information
lambda: |- lambda: |-
return {"Professional Energy Monitor"}; return {"Professional Energy Monitor"};
- platform: template - platform: template
name: "IPEM SIX Hardware" name: "Hardware"
entity_category: diagnostic
icon: mdi:information icon: mdi:information
update_interval: 60s
lambda: |- lambda: |-
return {"ESP32-C5 Dual ATM90E32"}; return {"ESP32-C5 Dual ATM90E32"};
- platform: template - platform: template
name: "IPEM SIX Configuration" name: "Configuration"
icon: mdi:information icon: mdi:information-outline
entity_category: diagnostic
update_interval: 60s
lambda: |- lambda: |-
return {"6 Channel Dual Bank CT Meter"}; return {"6 Channel Dual Bank CT Meter"};
- platform: template - platform: template
name: "IPEM SIX Status" name: "Mains Voltage Test Status"
icon: mdi:heart-pulse icon: mdi:heart-pulse
lambda: |- lambda: |-
@@ -428,7 +385,7 @@ text_sensor:
update_interval: 15s update_interval: 15s
- platform: template - platform: template
name: "IPEM SIX WiFi Signal Quality" name: "WiFi Signal Quality"
id: wifi_signal_quality id: wifi_signal_quality
entity_category: diagnostic entity_category: diagnostic
update_interval: 30s update_interval: 30s
@@ -468,7 +425,7 @@ text_sensor:
# High > 253V # High > 253V
- platform: template - platform: template
name: "IPEM SIX Voltage Status" name: "Mains Voltage Status"
icon: mdi:flash icon: mdi:flash
update_interval: 10s update_interval: 10s
@@ -513,7 +470,7 @@ text_sensor:
# High >51 Hz # High >51 Hz
- platform: template - platform: template
name: "IPEM SIX Frequency Status" name: "Mains Frequency Status"
icon: mdi:waves-arrow-right icon: mdi:waves-arrow-right
update_interval: 10s update_interval: 10s
@@ -531,7 +488,8 @@ text_sensor:
return {"Normal"}; return {"Normal"};
- platform: template - platform: template
name: "IPEM SIX Meter Type" name: "Meter Type"
entity_category: diagnostic
lambda: |- lambda: |-
return {"IPEM SIX - Dual ATM90E32 / 6 Channel"}; return {"IPEM SIX - Dual ATM90E32 / 6 Channel"};
@@ -541,84 +499,84 @@ text_sensor:
# ===================================================== # =====================================================
- platform: uptime - platform: uptime
name: "IPEM SIX Uptime" name: "Uptime"
# ===================================================== # =====================================================
# CT CHANNEL ACTIVITY STATUS # CT CHANNEL ACTIVITY STATUS
# ===================================================== # =====================================================
# ====================== BANK A STATUS ======================
- platform: template - platform: template
name: "Bank A 1 Status" id: bank_a_1_status
name: "${bank_a_1_name} Status"
icon: mdi:flash icon: mdi:flash
update_interval: 10s
lambda: |- lambda: |-
float current = id(bank_a_1_current).state;
if(id(bank_a_1_current).state >= id(high_load_threshold).state) if (current >= id(high_load_threshold).state) return {"High Load"};
return {"High Load"}; if (current >= id(ct_activity_threshold).state) return {"Active"};
if(id(bank_a_1_current).state >= id(ct_activity_threshold).state)
return {"Active"};
return {"Idle"}; return {"Idle"};
- platform: template - platform: template
name: "Bank A 2 Status" id: bank_a_2_status
name: "${bank_a_2_name} Status"
icon: mdi:flash icon: mdi:flash
update_interval: 10s
lambda: |- lambda: |-
float current = id(bank_a_2_current).state;
if(id(bank_a_2_current).state >= id(ct_activity_threshold).state) if (current >= id(high_load_threshold).state) return {"High Load"};
if (current >= id(ct_activity_threshold).state) return {"Active"};
return {"Active"};
return {"Idle"}; return {"Idle"};
- platform: template - platform: template
name: "Bank A 3 Status" id: bank_a_3_status
name: "${bank_a_3_name} Status"
icon: mdi:flash icon: mdi:flash
update_interval: 10s
lambda: |- lambda: |-
float current = id(bank_a_3_current).state;
if (current >= id(high_load_threshold).state) return {"High Load"};
if (current >= id(ct_activity_threshold).state) return {"Active"};
return {"Idle"};
if(id(bank_a_3_current).state >= id(ct_activity_threshold).state) # ====================== BANK B STATUS ======================
- platform: template
return {"Active"}; id: bank_b_1_status
name: "${bank_b_1_name} Status"
icon: mdi:flash
update_interval: 10s
lambda: |-
float current = id(bank_b_1_current).state;
if (current >= id(high_load_threshold).state) return {"High Load"};
if (current >= id(ct_activity_threshold).state) return {"Active"};
return {"Idle"}; return {"Idle"};
- platform: template - platform: template
name: "Bank B 1 Status" id: bank_b_2_status
name: "${bank_b_2_name} Status"
icon: mdi:flash icon: mdi:flash
update_interval: 10s
lambda: |- lambda: |-
float current = id(bank_b_2_current).state;
if(id(bank_b_1_current).state >= id(ct_activity_threshold).state) if (current >= id(high_load_threshold).state) return {"High Load"};
if (current >= id(ct_activity_threshold).state) return {"Active"};
return {"Active"};
return {"Idle"}; return {"Idle"};
- platform: template - platform: template
name: "Bank B 2 Status" id: bank_b_3_status
name: "${bank_b_3_name} Status"
icon: mdi:flash icon: mdi:flash
update_interval: 10s
lambda: |- lambda: |-
float current = id(bank_b_3_current).state;
if(id(bank_b_2_current).state >= id(ct_activity_threshold).state) if (current >= id(high_load_threshold).state) return {"High Load"};
if (current >= id(ct_activity_threshold).state) return {"Active"};
return {"Active"};
return {"Idle"};
- platform: template
name: "Bank B 3 Status"
icon: mdi:flash
lambda: |-
if(id(bank_b_3_current).state >= id(ct_activity_threshold).state)
return {"Active"};
return {"Idle"}; return {"Idle"};
- platform: template - platform: template
@@ -630,7 +588,11 @@ text_sensor:
if (t < 0) return {"Very Cold"}; if (t < 0) return {"Very Cold"};
if (t < 15) return {"Cold"}; if (t < 15) return {"Cold"};
if (t < 30) return {"Normal"}; if (t < 30) return {"Normal"};
if (t < 30) return {"Normal"};
if (t < 36) return {"Quiet Warm"};
if (t < 45) return {"Warm"}; if (t < 45) return {"Warm"};
if (t < 55) return {"Hot"};
if (t < 65) return {"Very Hot"};
return {"Hot"}; return {"Hot"};
update_interval: 30s update_interval: 30s
@@ -650,6 +612,7 @@ sensor:
accuracy_decimals: 2 accuracy_decimals: 2
device_class: "temperature" device_class: "temperature"
state_class: "measurement" state_class: "measurement"
entity_category: diagnostic
unit_of_measurement: "°C" unit_of_measurement: "°C"
icon: "mdi:thermometer" icon: "mdi:thermometer"
filters: filters:
@@ -657,20 +620,19 @@ sensor:
window_size: 5 window_size: 5
send_every: 3 send_every: 3
- platform: tmp102 - platform: template
name: "${tmp102_name} °F" name: "${tmp102_name} °F"
id: tmp102_temp_f id: tmp102_temp_f
i2c_id: i2c_bus # device_class: "temperature"
address: 0x4A
update_interval: ${tmp102_update_interval}
accuracy_decimals: 1
device_class: "temperature"
state_class: "measurement" state_class: "measurement"
entity_category: diagnostic
unit_of_measurement: "°F" unit_of_measurement: "°F"
update_interval: ${tmp102_update_interval}
accuracy_decimals: 2
icon: "mdi:thermometer" icon: "mdi:thermometer"
lambda: |-
return (id(tmp102_temp_c).state * 9.0 / 5.0) + 32.0;
filters: filters:
- lambda: |-
return x * 1.8 + 32.0;
- sliding_window_moving_average: - sliding_window_moving_average:
window_size: 5 window_size: 5
send_every: 3 send_every: 3
@@ -690,33 +652,33 @@ sensor:
phase_a: phase_a:
voltage: voltage:
name: "IPEM SIX Mains Voltage" name: "Mains Voltage"
id: mains_voltage id: mains_voltage
current: current:
name: "Bank A 1 Current" name: "${bank_a_1_name} Current"
id: bank_a_1_current id: bank_a_1_current
power: power:
name: "Bank A 1 Power" name: "${bank_a_1_name} Power"
id: bank_a_1_power id: bank_a_1_power
reactive_power: reactive_power:
name: "Bank A 1 Reactive Power" name: "${bank_a_1_name} Reactive Power"
power_factor: power_factor:
name: "Bank A 1 Power Factor" name: "${bank_a_1_name} Power Factor"
gain_voltage: ${gain_voltage_baseline} gain_voltage: ${gain_voltage_baseline}
gain_ct: ${gain_current_baseline} gain_ct: ${gain_current_baseline}
phase_b: phase_b:
current: current:
name: "Bank A 2 Current" name: "${bank_a_2_name} Current"
id: bank_a_2_current id: bank_a_2_current
power: power:
name: "Bank A 2 Power" name: "${bank_a_2_name} Power"
id: bank_a_2_power id: bank_a_2_power
gain_voltage: ${gain_voltage_baseline} gain_voltage: ${gain_voltage_baseline}
@@ -724,18 +686,18 @@ sensor:
phase_c: phase_c:
current: current:
name: "Bank A 3 Current" name: "${bank_a_3_name} Current"
id: bank_a_3_current id: bank_a_3_current
power: power:
name: "Bank A 3 Power" name: "${bank_a_3_name} Power"
id: bank_a_3_power id: bank_a_3_power
gain_voltage: ${gain_voltage_baseline} gain_voltage: ${gain_voltage_baseline}
gain_ct: ${gain_current_baseline} gain_ct: ${gain_current_baseline}
frequency: frequency:
name: "IPEM SIX Frequency" name: "Mains Frequency"
id: mains_frequency id: mains_frequency
chip_temperature: chip_temperature:
@@ -758,11 +720,11 @@ sensor:
phase_a: phase_a:
current: current:
name: "Bank B 1 Current" name: "${bank_b_1_name} Current"
id: bank_b_1_current id: bank_b_1_current
power: power:
name: "Bank B 1 Power" name: "${bank_b_1_name} Power"
id: bank_b_1_power id: bank_b_1_power
gain_voltage: ${gain_voltage_baseline} gain_voltage: ${gain_voltage_baseline}
@@ -770,11 +732,11 @@ sensor:
phase_b: phase_b:
current: current:
name: "Bank B 2 Current" name: "${bank_b_2_name} Current"
id: bank_b_2_current id: bank_b_2_current
power: power:
name: "Bank B 2 Power" name: "${bank_b_2_name} Power"
id: bank_b_2_power id: bank_b_2_power
gain_voltage: ${gain_voltage_baseline} gain_voltage: ${gain_voltage_baseline}
@@ -782,11 +744,11 @@ sensor:
phase_c: phase_c:
current: current:
name: "Bank B 3 Current" name: "${bank_b_3_name} Current"
id: bank_b_3_current id: bank_b_3_current
power: power:
name: "Bank B 3 Power" name: "${bank_b_3_name} Power"
id: bank_b_3_power id: bank_b_3_power
gain_voltage: ${gain_voltage_baseline} gain_voltage: ${gain_voltage_baseline}
@@ -867,7 +829,7 @@ sensor:
state_class: total_increasing state_class: total_increasing
- platform: template - platform: template
name: "Bank A 1 Import Power" name: "${bank_a_1_name} Import Power"
id: bank_a_1_import_power id: bank_a_1_import_power
unit_of_measurement: W unit_of_measurement: W
device_class: power device_class: power
@@ -880,7 +842,7 @@ sensor:
update_interval: 10s update_interval: 10s
- platform: template - platform: template
name: "Bank A 2 Import Power" name: "${bank_a_2_name} Import Power"
id: bank_a_2_import_power id: bank_a_2_import_power
unit_of_measurement: W unit_of_measurement: W
device_class: power device_class: power
@@ -893,7 +855,7 @@ sensor:
update_interval: 10s update_interval: 10s
- platform: template - platform: template
name: "Bank A 3 Import Power" name: "${bank_a_3_name} Import Power"
id: bank_a_3_import_power id: bank_a_3_import_power
unit_of_measurement: W unit_of_measurement: W
device_class: power device_class: power
@@ -906,7 +868,7 @@ sensor:
update_interval: 10s update_interval: 10s
- platform: integration - platform: integration
name: "Bank A 1 Energy" name: "${bank_a_1_name} Energy"
sensor: bank_a_1_import_power sensor: bank_a_1_import_power
time_unit: h time_unit: h
integration_method: trapezoid integration_method: trapezoid
@@ -915,7 +877,7 @@ sensor:
state_class: total_increasing state_class: total_increasing
- platform: integration - platform: integration
name: "Bank A 2 Energy" name: "${bank_a_2_name} Energy"
sensor: bank_a_2_import_power sensor: bank_a_2_import_power
time_unit: h time_unit: h
integration_method: trapezoid integration_method: trapezoid
@@ -924,7 +886,7 @@ sensor:
state_class: total_increasing state_class: total_increasing
- platform: integration - platform: integration
name: "Bank A 3 Energy" name: "${bank_a_3_name} Energy"
sensor: bank_a_3_import_power sensor: bank_a_3_import_power
time_unit: h time_unit: h
integration_method: trapezoid integration_method: trapezoid
@@ -933,7 +895,7 @@ sensor:
state_class: total_increasing state_class: total_increasing
- platform: integration - platform: integration
name: "Bank B 1 Energy" name: "${bank_b_1_name} Energy"
sensor: bank_b_1_import_power sensor: bank_b_1_import_power
time_unit: h time_unit: h
integration_method: trapezoid integration_method: trapezoid
@@ -942,7 +904,7 @@ sensor:
state_class: total_increasing state_class: total_increasing
- platform: integration - platform: integration
name: "Bank B 2 Energy" name: "${bank_b_2_name} Energy"
sensor: bank_b_2_import_power sensor: bank_b_2_import_power
time_unit: h time_unit: h
integration_method: trapezoid integration_method: trapezoid
@@ -951,7 +913,7 @@ sensor:
state_class: total_increasing state_class: total_increasing
- platform: integration - platform: integration
name: "Bank B 3 Energy" name: "${bank_b_3_name} Energy"
sensor: bank_b_3_import_power sensor: bank_b_3_import_power
time_unit: h time_unit: h
integration_method: trapezoid integration_method: trapezoid
@@ -973,7 +935,7 @@ sensor:
state_class: total_increasing state_class: total_increasing
- platform: template - platform: template
name: "Bank B 1 Import Power" name: "${bank_b_1_name} Import Power"
id: bank_b_1_import_power id: bank_b_1_import_power
unit_of_measurement: W unit_of_measurement: W
device_class: power device_class: power
@@ -986,7 +948,7 @@ sensor:
update_interval: 10s update_interval: 10s
- platform: template - platform: template
name: "Bank B 2 Import Power" name: "${bank_b_2_name} Import Power"
id: bank_b_2_import_power id: bank_b_2_import_power
unit_of_measurement: W unit_of_measurement: W
device_class: power device_class: power
@@ -999,7 +961,7 @@ sensor:
update_interval: 10s update_interval: 10s
- platform: template - platform: template
name: "Bank B 3 Import Power" name: "${bank_b_3_name} Import Power"
id: bank_b_3_import_power id: bank_b_3_import_power
unit_of_measurement: W unit_of_measurement: W
device_class: power device_class: power
@@ -1083,7 +1045,7 @@ sensor:
# TOTAL POWER # TOTAL POWER
# ===================================================== # =====================================================
- platform: template - platform: template
name: "IPEM SIX Total Power" name: "Total Power"
id: total_power id: total_power
unit_of_measurement: W unit_of_measurement: W
device_class: power device_class: power
@@ -1107,7 +1069,7 @@ sensor:
# ===================================================== # =====================================================
- platform: template - platform: template
name: "IPEM SIX Net Power" name: "Net Power"
id: ipem_net_power id: ipem_net_power
unit_of_measurement: W unit_of_measurement: W
device_class: power device_class: power
@@ -1125,7 +1087,7 @@ sensor:
# ===================================================== # =====================================================
- platform: template - platform: template
name: "IPEM SIX Import Power" name: "Import Power"
id: import_power id: import_power
unit_of_measurement: W unit_of_measurement: W
device_class: power device_class: power
@@ -1144,7 +1106,7 @@ sensor:
return t; return t;
- platform: template - platform: template
name: "IPEM SIX Export Power" name: "Export Power"
id: export_power id: export_power
unit_of_measurement: W unit_of_measurement: W
device_class: power device_class: power
@@ -1168,7 +1130,7 @@ sensor:
- platform: integration - platform: integration
name: "IPEM SIX Import Energy" name: "Import Energy"
sensor: import_power sensor: import_power
time_unit: h time_unit: h
integration_method: trapezoid integration_method: trapezoid
@@ -1177,7 +1139,7 @@ sensor:
state_class: total_increasing state_class: total_increasing
- platform: integration - platform: integration
name: "IPEM SIX Export Energy" name: "Export Energy"
sensor: export_power sensor: export_power
time_unit: h time_unit: h
integration_method: trapezoid integration_method: trapezoid
@@ -1186,7 +1148,7 @@ sensor:
state_class: total_increasing state_class: total_increasing
- platform: template - platform: template
name: "IPEM SIX Total Current" name: "Total Current"
id: total_current id: total_current
unit_of_measurement: A unit_of_measurement: A
device_class: current device_class: current
@@ -1208,7 +1170,7 @@ sensor:
# ===================================================== # =====================================================
- platform: wifi_signal - platform: wifi_signal
name: "IPEM SIX WiFi Signal" name: "WiFi Signal"
id: wifi_signal_db id: wifi_signal_db
unit_of_measurement: "dBm" unit_of_measurement: "dBm"
device_class: signal_strength device_class: signal_strength
@@ -1216,9 +1178,9 @@ sensor:
entity_category: diagnostic entity_category: diagnostic
update_interval: 30s update_interval: 30s
# ------------------------- # --------------------------------------
# ADC0 - VDC Input # ADC0 - ADC Scaled Voltage from VDC
# ------------------------- # --------------------------------------
- platform: ads1115 - platform: ads1115
multiplexer: A0_GND multiplexer: A0_GND
@@ -1231,7 +1193,8 @@ sensor:
send_every: 50 send_every: 50
- platform: template - platform: template
name: "IPEM SIX ADC Scaled Voltage VDC" name: "ADC Scaled Voltage VDC"
entity_category: diagnostic
unit_of_measurement: "V" unit_of_measurement: "V"
accuracy_decimals: 2 accuracy_decimals: 2
@@ -1250,9 +1213,9 @@ sensor:
return voltage; return voltage;
# ------------------------- # -----------------------------------------
# ADC1 # ADC1 - ADC Scaled Voltage from ADC1 Input
# ------------------------- # -----------------------------------------
- platform: ads1115 - platform: ads1115
multiplexer: A1_GND multiplexer: A1_GND
@@ -1265,7 +1228,8 @@ sensor:
send_every: 50 send_every: 50
- platform: template - platform: template
name: "IPEM SIX ADC Scaled Voltage ADC1" name: "ADC Scaled Voltage ADC1"
entity_category: diagnostic
unit_of_measurement: "V" unit_of_measurement: "V"
accuracy_decimals: 3 accuracy_decimals: 3