X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Focpp-server%2Fserver.py;h=2da30d37cea8a4a5a744cf44f30f0a818f38790e;hb=65c0600c2ca47b47559d3d9e7bc5e56b272dc615;hp=28f1f1c792763b3b5d8321953f30165a2db62ce2;hpb=a89844d433370fc777a3a9d5ce29f7e8026b71a8;p=e-mobility-charging-stations-simulator.git diff --git a/tests/ocpp-server/server.py b/tests/ocpp-server/server.py index 28f1f1c7..2da30d37 100644 --- a/tests/ocpp-server/server.py +++ b/tests/ocpp-server/server.py @@ -1,39 +1,57 @@ import asyncio import logging from datetime import datetime, timezone -from typing import Sequence +from threading import Timer import ocpp.v201 import websockets from ocpp.routing import on -from ocpp.v201 import call_result -from ocpp.v201.enums import RegistrationStatusType, ClearCacheStatusType +from ocpp.v201.enums import RegistrationStatusType, ClearCacheStatusType, Action # Setting up the logging configuration to display debug level messages. logging.basicConfig(level=logging.DEBUG) +class RepeatTimer(Timer): + """ Class that inherits from the Timer class. It will run a + function at regular intervals.""" + + def run(self): + while not self.finished.wait(self.interval): + self.function(*self.args, **self.kwargs) + + # Define a ChargePoint class inheriting from the OCPP 2.0.1 ChargePoint class. class ChargePoint(ocpp.v201.ChargePoint): - # Message handlers to receive OCPP message. - @on('BootNotification') + # Message handlers to receive OCPP messages. + @on(Action.BootNotification) 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. - return call_result.BootNotification( + return ocpp.v201.call_result.BootNotification( current_time=datetime.now(timezone.utc).isoformat(), - interval=10, + interval=60, status=RegistrationStatusType.accepted ) + @on(Action.Heartbeat) + async def on_heartbeat(self, charging_station, **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, charging_station, connector_id, status, **kwargs): + logging.info("Received StatusNotification") + return ocpp.v201.call_result.StatusNotification() + # Request handlers to emit OCPP messages. async def send_clear_cache(self): request = ocpp.v201.call.ClearCache() response = await self.call(request) if response.status == ClearCacheStatusType.accepted: - logging.info("Cache cleared successfully") + logging.info("Cache clearing successful") else: logging.info("Cache clearing failed") @@ -71,7 +89,7 @@ async def main(): on_connect, '127.0.0.1', # Listen on loopback. 9000, # Port number. - subprotocols=Sequence['ocpp2.0', 'ocpp2.0.1'] # Specify OCPP 2.0.1 subprotocols. + subprotocols=['ocpp2.0', 'ocpp2.0.1'] # Specify OCPP 2.0.1 subprotocols. ) logging.info("WebSocket Server Started") # Wait for the server to close (runs indefinitely).