아두이노 스케치 (wizfi250 기준)
PubSubClient 라이브러리 설치 후 아래의 소스코드 업로드
#include <SPI.h>
#include <WizFi250.h>
#include <PubSubClient.h>
// Update these with values suitable for your network.
const char* ssid = "SK_WiFiGIGAF5E0";
const char* password = "----"; 
const char* mqtt_server = "192.168.---";
WiFiClient WizFi250Client;
PubSubClient client(WizFi250Client);
long lastMsg = 0;
char msg[50];
int value = 0;
void setup_wifi();
void callback(char* topic, byte* payload, unsigned int length);
void reconnect();
void setup() {
  pinMode(7, OUTPUT);     
  Serial.begin(115200);
  setup_wifi();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
}
void setup_wifi() {
  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.init();
  WiFi.begin((char*)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());
}
void callback(char* topic, byte* payload, unsigned int length) {
  int i = 0;
  Serial.println("Message arrived: topic: " + String(topic));
  Serial.println("Length: "+ String(length,DEC));
  //create character buffer with ending null terminator (string)
  for(i=0; i<length; i++){
    msg[i] = payload[i];
  }
  msg[i]= '\0';
  String msgString = String(msg);
  Serial.println("Payload: "+ msgString);
  int state = digitalRead(7);
  //전송된 메시가 "led"이면 LED를 받을 때마다 켜고 끈다.(토글)
  if (msgString == "led_on"){
    digitalWrite(7, HIGH);
    Serial.println("LED ON...");
  }
  else if (msgString == "led_off"){
    digitalWrite(7, LOW);
    Serial.println("LED OFF...");
  }
}
void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect("WizFi250Client")) {    // 클라이언트가 2대 이상일 경우 이름을 다르게 적어준다.
      Serial.println("connected");
      // Once connected, publish an announcement...
      client.publish("iot", "WizFi250 hello world");    // iot/room1 ... iot/room2 등으로 구분 가능
      // ... and resubscribe
      client.subscribe("iot");
    } 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();
  }
  client.loop();
  long now = millis();  
}
// DHT11 센서값 json, db저장
#include <SPI.h>
#include <WizFi250.h>
#include <PubSubClient.h>
#include <DHT11.h>
#include <SimpleTimer.h>
#define DHTPIN 8  
SimpleTimer timer;
  
DHT11 dht11(DHTPIN); 
float temperature, humidity;
int err;
int setTemp;
char ch[60] = {0};
char ch2[60] = {0};
const char* ssid = "SK_WiFiGIGAF5E0";
const char* password = "1611010239";  
const char* mqtt_server = "192.168.35.163";
WiFiClient WizFi250Client;
WiFiClient client;
PubSubClient client2(WizFi250Client);
long lastMsg = 0;
char msg[50];
int value = 0;
void setup_wifi();
void callback(char* topic, byte* payload, unsigned int length);
void reconnect();
void setup() {
  pinMode(7, OUTPUT);     
  Serial.begin(115200);
  setup_wifi();
  client2.setServer(mqtt_server, 1883);
  client2.setCallback(callback);
  
  timer.setInterval(15000, notify);
}
void setup_wifi() {
  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.init();
  WiFi.begin((char*)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());
}
void callback(char* topic, byte* payload, unsigned int length) {
  int i = 0;
  Serial.println("Message arrived: topic: " + String(topic));
  Serial.println("Length: "+ String(length,DEC));
  //create character buffer with ending null terminator (string)
  for(i=0; i<length; i++){
    msg[i] = payload[i];
  }
  msg[i]= '\0';
  String msgString = String(msg);
  Serial.println("Payload: "+ msgString);
  int state = digitalRead(7);
  //전송된 메시가 "led"이면 LED를 받을 때마다 켜고 끈다.(토글)
  if (msgString == "led1_on"){
    digitalWrite(7, HIGH);
    Serial.println("LED ON...");
  }
  else if (msgString == "led1_off"){
    digitalWrite(7, LOW);
    Serial.println("LED OFF...");
  }
  if ( msgString == "temp_humidity#stat") {
     if ( (err=dht11.read(humidity, temperature) ) == 0 ) {      
      String str_temp(temperature);
      String str_hum(humidity);
      
      //str = "ROOM1#TEMP#" + str;
      //str.toCharArray(ch, str.length());
      
      String sensor_id = "\"Dummy-1\"";
      // Make JSON data      
      String msg = "{\"Sensor_ID\": ";
      msg += sensor_id;
      msg += ", \"Humidity\": ";
      msg += str_hum;
      msg += "}";
      msg.toCharArray(ch, msg.length() + 1);
      client2.publish("Home/BedRoom/DHT11/Humidity", ch);   
      // Make JSON data      
      String msg2 = "{\"Sensor_ID\": ";
      msg2 += sensor_id;
      msg2 += ", \"Temperature\": ";
      msg2 += str_temp;
      msg2 += "}";
      msg2.toCharArray(ch2, msg2.length() + 1);
      
      client2.publish("Home/BedRoom/DHT11/Temperature", ch2);   
    }
  }
}
void reconnect() {
  // Loop until we're reconnected
  while (!client2.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client2.connect("WizFi250Client0")) {
      Serial.println("connected");
      // Once connected, publish an announcement...
      // ... and resubscribe
      client2.subscribe("iot/room1");
      client2.subscribe("iot/temp");
      client2.subscribe("Home/BedRoom/DHT11/Humidity");
      client2.subscribe("Home/BedRoom/DHT11/Temperature");
      
    } else {
      Serial.print("failed, rc=");
      Serial.print(client2.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}
void loop() {
  if (!client2.connected()) {
    reconnect();
  }
  client2.loop();
  timer.run();
  long now = millis();  
}
void notify() {
  // 일정 주기마다 실행
  if ( client2.state() == 0 ) {
     if ( (err=dht11.read(humidity, temperature) ) == 0 ) {      
      String str_temp(temperature);
      String str_hum(humidity);
      
      //str = "ROOM1#TEMP#" + str;
      //str.toCharArray(ch, str.length());
      
      String sensor_id = "\"Dummy-1\"";
      // Make JSON data      
      String msg = "{\"Sensor_ID\": ";
      msg += sensor_id;
      msg += ", \"Humidity\": ";
      msg += str_hum;
      msg += "}";
      msg.toCharArray(ch, msg.length() + 1);
      client2.publish("Home/BedRoom/DHT11/Humidity", ch);   
      // Make JSON data      
      String msg2 = "{\"Sensor_ID\": ";
      msg2 += sensor_id;
      msg2 += ", \"Temperature\": ";
      msg2 += str_temp;
      msg2 += "}";
      msg2.toCharArray(ch2, msg2.length() + 1);
      
      client2.publish("Home/BedRoom/DHT11/Temperature", ch2);   
    }
  }
}