bangnaga icon

Mousturise Sensor Wemos D1 MQTT JSON

bangnaga | PRO | 02/25/20 12:16:38 AM UTC | 0 ⭐ | 360 👁️ | Never ⏰ | []
C++ |

2.72 KB

|

None

|

0 👍

/

0 👎

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
 
#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);
}

Comments