06.09(15주차) AWS - rlarlqor0513/smart-device GitHub Wiki

AWS

image

AWS(Amazon Web Service)

 AWS(Amazon Web Services)는 아마존 닷컴이 제공하는 클라우드 컴퓨팅 플랫폼이다. AWS는 다양한 클라우드 기반 인프라 서비스,
플랫폼 서비스, 애플리케이션 서비스를 제공하여 기업과 개발자들이 웹 애플리케이션을 구축, 배포, 관리할 수 있도록 지원한다.

 AWS는 컴퓨팅 서비스, 스토리지 및 데이터베이스 서비스, 네트워킹 서비스, 인공지능 및 기계학습 서비스 그리고 개발 도구 
및 관리 서비스를 제공하고 지원한다. AWS는 이 외에도 다양한 서비스를 제공하며, 클라우드에서의 확장성, 가용성, 보안성을 향
상시키고 개발 및 운영 비용을 절감할 수 있는 장점을 제공한다.

AWS 가입

image

AWS에 가입해주고 로그인 해준다.

사물 생성

AWS -> 서비스 -> 사물 인터넷 -> Iot Core -> 관리 -> 모든 디바이스 -> 사물 에 들어가서 사물 생성을 해준다.

40

정책 설정 및 인증서 다운로드

38

39

라이브러리 다운로드

PubsubClient, ArduinoJson

41 42

코드 업로드

#include "Secrets.h"
#include <WiFiClientSecure.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
#include "WiFi.h"
 
#include "DHT.h"
#define DHTPIN 13     // Digital pin connected to the DHT sensor
#define DHTTYPE DHT11   // DHT 11
 
#define AWS_IOT_PUBLISH_TOPIC   "esp32/pub"
#define AWS_IOT_SUBSCRIBE_TOPIC "esp32/sub"
 
float h ;
float t;
 
DHT dht(DHTPIN, DHTTYPE);
 
WiFiClientSecure net = WiFiClientSecure();
PubSubClient client(net);
 
void connectAWS()
{
  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
 
  Serial.println("Connecting to Wi-Fi");
 
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print("wifi not \n");
  }
 
  // Configure WiFiClientSecure to use the AWS IoT device credentials
  net.setCACert(AWS_CERT_CA);
  net.setCertificate(AWS_CERT_CRT);
  net.setPrivateKey(AWS_CERT_PRIVATE);
 
  // Connect to the MQTT broker on the AWS endpoint we defined earlier
  client.setServer(AWS_IOT_ENDPOINT, 8883);
 
  // Create a message handler
  client.setCallback(messageHandler);
 
  Serial.println("Connecting to AWS IOT");
 
  while (!client.connect(THINGNAME))
  {
    Serial.print(". \n");
    delay(300);
  }
 
  if (!client.connected())
  {
    Serial.println("AWS IoT Timeout!");
    return;
  }
 
  // Subscribe to a topic
  client.subscribe(AWS_IOT_SUBSCRIBE_TOPIC);
 
  Serial.println("AWS IoT Connected!");
}
 
void publishMessage()
{
  StaticJsonDocument<200> doc;
  doc["humidity"] = h;
  doc["temperature"] = t;
  char jsonBuffer[512];
  serializeJson(doc, jsonBuffer); // print to client
 
  client.publish(AWS_IOT_PUBLISH_TOPIC, jsonBuffer);
}
 
void messageHandler(char* topic, byte* payload, unsigned int length)
{
  Serial.print("incoming: ");
  Serial.println(topic);
 
  StaticJsonDocument<200> doc;
  deserializeJson(doc, payload);
  const char* message = doc["minssage"];
  Serial.println(message);
}
 
void setup()
{
  Serial.begin(115200);
  connectAWS();
  dht.begin();
}
 
void loop()
{
  h = dht.readHumidity();
  t = dht.readTemperature();
 
 
  if (isnan(h) || isnan(t) )  // Check if any reads failed and exit early (to try again).
  {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }
 
  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.println(F("°C "));
 
  publishMessage();
  client.loop();
  delay(1000);
}

결과값 확인

⚠️ **GitHub.com Fallback** ⚠️