/*This Example Program created for Publish test with output (GPIO2/D4) using GoIoT as IOT Platform
--------------------------- www.goiot.id ---------------------------
Wifi Communication*/
#include <PubSubClient.h> // library MQTT (metode MQTT publish subscribe)
#include <ESP8266WiFi.h> // library esp8266
// #include <WiFi.h> // library esp32
#include <DHT.h> // library DHT sensor
#include <ArduinoJson.h> // library ArduinoJson ver 5.13.5
#define DHTPIN 2 // GPIO2 is D4 in board esp8266 NodeMCU
// #define DHTPIN 4 // GPIO2 is D4 in board ESP32
#define DHTTYPE DHT22 // Tipe DHT (sesuaikan dengan tipe DHT sensornya)
DHT dht(DHTPIN, DHTTYPE);
char ssid[] = "ssid wifi anda"; // silahkan diisi
char pass[] = "password wifi anda"; // silahkan diisi
const char* broker = "broker.goiot.id"; // set MQTT server
WiFiClient client;
PubSubClient mqtt(client);
char msg[50];
char msg2[50];
StaticJsonBuffer<200> jsonBuffer; // ArduinoJson ver 5.13.5
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, pass);
int retries = 0;
while ((WiFi.status() != WL_CONNECTED) && (retries < 10)) {
retries++;
delay(500);
Serial.print(".");
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println(F("WiFi connected"));
}
}
void setup() {
Serial.begin(115200);
setup_wifi();
dht.begin();
mqtt.setServer(broker, 1883);
delay(10);
Serial.println("Hasil DHT : ");
}
void reconnect() {
while (!mqtt.connected())
{
Serial.print("Attempting MQTT connection...");
char *idnya = "projectID anda#device anda#"; // silahkan diisi
char *username = "username GOIOT anda"; // silahkan diisi
char *password = "MQTT token GOIOT anda"; // silahkan diisi
if (mqtt.connect(idnya, username, password))
{
Serial.println("connected");
}
else
{
Serial.print("failed, rc=");
Serial.print(mqtt.state());
Serial.println("try again in 5 seconds");
delay(5000);
}
}
}
void loop() {
if (!mqtt.connected())
{
reconnect();
}
mqtt.loop();
float h = dht.readHumidity(); // Read Humidity
float t = dht.readTemperature(); // Read temperature as Celsius
float f = dht.readTemperature(true); // Read temperature as Fahrenheit
Serial.print("Temperature : ");
Serial.print(t);
Serial.print(" °C ");
Serial.print(" | ");
Serial.print("Humidity : ");
Serial.print(h);
Serial.println(" RH ");
char result[100];
char* arrayBuka = "[";
char* tagSatu = "{\"tag\":\"sensor11\",\"value\":"; // silahkan ganti sensor11 menjadi tag anda
// sprintf(msg, "%f", t); // convert float ke char
sprintf(msg, "%d.%02d", (int)t, (int)(t*100)%100); // bila konversi float ke char error gunakan
char* tutupJson = "}";
char* tagDua = ",{\"tag\":\"sensor12\",\"value\":"; // silahkan ganti sensor12 menjadi tag anda
// sprintf(msg, "%f", t); // convert float ke char
sprintf(msg2, "%d.%02d", (int)h, (int)(h*100)%100); // bila konversi float ke char error gunakan
char* arrayTutup = "]";
strcpy(result, arrayBuka);
strcat(result, tagSatu);
strcat(result, msg);
strcat(result, tutupJson);
strcat(result, tagDua);
strcat(result, msg2);
strcat(result, tutupJson);
strcat(result, arrayTutup);
Serial.println(result);
mqtt.publish("v2/projectID anda/device anda/json", result); // silahkan diisi
delay(1000);
}
/* www.goiot.id */