_track.qo: why is json best_location_type == tower

It would seem that in the event json for the _track.qo that the best_location_type would always be GPS.

My configuration is below.

What I am getting, for a stationary device (no movement) in the json for the _track.qo event is for awhile it reports that the best_location_type is gps, and then after awhile it reports that it is tower.

I would have expected, with my configuration, that the best_location_type, in the _track.qo file, as reported in the event would always be gps

Configuration:

> {"req": "hub.get"}
{
 "mode": "periodic",
 "host": "a.notefile.net",
 "product": "com.gmail.johnedstone:wbna_500.69623",
 "device": "dev:x69623",
 "inbound": 60
}
> {"req": "hub.set", "inbound": -1}
{}
> {"req": "hub.get"}
{
 "mode": "periodic",
 "host": "a.notefile.net",
 "product": "com.gmail.johnedstone:wbna_500.69623",
 "device": "dev:x69623"
}
> {"req": "card.location.mode", "mode": "periodic", "seconds": 1800}
{
 "seconds": 1800,
 "mode": "periodic"
}
> {"req": "card.location.track", "start": true, "heartbeat": true, "hours": 1, "sync": true}
{
 "start": true,
 "minutes": 60,
 "heartbeat": true,
 "sync": true
}

Hi @johnedstone,

There is an algorithm to decide which location type is the best location type.

You are correct that GPS is considered the “best” quality location type, followed by Wi-Fi triangulation, then finally tower. However, the timeliness of the last reading influences it’s rank as the best location type. For example, an old GPS reading is considered to be inferior to a recent tower reading.

Most likely in your case, if the Notecard has not reported a new GPS location in a certain period of time, then it is falling back to the tower location. There can be several reasons why the Notecard may be failing to acquire a GPS location. For instance, it may not have a clear view of the sky.

When it does acquire a GPS signal, then it will definitely consider that as the “best location”.

Hopefully this helps you understand what you are seeing.

Best,
Zak

Let me move it from the basement (surrounded by concrete) and move it to a clearer view of the sky and see if it get’s a GPS reading and if begins to, and continues to, report best_location_type: GPS. I will report back here with the results. Thanks!

Addendum:
Just to be clear, on this reference and this text:
“”"
By default, tracking data will only be captured if the Notecard detects motion. To add periodic tracking Notes when there is no movement, use the heartbeat argument. You can also use the optional hours argument to capture heartbeat tracking notes at a rate that differs from the rate when there is motion.
“”"

… shouldn’t the _track.qo get updated at the interval that the heartbeat is set at?

Addendum #2
Let me track when the GPS is updated in _track.qo with where_when … stay tuned

Addendum #3
After moving it out of the basement, and 45 minutes had passed, the event for the _track.qo file has begun to report best_location_type: gps. This is good. Maybe, as you suggest, moving it to a more accessible place to reach the GPS satellites was the key. I’ll monitor this over the next few days and see if this remains so. I’ll also monitor where_when to see if this value gets updated every hour. Thanks.

2 Likes

I have monitored this for about 30 hours now. The device reports every hour, and the where_when has not been updated since it started reporting best_location_type: gps, which it has continued to do so, i.e. best_location_type: gps, now for 30 hourly `events.

I would have thought that where_when, which I believe is when _track.qo is updated, would change every hour based on the configuration listed at the start of this post.

Have I misunderstood the documentation implying that where_when will be updated every hour when heartbeat: true?

Here is the configuration, again, from above:

> {"req": "card.location.track", "start": true, "heartbeat": true, "hours": 1, "sync": true}
{
 "start": true,
 "minutes": 60,
 "heartbeat": true,
 "sync": true
}```

Hi @johnedstone,

What version of the Notecard firmware is your device on? (You can access it with a call to card.version.) I would make sure you’re on the most recent developer release just to make sure you’re not dealing with an older location-related bug.

Rob

Here is the firmware version:

