Thing's user interface shows a map view with a pin at Thing's current location. The location is checked and updated every minute. We'll use Thing Prime running on a VM to view the map, giving us access to Thing, regardless of it's physical location.
Parts list below. If you don't have the hardware, there is a demo mode so you can run Thing in software-only mode. (See Running below).
I'm using the Telit LE910CF-NF (North America) LTE module option, $125 for the kit
It includes a SIM card for $2/month + data
Same build procedure for both Thing on Raspberry Pi and Thing Prime on VM:
There are a few command line options to make running Thing and Thing Prime from the same binary easier:
Thing on Raspberry Pi
Now start Thing on the Raspberry Pi, specifying the remote host to connect to the the Thing Prime VM. Replace thing.example.org with the Domain Name of your VM. (Or the IP address of the VM).
If you don't have the hardware setup, run in demo mode:
This will rotate the map though world cities, refreshing once a minute.
Thing Prime on VM
Start Thing Prime on the VM. Turning on HTTPS on port :443. (Only turn HTTPS on when there is a Domain Name for the VM', so Let's Encrypt can auto-generate a TLS certificate). The Domain Name for the VM is thing.example.org.
Browse to https://thing.example.org to view Thing. (If VM does not have a Domain Name, use http://<ip addr>).
It may take a bit to lock onto the GPS satellites. If GPS coordinates are unavailable, the map will center on [0, 0] lat, long (middle of the ocean somewhere). Once the GPS coordinates are known, the map updates to center to the GPS coordinates. Thing will continue tracking and updating GPS coordinates every minute.
The AT commands to the Telit modem check for new GPS coordinates. After a bit, once the Telit modem locks on to the GPS satellites, the AT$GPSACP command will return with the GPS coordinates. These coordinates are broadcast on the Thing message bus.