X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Focpp-server%2Fserver.py;h=c8748763129300dbe54de6980f159ad784a57952;hb=22c4f1fc7fe1dc966a280de7f66e2f9fe592fbd2;hp=e507d4f49b89e73b8087f4d2ecfe3c84fa08e379;hpb=115f3b177307e3a152a556db843653a499a5fe4c;p=e-mobility-charging-stations-simulator.git diff --git a/tests/ocpp-server/server.py b/tests/ocpp-server/server.py index e507d4f4..c8748763 100644 --- a/tests/ocpp-server/server.py +++ b/tests/ocpp-server/server.py @@ -6,7 +6,9 @@ from threading import Timer import ocpp.v201 import websockets from ocpp.routing import on -from ocpp.v201.enums import RegistrationStatusType, ClearCacheStatusType, Action +from ocpp.v201.enums import RegistrationStatusType, ClearCacheStatusType, AuthorizationStatusType, \ + TransactionEventType, \ + Action # Setting up the logging configuration to display debug level messages. logging.basicConfig(level=logging.DEBUG) @@ -28,7 +30,7 @@ class ChargePoint(ocpp.v201.ChargePoint): async def on_boot_notification(self, charging_station, reason, **kwargs): logging.info("Received BootNotification") # Create and return a BootNotification response with the current time, - # an interval of 10 seconds, and an accepted status. + # an interval of 60 seconds, and an accepted status. return ocpp.v201.call_result.BootNotification( current_time=datetime.now(timezone.utc).isoformat(), interval=60, @@ -36,10 +38,43 @@ class ChargePoint(ocpp.v201.ChargePoint): ) @on(Action.Heartbeat) - async def on_heartbeat(self, charging_station, **kwargs): + async def on_heartbeat(self, **kwargs): logging.info("Received Heartbeat") return ocpp.v201.call_result.Heartbeat(current_time=datetime.now(timezone.utc).isoformat()) + @on(Action.StatusNotification) + async def on_status_notification(self, timestamp, evse_id, connector_id, connector_status, + **kwargs): + logging.info("Received StatusNotification") + return ocpp.v201.call_result.StatusNotification() + + @on(Action.Authorize) + async def on_authorize(self, id_token, **kwargs): + logging.info("Received Authorize") + return ocpp.v201.call_result.Authorize( + id_token_info={'status': AuthorizationStatusType.accepted}) + + @on(Action.TransactionEvent) + async def on_transaction_event(self, event_type, timestamp, trigger_reason, seq_no, + transaction_info, **kwargs): + match event_type: + case TransactionEventType.started: + logging.info("Received TransactionEvent Started") + return ocpp.v201.call_result.TransactionEvent( + id_token_info={'status': AuthorizationStatusType.accepted}) + case TransactionEventType.updated: + logging.info("Received TransactionEvent Updated") + return ocpp.v201.call_result.TransactionEvent( + total_cost=10) + case TransactionEventType.ended: + logging.info("Received TransactionEvent Ended") + return ocpp.v201.call_result.TransactionEvent() + + @on(Action.MeterValues) + async def on_meter_values(self, evse_id, meter_value, **kwargs): + logging.info("Received MeterValues") + return ocpp.v201.call_result.MeterValues() + # Request handlers to emit OCPP messages. async def send_clear_cache(self): request = ocpp.v201.call.ClearCache()