> {"req": "card.version"}
{
 "version": "notecard-5.1.1.16026",
 "device": "dev:xxxxx69623",
 "name": "Blues Wireless Notecard",
 "sku": "NOTE-WBNA-500",
 "board": "1.11",
 "api": 5,
 "body": {
  "org": "Blues Wireless",
  "product": "Notecard",
  "target": "r5",
  "version": "notecard-5.1.1",
  "ver_major": 5,
  "ver_minor": 1,
  "ver_patch": 1,
  "ver_build": 16026,
  "built": "Apr 3 2023 11:04:31"
 }
}

Here is an update on the where_when. Currently it has been updating every hour, which is what I would expect. Nothing has changed on my end, so why it changed from not updating every hour, to now updating every hour is a mystery - at least now it is acting as I would expect. My results, actually, are public, … pushing the data to my own REST API with this JSONata Expression:

{
  "imei_string": $split(device, ":")[1],
  "start_time": 0,
  "uptime": $fromMillis(when * 1000) & ", file: " & file &
  ", where_when: " & $fromMillis(where_when * 1000) &
    ", " & "location(" & best_location_type & "): " &
    $round(where_lat, 8) & "," & $round(where_lon, 8) & ", " &
    $round($lookup(body, "temperature"), 1) & "C/" &
    $round("humidity" in $keys(body) ? $lookup(body, "humidity"):0.0, 1) & "%RH, " &
    "voltage: " & $round($lookup(body, "voltage"), 2),
  "latitude": $string($round(where_lat, 8)),
  "longitude": $string($round(where_lon, 8)),
  "temperature": $string($round($lookup(body, "temperature"), 2)),
  "humidity": $string($round("humidity" in $keys(body) ? $lookup(body, "humidity"):0.0, 2))
}

Here are some results from a curl for this device, grepping for my field uptime:
The first column is the time of the Event, and the 3rd column is the time stamp on the _track.qo file, which is about every hour. And it is reporting gps. So, currently, this device is working as expected. Perhaps earlier, when it was not updated hourly, it couldn’t get a GPS reading. However, it’s position has not changed. So that part is a mystery.

