Skip to content

Instantly share code, notes, and snippets.

@tjvantoll
Last active April 4, 2024 13:25
Show Gist options
  • Save tjvantoll/9667e36d0053bd5d8109b04a97013863 to your computer and use it in GitHub Desktop.
Save tjvantoll/9667e36d0053bd5d8109b04a97013863 to your computer and use it in GitHub Desktop.
Blues Aggressive Asset Tracker (sync one reading every minute)
#include <Arduino.h>
#include <Notecard.h>
#define usbSerial Serial
#define PRODUCT_UID "com.blues.tvantoll:test"
Notecard notecard;
void setup()
{
static const size_t MAX_SERIAL_WAIT_MS = 5000;
size_t begin_serial_wait_ms = ::millis();
// Wait for the serial port to become available
while (!usbSerial && (MAX_SERIAL_WAIT_MS > (::millis() - begin_serial_wait_ms)));
usbSerial.begin(115200);
notecard.setDebugOutputStream(usbSerial);
notecard.begin();
if (J *req = notecard.newRequest("card.version"))
{
J* rsp = notecard.requestAndResponse(req);
usbSerial.print("Notecard SKU: ");
usbSerial.println(JGetString(rsp, "sku"));
notecard.deleteResponse(rsp);
}
if (J *req = notecard.newRequest("hub.set"))
{
JAddStringToObject(req, "product", PRODUCT_UID);
JAddStringToObject(req, "mode", "continuous");
JAddNumberToObject(req, "outbound", 1);
JAddNumberToObject(req, "inbound", 60*4);
notecard.sendRequest(req);
}
if (J *req = notecard.newRequest("card.aux.serial"))
{
JAddStringToObject(req, "mode", "gps");
notecard.sendRequest(req);
}
if (J *req = notecard.newRequest("card.location.mode"))
{
JAddStringToObject(req, "mode", "periodic");
JAddNumberToObject(req, "seconds", 60);
notecard.sendRequest(req);
}
if (J *req = notecard.newRequest("card.location.track"))
{
JAddBoolToObject(req, "start", true);
JAddBoolToObject(req, "heartbeat", true);
JAddNumberToObject(req, "hours", 24);
notecard.sendRequest(req);
}
}
float getTemperature()
{
float temp = 0;
J *req = notecard.newRequest("card.temp");
if (J *rsp = notecard.requestAndResponse(req))
{
temp = JGetNumber(rsp, "value");
notecard.deleteResponse(rsp);
}
return temp;
}
float getVoltage()
{
float temp = 0;
J *req = notecard.newRequest("card.voltage");
if (J *rsp = notecard.requestAndResponse(req))
{
temp = JGetNumber(rsp, "value");
notecard.deleteResponse(rsp);
}
return temp;
}
void loop()
{
/*
float lat = 0;
float lon = 0;
{
J *req = notecard.newRequest("card.location");
if (J *rsp = notecard.requestAndResponse(req))
{
lat = JGetNumber(rsp, "lat");
lon = JGetNumber(rsp, "lon");
notecard.deleteResponse(rsp);
}
}
if (lat == 0)
{
usbSerial.println("No GPS fix");
delay(1000);
return;
}
float temperature = getTemperature();
usbSerial.print("Temperature = ");
usbSerial.print(temperature);
usbSerial.println(" *C");
float voltage = getVoltage();
usbSerial.print("Voltage = ");
usbSerial.println(voltage);
if (J *req = notecard.newRequest("note.add"))
{
JAddStringToObject(req, "file", "data.qo");
JAddBoolToObject(req, "sync", true);
J *body = JAddObjectToObject(req, "body");
JAddNumberToObject(body, "temperature", temperature);
JAddNumberToObject(body, "voltage", voltage);
notecard.sendRequest(req);
}
int sensorIntervalMinutes = 1;
usbSerial.print("Delaying ");
usbSerial.print(sensorIntervalMinutes);
usbSerial.println(" minutes");
delay(sensorIntervalMinutes * 60 * 1000);
*/
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment