Proyecto para domotizar un espacio con MQTT y Wemos D1

Hola, como están? tengo un problema cuando quiero diferenciar diferentes tópicos, como se ve en la programación de abajo, hago la comprobación del tipo de tópico por el cual se esta escribiendo pero no funciona. seria de mucha ayuda si me pueden dar una mano. muchas gracias.

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

// Connect to the WiFi
const char* ssid = "";        // Poner aquí la SSID de la WiFi
const char* password = "";  // Poner aquí el passwd de la WiFi
const char* mqtt_server = "";
const int mqttPort = ;
const char* mqttUser = "";
const char* mqttPassword = "";

WiFiClient espClient;
PubSubClient client(espClient);
 
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++) {
  char receivedChar = (char)payload[i];
  char topico = topic [i];
  Serial.print(receivedChar);
  [b]if (topico == "Luces"){
  if (receivedChar == '0' )
  // ESP8266 Huzzah outputs are "reversed"
   { digitalWrite(D2, LOW);  }
  if (receivedChar == '1')
   { digitalWrite(D2, HIGH); }
  }
  if (topico == "Puerta"){
  if (receivedChar == '0' )
  // ESP8266 Huzzah outputs are "reversed"
   { digitalWrite(D4, LOW);  }
  if (receivedChar == '1')
   { digitalWrite(D4, HIGH); }
  }
  if (topico == "Aire"){
  if (receivedChar == '0' )
  // ESP8266 Huzzah outputs are "reversed"
   { digitalWrite(D3, LOW);  }
  if (receivedChar == '1')
   { digitalWrite(D3, HIGH); }
  }[/b]
  Serial.println();
  }
  }
 
 
void reconnect() {
 // Loop until we're reconnected
 while (!client.connected()) {
 Serial.print("Attempting MQTT connection...");
 // Attempt to connect
 if (client.connect("ESP8266 Client",mqttUser,mqttPassword)) {
  Serial.println("connected");
  // ... and subscribe to topic
  client.subscribe("Luces");
  client.subscribe("Puerta");
 } else {
  Serial.print("failed, rc=");
  Serial.print(client.state());
  Serial.println(" try again in 5 seconds");
  // Wait 5 seconds before retrying
  delay(5000);
  }
 }
}
 
void setup()
{
 Serial.begin(9600);
 client.setServer(mqtt_server, mqttPort);
 client.setCallback(callback);
 setup_wifi();
 pinMode(D2,OUTPUT);
 pinMode(D3,OUTPUT);
 pinMode(D4,OUTPUT);
}

void setup_wifi() {

  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}
 
void loop()
{
 if (!client.connected()) {
  reconnect();
 }
 client.loop();
}

Hola como estas!!
Por lo visto te has pasado por alto las normas del foro asi que te invito a que las leas y edites tu post.
El primer hilo de cada sección esta dedicado a indicar como se trabaja adecuadamente en este foro.
Te llevará unos minutos hacerlo y luego será mas fácil para recibir respuestas.

surbyte , muchas gracias. perdon soy nuevo.

Estas cosas son las que no funcionan

if (topico == "Puerta"){

defines a topico como

char topico = topic [i];

no puedes comparar de ese modo. Existen funciones dedicadas a ese efecto como
Esta es tu mejor opción [strok/url].

podrias usarlo asi if (strok(topico,"Puerta"))

Otro ejemplo link

](http://www.cplusplus.com/reference/cstring/strtok/)

Perfecto, hoy pruebo. muchas gracias por la ayuda, ya cambie el comentario en el otro foro.