Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions packages/control/chargepoint/rfd_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,16 @@
import pytest
from control import data
from control.chargepoint.chargepoint import Chargepoint
from control.chargepoint.chargepoint_template import CpTemplate
from control.ev.ev import Ev


@pytest.fixture()
def mock_data() -> None:
data.data_init(Mock())
data.data.cp_data["cp1"] = Chargepoint(1, None)
data.data.cp_data["cp1"].template = CpTemplate()
data.data.cp_data["cp1"].chargepoint_module = Mock()
data.data.cp_data["cp1"].data.get.rfid = "1234"


Expand Down Expand Up @@ -39,6 +43,9 @@ def test_link_rfid_to_cp(partner_id: Optional[int],
cp.data.set.plug_time = cp0_plug_time
data.data.cp_data["cp1"].data.get.plug_state = cp1_plug_state
data.data.cp_data["cp1"].data.set.plug_time = cp1_plug_time
data.data.cp_data["cp1"].data.config.ev = 1
data.data.ev_data["ev1"] = Ev(1)

mock_find_duo_partner = Mock(return_value=partner_id)
monkeypatch.setattr(Chargepoint, "find_duo_partner", mock_find_duo_partner)

Expand Down
20 changes: 16 additions & 4 deletions packages/control/chargepoint/rfid.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,20 @@ def _link_rfid_to_cp(self: ChargepointProtocol) -> None:
((cp2_data.data.get.plug_state and self.data.get.plug_state and
(cp2_data.data.set.plug_time - self.data.set.plug_time) < 0) or
# kein EV am anderen Duo-Ladepunkt
cp2_data.data.get.plug_state is False)) or
# keine Duo
cp2_data is None):
cp2_data.data.get.plug_state is False))):
self.data.set.rfid = rfid
self.chargepoint_module.clear_rfid()
# Tag kann nur an einem Duo-Ladepunkt zugewiesen werden
if cp2_data.template.data.disable_after_unplug:
cp2_data.data.set.manual_lock = True
if data.data.ev_data[f"ev{cp2_data.data.config.ev}"].charge_template.data.load_default:
cp2_data.data.config.ev = 0
cp2_data.data.get.rfid = None
Pub().pub(f"openWB/set/chargepoint/{cp2_num}/get/rfid", None)
cp2_data.data.get.rfid_timestamp = None
Pub().pub(f"openWB/set/chargepoint/{cp2_num}/get/rfid_timestamp", None)
cp2_data.chargepoint_module.clear_rfid()
Comment on lines +31 to +39
elif cp2_data is None:
self.data.set.rfid = rfid
self.chargepoint_module.clear_rfid()

Expand Down Expand Up @@ -63,7 +74,7 @@ def _validate_rfid(self) -> None:
self.data.get.rfid_timestamp = None
if self.template.data.disable_after_unplug:
self.data.set.manual_lock = True
if self.data.set.charging_ev_data.charge_template.data.load_default:
if data.data.ev_data[f"ev{self.data.config.ev}"].charge_template.data.load_default:
self.data.config.ev = 0
Pub().pub(f"openWB/set/chargepoint/{self.num}/get/rfid_timestamp", None)
msg = ("Es ist in den letzten 5 Minuten kein EV angesteckt worden, dem "
Expand All @@ -87,6 +98,7 @@ def find_duo_partner(self: ChargepointProtocol) -> Optional[int]:
if self.data.config.type == "external_openwb" or self.data.config.type == "internal_openwb":
for cp2 in data.data.cp_data.values():
if (cp2.num != self.num and
(cp2.data.config.type == "external_openwb" or cp2.data.config.type == "internal_openwb") and
self.data.config.configuration["ip_address"] == cp2.data.config.configuration[
"ip_address"]):
return cp2.num
Expand Down
Loading