From: Sekiya Date: Tue, 18 Jun 2024 07:15:01 +0000 (+0900) Subject: modified conflict X-Git-Tag: v1.3.7~17^2~24 X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=75afd2d96080afd378adc6baff4d33dc33fb4ef1;p=e-mobility-charging-stations-simulator.git modified conflict --- 75afd2d96080afd378adc6baff4d33dc33fb4ef1 diff --cc tests/ocpp-server/server.py index 53e47c08,9d31f994..991cef87 --- a/tests/ocpp-server/server.py +++ b/tests/ocpp-server/server.py @@@ -13,8 -12,8 +13,9 @@@ from ocpp.v201.enums import ClearCacheStatusType, RegistrationStatusType, TransactionEventType, + ReportBaseType, ) + from websockets import ConnectionClosed # Setting up the logging configuration to display debug level messages. logging.basicConfig(level=logging.DEBUG) @@@ -89,65 -90,19 +92,65 @@@ class ChargePoint(ocpp.v201.ChargePoint @on(Action.MeterValues) async def on_meter_values(self, evse_id: int, meter_value, **kwargs): - logging.info("Received MeterValues") + logging.info("Received %s", Action.MeterValues) return ocpp.v201.call_result.MeterValues() + @on(Action.GetBaseReport) + async def on_get_base_report(self, request_id: int, report_base: ReportBaseType, **kwargs): + logging.info("Received GetBaseReport") + return ocpp.v201.call_result.GetBaseReport(status="Accepted") + # 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 clearing successful") + logging.info("%s successful", Action.ClearCache) else: - logging.info("Cache clearing failed") + logging.info("%s failed", Action.ClearCache) + async def send_get_base_report(self): + logging.info("Executing send_get_base_report...") + request = ocpp.v201.call.GetBaseReport(reportBase=ReportBaseType.ConfigurationInventory) # Use correct ReportBaseType + try: + response = await self.call(request) + logging.info("Send GetBaseReport") + + if response.status == "Accepted": # Adjust depending on the structure of your response + logging.info("Send GetBaseReport successful") + else: + logging.info("Send GetBaseReport failed") + except Exception as e: + logging.error(f"Send GetBaseReport failed: {str(e)}") + logging.info("send_get_base_report done.") + +# Define argument parser +parser = argparse.ArgumentParser(description='OCPP Charge Point Simulator') +parser.add_argument('--request', type=str, help='OCPP 2 Command Name') +parser.add_argument('--delay', type=int, help='Delay in seconds') +parser.add_argument('--period', type=int, help='Period in seconds') + +args = parser.parse_args() + +# Function to send OCPP command +async def send_ocpp_command(cp, command_name, delay=None, period=None): + # If delay is not None, sleep for delay seconds + if delay: + await asyncio.sleep(delay) + + # If period is not None, send command repeatedly with period interval + if period: + while True: + if command_name == 'GetBaseReport': + logging.info("GetBaseReport parser working") + await cp.send_get_base_report() + + await asyncio.sleep(period) + else: + if command_name == 'GetBaseReport': + await cp.send_get_base_report() + # Function to handle new WebSocket connections. async def on_connect(websocket, path): @@@ -172,15 -127,15 +175,24 @@@ charge_point_id = path.strip("/") cp = ChargePoint(charge_point_id, websocket) + + # Check if request argument is specified + if args.request: + asyncio.create_task(send_ocpp_command(cp, args.request, args.delay, args.period)) + + # Start the ChargePoint instance to listen for incoming messages. + await cp.start() + + ChargePoints.add(cp) + try: + await cp.start() + except ConnectionClosed: + logging.info("ChargePoint %s closed connection", cp.id) + ChargePoints.remove(cp) + logging.debug("Connected ChargePoint(s): %d", len(ChargePoints)) + + + # Main function to start the WebSocket server. async def main(): # Create the WebSocket server and specify the handler for new connections. @@@ -191,14 -146,6 +203,7 @@@ subprotocols=["ocpp2.0", "ocpp2.0.1"], # Specify OCPP 2.0.1 subprotocols. ) logging.info("WebSocket Server Started") + - # Create a ChargePoint instance - # websocket = await websockets.connect('ws://localhost:9000') - # cp = ChargePoint('test', websocket) - - # Call send_ocpp_command function - # asyncio.create_task(send_ocpp_command(cp, args.request, args.delay, args.period)) - # Wait for the server to close (runs indefinitely). await server.wait_closed()