MQTT & HTTPS publishing
TAMsys accepts device telemetry through AWS IoT Core in the ap-south-1 region. MQTT and HTTPS use the same device endpoint, X.509 credentials, topic, and payload; their ports and connection models differ.
Endpoint and topic
Section titled “Endpoint and topic”| Setting | Value |
|---|---|
| Endpoint hostname | a27pmjgdoz4ztv-ats.iot.ap-south-1.amazonaws.com |
| Authentication | Mutual TLS with an X.509 client certificate |
| Publish topic | tessol/tamsys/{device_id} |
| MQTT port | 8883 |
| HTTPS publish port | 8443 |
Use the hostname without a scheme in MQTT client configuration. For HTTPS, use the full https:// URL shown below.
Required credentials
Section titled “Required credentials”Both transports require:
- A device certificate issued or registered for the TAMsys AWS IoT account.
- The matching private key.
- An Amazon Root CA trusted by the AWS IoT Core ATS endpoint.
- An active certificate with an attached IoT policy that permits publishing to the provisioned device topic.
MQTT connections also require the policy’s iot:Connect permission. Request device provisioning material from TAMsys support.
MQTT over TLS
Section titled “MQTT over TLS”MQTT uses a persistent connection to a27pmjgdoz4ztv-ats.iot.ap-south-1.amazonaws.com:8883. Use a unique client ID for every simultaneous connection.
mosquitto_pub \ --host a27pmjgdoz4ztv-ats.iot.ap-south-1.amazonaws.com \ --port 8883 \ --cafile AmazonRootCA1.pem \ --cert device-certificate.pem.crt \ --key private.pem.key \ --id 'device-client-id' \ --topic 'tessol/tamsys/DEVICE_ID' \ --qos 1 \ --message '{"id":"DEVICE_ID","utctimestamp":1785488704000,"temp":4.6}'Replace the filenames, client ID, device ID, and payload with provisioned values.
HTTPS publish
Section titled “HTTPS publish”AWS IoT Core’s HTTPS device API accepts publish-only POST requests. Put the topic after /topics/ and select QoS with the qos query parameter:
https://a27pmjgdoz4ztv-ats.iot.ap-south-1.amazonaws.com:8443/topics/tessol/tamsys/{device_id}?qos=1The port 8443 endpoint accepts X.509 mutual TLS directly and does not require the custom ALPN protocol name needed for X.509 authentication on port 443.
curl --silent --show-error --fail-with-body \ --tlsv1.2 \ --cacert AmazonRootCA1.pem \ --cert device-certificate.pem.crt \ --key private.pem.key \ --request POST \ --header 'Content-Type: application/json' \ --data-binary '{"id":"DEVICE_ID","utctimestamp":1785488704000,"temp":4.6}' \ 'https://a27pmjgdoz4ztv-ats.iot.ap-south-1.amazonaws.com:8443/topics/tessol/tamsys/DEVICE_ID?qos=1'A successful publish returns HTTP 200 with an empty response body. This confirms that AWS IoT Core accepted the message; it does not confirm downstream TAMsys processing. Treat the complete topic as the value after /topics/ when building the URL. Clients may percent-encode it as tessol%2Ftamsys%2FDEVICE_ID; AWS’s port 8443 examples also show literal / separators in the topic path.
See AWS’s HTTPS publish example for the request format and its protocol and port table for authentication requirements.
Choose a transport
Section titled “Choose a transport”| Requirement | MQTT over TLS | HTTPS publish |
|---|---|---|
| Connection | Persistent session | One stateless request per publish |
| AWS IoT operations | Publish and subscribe | Publish only |
| Client ID | Required and unique while connected | Not used |
| QoS | MQTT QoS 0 or 1 |
qos=0 or qos=1 query parameter |
| Best fit | Frequent telemetry and long-lived device sessions | Infrequent or batched publishing without an MQTT client |
HTTPS has a TLS and HTTP setup cost for each request unless the client reuses its connection. For frequent small messages, MQTT is generally more efficient. Provisioned TAMsys IoT policies can be narrower than the AWS IoT protocol capabilities shown in the table.
Troubleshooting
Section titled “Troubleshooting”| Symptom | Check |
|---|---|
| TLS handshake fails | ATS root CA, client certificate/private key pairing, certificate validity, and device clock |
| MQTT connection is rejected | Certificate status, attached policy, unique client ID, endpoint, and iot:Connect permission |
Publish is rejected or HTTPS returns 401/403 |
Topic spelling, certificate status, and iot:Publish permission for tessol/tamsys/{device_id} |
HTTPS returns 404 |
Port 8443, the /topics/ path, and the complete topic in the URL |
| Data does not appear | JSON validity, matching id, millisecond timestamp, and TAMsys device assignment |
