X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Focpp-server%2Fserver.py;h=4dc7272709ebfcf075fb28f884dbc3b23719de0e;hb=d6488e8da9634892f480dd4323a64d87716cbf13;hp=2bba45ddaa515016b188517050af23f653a618de;hpb=dd4588bbff2b31d206367724d0aa843ecc7ef7c6;p=e-mobility-charging-stations-simulator.git diff --git a/tests/ocpp-server/server.py b/tests/ocpp-server/server.py index 2bba45dd..4dc72727 100644 --- a/tests/ocpp-server/server.py +++ b/tests/ocpp-server/server.py @@ -1,54 +1,39 @@ import asyncio import logging -import websockets from datetime import datetime, timezone +from typing import Sequence +import websockets from ocpp.routing import on from ocpp.v201 import ChargePoint as cp from ocpp.v201 import call_result -from ocpp.v201.enums import RegistrationStatusType, GenericDeviceModelStatusType +from ocpp.v201.enums import RegistrationStatusType # Setting up the logging configuration to display debug level messages. logging.basicConfig(level=logging.DEBUG) + # Define a ChargePoint class inheriting from the OCPP 2.0.1 ChargePoint class. class ChargePoint(cp): - # Define a handler for the BootNotification message. + # Message handlers to receive OCPP message. @on('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( - current_time = datetime.now(timezone.utc).isoformat(), + current_time=datetime.now(timezone.utc).isoformat(), interval=10, status=RegistrationStatusType.accepted ) - # Define a handler for the GetBaseReport message. - @on('GetBaseReport') - async def on_get_base_report(self, request_id, report_base, **kwargs): - try: - logging.info(f"Received GetBaseReport request with RequestId: {request_id} and ReportBase: {report_base}") + # Request handlers to emit OCPP messages. - # Create a mock response for demonstration purposes, indicating the report is accepted. - response = call_result.GetBaseReport( - status=GenericDeviceModelStatusType.accepted - ) - - logging.info(f"Sending GetBaseReport response: {response}") - return response - except Exception as e: - # Log any errors that occur while handling the GetBaseReport request. - logging.error(f"Error handling GetBaseReport request: {e}", exc_info=True) - # Return a rejected status in case of error. - return call_result.GetBaseReport( - status=GenericDeviceModelStatusType.rejected - ) # Function to handle new WebSocket connections. async def on_connect(websocket, path): - """ For every new charge point that connects, create a ChargePoint instance and start listening for messages. """ + """ For every new charge point that connects, create a ChargePoint instance and start + listening for messages.""" try: requested_protocols = websocket.request_headers['Sec-WebSocket-Protocol'] except KeyError: @@ -70,19 +55,21 @@ async def on_connect(websocket, path): # Start the ChargePoint instance to listen for incoming messages. await cp.start() + # Main function to start the WebSocket server. async def main(): # Create the WebSocket server and specify the handler for new connections. server = await websockets.serve( on_connect, - '0.0.0.0', # Listen on loopback. - 9000, # Port number. - subprotocols=['ocpp2.0', 'ocpp2.0.1'] # Specify OCPP 2.0.1 subprotocols. + '127.0.0.1', # Listen on loopback. + 9000, # Port number. + subprotocols=Sequence['ocpp2.0', 'ocpp2.0.1'] # Specify OCPP 2.0.1 subprotocols. ) logging.info("WebSocket Server Started") # Wait for the server to close (runs indefinitely). await server.wait_closed() + # Entry point of the script. if __name__ == '__main__': # Run the main function to start the server.