Getting Device Location GPS to appear in the data and dashboard

How do I see actual device location with the AF board? I see tower location but that’s it. I am just running the stock demo at the moment for testing and experimentation.

Good GPS coverage.

Thanks

Hi @patmolloy,

The GPS module is not enabled by default (to conserve power), so I’d recommend taking a look at our GPS docs for the full details: Time & Location Requests - Blues Wireless Developers

Cheers,
Rob

Thanks! I don’t know how I failed to see that in the first place - apologies.

Pat

1 Like

No worries, it’s what we are here for! (And tells me we need to make our GPS docs a little more visible :slight_smile:)

I’m struggling … I still cannot get card location to play nice … this is the code … clearly I have something wrong …

#include <Notecard.h>
#include <SparkFunBME280.h>

#define serialDebug Serial

#define productUID "uk.org.digicatapult.pat.molloy:sparkfunqwiic"

Notecard notecard;
BME280 bmeSensor;

void setup() {
  // put your setup code here, to run once:

  delay(2500);
  serialDebug.begin(115200);

  notecard.begin();
  notecard.setDebugOutputStream(serialDebug);

  J *req = notecard.newRequest("hub.set");
  JAddStringToObject(req, "product", productUID);
  JAddStringToObject(req, "mode", "periodic");
  JAddNumberToObject(req, "seconds", 900);
    
  notecard.sendRequest(req);

  J *req1 = notecard.newRequest("card.location.mode");
  JAddStringToObject(req1, "mode", "continuous");
  notecard.sendRequest(req1);
  


  
if (bmeSensor.beginI2C() == false) {
   serialDebug.println("Could not find a valid BME280 sensor...");
} else {
   serialDebug.println("BME280 Connected...");
}


}

void loop() {
  // put your main code here, to run repeatedly:

serialDebug.print("Temperature = ");
serialDebug.print(bmeSensor.readTempC());
serialDebug.println(" *C");
serialDebug.print("Humidity = ");
serialDebug.print(bmeSensor.readFloatHumidity());
serialDebug.println(" %");

J *req = notecard.newRequest("note.add");
if (req != NULL) {
    JAddStringToObject(req, "file", "sensors.qo");
    JAddBoolToObject(req, "sync", true);
    J *body = JCreateObject();
    if (body != NULL) {
        JAddNumberToObject(body, "temp", bmeSensor.readTempC());
        JAddNumberToObject(body, "humidity", bmeSensor.readFloatHumidity());

        JAddItemToObject(req, "body", body);
    }
    notecard.sendRequest(req);

    notecard.newRequest("card.location");
    notecard.sendRequest(req);
    

}

delay(60000*15); // 15 minutes
}

This is what appears on the SerialDebug output … it looks promising to start with but then gps-inactive for ever more …

I admit I am confused about the periodic/continuous interplay and how that related to the delay(60000) statement!

There is a strong GPS signal, I have verified.

