12/7/2023 - Document Created - Kyle Stanford
1/10/2024 - Changing to IoT Connector
2/23/2024 - QOS updated to 1, adjusted screenshots.
5/10/2024 - Updated Firmware minimum, added Filter reads section, need to add screenshots/instructions for filter reads
12/13/2024 - Updated latest firmware and adding link to FXR90 guide
7/1/2025 - Updated firmware guidance to 3.28.18 and added password warning message during connection
Make sure the devices are on the latest tested firmware. (3.28.18 as of 12/11/2024)
Copy the tenantId. In this document we’ll assume tenantId abcd12345678901234567890
Gather the hostnames of the devices you need to stage (in lowercase)
Go to the MQTT page, on the Users tab:
If there is no userName for the tenant yet, add a new MQTT User:
UserName: tenantId
Description: Tenant Name
Password: Create something good, but keep a copy somewhere securely
Confirmation: Repeat password
Tenant: Select the tenant from the dropdown menu
Save
Got to the Access Tab add a new entry:
Username: tenantId
Description: Tenant Name
Permission “allow”
Action: “all”
Tenant: Select the tenant from the dropdown menu
Topics: Add the following 4 values exactly (including $s and curly brackets):
dataCollection/tagHistory/${username}/${clientid}
deviceManagement/device/${username}/${clientid}/+
+/dataCollection/tagHistory/${username}/${clientid}
+/deviceManagement/device/${username}/${clientid}/+
Save
This creates a user account on MQTT that will allow posting JUST to the device’s tenant only.
Add each device you are going to add:
IP address: doesn’t matter
Hostname: required: all lowercase
Type: recommended
Description: recommended
Max # antennas: 2, 4, 8 or 13
You can add the actual antenna configurations later. When you do, set the cooldown as high as possible. IoT Connector will treat this value slightly differently: IF the tag is in range when that cooldown ends, it will send another read. Regardless of whether the tag has left the antenna range or not. For conveyor belt setups, where the tag is not expected to return, set this to something very high like 8 hours.
At this point - if you are on an FXR90, it is a different process, please hop over to *FXR90 Staging*
Note: The default login for a device is “admin/change” for anything in production that should have been changed. Change the timezone to the correct timezone, update the time/date, and use an NTP server if available.
Login on the device
Go to “Communication” > “Zebra IoT Connector” > “Configuration”
Click “Add Endpoint”
Fill in the following information:
Endpoint type: MQTT
Endpoint Name: <environment> - <tenantname>.
E.g. “staging - SST FX Test”
Endpoint Description: Leave blank, or whatever you want
Connections Tab
Server: hostname -at bottom of document per environment- Production is app-emqx.sstid.com
ment Configurations” below
Port: 8084 for Secure Web Sockets. Or 8883 for TLS
Don’t use Web Sockets or TCP as they are insecure
Protocol: Secure Web Socket (or TLS)
Client Id: device hostname in all lowercase
Clean Session: unchecked
Debug: unchecked
BASIC Authentication: checked
Username: tenantId
Password: Whatever you entered in Nucleus on the MQTT User.
Keep Alive: 60
Topics (replace {tenantId} and {deviceName}. Use updated topics from above)
***Change QOS to 1 on all topics***
Management Events - Topic:
deviceManagement/device/{tenantId}/{deviceName}/events
Tag Data Events - Topic:
dataCollection/tagHistory/{tenantId}/{deviceName}
Management - Command - Topic:
deviceManagement/device/{tenantId}/{deviceName}/mgmt
Management - Response - Topic:
deviceManagement/device/{tenantId}/{deviceName}/mgmtResponse
Control - Command - Topic:
deviceManagement/device/{tenantId}/{deviceName}/control
Control - Response - Topic:
deviceManagement/device/{tenantId}/{deviceName}/controlResponse
Here is an example response, ensure you replace the tenant id and device name with your data:
For each device:
Update the following topics with the appropriate tenantId and devicename (both in lowercase)
deviceManagement/device/5d30762d4d868d899c5363c4/fx9600f11295/events
dataCollection/tagHistory/5d30762d4d868d899c5363c4/fx9600f11295
deviceManagement/device/5d30762d4d868d899c5363c4/fx9600f11295/mgmt
deviceManagement/device/5d30762d4d868d899c5363c4/fx9600f11295/mgmtResponse
deviceManagement/device/5d30762d4d868d899c5363c4/fx9600f11295/control
deviceManagement/device/5d30762d4d868d899c5363c4/fx9600f11295/controlResponse
Certificates
Use Installed Certs: checked
Certificate: Server
Use CA Certs from Store: checked
Cert Algorithm: RS256
Cert Format: PEM
Verify Server Certificate: unchecked
Verify Host Name: checked
Batching & Retention
Reporting Interval: 1000
Max Payload Size: 256000
Throttle: 10
No. Of Events: 150000
Event Retention Time: 1440
Click “Add”
Scroll down to the Interface Configuration, and set the newly created endpoint as:
Management Interface
Control Interface
Tag Data Interface 1
Management Events Interface
So, basically everything except Tag Data Interface 2
Click Update
Go to “Communication” > “Zebra IoT Connector” > “Connection”
Click “Connect”. It will take a bit, but eventually it will connect
If you get the below password box. Ignore it until you see 'connected'. You can refresh the page to make it go away:
If you now check in Strategic RFID, the device should show as “online”
***Assuming the device needs 'onExit' capability, you should install the filter-reads applicaiton via the UI and set it to autostart. This app is stored on the shared drive @ Strategic\Technical Services\Backbone\Zebra FX\FilterReads***
KS to add screenshots and instructions.
EMXQ Server
IP: 34.75.222.188 (don’t use for configuration of readers!)
Hostname: dev-emqx.sstid.com
Management endpoint: http://35.229.95.19:18083/
IP: 35.185.5.26 (don’t use for configuration of readers!)
Hostname: staging-emqx.sstid.com
Management endpoint: http://34.73.96.156:18083/
IP: 34.138.140.245 (don’t use for configuration of readers!)
Hostname: app-emqx.sstid.com
Management endpoint: http://34.138.40.92:18083/