No Description

charge_point.py 1.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import asyncio
  2. import logging
  3. try:
  4. import websockets
  5. except ModuleNotFoundError:
  6. print("This example relies on the 'websockets' package.")
  7. print("Please install it by running: ")
  8. print()
  9. print(" $ pip install websockets")
  10. import sys
  11. sys.exit(1)
  12. from ocpp.v20 import ChargePoint as cp
  13. from ocpp.v20 import call
  14. logging.basicConfig(level=logging.INFO)
  15. class ChargePoint(cp):
  16. async def send_heartbeat(self, interval):
  17. request = call.HeartbeatPayload()
  18. while True:
  19. await self.call(request)
  20. await asyncio.sleep(interval)
  21. async def send_boot_notification(self):
  22. request = call.BootNotificationPayload(
  23. charging_station={"model": "Wallbox XYZ", "vendor_name": "anewone"},
  24. reason="PowerUp",
  25. )
  26. response = await self.call(request)
  27. if response.status == "Accepted":
  28. print("Connected to central system.")
  29. await self.send_heartbeat(response.interval)
  30. async def main():
  31. async with websockets.connect(
  32. "ws://localhost:9000/CP_1", subprotocols=["ocpp2.0"]
  33. ) as ws:
  34. cp = ChargePoint("CP_1", ws)
  35. await asyncio.gather(cp.start(), cp.send_boot_notification())
  36. if __name__ == "__main__":
  37. # asyncio.run() is used when running this example with Python >= 3.7v
  38. asyncio.run(main())