Did something fundamentally change on the Web IDE as compared to the Desktop IDE?

I only wanted to change the value of one single parameters in a Photon application that I developed two years ago and that I have been using without any problems since then.
When I verified the software in the Web IDE I received all kind of messages that seems to indicate that I made some declaration mistakes, but I am not aware of that. I did’nt touch anything else than just the parameter that I wanted to change…
What’s more: I also loaded the software into the Destop IDE (Atom running on W10) and ran “Compile in the cloud”. Guess what: that was successfull!
Now, I prefer using the Web IDE.
But has something dramatically changed in the Web IDE that I am not aware of???
What can I do?

Below are the error messages that I got using the WebIDE, just to show the kind of messages that I received: they all seem to indicate declaration issues.

rg20180213gk.ino:54:5: 'int alarm' redeclared as different kind of symbol
error
rg20180213gk.ino:182:18: ISO C++ forbids comparison between pointer and integer [-fpermissive]
error
rg20180213gk.ino:270:18: ISO C++ forbids comparison between pointer and integer [-fpermissive]
error
rg20180213gk.ino:304:29: no matching function for call to 'String(unsigned int (&)(unsigned int))'
error
rg20180213gk.ino:304:29: invalid conversion from 'unsigned int (*)(unsigned int)' to 'long unsigned int' [-fpermissive]
error
rg20180213gk.ino:304:29: invalid conversion from 'unsigned int (*)(unsigned int)' to 'long int' [-fpermissive]
error
rg20180213gk.ino:304:29: invalid conversion from 'unsigned int (*)(unsigned int)' to 'unsigned int' [-fpermissive]
error
rg20180213gk.ino:304:29: invalid conversion from 'unsigned int (*)(unsigned int)' to 'int' [-fpermissive]
error
rg20180213gk.ino:304:29: invalid conversion from 'unsigned int (*)(unsigned int)' to 'unsigned char' [-fpermissive]
error
rg20180213gk.ino:304:29: invalid conversion from 'unsigned int (*)(unsigned int)' to 'char' [-fpermissive]
error
rg20180213gk.ino:304:29: conversion from 'unsigned int(unsigned int)' to 'StringSumHelper' is ambiguous
error
rg20180213gk.ino:304:29: invalid conversion from 'unsigned int (*)(unsigned int)' to 'long unsigned int' [-fpermissive]
error
rg20180213gk.ino:304:29: invalid conversion from 'unsigned int (*)(unsigned int)' to 'long int' [-fpermissive]
error
rg20180213gk.ino:304:29: invalid conversion from 'unsigned int (*)(unsigned int)' to 'unsigned int' [-fpermissive]
error
rg20180213gk.ino:304:29: invalid conversion from 'unsigned int (*)(unsigned int)' to 'int' [-fpermissive]
error
rg20180213gk.ino:304:29: invalid conversion from 'unsigned int (*)(unsigned int)' to 'unsigned char' [-fpermissive]
error
rg20180213gk.ino:304:29: invalid conversion from 'unsigned int (*)(unsigned int)' to 'char' [-fpermissive]
error
rg20180213gk.ino:304:29: could not convert 'alarm' from 'unsigned int(unsigned int)' to 'String&&'
error
rg20180213gk.ino:304:29: could not convert 'alarm' from 'unsigned int(unsigned int)' to 'const String&'
error
rg20180213gk.ino:349:11: assignment of function 'unsigned int alarm(unsigned int)'
error
rg20180213gk.ino:355:11: assignment of function 'unsigned int alarm(unsigned int)'
error
rg20180213gk.ino:349:11: cannot convert 'int' to 'unsigned int(unsigned int)' in assignment
error
rg20180213gk.ino:355:11: cannot convert 'int' to 'unsigned int(unsigned int)' in assignment

If you can share a SHARE THIS REVISION link we might be able to help better.

Hi Scruff, below is the code.
As I said, the only thing I changed is this value: int aantDown = 62301;
Two years ago this software could successfully be compiled through the Web IDE, and it is still working.

