Hello ChirpStack Community,
I’m trying to create a device (and provision its keys) from my Python application. I am successfully able to use the API to create a device (as well as perform various other tasks like creating a device profile, creating a multicast group, etc.).
However, when it comes to creating and adding the DeviceKeys, I’m encountering an error message. I’ve seen several posts with the same issue, usually related to a missing field. However, in my case, I can’t seem to identify which field is missing.
Here is my code (In fact i’m not creating a device from scratch, i copy an existing device):
server = self.api_server + ":8080"
channel = self.__get_channel(server)
client = api.DeviceServiceStub(channel)
auth_token = [("authorization", "Bearer %s" % user_conftest.chirpstack_api_key)]
request = api.GetDeviceRequest()
request.dev_eui = eui
resp= client.Get(request, metadata=auth_token)
device = resp.device
device.dev_eui = dev_eui
device.join_eui = join_eui
device.device_profile_id = device_profile_id
request = api.CreateDeviceRequest()
request.device.CopyFrom(device)
resp = client.Create(request, metadata=auth_token)
device_keys = api.DeviceKeys()
device_keys.dev_eui = dev_eui
device_keys.app_key = nwk_key
device_keys.nwk_key =nwk_key
request2 = api.CreateDeviceKeysRequest()
request2.device_keys.CopyFrom(device_keys)
resp2= client.Create(request2, metadata=auth_token)
Running this results in:
else:
> raise _InactiveRpcError(state)
E grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
E status = StatusCode.INVALID_ARGUMENT
E details = "invalid length: expected length 32 for simple format, found 0"
E debug_error_string = "{"created":"@1706796136.953902249","description":"Error received from peer ipv4:127.0.0.1:8080","file":"src/core/lib/surface/call.cc","file_line":903,"grpc_message":"invalid length: expected length 32 for simple format, found 0","grpc_status":3}"
E >
../.local/lib/python3.10/site-packages/grpc/_channel.py:849: _InactiveRpcError
I would like to clarify that the device has indeed been successfully created.
As I mentioned, other topics mentioning this error were resolved because there was a missing field. However, after looking at the protofile, I can’t see what information is missing, and I’m sure that dev_eui
, nwk_key
, and app_key
are the correct size (16 and 32 characters respectively, which translates to 8 and 16 bytes).
If anyone in the community has any idea, I would greatly appreciate your assistance in identifying the root cause of this error and any potential solutions or suggestions to resolve it.
Thank you in advance for your help, and please let me know if you need any additional information or code snippets to assist with troubleshooting.