20:53:54.083 -> ets Jul 29 2019 12:21:46
20:53:54.083 -> 
20:53:54.083 -> rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
20:53:54.083 -> configsip: 0, SPIWP:0xee
20:53:54.083 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
20:53:54.083 -> mode:DIO, clock div:1
20:53:54.083 -> load:0x3fff0018,len:4
20:53:54.083 -> load:0x3fff001c,len:1044
20:53:54.083 -> load:0x40078000,len:8896
20:53:54.083 -> load:0x40080400,len:5816
20:53:54.083 -> entry 0x400806ac
20:53:57.020 -> {"req":"hub.set","product":"uk.org.digicatapult.pat.molloy:sparkfunqwiic","mode":"periodic","seconds":900,"body":{"agent":"note-arduino","compiler":"gcc 5.2.0","req_interface":"i2c","cpu_name":"esp32"}}
20:53:57.254 -> {}
20:53:57.254 -> {"req":"card.location.mode","mode":"continuous","body":{"agent":"note-arduino","compiler":"gcc 5.2.0","req_interface":"i2c","cpu_name":"esp32"}}
20:53:57.441 -> {"seconds":60,"mode":"continuous"}
20:53:57.441 -> BME280 Connected...
20:53:57.441 -> Temperature = 26.14 *C
20:53:57.441 -> Humidity = 45.13 %
20:53:57.441 -> {"req":"note.add","file":"sensors.qo","sync":true,"body":{"temp":26.14,"humidity":45.126}}
20:53:57.581 -> {"total":2}
20:53:57.581 -> {"req":"card.location","body":{"agent":"note-arduino","compiler":"gcc 5.2.0","req_interface":"i2c","cpu_name":"esp32"}}
20:53:57.721 -> {"status":"GPS inactive {gps-inactive}","mode":"continuous"}
20:54:57.735 -> Temperature = 26.16 *C
20:54:57.735 -> Humidity = 45.89 %
20:54:57.735 -> {"req":"note.add","file":"sensors.qo","sync":true,"body":{"temp":26.16,"humidity":45.8906}}
20:54:57.876 -> {"total":1}
20:54:57.876 -> {"req":"card.location","body":{"agent":"note-arduino","compiler":"gcc 5.2.0","req_interface":"i2c","cpu_name":"esp32"}}
20:54:58.015 -> {"status":"GPS search (2 sec, 0/0 dB SNR, 0/0 sats) {gps-active}","mode":"continuous"}
20:55:58.007 -> Temperature = 26.41 *C
20:55:58.007 -> Humidity = 44.90 %
20:55:58.007 -> {"req":"note.add","file":"sensors.qo","sync":true,"body":{"temp":26.41,"humidity":44.9014}}
20:55:58.146 -> {"total":1}
20:55:58.146 -> {"req":"card.location","body":{"agent":"note-arduino","compiler":"gcc 5.2.0","req_interface":"i2c","cpu_name":"esp32"}}
20:55:58.285 -> {"status":"GPS inactive {gps-inactive}","mode":"continuous"}
20:56:58.301 -> Temperature = 26.60 *C
20:56:58.301 -> Humidity = 44.20 %
20:56:58.301 -> {"req":"note.add","file":"sensors.qo","sync":true,"body":{"temp":26.6,"humidity":44.2041}}
20:56:58.440 -> {"total":1}
20:56:58.440 -> {"req":"card.location","body":{"agent":"note-arduino","compiler":"gcc 5.2.0","req_interface":"i2c","cpu_name":"esp32"}}
20:56:58.580 -> {"status":"GPS inactive {gps-inactive}","mode":"continuous"}

I lied … a little later I saw this … (see **) but still no card location in the backend.

20:59:59.256 -> {"req":"card.location","body":{"agent":"note-arduino","compiler":"gcc 5.2.0","req_interface":"i2c","cpu_name":"esp32"}}
**20:59:59.411 -> {"status":"GPS started {gps-active} {gps-active}","mode":"continuous"}**
21:00:59.400 -> Temperature = 26.77 *C
21:00:59.400 -> Humidity = 44.11 %
21:00:59.400 -> {"req":"note.add","file":"sensors.qo","sync":true,"body":{"temp":26.77,"humidity":44.1143}}
21:00:59.540 -> {"total":1}
21:00:59.540 -> {"req":"card.location","body":{"agent":"note-arduino","compiler":"gcc 5.2.0","req_interface":"i2c","cpu_name":"esp32"}}
21:00:59.680 -> {"status":"GPS inactive {gps-inactive}","mode":"continuous"}
21:01:59.692 -> Temperature = 26.84 *C
21:01:59.692 -> Humidity = 44.48 %
21:01:59.692 -> {"req":"note.add","file":"sensors.qo","sync":true,"body":{"temp":26.84,"humidity":44.4785}}
21:01:59.789 -> {"total":1}
21:01:59.789 -> {"req":"card.location","body":{"agent":"note-arduino","compiler":"gcc 5.2.0","req_interface":"i2c","cpu_name":"esp32"}}
21:01:59.943 -> {"status":"GPS inactive {gps-inactive}","mode":"continuous"}