// Basis is: RG20171225GK.INO
// Deze versie hoort bij de hardwareversie waarbij de vier kleine rolgordijnen en het grote rolgordijn in principe apart kunnen worden aangestuurd.
// In deze versie worden beiden uitsluitend synchroon bedreven: beiden bewegen tegelijk omlaag en omhoog, met dien verstande dat de beweging omhoog voor elk van de gordijnen wordt gestopt bij het bekrachtigen van de met dat betreffende gordijn overeenkomende eindschakelaar.
// Op deze wijze worden verschillen in "slip" en "uitzakken" tussen de beide gordijnen geëlimineerd: beide gordijnen starten ALTIJD vanuit een gedefinieerde "hoog" positie, bepaald door de respectievelijke eindschakelaars.  
// "Slip/uitzakken" maakt dat het traject omhoog meer pulsen vraagt dan omlaag (vast aantal: <aantDown>). Deze wordt voor beide gordijnen gemeten (resp. <MissedPulsesK> en <MissedPulseG>) en weergegeven in de bewakingsfunktie via Particle.publish("StateChange") en IFTTT/GoogleSheets.
// Deze Particle.publish("StateChange")-funktie wordt na iedere status verandering van de roldordijnen aangeroepen, met uitzondering van de statussen <Beweegt Omlaag> en <Beweegt Omhoog>. Dit is een diagnose funktie en logt als zodanig een aantal variabelen uit het besturingsprogramma.
// Naast Particle.publish("StateChange") is er de functie Particle.publish("State"): deze geeft

// Modificatie log:
// 20180613 alarmdrempel alarm3 verhoogd van 400 naar 600
// 20180621 alarmdrempel alarm3 verhoogd van 600 naar 800
// 20180621 alarmdrempel alarm1 verhoogd van 600 naar 3600
// 20180801 alarmdrempel alarm1 verhoogd van 3600 naar 7000
// 20180824 alarmdrempels alarm 1 en alarm3 aangepast naar 1000

SYSTEM_THREAD(ENABLED);//verzekert dat communicatie met CLOUD intact blijft tijdens dalen en stijgen van rolgordijn; is in hoofdzaak van belang om nagenoeg real time de positie van het rolgordijn te kunnen monitoren tijdens de beweging omlaag resp omhoog.

//PIN DEFINITIES PHOTON:
int EnableK = D0;//OUTPUT naar motoren kleine rolgordijnen; HIGH = Enable, LOW = Disable
int Klok = D1;//OUTPUT naar motor
int Dir = D2;//OUTPUT naar motor; HIGH = Omhoog, LOW = Omlaag
int EnableG = D3;//OUTPUT naar motor groot rolgordijn; HIGH = Enable, LOW = Disable
int EndSwitchG = D4;//Groot rolgordijn; INPUT LOW = gordijn "hoog"; HIGH = gordijn "laag" OF "omlaag", OF "omhoog" (dus alle andere toestanden dan "gordijn hoog")
int EndSwitchK = D5;//Klein rolgordijn; INPUT LOW = gordijn "hoog"; HIGH = gordijn "laag" OF "omlaag", OF "omhoog" (dus alle andere toestanden dan "gordijn hoog")
int RemoteContact = D6;//INPUT Uit = HIGH, Aan = LOW, dus ook LED GROEN
int Connected = D7;//OUPUT LED GEEL; LOW = Particle Connected, HIGH = Particle disconnected
int analogPin0 = A2;//Analoge INPUT van Distance Sensor
int analogPin1 = A3;//Analoge INPUT van ALM1
int analogPin2 = A4;//Analoge INPUT van ALM2
int analogPin3 = A5;//Analoge INPUT van ALM2