curl -s “https://arduino.johnedstone.net/api/v1/reports/?arduino=14&ordering=-created_at” | python3 -m json.tool |egrep ‘“uptime”:’ |egrep -v health | awk ‘{print $2, $4, $5, $6, $7}’
"2023-09-11T16:09:21.000Z, _track.qo, where_when: 2023-09-11T16:09:21.000Z, location(gps):
"2023-09-11T16:07:31.000Z, _track.qo, where_when: 2023-09-11T15:43:36.000Z, location(gps):
"2023-09-11T15:43:38.000Z, _track.qo, where_when: 2023-09-11T15:43:36.000Z, location(gps):
"2023-09-11T15:13:41.000Z, _track.qo, where_when: 2023-09-11T15:11:08.000Z, location(gps):
"2023-09-11T14:13:37.000Z, _track.qo, where_when: 2023-09-11T14:11:04.000Z, location(gps):
"2023-09-11T13:13:33.000Z, _track.qo, where_when: 2023-09-11T13:11:00.000Z, location(gps):
"2023-09-11T12:13:29.000Z, _track.qo, where_when: 2023-09-11T12:10:56.000Z, location(gps):
"2023-09-11T11:13:25.000Z, _track.qo, where_when: 2023-09-11T11:10:52.000Z, location(gps):
"2023-09-11T10:13:21.000Z, _track.qo, where_when: 2023-09-11T10:10:48.000Z, location(gps):
"2023-09-11T09:13:17.000Z, _track.qo, where_when: 2023-09-11T09:10:44.000Z, location(gps):
"2023-09-11T08:13:13.000Z, _track.qo, where_when: 2023-09-11T08:10:44.000Z, location(gps):
"2023-09-11T07:13:09.000Z, _track.qo, where_when: 2023-09-11T07:10:36.000Z, location(gps):
"2023-09-11T06:13:05.000Z, _track.qo, where_when: 2023-09-11T06:10:32.000Z, location(gps):
"2023-09-11T05:13:01.000Z, _track.qo, where_when: 2023-09-11T05:10:28.000Z, location(gps):
"2023-09-11T04:12:57.000Z, _track.qo, where_when: 2023-09-11T04:10:24.000Z, location(gps):
"2023-09-11T03:12:53.000Z, _track.qo, where_when: 2023-09-11T03:10:20.000Z, location(gps):
"2023-09-11T02:12:49.000Z, _track.qo, where_when: 2023-09-11T02:10:16.000Z, location(gps):
"2023-09-11T01:12:45.000Z, _track.qo, where_when: 2023-09-11T01:10:12.000Z, location(gps):
"2023-09-11T00:12:41.000Z, _track.qo, where_when: 2023-09-11T00:10:08.000Z, location(gps):
"2023-09-10T23:12:37.000Z, _track.qo, where_when: 2023-09-10T23:10:04.000Z, location(gps):
"2023-09-10T22:12:33.000Z, _track.qo, where_when: 2023-09-10T22:10:00.000Z, location(gps):
"2023-09-10T21:12:29.000Z, _track.qo, where_when: 2023-09-10T21:09:56.000Z, location(gps):
"2023-09-10T20:12:25.000Z, _track.qo, where_when: 2023-09-10T20:09:52.000Z, location(gps):
"2023-09-10T19:12:21.000Z, _track.qo, where_when: 2023-09-10T19:09:48.000Z, location(gps):
"2023-09-10T18:12:17.000Z, _track.qo, where_when: 2023-09-10T18:09:44.000Z, location(gps):
"2023-09-10T17:12:13.000Z, _track.qo, where_when: 2023-09-10T17:09:40.000Z, location(gps):
"2023-09-10T16:12:09.000Z, _track.qo, where_when: 2023-09-10T16:09:36.000Z, location(gps):
"2023-09-10T15:12:05.000Z, _track.qo, where_when: 2023-09-10T15:09:32.000Z, location(gps):
"2023-09-10T14:12:01.000Z, _track.qo, where_when: 2023-09-10T14:09:28.000Z, location(gps):
"2023-09-10T13:11:57.000Z, _track.qo, where_when: 2023-09-10T13:09:24.000Z, location(gps):
"2023-09-10T12:11:53.000Z, _track.qo, where_when: 2023-09-10T12:09:20.000Z, location(gps):
"2023-09-10T11:11:49.000Z, _track.qo, where_when: 2023-09-10T11:09:16.000Z, location(gps):
"2023-09-10T10:11:45.000Z, _track.qo, where_when: 2023-09-10T10:09:12.000Z, location(gps):
"2023-09-10T09:11:41.000Z, _track.qo, where_when: 2023-09-10T09:09:12.000Z, location(gps):
"2023-09-10T08:11:37.000Z, _track.qo, where_when: 2023-09-10T08:09:04.000Z, location(gps):
"2023-09-10T07:11:33.000Z, _track.qo, where_when: 2023-09-10T07:09:00.000Z, location(gps):
"2023-09-10T06:11:29.000Z, _track.qo, where_when: 2023-09-10T06:08:52.000Z, location(gps):
"2023-09-10T05:11:25.000Z, _track.qo, where_when: 2023-09-10T05:08:52.000Z, location(gps):
"2023-09-10T04:11:21.000Z, _track.qo, where_when: 2023-09-10T04:08:48.000Z, location(gps):
"2023-09-10T03:11:17.000Z, _track.qo, where_when: 2023-09-10T03:08:44.000Z, location(gps):
"2023-09-10T02:11:13.000Z, _track.qo, where_when: 2023-09-10T02:08:40.000Z, location(gps):
"2023-09-10T01:11:09.000Z, _track.qo, where_when: 2023-09-10T01:08:40.000Z, location(gps):
"2023-09-10T00:11:05.000Z, _track.qo, where_when: 2023-09-10T00:08:32.000Z, location(gps):
"2023-09-09T23:11:01.000Z, _track.qo, where_when: 2023-09-09T23:08:32.000Z, location(gps):
"2023-09-09T22:10:57.000Z, _track.qo, where_when: 2023-09-09T22:08:24.000Z, location(gps):
"2023-09-09T21:10:53.000Z, _track.qo, where_when: 2023-09-09T21:08:24.000Z, location(gps):
"2023-09-09T20:10:49.000Z, _track.qo, where_when: 2023-09-09T20:08:12.000Z, location(gps):
"2023-09-09T19:10:45.000Z, _track.qo, where_when: 2023-09-09T19:08:12.000Z, location(gps):
"2023-09-09T18:10:41.000Z, _track.qo, where_when: 2023-09-09T18:08:08.000Z, location(gps):

