Re the simple Particle-RPi test program: here’s my latest try (eliminating most C++ crap).
#include
#include
#define SAFE_UID 1000 // i.e., the "pi" user built into RPi Linux
#define MY_PATH "/home/pi"
char Rstr[100];
int Ct = 0;
void setup() {
Particle.variable("dhpi1v", Rstr, STRING);
Particle.function("dhpi1f", pifunc);
}
void loop() {
delay(10); // kludge to keep the empty loop from being a cpu hog
}
int pifunc(String cmd) {
int arg = cmd.toInt();
char file[100];
FILE *fp;
++Ct;
sprintf(Rstr, "Call count = %d, Arg = %d\n", Ct, arg);
sprintf(file, "%s/pi_out.txt", MY_PATH);
fp = fopen(file, "w");
fputs(Rstr, fp);
fclose(fp);
chown(file, SAFE_UID, SAFE_UID); // Works.
return Ct;
}