Ubidots Community

Problema con suscripción de topics

hola tengo un problema lo que sucede es que estoy suscribiéndome a 5 topics como se puede ver, pero cuando estoy en el tablero de ubidots si apago el botón control1 se apaga, pero cuando prendo el boton control2 se vuelve a prender el boton control 1 y así en los demás, como puedo hacer que cuando apague el boton control1 se quede apagado hasta que lo vuelva a accionar, sin que se active denuevo con los otros botones .

#include "UbidotsESPMQTT.h"
#include <ESP8266WiFi.h>

#define WIFINAME "CESAR" //Your SSID
#define WIFIPASS "1796#2019#" // Your Wifi Pass
#define TOKEN "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" // Ubidots TOKEN


Ubidots client(TOKEN);
int control1 = 0;
int control2 = 2;
int control3 = 14;
int control4 = 12;
int control5 = D7;

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }

  Serial.println();
  if ((char)payload[0] == '1') {
    digitalWrite(control1, HIGH);
  }
  else {
    digitalWrite(control1, LOW);
  }
  if ((char)payload[0] == '1') {
    digitalWrite(control2, HIGH);
  }
  else {
    digitalWrite(control2, LOW);
  }
  if ((char)payload[0] == '1') {
    digitalWrite(control3, HIGH);
  }
  else {
    digitalWrite(control3, LOW);
  }
  if ((char)payload[0] == '1') {
    digitalWrite(control4, HIGH);
  }
  else {
    digitalWrite(control4, LOW);
  }
  if ((char)payload[0] == '1') {
    digitalWrite(control5, HIGH);
  }
  else {
    digitalWrite(control5, LOW);
  }
}


void setup() {
  Serial.begin(115200);
  client.setDebug(true);  // Pass a true or false bool value to activate debug messages
  client.wifiConnection(WIFINAME, WIFIPASS);
  client.begin(callback);
  client.ubidotsSubscribe("esp8266-1", "control1");  // Insert the dataSource and Variable's Labels
  client.ubidotsSubscribe("esp8266-1", "control2");  // Insert the dataSource and Variable's Labels
  client.ubidotsSubscribe("esp8266-1", "control3");  // Insert the dataSource and Variable's Labels
  client.ubidotsSubscribe("esp8266-1", "control4");  // Insert the dataSource and Variable's Labels
  client.ubidotsSubscribe("esp8266-1", "control5");  // Insert the dataSource and Variable's Labels
  pinMode(control1, OUTPUT);
  pinMode(control2, OUTPUT);
  pinMode(control3, OUTPUT);
  pinMode(control4, OUTPUT);
  pinMode(control5, OUTPUT);

}

void loop() {
  if (!client.connected()) {
    client.reconnect();
    client.ubidotsSubscribe("esp8266-1", "control1");  // Insert the dataSource and Variable's Labels
    client.ubidotsSubscribe("esp8266-1", "control2");  // Insert the dataSource and Variable's Labels
    client.ubidotsSubscribe("esp8266-1", "control3");  // Insert the dataSource and Variable's Labels
    client.ubidotsSubscribe("esp8266-1", "control4");  // Insert the dataSource and Variable's Labels
    client.ubidotsSubscribe("esp8266-1", "control5");  // Insert the dataSource and Variable's Labels
  }
  client.loop();


}