Hi, here is a Particle threads tutorial link
and here is part of My Boron code with threadFunction()
#include "Particle.h"
extern void startupFunction();
Thread *thread;
os_mutex_t mutex;
void startupFunction(){
os_mutex_create(&mutex);
}
SYSTEM_THREAD(ENABLED);
STARTUP(startupFunction());
char bat_sig_data[256] = "{\"charg\":%f,\"bat\":%f,\"rat\":%d,\"strengthVal\":%f,\"qualityVal\":%f,\"qualityPercentage\":%f,\"strengthPercentage\":%.02f}";
unsigned long interval = 0;
void setup() {
SYSTEM_MODE(AUTOMATIC);
Serial.begin();
os_mutex_lock(mutex);
thread = new Thread("threadFunction", threadFunction);
}
void loop() {
sone other stuff running in loop
.................................
.................................
os_mutex_unlock(mutex);
}
void threadFunction() {
while(true) {
os_mutex_lock(mutex);
if (millis() - interval > 300000) {
interval = millis();
FuelGauge fuel;
CellularSignal sig = Cellular.RSSI();
int rat = sig.getAccessTechnology();
float strengthVal = floorf(sig.getStrengthValue()*100)/100;
float strengthPercentage = floorf(sig.getStrength()*100)/100;
float qualityVal = floorf(sig.getQualityValue()*100)/100;
float qualityPercentage = floorf(sig.getQuality()*100)/100;
float bat = floorf(fuel.getVCell()*100)/100;
float charg = floorf(fuel.getSoC()*100)/100;
memset(bat_sig_data, 0, sizeof(bat_sig_data));
JSONBufferWriter writer(bat_sig_data, sizeof(bat_sig_data) - 1);
writer.beginObject();
writer.name("charg").value(charg);
writer.name("bat").value(bat);
writer.name("rat").value(rat);
writer.name("strengthVal").value(strengthVal);
writer.name("qualityVal").value(qualityVal);
writer.name("qualityPercentage").value(qualityPercentage);
writer.name("strengthPercentage").value(strengthPercentage);
writer.endObject();
Particle.publish("All_sign_data", bat_sig_data, 60, PRIVATE);
}
}
}
I’m not sure if is gonna work for Electron also I didn’t tested yet with my Boron, but will give you some idea how to deal with Threads.
Should Publish data from threadFunction() every 5 min