#include #include #include #define wifi_ssid "MKI" #define wifi_password "tidaktau" #define mqtt_server "192.168.1.200" //Broker's IP Address #define sensor_data_topic "sensor/data" int moist_Sensor = 0; // A0 int PUMP_PIN = D4; // D2 String moist; int persen; WiFiClient espClient; PubSubClient client(espClient); void setup() { pinMode(PUMP_PIN, OUTPUT); Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(callback); delay(1000); } void setup_wifi() { delay(10); Serial.println(); Serial.print("Connecting to "); Serial.println(wifi_ssid); WiFi.begin(wifi_ssid, wifi_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("Message arrived ["); Serial.print(topic); Serial.print("] "); String pay_load=""; for (int i = 0; i < length; i++) { pay_load+=(char)payload[i]; } Serial.print(pay_load); Serial.println(); if (pay_load == "on") { Serial.println("Turning On"); digitalWrite(PUMP_PIN, HIGH); } else { Serial.println("Turning Off"); digitalWrite(PUMP_PIN, LOW); } } void reconnect() { while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // if (client.connect("ESP_PUMP")) { if (client.connect("ESP_PUMP")) { Serial.println("connected"); client.subscribe("sensor/reply"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } void loop() { if (!client.connected()) { reconnect(); } int m = analogRead(moist_Sensor); persen = map(m, 0, 1024, 100, 0); moist=String(persen).c_str(); String sensor = moist; StaticJsonBuffer<100> jsonBuffer; JsonObject& root = jsonBuffer.createObject(); root["analog"] = m; root["persen"] = persen; //root.printTo(Serial); //Serial.println(sensor); client.loop(); //client.publish(sensor_data_topic, String(sensor).c_str(), true); char JSONmessageBuffer[100]; root.printTo(JSONmessageBuffer, sizeof(JSONmessageBuffer)); Serial.println("Sending message to MQTT topic.."); Serial.println(JSONmessageBuffer); client.publish(sensor_data_topic, JSONmessageBuffer, true); //client.publish(sensor_data_topic, String(sensor).c_str(), true); delay(1000); }