E' possibile registrarsi con un profilo gratuito per le prove.
Esempio di pubblicazione dati ThingSpeak |
Per prima cosa si deve registrare il proprio canale a cui sara' associata una API Key per la scrittura dei dati
in seguito si devono impostare le variabili da visualizzare nei grafici
per utilizzare ThingSpeak nel firmware si deve modificare il programma (vedi righe evidenziate in giallo) importando la libreria, impostando poi il proprio numero di canale e la WriteAPIKey, inizializzare il client e poi pubblicare i valori (le variabili non hanno un nome ma sono indicate con un numero progressivo nello stesso ordine con cui sono state configurate nella schermata web)
------------------------------------
#include "cellular_hal.h"
#include "ThingSpeak/ThingSpeak.h"
STARTUP(cellular_credentials_set("ibox.tim.it", "", "", NULL));
int status;
int counter = 0;
double batteria = 0.0;
int sleepInterval = 10; //Specify minutes between each reading sent
int analogPin0 = A0;
double mm = 0.0;
/* Thingspeak */
TCPClient client;
unsigned long myChannelNumber = 203125;
const char * myWriteAPIKey = "4MHFO3D4XXXXXXXX";
void fuel()
{
FuelGauge fuel;
batteria = static_cast<double>(fuel.getSoC());
mm = analogRead(analogPin0);
}
void connect_status()
{
RGB.control(false);
Cellular.on();
Cellular.connect();
delay(10000);
Particle.connect();
//waitUntil(Particle.connected);
delay(20000);
Particle.connect();
while(status < 3)//send one reading
{
if(Cellular.ready() && Particle.connected() == true)
{
delay(10000);
fuel();
ThingSpeak.setField(1, (float)batteria);
ThingSpeak.setField(2, (float)mm);
ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if(Particle.publish("batteria", "batteria") == true)
{
delay(10000);
status++;
}
else if(Particle.publish("batteria", "batteria") == false)
{
Cellular.on();
Cellular.connect();
delay(20000);
Particle.connect();
status=status -1;
delay(20000);
}
}
else
{
Cellular.on();
Cellular.connect();
delay(10000);
Particle.connect();
status=0;
delay(10000);
}
}
}
void setup() {
Time.zone(+1);
RGB.control(false);
Particle.variable("batteria", &batteria, DOUBLE);
ThingSpeak.begin(client);
}
void loop() {
RGB.control(false);
if(counter == 0)
{
delay(5000);
fuel();
Particle.publish("batteria", "batteria");
delay(5000);
counter =1;
}
System.sleep(D0, RISING, sleepInterval * 60); //Puts device in stop mode
delay(1500);
status=0;
connect_status();
}