Initial commit: Check-My-IRVE SaaS (OCPP 1.6, Audit, Diagnostics)
This commit is contained in:
commit
192be86487
44 changed files with 2070 additions and 0 deletions
58
backend/app/ocpp/router.py
Normal file
58
backend/app/ocpp/router.py
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
import logging
|
||||
import os
|
||||
from datetime import datetime, timezone
|
||||
from ocpp.routing import on
|
||||
from ocpp.v16 import ChargePoint as cp
|
||||
from ocpp.v16 import call_result
|
||||
from ocpp.v16.enums import Action, RegistrationStatus
|
||||
from app.core.session_manager import session_mgr
|
||||
|
||||
logger = logging.getLogger("ocpp_router")
|
||||
|
||||
def get_utc_time():
|
||||
return datetime.now(timezone.utc).isoformat().replace("+00:00", "Z")
|
||||
|
||||
HEARTBEAT_INTERVAL = int(os.getenv("OCPP_HEARTBEAT_INTERVAL", 300))
|
||||
|
||||
class CustomChargePoint(cp):
|
||||
@on(Action.BootNotification)
|
||||
async def on_boot_notification(self, charge_point_vendor, charge_point_model, **kwargs):
|
||||
await session_mgr.register_cp(self.id, charge_point_model, charge_point_vendor, getattr(self, 'subprotocol', 'Unknown'))
|
||||
response = call_result.BootNotificationPayload(
|
||||
current_time=get_utc_time(),
|
||||
interval=HEARTBEAT_INTERVAL,
|
||||
status=RegistrationStatus.accepted
|
||||
)
|
||||
return response
|
||||
|
||||
@on(Action.Heartbeat)
|
||||
async def on_heartbeat(self):
|
||||
response = call_result.HeartbeatPayload(current_time=get_utc_time())
|
||||
return response
|
||||
|
||||
@on(Action.Authorize)
|
||||
async def on_authorize(self, id_tag, **kwargs):
|
||||
status = "Accepted" if id_tag == "CHARGEMAP_PASS" else "Invalid"
|
||||
response = call_result.AuthorizePayload(id_tag_info={"status": status})
|
||||
return response
|
||||
|
||||
@on(Action.MeterValues)
|
||||
async def on_meter_values(self, connector_id, meter_value, **kwargs):
|
||||
response = call_result.MeterValuesPayload()
|
||||
return response
|
||||
|
||||
@on(Action.StatusNotification)
|
||||
async def on_status_notification(self, connector_id, status, error_code, **kwargs):
|
||||
await session_mgr.update_cp_status(self.id, str(status))
|
||||
response = call_result.StatusNotificationPayload()
|
||||
return response
|
||||
|
||||
@on(Action.StartTransaction)
|
||||
async def on_start_transaction(self, connector_id, id_tag, meter_start, timestamp, **kwargs):
|
||||
response = call_result.StartTransactionPayload(transaction_id=123456, id_tag_info={"status": "Accepted"})
|
||||
return response
|
||||
|
||||
@on(Action.StopTransaction)
|
||||
async def on_stop_transaction(self, transaction_id, meter_stop, timestamp, **kwargs):
|
||||
response = call_result.StopTransactionPayload(id_tag_info={"status": "Accepted"})
|
||||
return response
|
||||
Loading…
Add table
Add a link
Reference in a new issue