Sampel Publish Multi Tag

Math Random Multi Tag

  1. Persiapkan Komponen

  2. Buat GoIoT Proyek

  3. Mulai memprogram

  4. Jalankan program di Perangkat Keras

  5. Enjoy

Persiapkan Komponen

  • NodeMCU ESP8266

Karena math random hanya membutuhkan esp

Buat GoIoT proyek

Ikuti langkah-langkah nya disini

Mulai memprogram

  • Install Driver CH340 jika diperlukan, disini

  • Download PubSubClient Library, disini

  • Download ESP8266 Library, disini

  • Download DHT Library, disini

/*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 */

Untuk Konfigurasi Perangkat Keras MQTT, disini

Untuk mengetahui aturan dasar agar bisa terhubung dengan MQTT, disini

Upload Program

Board dan Port terkonfigurasi seperti ini :

Konfigurasi Board dan Port
Klik tombol Upload

Temperatur dan Kelembaban Sensor MQTT

DHT22

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 */

Last updated

Was this helpful?