New: the AI firewall watches the whole platform and explains each incident in plain words. See how it works

Jason W.

jason_fw

@jasonwhite18 · Joined April 2025

Newcomer

Embedded developer · logistics

Topics
10
Replies
48
Points
0
Newcomer10 points to Member

Forum Replies Created

Viewing 15 posts – 1 through 15 (of 48 total)

Renamed lon to lng and switched to snprintf, markers showed up straight away and in the right bays, not stacked in one spot. Also took Tyler’s advice, 5 s was me being lazy, now 30 s moving / 10 min parked with a speed check. Kevin, I’m only showing latest positions for now.

♥ 0

Neither contractor, sort of. The NEO-6M already gives you both. The $GPRMC sentence has speed over ground (in knots) and course over ground, and the receiver gets speed from Doppler, which is far better than differencing two fixes 30 s apart. Two fixes 30 s apart will show a tractor that went down and back an aisle as standing still.

With TinyGPS++ it’s two lines:

float kmh = gps.speed.kmph();      // already converted from knots
float hdg = gps.course.deg();
snprintf(buf, sizeof buf,
  "{"lat":%.6f,"lng":%.6f,"speed_kmh":%.1f,"course_deg":%.0f}",
  gps.location.lat(), gps.location.lng(), kmh, hdg);

Send them as numbers in the same message as lat/lng. Same message, same cost, so @roberts.r it’s a few bytes more, not another message. Then an alarm rule on speed_kmh > 15 with a debounce of 2 readings so one GPS jump doesn’t fire it.

If you ever do need something computed after the fact (distance per shift, say), that goes in the root flow before Save telemetry as a derived key.

Accepted solution♥ 7
Viewing 15 posts – 1 through 15 (of 48 total)