//DECLARATIES VAN VARIABELEN DIE FUNTIONEEL ZIJN VOOR DE WERKING VAN DE ROLGORDIJNBESTURING:
String Status = "onbepaald";//bewaakt de actuele status; er zijn 6 mogelijke stadia: Positie Hoog, Beweegt omlaag, Beweging omlaag gestopt, Positie Laag, Beweegt omhoog, Beweging omlaag gestopt.
String State = "0000";//"samplet" de <String Status> iedere 1755 klokpulsen en legt die vast in Particle.variable "STATUS" en tevens publiceert die ala ParticleParticle.publish "State".  
String Block = "0";
String StatusOud = "onbepaald";
int StatChange = 0; //indicator voor verandering van Status, t.b.v. monitoring in Google spreadsheet. Is "1"gedurende 60 sec na een statusverandering; anders "0".
int Pos = 0;//bewaakt de actuale positie van het rolgordijn a.d.h.v. feitelijk het aantal klokpulsen (int d); Pos is "0" in de "Positie Hoog", en Pos is "<aantDown>" in "Positie Laag"".
int Positie = 0;//"samplet" de <int Pos> iedere 1755 klokpulsen en legt die vast in Particle.variable "POSITIE" (NB. 1755 komt overeen met 3% verplaatsing van de 58500 pulsen van <aantDown>; dus ca. 4,5 cm)
int DisableK = 0;//Disable wordt 1 nadat de eindschakelaar ingedrukt als resultaat van de beweging omhoog. Is in feite een 'de-bounching' voorziening voor de eindschakelaar; Disable wordt "0" zodra de status "Positie Laag", wordt bereikt en bij opstarten (bijv. na een alarm).
int DisableG = 0;//Disable wordt 1 nadat de eindschakelaar ingedrukt als resultaat van de beweging omhoog. Is in feite een 'de-bounching' voorziening voor de eindschakelaar; Disable wordt "0" zodra de status "Positie Laag", wordt bereikt en bij opstarten (bijv. na een alarm).
int ConnectStatus = 0;//0 = Particle not connected to cloud, 1 = Particle connected to cloud
int hp = 150;//halve periode van klok in microseconden
int aantDown = 62301;//aantal klokpulsen omlaag voor volledige sluiting (100%)
int d = 0;//telt klokpulsen tijdens beweging omlaag; dus een maat voor de actuele positie van het rolgordijn tijdens de beweging omlaag danwel omhoog
int uK = 0;//telt klokpulsen tijdens beweging omhoog (Kleine gordijnen).
int uG = 0;//telt klokpulsen tijdens beweging omhoog (groot gordijn).
int p = 0;//teller voor de sampler (zie hiervoor): telt 1755 klokpulsen tijdens beweging omlaag, danwel omhoog, sampelt dan en wordt weer op nul gezet.
int MissedPulsesK = 0;//aantal gemiste pulsen na "Beweging omhoog"
int MissedPulsesG = 0;//aantal gemiste pulsen na "Beweging omhoog"int MissedPulsesK = 0;//aantal gemiste pulsen na "Beweging omhoog"
int alarm1 = 0;//telt gedurende de alarmconditie van motor1 de klokpulsen bij "Beweging omlaag", dawel "Beweging omlaag",  
int alarm2 = 0;//telt gedurende de alarmconditie van motor2 de klokpulsen bij "Beweging omlaag", dawel "Beweging omlaag", 
int alarm3 = 0;//telt gedurende de alarmconditie van motor3 de klokpulsen bij "Beweging omlaag", dawel "Beweging omlaag", 
int alarm = 0;//'overall" alarmsituatie o.b.v. alarm1, alarm2, alarm3, plus eventueel andere condities, en legt die vast in Particle.variable "ALARM".
int Blockint = 0;
int BlokG = 0;
int BlokK = 0;

//DECLARATIES VAN 7 STRINGS (AL DAN NIET OMGEZEETE INTEGERS) DIE UITSLUITEND DIENEN VOOR DE MONITORING VAN BUITENAF VIA "Particle.publish("StateChange")":
String ALARM = "0";//de volgende 7 declaraties hebben uitsluitend te maken met de monitoring functie "Particle.publish("StateChange")" die 
String ALARM1 = "0";//na iedere verandering van de status van het rolgordijn (uitgezonerd de bewegingen) een aantal gegevens naar de Google sheet "StateChange" 
String ALARM2 = "0";//dumpt. De meeste van deze gegevens zijn INTEGERS in deze file en moeten derhalve omgezet worden naar een STRING
String ALARM3 = "0";//
String POSITIE = "0";//
String MPK = "0";//
String MPG = "0";//
String WIFI = "0";//


void setup() 
{
if (Blockint == 3)
    {
    BlokG = 1;
    BlokK = 1;
    }
pinMode(EnableK, OUTPUT);
pinMode(Klok, OUTPUT);
pinMode(Dir, OUTPUT);
pinMode(EnableG, OUTPUT);
pinMode(EndSwitchG, INPUT_PULLUP);
pinMode(EndSwitchK, INPUT_PULLUP);
pinMode(RemoteContact, INPUT_PULLUP);
pinMode(Connected, OUTPUT);
Particle.variable("MissedPulseK", &MissedPulsesK, INT);
Particle.variable("STATUS", &State, STRING);
Particle.variable("ALM1", &alarm1,INT);
Particle.variable("ALM2", &alarm2,INT);
Particle.variable("ALM3", &alarm3,INT);
Particle.variable("POSITIE", &Positie,INT);
Particle.publish("State", "abcdef", PRIVATE);
Particle.publish("StateChange", ("STATUS"), PRIVATE);//tbv bewaking in Google-sheets van de variabelen 
Particle.variable("ALARM", &ALARM, STRING);
Particle.subscribe("Block", Blockhandler, MY_DEVICES);//de string "Block" wordt aangemaakt door de Remote Control, en kan zijn "0", "1", "2", of "3" en ingelezen met de functie <Blockhandler>.
Particle.variable("BlockInt", &Blockint, INT);//Eveneens in de functie <Blockhandler> worden de 4 toestanden van de string "Block" omgezet in 4 integers: 0, 1, 2 en 3 die omgezet worden naar 4 combinaties van BlokK en BlokG, waarmee de gordijnen K en G geblokkeerd kunnen worden
Particle.variable("StatChange", &StatChange, INT);
}


