#python #json #content-management-system
#python #json #content-management-system
Вопрос:
Я разрабатываю симулятор OCPP на основе PyPI OCPP v1.6J. Я успешно отправил уведомление о загрузке, сердцебиение и уведомление о состоянии на сервер OCPP CMS. Но при получении любого сообщения с сервера CMS я получаю ошибку в своей консоли.
Я попытался передать сообщение о запуске (сердцебиение) с сервера CMS, но моя смоделированная точка зарядки не принимает запрос. Это вызывает некоторую ошибку. Фрагмент кода прилагается ниже
class ChargePoint(cp):
@on(Action.TriggerMessage)
def on_trigger_message(self, requestedMessage, conectorId, **kwargs):
return call.TriggerMessagePayload(
connector_id = 1,
requested_message = "Heartbeat"
)
return call_result.TriggerMessagePayload(
status = TriggerMessageStatus.accepted
)
И сообщение об ошибке прилагается ниже
C:Python38>python ocppclientsteve.py
Connected to SteVe CMS server.
Error while handling request '<Call - unique_id=f95390e4-a751-4bbb-8a41-abed33b29ca8, action=TriggerMessage, payload={'requestedMessage': 'Heartbeat', 'connectorId': 1}>'
Traceback (most recent call last):
File "C:Python38libsite-packagesocppcharge_point.py", line 185, in _handle_call
response = handler(**snake_case_payload)
File "C:Python38libsite-packagesocpprouting.py", line 33, in inner
return func(*args, **kwargs)
TypeError: on_trigger_message() missing 2 required positional arguments: 'requestedMessage' and 'conectorId'
Error while handling request '<Call - unique_id=d12e5c40-f155-4d49-bd68-38f9c9fd074b, action=TriggerMessage, payload={'requestedMessage': 'Heartbeat', 'connectorId': 1}>'
Traceback (most recent call last):
File "C:Python38libsite-packagesocppcharge_point.py", line 185, in _handle_call
response = handler(**snake_case_payload)
File "C:Python38libsite-packagesocpprouting.py", line 33, in inner
return func(*args, **kwargs)
TypeError: on_trigger_message() missing 2 required positional arguments: 'requestedMessage' and 'conectorId'
Ответ №1:
Автор библиотеки здесь.
Библиотека использует snake_case для всех атрибутов. Вот так:
class ChargePoint(cp):
@on(Action.TriggerMessage)
def on_trigger_message(self, requested_message, connector_id, **kwargs):
return call.TriggerMessagePayload(
connector_id = 1,
requested_message = "Heartbeat"
)
return call_result.TriggerMessagePayload(
status = TriggerMessageStatus.accepted
)