Sampel Publish Multi Tag
Last updated
Was this helpful?
Last updated
Was this helpful?
Persiapkan Komponen
Buat GoIoT Proyek
Mulai memprogram
Jalankan program di Perangkat Keras
Enjoy
Persiapkan Komponen
NodeMCU ESP8266
Karena math random hanya membutuhkan esp
Buat GoIoT proyek
Mulai memprogram
/*This Example Program created for Publish test with output math random using GoIoT as IOT Platform
--------------------------- https://goiot.id ---------------------------
Wifi Communication*/
#include <ESP8266WiFi.h> // library esp8266
// #include <WiFi.h> // library esp32
#include <PubSubClient.h> // library MQTT
#include <ArduinoJson.h> // library ArduinoJson ver 5.13.5
const char* ssid = "ssid wifi anda"; // silahkan diisi
const char* password = "password wifi anda"; // silahkan diisi
const char* mqtt_server = "broker.goiot.id"; // set MQTT server
WiFiClient espClient;
PubSubClient client(espClient);
char msg2[50];
char msg[50];
long randomNumber; // variabel yang akan dikirim
long randomNumber2; // variabel yang akan dikirim
StaticJsonBuffer<200> jsonBuffer; // ArduinoJson ver 5.13.5
//Wifi Setup
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());
}
//General Setup
void setup() {
Serial.begin(115200);
setup_wifi(); // run setup_wifi
client.setServer(mqtt_server, 1883); // set MQTT port
}
//Connect to broker
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
char *idnya = "projectID anda#device anda#"; // MQTT Client ID
char *username = "username anda"; // GOIOT Username
char *password = "mqtt token anda"; // GOIOT MQTT Token
if (client.connect(idnya, username, password))
{
Serial.println("connected");
}
else
{
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
//Looping Function
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
randomNumber = random(20); // random number from 0 to 19
randomNumber2 = random(20); // random number from 0 to 19
char result[100];
char* arrayBuka = "[";
char* tagSatu = "{\"tag\":\"sensor11\",\"value\":"; // silahkan ganti sensor11 menjadi tag anda
sprintf (msg, "%i", randomNumber); // convert integer to char
char* tutupJson = "}";
char* tagDua = ",{\"tag\":\"sensor12\",\"value\":"; // silahkan ganti sensor12 menjadi tag anda
sprintf (msg2, "%i", randomNumber2); // convert integer to char
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);
/* Bisa lihat di https://docs.goiot.id/mqtt-rule */
client.publish("v2/projectID anda/device anda/json", result); // silahkan diisi
delay(1000);
}
/* www.goiot.id */
Upload Program
Board dan Port terkonfigurasi seperti ini :
Persiapkan Komponen
NodeMCU ESP8266
DHT Sensor
Kabel Jumper
Konfigurasi Perangkat Keras
DHT NodeMCU
VCC <--> 3v3 / VV / Vin
GND <--> GND
Out <--> D4 / GPIO2
/*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 */
Ikuti langkah-langkah nya
Install Driver CH340 jika diperlukan,
Download PubSubClient Library,
Download ESP8266 Library,
Download DHT Library,
Untuk Konfigurasi Perangkat Keras MQTT,
Untuk mengetahui aturan dasar agar bisa terhubung dengan MQTT,