#include #include String ssid = "JJMD"; String password = "40297047"; WiFiClient espClient; PubSubClient client(espClient); String mqtt_server = "test.mosquitto.org"; char mqtt_server_array[50]; char message_array[50]; char topic_array[50]; char inChar; String inString = "",inTopic = "",inMessage = ""; bool actionMqtt, actionModule, flagMqtt = false; // Process bool gpio0_state1; bool out_state1; bool gpio0_state2; bool out_state2; void setup_wifi() { delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.mode(WIFI_STA); 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 callback(char* topic, byte* payload, unsigned int length) { Serial.print(topic); Serial.print(","); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); // Analisis de topico String topico = String(topic); if (topico=="HomeP1204AP/BedRoom/Lamp02"){ Serial.println("Si es igual topico"); String mensaje = String((char *)payload); Serial.println(mensaje); if (mensaje[1]=='N'){ Serial.println("Mensaje ON"); digitalWrite(4,HIGH); out_state1=HIGH; } else if (mensaje[1]=='F'){ Serial.println("Mensaje OFF"); digitalWrite(4,LOW); out_state1=LOW; } Serial.println("Salio"); } } void clientConnect() { // Loop until we're reconnecte while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Create a random client ID String clientId = "ESP8266Client-"; clientId += String(random(0xffff), HEX); // Attempt to connect if (client.connect(clientId.c_str())) { Serial.println("connected"); // Once connected, publish an announcement... client.publish("HomeP1204AP", "hello world"); client.subscribe("HomeP1204AP/#"); } 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(115200); setup_wifi(); mqtt_server.toCharArray( mqtt_server_array, 100 ); client.setServer(mqtt_server_array, 1883); client.setCallback(callback); // Process pinMode(0,INPUT); gpio0_state1 = digitalRead(0); pinMode(4,OUTPUT); digitalWrite(4,LOW); out_state1 = LOW; } void loop() { if (!client.connected()) { clientConnect(); } else { client.loop(); if (flagMqtt) { flagMqtt = false; inMessage.toCharArray( message_array, 100 ); inTopic.toCharArray( topic_array, 100 ); client.publish(topic_array, message_array); } } bool statep1 = !digitalRead(16); if (gpio0_state1 != statep1){ gpio0_state1 = statep1; delay(100); if (gpio0_state1){ // Solte el boton } else { // Presione el boton out_state1 = !out_state1; if (out_state1){ client.publish("HomeP1204AP/Servo01","ON"); } else { client.publish("HomeP1204AP/Servo01","OFF"); } } } bool statep2 = !digitalRead(5); if (gpio0_state2 != statep2){ gpio0_state2 = statep2; delay(100); if (gpio0_state2){ // Solte el boton } else { // Presione el boton out_state2 = !out_state2; if (out_state2){ client.publish("HomeP1204AP/Servo02","ON"); } else { client.publish("HomeP1204AP/Servo02","OFF"); } } } } void serialEvent() { while (Serial.available()) { inChar = (char)Serial.read(); switch (inChar){ case '\r': inMessage = inString; break; case '\n': inString = ""; flagMqtt = true; break; case ',': inTopic = inString; inString = ""; break; default: inString += inChar; break; } } }