void loop() 
{
//SCHAKELT DE PHOTON STATUSLED UIT:
RGB.control(true);
RGB.color(0, 0, 0);


//CHECK ENDSWITCHES:
if (digitalRead(EndSwitchK) == LOW || digitalRead(EndSwitchG) == LOW) 
    {//bekrachtigen van eindschakelaar leidt dus altijd tot "Stop" en Status "hoog"
    DisableK = 1;
    DisableG = 1;
    digitalWrite(EnableK, LOW);
    digitalWrite(EnableG, LOW);
    Status = "Positie Hoog";
    Positie = Pos;
    State = Status;
    Particle.publish("State", State, PRIVATE);
    }

    
//CHECK CONNECTED:
if (Particle.connected()) 
    {//check of Particle connected is; zo niet dan worden de motoren disabled totdat de connectie hersteld is
    digitalWrite(Connected, LOW);
    ConnectStatus = 1;
    }
    else 
    {
    digitalWrite(Connected, HIGH);
    ConnectStatus = 0;
    //digitalWrite(EnableK, LOW);
    //digitalWrite(EnableG, LOW);//Moet dit??? Maw: moet connectie aanwezig zijn om gordijnen te laten bewegen?
    }

    
//BEWEGING OMLAAG:
if (DisableK == 1 && DisableG == 1 && digitalRead(RemoteContact) == LOW && d < aantDown) 
    {
    //STARTVOORWAARDEN VOOR BEWEGING OMLAAG:
    digitalWrite(Dir, LOW);
            //INDIEN G OF K GEBLOKKEERD WORDEN WORDEN DE MOTOREN NIET BEKRACHTIGD. VOORALSNOG IS DEZE FUNKTIE NIET GEIMPLEMENTEERD IN DE BESTURINGS WEBSITE:
            if (BlokK == 1 )
                {
                digitalWrite(EnableK, LOW);
                }
            else
                {
                digitalWrite(EnableK, HIGH);    
                }
            if (BlokG == 1 )
                {
                digitalWrite(EnableG, LOW);
                }
            else
                {
                digitalWrite(EnableG, HIGH);    
                }
    alarm1 = 0;
    alarm2 = 0;
    alarm3 = 0;
    //DAARNA START DE FEITELIJKE BEWEGING OMLAAG:
    while (d < aantDown && alarm == 0)  
        {
        Status = "Beweegt omlaag";//beweegt omlaaag door klokpulsen te geven via de funktie <klokpuls()> totdat d=aantDown (maximale lengte bereikt) of alarm=1 (gestopt tijdens beweging omlaag)
        Pos = d;
        klokpuls();
        d++;
        p++;//teller p loopt gelijk op met d, maar wordt iedere 1755 klokpulsen gereset en geeft dan <Particle.variable("STATUS", &State, STRING)> en <Particle.variable("POSITIE", &Positie,INT)> door naar de besturingswebsite
        if (p == 1755)
            {
            Positie = Pos;
            State = Status;
            Particle.process();
            p=0; 
            }
        }
    //NADAT DE VOORWAARDEN WAARONDER "While" WORDT UITGEVOERD NIET MEER VAM KRACHT ZIJN, WORDEN DE MOTOREN GESTOPT:
    digitalWrite(EnableK, LOW);
    digitalWrite(EnableG, LOW);

    //HET VOLGENDE "ïf/then/else" STATEMENT DIENT SLECHTS OM DE STATUS EN DE POSITIE NA HET STOPPEN TE PUBLICEREN:
    if (alarm == 1)
        {
        Status = "Beweging omlaag gestopt";
         Positie = Pos;
        State = Status;
        Particle.publish("State", State, PRIVATE);
        }
    else
        {
        Status = "Positie Laag";
         Positie = Pos;
        State = Status;
        Particle.publish("State", State, PRIVATE);
        }
        
    //TENSLOTTE WORDEN ENKELE VARIABELEN IN DE STARTPOSITIE GEZET VOOR DE BEWEGING OMHOOG (HETZIJ VANUIT DE POSITIE LAAG, DANWEL VANUIT DE ALRMSTOP)
    DisableK = 0;
    DisableG = 0;
    uK = 0;
    uG = 0;
    p = 0;
    MissedPulsesK = 0;
    MissedPulsesG = 0;
    }
//ENDE BEWEGING OMLAAG


//BEWEGING OMHOOG:
if (DisableK == 0  && DisableG == 0 && digitalRead(RemoteContact) == HIGH)
    {
    //STARTVOORWAARDEN VOOR BEWEGING OMHOOG:
    digitalWrite(Dir, HIGH);
            //INDIEN G OF K GEBLOKKEERD WORDEN WORDEN DE MOTOREN NIET BEKRACHTIGD. VOORALSNOG IS DEZE FUNKTIE NIET GEIMPLEMENTEERD IN DE BESTURINGS WEBSITE:
            if (BlokK == 1 )
                {
                digitalWrite(EnableK, LOW);
                }
            else
                {
                digitalWrite(EnableK, HIGH);    
                }
             if (BlokG == 1 )
                {
                digitalWrite(EnableG, LOW);
                }
            else
                {
                digitalWrite(EnableG, HIGH);    
                }
    alarm1 = 0;
    alarm2 = 0;
    alarm3 = 0;
    //DAARNA START DE FEITELIJKE BEWEGING OMHOOG:
    while (DisableK == 0 || DisableG == 0 && alarm == 0) 
        {
        Status = "Beweegt omhoog";//beweegt omhoog door klokpulsen te geven via de funktie <klokpuls()> totdat eindswitch wordt bekrachtigd of alarm=1 (gestopt tijdens beweging omlaag)
        Pos = aantDown - uK;
        if (Pos < 0)
            {
            Pos = 0;
            }
        klokpuls();
        uK++;
        uG++;
        p++;//teller p loopt gelijk op met uK en uG, maar wordt iedere 1755 klokpulsen gereset en geeft dan <Particle.variable("STATUS", &State, STRING)> en <Particle.variable("POSITIE", &Positie,INT)> door naar de besturingswebsite
        if (p == 1755)
            {
            Positie = Pos;
            State = Status;
            Particle.process();
            p=0; 
            }
        //NADAT DE VOORWAARDEN WAARONDER "While" WORDT UITGEVOERD NIET MEER VAM KRACHT ZIJN, WORDEN DE MOTOREN GESTOPT, VOOR G EN K AFZONDERLIJK:
        if (digitalRead(EndSwitchK) == LOW)
            {
            digitalWrite(EnableK, LOW);
            uK--;
            }
        if (digitalRead(EndSwitchG) == LOW)
            {
            digitalWrite(EnableG, LOW);
            uG--;
            }
        }
    digitalWrite(EnableK, LOW);
    digitalWrite(EnableG, LOW);
    
    //HET VOLGENDE "ïf/then/else" STATEMENT DIENT SLECHTS OM DE STATUS EN DE POSITIE NA HET STOPPEN TE PUBLICEREN:
    if (alarm == 1)
        {
        Status = "Beweging omhoog gestopt";
        Positie = Pos;
        State = Status;
        Particle.publish("State", State, PRIVATE);
        }
    else
        {
        Status = "Positie Hoog";
        Positie = Pos;
        State = Status;
        Particle.publish("State", State, PRIVATE);
        }
    
    //TENSLOTTE WORDEN ENKELE VARIABELEN IN DE STARTPOSITIE GEZET VOOR DE BEWEGING OMLAAG (HETZIJ VANUIT DE POSITIE HOOG, DANWEL VANUIT DE ALARMSTOP)
    DisableK = 1;
    DisableG = 1;
    d = 0;
    MissedPulsesK = aantDown - uK;
    MissedPulsesG = aantDown - uG;
    }
//EINDE BEWEGIG OMHOOG
    
    
//VOLGENDE if/then/else DIENT UITSLUITEND VOOR PUBLICATIE VAN EEN AANTAL VARIABELEN VIA IFTTT NAAR GOOGLE SHEETS    
if (Status == StatusOud)//CHECK OP ACTUELE STATUS; IS DIE ONGEWIJZIGD DAN WORDT ER NIETS GEPUBLICEERD
        {
        StatChange = 0;
        ALARM = "0";
        } 
else
        {
        StatChange = 1;//DEZE VARIABELE TRIGGERT IFTTT
        ALARM = String(alarm);
        ALARM1 = String(alarm1);
        ALARM2 = String(alarm2);
        ALARM3 = String(alarm3);
        POSITIE = String(Positie);
        MPK = String(MissedPulsesK);
        MPG = String(MissedPulsesG);
        waitUntil(Particle.connected);//PUBLICATIE VINDT UITSLUITEND PAS INDIEN PARTICLE CONNECTED IS
        WIFI= String(WiFi.RSSI());
        Particle.publish("StateChange", (Status+"|||"+POSITIE+"|||"+MPK+"|||"+MPG+"|||"+ALARM+"|||"+ALARM1+"|||"+ALARM2+"|||"+ALARM3+"|||"+WIFI), PRIVATE);
        StatusOud = Status;
        delay(60000);//WACHT 60 SEC TOTDAT ZEKER IS DAT DE PUBLICATIE DOOR IFTTT IS OPGFEPAKT
        }      

}//end of loop


