Button Not updating (Toggle Switch Icon)

Device: ESP32 Wemos Lolin V1
Dashboar: Web

I have a Solid State Relay connected to an OUTPUT Pin. This Solid State relay switch a geyser on and off according to temperature measured with an Dallas 1Wire probe. I have a toggle button that can switch the relay, but it does not update on the web dashboard if it is switch by a trigger or event. In the old iOS app it does switch on triggers or events.

One Wire temp probe is on Channel 0
Relay (Geyser Switch) is on channel 1 and GPIO15

My Code:
#define CAYENNE_PRINT Serial
#include <CayenneMQTTESP32.h>

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into GPIO16 on the Arduino
#define ONE_WIRE_BUS 16

// Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
float temp ;
boolean GeyserStatus;

char ssid = “xxx”;
char wifiPassword = “xxx”;

char username = “02079db0-e20b-11e6-a971-4db18559717d”;
char password = “0e765d8383691fcc65ac537e76ef9134129b6edc”;
char clientID = “70fdb340-eefe-11ea-93bf-d33a96695544”;

void setup() {
Serial.begin(115200);
Cayenne.begin(username, password, clientID, ssid, wifiPassword);
pinMode(15, OUTPUT);
digitalWrite(15, HIGH);
sensors.begin(); //start the DallasTemperature sensor
}

void loop() {
sensors.requestTemperatures(); // Send the command to get temperature readings
temp= sensors.getTempCByIndex(0);
GeyserStatus=digitalRead(15);
//Serial.println(GeyserStatus);
Cayenne.loop();
}

// Default function for sending sensor data at intervals to Cayenne.
// You can also use functions for specific channels, e.g CAYENNE_OUT(1) for sending channel 1 data.
CAYENNE_OUT_DEFAULT()
{
// Write data to Cayenne here. This example just sends the current uptime in milliseconds on virtual channel 0.
Cayenne.virtualWrite(0, temp); //send temperature to caynne
Cayenne.virtualWrite(1, GeyserStatus); //Send Geyser Status
// Some examples of other functions you can use to send data.
//Cayenne.celsiusWrite(1, 22.0);
//Cayenne.luxWrite(2, 700);
//Cayenne.virtualWrite(3, 50, TYPE_PROXIMITY, UNIT_CENTIMETER);
}

// Default function for processing actuator commands from the Cayenne Dashboard.
// You can also use functions for specific channels, e.g CAYENNE_IN(1) for channel 1 commands.
CAYENNE_IN_DEFAULT()
{
CAYENNE_LOG(“Channel %u, value %s”, request.channel, getValue.asString());

//Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError(“Error message”);
}
CAYENNE_IN(1)
{
boolean currentServerStatus=getValue.asInt(); //Get the current status of the geyser according to the cloud
Serial.println(currentServerStatus);
if (currentServerStatus==HIGH)
{digitalWrite(15,HIGH);}
else
{digitalWrite(15,LOW);}
GeyserStatus=currentServerStatus;
delay(100);

Serial.println(getValue.asString());

}

if you refresh the browser you will see the changes. Though you should not cross the per day trigger Sending MQTT messages within notification limit