Just noting that

  • this device was last moved on 2023-09-11T17:05:06.000Z and the most recent event timestamp is 2023-09-25T13:50:44.000Z`
  • the file _track.qo was last updated on 2023-09-16T23:39:56.000Z
  • the device switched reporting best_location from gps to tower on 2023-09-20T00:09:36.000Z

The expected behavior, according to the documentation, assuming, when the device hasn’t moved, according to the configuration listed above should be

  • every hour it should get the gps location
  • update _track.qo
  • and report best location as gps

Note: the device hasn’t moved, it was able to get the gps location, so I’m not sure what is going on. I can only guess, that after a certain interval, “aware” that it hasn’t moved it stops updating _track.qo and then best_location “notices” that _track.qo has an old timestamp, and reports tower

Details

$ for ea in {1..8};do curl -s "https://arduino.johnedstone.net/api/v1/reports/?arduino=14&ordering=-created_at&page=${ea}" | python3 -m json.tool |egrep '"uptime":' |egrep -v health | awk '{print $2, $4, $5, $6, $7, $8}';done 
"2023-09-25T13:50:44.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(tower): 39.8800575,-86.08260547,
"2023-09-25T12:50:36.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(tower): 39.8800575,-86.08260547,
...
"2023-09-20T01:39:20.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(tower): 39.8800575,-86.08260547,
"2023-09-20T00:39:11.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(tower): 39.8800575,-86.08260547,
"2023-09-20T00:09:36.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(tower): 39.8800575,-86.08260547,
"2023-09-19T23:09:28.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-19T22:09:20.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-19T21:09:10.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-19T20:45:16.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-19T19:45:08.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-19T19:13:16.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-19T18:13:06.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-19T17:45:28.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(gps): 39.8800575,-86.08260547,
...
"2023-09-17T04:39:44.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-17T03:39:36.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-17T02:39:28.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-17T01:39:20.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-17T00:39:11.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-17T00:21:24.000Z, _track.qo, where_when: 2023-09-16T23:39:56.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-16T23:39:56.000Z, _track.qo, where_when: 2023-09-16T22:39:48.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-16T22:39:48.000Z, _track.qo, where_when: 2023-09-16T21:39:40.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-16T21:39:40.000Z, _track.qo, where_when: 2023-09-16T20:39:32.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-16T20:39:32.000Z, _track.qo, where_when: 2023-09-16T19:39:24.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-16T19:39:24.000Z, _track.qo, where_when: 2023-09-16T18:39:16.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-16T18:39:16.000Z, _track.qo, where_when: 2023-09-16T17:39:08.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-16T17:39:08.000Z, _track.qo, where_when: 2023-09-16T16:39:00.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-16T16:39:00.000Z, _track.qo, where_when: 2023-09-16T15:38:52.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-16T15:38:52.000Z, _track.qo, where_when: 2023-09-16T14:38:41.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-16T14:38:42.000Z, _track.qo, where_when: 2023-09-16T14:38:41.000Z, location(gps): 39.8800575,-86.08260547,
"2023-09-16T12:11:00.000Z, _track.qo, where_when: 2023-09-15T19:09:08.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-16T11:10:52.000Z, _track.qo, where_when: 2023-09-15T19:09:08.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-16T10:10:44.000Z, _track.qo, where_when: 2023-09-15T19:09:08.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-16T09:10:36.000Z, _track.qo, where_when: 2023-09-15T19:09:08.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-16T08:10:28.000Z, _track.qo, where_when: 2023-09-15T19:09:08.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-16T06:10:12.000Z, _track.qo, where_when: 2023-09-15T19:09:08.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-16T05:10:04.000Z, _track.qo, where_when: 2023-09-15T19:09:08.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-16T04:09:56.000Z, _track.qo, where_when: 2023-09-15T19:09:08.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-16T03:09:48.000Z, _track.qo, where_when: 2023-09-15T19:09:08.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-16T02:09:40.000Z, _track.qo, where_when: 2023-09-15T19:09:08.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-16T01:09:32.000Z, _track.qo, where_when: 2023-09-15T19:09:08.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-16T00:09:24.000Z, _track.qo, where_when: 2023-09-15T19:09:08.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-15T23:09:16.000Z, _track.qo, where_when: 2023-09-15T19:09:08.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-15T22:09:09.000Z, _track.qo, where_when: 2023-09-15T19:09:08.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-15T21:52:12.000Z, _track.qo, where_when: 2023-09-15T19:09:08.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-15T20:52:04.000Z, _track.qo, where_when: 2023-09-15T19:09:08.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-15T19:51:57.000Z, _track.qo, where_when: 2023-09-15T19:09:08.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-15T19:09:08.000Z, _track.qo, where_when: 2023-09-15T18:09:00.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-15T18:09:00.000Z, _track.qo, where_when: 2023-09-15T17:08:48.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-15T17:08:49.000Z, _track.qo, where_when: 2023-09-15T17:08:48.000Z, location(gps): 39.8801575,-86.08255859,
"2023-09-15T16:39:36.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-15T15:39:28.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-15T14:39:19.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-15T13:39:10.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-15T13:11:43.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-15T12:11:35.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-15T11:11:28.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-15T10:11:19.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-15T09:11:11.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-15T08:11:03.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-15T07:10:55.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-15T06:10:47.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-15T05:10:39.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-15T04:10:31.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-15T03:10:23.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-15T02:10:15.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-15T01:10:07.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-15T00:09:59.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T23:09:51.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T22:09:43.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T21:09:35.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T20:09:27.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T19:09:19.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T18:09:10.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T17:46:42.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T16:47:11.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T15:47:03.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T14:46:55.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T13:46:47.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T12:46:39.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T11:46:31.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T10:46:23.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T09:46:15.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T08:46:07.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T07:45:59.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T06:45:51.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T05:45:43.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T04:45:35.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T03:45:27.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T02:45:19.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T01:45:11.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-14T00:45:03.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T23:44:55.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T22:44:47.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T21:44:39.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T20:44:31.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T19:44:23.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T18:44:16.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T18:11:43.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T17:11:35.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T16:11:27.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T15:11:20.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T14:11:11.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T13:11:03.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T12:10:55.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T11:10:47.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T10:10:39.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T09:10:31.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T08:10:23.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T07:10:15.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T06:10:07.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T05:09:59.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T04:09:51.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T03:09:43.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T02:09:35.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T01:09:27.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-13T00:09:19.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-12T23:09:09.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-12T22:38:31.000Z, _track.qo, where_when: 2023-09-12T22:38:29.000Z, location(gps): 39.8799575,-86.08241016,
"2023-09-12T22:11:19.000Z, _track.qo, where_when: 2023-09-12T20:18:43.000Z, location(gps): 39.8801375,-86.08222266,
"2023-09-12T21:54:23.000Z, _track.qo, where_when: 2023-09-12T20:18:43.000Z, location(gps): 39.8801375,-86.08222266,
"2023-09-12T20:54:15.000Z, _track.qo, where_when: 2023-09-12T20:18:43.000Z, location(gps): 39.8801375,-86.08222266,
"2023-09-12T20:18:43.000Z, _track.qo, where_when: 2023-09-12T19:18:35.000Z, location(gps): 39.8801375,-86.08222266,
"2023-09-12T19:18:35.000Z, _track.qo, where_when: 2023-09-12T18:18:25.000Z, location(gps): 39.8801375,-86.08222266,
"2023-09-12T18:18:26.000Z, _track.qo, where_when: 2023-09-12T18:18:25.000Z, location(gps): 39.8801375,-86.08222266,
"2023-09-12T17:35:59.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T16:35:51.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T15:35:44.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T14:39:27.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T13:39:19.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T12:39:10.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T12:10:47.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T11:10:39.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T10:10:31.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T09:10:23.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T08:10:15.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T07:10:07.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T06:09:59.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T05:09:51.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T04:09:43.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T03:09:35.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T02:09:27.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T01:09:19.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-12T00:09:10.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-11T23:39:19.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-11T22:39:10.000Z, _track.qo, where_when: 2023-09-11T22:11:43.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-11T22:11:43.000Z, _track.qo, where_when: 2023-09-11T21:11:35.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-11T21:11:35.000Z, _track.qo, where_when: 2023-09-11T20:11:27.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-11T20:11:27.000Z, _track.qo, where_when: 2023-09-11T19:11:19.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-11T19:11:19.000Z, _track.qo, where_when: 2023-09-11T18:11:11.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-11T18:11:11.000Z, _track.qo, where_when: 2023-09-11T17:11:03.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-11T17:11:03.000Z, _track.qo, where_when: 2023-09-11T17:11:03.000Z, location(gps): 39.8798175,-86.08214453,
"2023-09-11T17:09:24.000Z, _track.qo, where_when: 2023-09-11T17:04:24.000Z, location(gps): 39.8800375,-86.08243359,
"2023-09-11T17:05:07.000Z, _track.qo, where_when: 2023-09-11T17:04:24.000Z, location(gps): 39.8800375,-86.08243359,
"2023-09-11T17:04:26.000Z, _track.qo, where_when: 2023-09-11T17:04:24.000Z, location(gps): 39.8800375,-86.08243359,
"2023-09-11T16:09:21.000Z, _track.qo, where_when: 2023-09-11T16:09:21.000Z, location(gps): 39.8800375,-86.08243359,
"2023-09-11T16:07:31.000Z, _track.qo, where_when: 2023-09-11T15:43:36.000Z, location(gps): 39.8799475,-86.08253516,
"2023-09-11T15:43:38.000Z, _track.qo, where_when: 2023-09-11T15:43:36.000Z, location(gps): 39.8799475,-86.08253516,
"2023-09-11T15:13:41.000Z, _track.qo, where_when: 2023-09-11T15:11:08.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-11T14:13:37.000Z, _track.qo, where_when: 2023-09-11T14:11:04.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-11T13:13:33.000Z, _track.qo, where_when: 2023-09-11T13:11:00.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-11T12:13:29.000Z, _track.qo, where_when: 2023-09-11T12:10:56.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-11T11:13:25.000Z, _track.qo, where_when: 2023-09-11T11:10:52.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-11T10:13:21.000Z, _track.qo, where_when: 2023-09-11T10:10:48.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-11T09:13:17.000Z, _track.qo, where_when: 2023-09-11T09:10:44.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-11T08:13:13.000Z, _track.qo, where_when: 2023-09-11T08:10:44.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-11T07:13:09.000Z, _track.qo, where_when: 2023-09-11T07:10:36.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-11T06:13:05.000Z, _track.qo, where_when: 2023-09-11T06:10:32.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-11T05:13:01.000Z, _track.qo, where_when: 2023-09-11T05:10:28.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-11T04:12:57.000Z, _track.qo, where_when: 2023-09-11T04:10:24.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-11T03:12:53.000Z, _track.qo, where_when: 2023-09-11T03:10:20.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-11T02:12:49.000Z, _track.qo, where_when: 2023-09-11T02:10:16.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-11T01:12:45.000Z, _track.qo, where_when: 2023-09-11T01:10:12.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-11T00:12:41.000Z, _track.qo, where_when: 2023-09-11T00:10:08.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T23:12:37.000Z, _track.qo, where_when: 2023-09-10T23:10:04.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T22:12:33.000Z, _track.qo, where_when: 2023-09-10T22:10:00.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T21:12:29.000Z, _track.qo, where_when: 2023-09-10T21:09:56.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T20:12:25.000Z, _track.qo, where_when: 2023-09-10T20:09:52.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T19:12:21.000Z, _track.qo, where_when: 2023-09-10T19:09:48.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T18:12:17.000Z, _track.qo, where_when: 2023-09-10T18:09:44.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T17:12:13.000Z, _track.qo, where_when: 2023-09-10T17:09:40.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T16:12:09.000Z, _track.qo, where_when: 2023-09-10T16:09:36.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T15:12:05.000Z, _track.qo, where_when: 2023-09-10T15:09:32.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T14:12:01.000Z, _track.qo, where_when: 2023-09-10T14:09:28.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T13:11:57.000Z, _track.qo, where_when: 2023-09-10T13:09:24.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T12:11:53.000Z, _track.qo, where_when: 2023-09-10T12:09:20.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T11:11:49.000Z, _track.qo, where_when: 2023-09-10T11:09:16.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T10:11:45.000Z, _track.qo, where_when: 2023-09-10T10:09:12.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T09:11:41.000Z, _track.qo, where_when: 2023-09-10T09:09:12.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T08:11:37.000Z, _track.qo, where_when: 2023-09-10T08:09:04.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T07:11:33.000Z, _track.qo, where_when: 2023-09-10T07:09:00.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T06:11:29.000Z, _track.qo, where_when: 2023-09-10T06:08:52.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T05:11:25.000Z, _track.qo, where_when: 2023-09-10T05:08:52.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T04:11:21.000Z, _track.qo, where_when: 2023-09-10T04:08:48.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T03:11:17.000Z, _track.qo, where_when: 2023-09-10T03:08:44.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T02:11:13.000Z, _track.qo, where_when: 2023-09-10T02:08:40.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T01:11:09.000Z, _track.qo, where_when: 2023-09-10T01:08:40.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-10T00:11:05.000Z, _track.qo, where_when: 2023-09-10T00:08:32.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-09T23:11:01.000Z, _track.qo, where_when: 2023-09-09T23:08:32.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-09T22:10:57.000Z, _track.qo, where_when: 2023-09-09T22:08:24.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-09T21:10:53.000Z, _track.qo, where_when: 2023-09-09T21:08:24.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-09T20:10:49.000Z, _track.qo, where_when: 2023-09-09T20:08:12.000Z, location(gps): 39.8797475,-86.08248047,
"2023-09-09T19:10:45.000Z, _track.qo, where_when: 2023-09-09T19:08:12.000Z, location(gps): 39.8797475,-86.08248047,
$ 
$ for ea in {2..9};do curl -s "https://arduino.johnedstone.net/api/v1/reports/?arduino=14&ordering=-created_at&page=${ea}" | python3 -m json.tool |egrep -i usb;done
            "uptime": "2023-09-11T17:05:06.000Z, file: _health.qo, why: USB power ON {usb-enabled}, location(gps): 39.8800375,-86.08243359, voltage: 5.21",
            "uptime": "2023-09-11T17:04:24.000Z, file: _health.qo, why: USB power OFF {usb-disabled}, location(gps): 39.8800375,-86.08243359, voltage: 4.13",
            "uptime": "2023-09-11T16:07:29.000Z, file: _health.qo, why: USB power ON {usb-enabled}, location(gps): 39.8799475,-86.08253516, voltage: 4.72",