Skip to content

Commit c14f4a3

Browse files
authored
separate message for high and low voltage (#2660)
* separate message for high and low voltage * improve
1 parent eceb782 commit c14f4a3

2 files changed

Lines changed: 17 additions & 2 deletions

File tree

packages/modules/common/hardware_check.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
"Bitte den openWB series2 satellit stromlos machen.")
1818
METER_PROBLEM = "Der Zähler konnte nicht ausgelesen werden. Vermutlich ist der Zähler falsch konfiguriert oder defekt."
1919
METER_BROKEN_VOLTAGES = "Die Spannungen des Zählers konnten nicht korrekt ausgelesen werden: {}V Der Zähler ist defekt."
20+
METER_VOLTAGE = "Die Spannung des Zählers ist zu {}. Bitte prüfen Sie die Spannungsversorgung. Spannung: {}V."
21+
METER_VOLTAGE_TOO_HIGH = METER_VOLTAGE.format("hoch", "{}")
22+
METER_VOLTAGE_TOO_LOW = METER_VOLTAGE.format("niedrig", "{}")
2023
METER_NO_SERIAL_NUMBER = ("Die Seriennummer des Zählers für das Ladelog kann nicht ausgelesen werden. Wenn Sie die "
2124
"Seriennummer für Abrechnungszwecke benötigen, wenden Sie sich bitte an unseren Support. Die "
2225
"Funktionalität wird dadurch nicht beeinträchtigt!")
@@ -33,9 +36,18 @@ def check_meter_values(counter_state: CounterState, fault_state: Optional[FaultS
3336

3437

3538
def _check_meter_values(counter_state: CounterState) -> Optional[str]:
39+
VOLTAGE_HIGH_THRESHOLD = 260
40+
VOLTAGE_LOW_THRESHOLD = 200
41+
VOLTAGE_DETECTED_THRESHOLD = 50 # Phasenaufall detektieren
42+
3643
def valid_voltage(voltage) -> bool:
37-
return 200 < voltage < 260
44+
return VOLTAGE_LOW_THRESHOLD < voltage < VOLTAGE_HIGH_THRESHOLD
3845
voltages = counter_state.voltages
46+
# wenn ein Wert in voltages großer VOLTAGE_HIGH_THRESHOLD ist, gebe eine Fehlermeldung zurück
47+
if any(v > VOLTAGE_HIGH_THRESHOLD and v > VOLTAGE_DETECTED_THRESHOLD for v in voltages):
48+
return METER_VOLTAGE_TOO_HIGH.format(voltages)
49+
elif any(v < VOLTAGE_LOW_THRESHOLD and v > VOLTAGE_DETECTED_THRESHOLD for v in voltages):
50+
return METER_VOLTAGE_TOO_LOW.format(voltages)
3951
if not ((valid_voltage(voltages[0]) and voltages[1] == 0 and voltages[2] == 0) or
4052
# Zoe lädt einphasig an einphasiger Wallbox und erzeugt Spannung auf L2 (ca 126V)
4153
(valid_voltage(voltages[0]) and 115 < voltages[1] < 135 and voltages[2] == 0) or

packages/modules/common/hardware_check_test.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
from modules.common.evse import Evse
1010
from modules.common.hardware_check import (
1111
EVSE_BROKEN, LAN_ADAPTER_BROKEN, METER_BROKEN_VOLTAGES, METER_IMPLAUSIBLE_VALUE, METER_NO_SERIAL_NUMBER,
12-
METER_PROBLEM, OPEN_TICKET, USB_ADAPTER_BROKEN, SeriesHardwareCheckMixin, _check_meter_values)
12+
METER_PROBLEM, METER_VOLTAGE_TOO_HIGH, METER_VOLTAGE_TOO_LOW, OPEN_TICKET, USB_ADAPTER_BROKEN,
13+
SeriesHardwareCheckMixin, _check_meter_values)
1314
from modules.common.modbus import NO_CONNECTION, ModbusSerialClient_, ModbusTcpClient_
1415
from modules.conftest import SAMPLE_IP, SAMPLE_PORT
1516
from modules.internal_chargepoint_handler.clients import ClientHandler
@@ -97,6 +98,8 @@ def test_hardware_check_succeeds(monkeypatch):
9798
pytest.param([0, 230, 230], 0, METER_BROKEN_VOLTAGES.format([0, 230, 230]), id="dreiphasig, L1 defekt"),
9899
pytest.param([230, 0, 230], 0, METER_BROKEN_VOLTAGES.format([230, 0, 230]), id="dreiphasig, L2 defekt"),
99100
pytest.param([230]*3, 100, METER_PROBLEM, id="Phantom-Leistung"),
101+
pytest.param([261, 230, 230], 0, METER_VOLTAGE_TOO_HIGH.format([261, 230, 230]), id="Spannung zu hoch"),
102+
pytest.param([230, 230, 199], 0, METER_VOLTAGE_TOO_LOW.format([230, 230, 199]), id="Spannung zu niedrig"),
100103
]
101104
)
102105
def test_check_meter_values_voltages(voltages, power, expected_msg, monkeypatch):

0 commit comments

Comments
 (0)