//FUNKTIE DIE DE KLOKPULS EN DE AUDITIEVE ALARMEN AFHANDELD
void klokpuls() 
{
digitalWrite(Klok, LOW);
delayMicroseconds(hp);
digitalWrite(Klok, HIGH);
if (digitalRead(EndSwitchK) == LOW) 
    {//bekrachtigen van eindschakelaar leidt dus altijd tot "Stop" en Status "hoog"
    DisableK = 1;
    }
if (digitalRead(EndSwitchG) == LOW) 
    {//bekrachtigen van eindschakelaar leidt dus altijd tot "Stop" en Status "hoog"
    DisableG = 1;
    }
if(analogRead(analogPin1) > 3200) 
    {
    alarm1++;
    }
if(analogRead(analogPin2) > 3200)
    {
    alarm2++;
    }
if(analogRead(analogPin3) > 3200)
    {
    alarm3++;
    }
if (alarm1 > 1000 || alarm2 > 400 || alarm3 > 1000)
    {
    alarm = 1;
    DisableK = 1;
    DisableG = 1;
    }
else
    {
    alarm = 0;
    }
    
}


//FUNKTIE DIE EEN BLOKKEER COMMANDO VANUIT DE BESURINGSWEBPAGINA OMZET IN BLOKKERINGSSIGNALEN VOOR G EN K (VOORALSNOG NIET GEIMPLEMENTEERD!)
void Blockhandler(const char *event, const char *data)
{
Block = (data);
Blockint = Block.toInt();
if (Blockint == 1)
    {
    BlokG = 1;
    }
if (Blockint == 2)
    {
    BlokK = 1;
    }
if (Blockint == 3)
    {
    BlokG = 1;
    BlokK = 1;
    }
if (Blockint == 0)
    {
    BlokG = 0;
    BlokK = 0;
    }
}

Several things have changed since.
One of the things is that String can’t be compared to a NULL pointer anymore (which was never really possible as the pointer to the object can’t be true as soon it’s instantiated). You can compare it to an empty string ("") tho’.

Also your Particle.variable() syntax is outdated
it should now be writtten like this

Particle.variable("MissedPulseK", MissedPulses);
Particle.variable("STATUS", State);
Particle.variable("ALM1", alarm1);
Particle.variable("ALM2", alarm2);
Particle.variable("ALM3", alarm3);
Particle.variable("POSITIE", Positie);
Particle.variable("ALARM", ALARM);
Particle.variable("BlockInt", Blockint);
Particle.variable("StatChange", StatChange);

BTW, for STRING the ampersand (&) was never used.

If you switch back to some older target version (e.g. 1.0.1) in Web IDE this code would probably still build.

However, a rather surprising new development is that you cannot have a public variable alarm anymore. This came about with the newer version of gcc compiler which now brings its own int alarm(int) function.
https://www.gnu.org/software/libc/manual/html_node/Setting-an-Alarm.html

For the time being just rename that to something else.

1 Like

Thank you ScruffR. I renamed the variable; that did it!

1 Like