If you want to get the connectivity status of your device you can use connectivity indexing.
You have enabled connectivity indexing already earlier in this workshop.
Use one of the things that you have created in the bulk provisioning exercise and publish some messages.
mosquitto_pub which is used for publishing messages connects to AWS IoT, publishes a message and disconnects.
Lookup the device in the registry
# XX represents the number for the device that you used, e.g. 11 aws iot search-index --index-name "AWS_Things" --query-string "thingName:bulkyXX"
connected in the
connectivity section should be set to
Now let’s connect a device to AWS IoT that stays connected by using a subscriber. Certificates and keys from the bulk provisioning exercise are stored in the directory
~/provisioning/$THING_NAME-YYYY-mm-dd_H-M-S. Change into that directory before using the following commands.
THING_NAME=bulky11 mosquitto_sub --cafile ~/root.ca.bundle.pem \ --cert $THING_NAME.crt --key $THING_NAME.key \ -h $IOT_ENDPOINT -p 8883 -q 0 -t iot/ws \ -i $THING_NAME --tls-version tlsv1.2 -d
Lookup the device (in another terminal) that you just used as subscriber and the value for
connected should be set to
true. It could take some moments until the connectivity index has been updated.
The connectivity entry also contains a
timestamp that let’s you determine when the value for the
connected key has been set.
To convert the timestamp to a date the following command could be used:
date -d @$(([YOUR_TIMESTAMP] / 1000))
If the timestamp has a value of
1596720368135 you would get the following result:
date -d @$((1596720368135 / 1000)) Thu Aug 6 13:26:08 UTC 2020
Some more queries to try:
Find all connected devices:
aws iot search-index --index-name "AWS_Things" --query-string "connectivity.connected:true"
Find all disconnected devices:
aws iot search-index --index-name "AWS_Things" --query-string "connectivity.connected:false"