Troubleshooting

Permission

1. What does “User cannot access resource” mean?

  • Permissions, such as CRUD (depending on the item) need to be added to the role that the user has.
  • Another way is to add the user to a role that has the permissions readily available.

These can be updated in the Roles section.

Portals

1. How do I debug the parser in a widget?

  • The debug button adds the debugger keyword to the parser or the user can type the debugger keyword into the parser. The keyword works as a breakpoint.
  • Make sure the developer tools window is open in the browser
  • Now everytime the widget code is executed, the code will hold at the breakpoint. From here, the browser’s developer tools’ features can help you move to the next breakpoint, move further through the code, etc.

Messaging

1. What are the MQTT connection error codes and their definitions inside of ClearBlade?

  • The MQTT connect packet’s error codes can be found here

2. Why are MQTT messages from a sender not being received by the receiver?

  • Make sure the User/Device/Developer executing the code that performs the sending and receiving are assigned to a designated role that has MQTT topic permissions.
  • You may have some network issues and you can potentially try QoS 2 or 3 based on your usecase, to make sure the message is published by the publisher and received by the subscribers.
  • Network monitoring tools can help find which one of steps may be going wrong:
    • Is the message getting published?
    • Is the message being recieved by other subscribers? Try using another MQTT client to verify that
  • Are you using shared topics? If there are multiple subscribers in your group, the messages will be load balanced.
  • Make sure you are viewing on the Edge’s console if you are publishing the data to the edge.

  • Handling shared topics - $share/myShareGroupName/myTopic
    Be aware that a message sent to myTopic will be shared between all subscribers to $share/myShareGroup/myTopic. The first message sent might be received by one subscriber, the second message sent might be received by another subscriber, etc. However, if all subscribers subscribe to myTopic,then each subscriber gets every message.

3. What are the Quality of Service (QoS) codes and what do they do?

  • QoS codes and their definitions can be found here

Note: Publisher and subscriber of a message can set a QOS value.

4. Why do I get disconnected from MQTT when I attempt to subscribe or publish?

  • Make sure the User/Device/Developer subscribing/publishing are assigned to a designated role that has MQTT topic permissions.

SDK

1. How do I use PythonSDK to create a MQTT session?

  • Users need to specify BOTH the use_tls boolean AND the port (1883 for TLS or 1884 for non-TLS). Example: mqtt = system.Messaging(user_device, port=1883, use_tls=False) mqtt = system.Messaging(user_device, port=1884, use_tls=True)

2. How do I use PythonSDK to connect a user / device that is using a previously acquired token?

  • user_device = system.Device(device_name,authToken=device_tokens[device_name])

3. Why are only 340 clients allowed to connect in one instance of the PythonSDK?

  • This due to the limitations of Linux. If you want to connect more clients you either have to use multiprocessing within the Python program itself or run the program multiple times.