투케이2K

414. (javaScript) 자바스크립트 AWS Iot Core 특정 Thing 사물에 publish 메시지 전송 수행 - updateThingShadow 본문

JavaScript

414. (javaScript) 자바스크립트 AWS Iot Core 특정 Thing 사물에 publish 메시지 전송 수행 - updateThingShadow

투케이2K 2025. 9. 15. 21:29
728x90
반응형

[개발 환경 설정]

개발 툴 : Edit++

개발 언어 : JavaScript

 

[소스 코드]

-----------------------------------------------------------------------------------------
[사전 설명 및 설정 사항]
-----------------------------------------------------------------------------------------

- 개발 환경 : Web


- 개발 기술 : JavaScript (자바스크립트) / AWS / Iot Core / Shadow / Publish / MQTT


- 사전) AWS IoT Device Shadow 섀도우 서비스 설명

  >> AWS IoT Device Shadow 서비스는 앱 및 클라우드에서 실시간 IOT 디바이스에 접근해 현재 상태에 대한 액세스, 제어, 변경할 수 있게 도움을 주는 서비스입니다

  >> AWS IoT 사물 객체가 명시적으로 생성될 때까지 섀도우가 없으며, AWS IoT 콘솔을 사용하여 섀도우를 생성, 업데이트 및 삭제할 수 있습니다

  >> AWS IoT Device Shadow 는 MQTT 기반으로 동작하며, publish 제어 명령 수행 및 subscribe 구독으로 상태를 확인할 수 있습니다

  >> AWS IoT Device Shadow 는 JSON 규격을 사용해 데이터를 저장하고 검색합니다

    - desired : 앱은 desired 객체를 업데이트하여 디바이스 속성에 대해 원하는 상태를 지정합니다.

    - reported : 디바이스는 reported 객체에 현재 상태를 보고합니다.

-----------------------------------------------------------------------------------------





-----------------------------------------------------------------------------------------
[소스 코드]
-----------------------------------------------------------------------------------------

<!DOCTYPE HTML>
<html lang="ko">
<head>
    <title>javaScriptTest</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">


    <!-- 반응형 구조 만들기 -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">





    <!-- 내부 CSS 스타일 지정 -->
    <style>

        html, body {
            width: 100%;
            height: 100%;
            margin : 0 auto;
            padding : 0;
            border : none;
            background-color: #666;
        }

    </style>





    <!-- [CDN 주소 설정] -->
    <script src="https://code.jquery.com/jquery-latest.min.js"></script>
    <script src="https://sdk.amazonaws.com/js/aws-sdk-2.1416.0.min.js"></script>
    <script src="https://unpkg.com/aws-iot-device-sdk/browser/aws-iot-sdk-browser-bundle.js"></script>






    <!-- [자바스크립트 코드 지정] -->
    <script>

        // --------------------------------------------------------------------------------------------------------------

        // [전역 변수 선언]
        const endPoint = 'a..km-ats.iot.ap-northeast-2.amazonaws.com'; // [AWS Iot Core 엔드포인트]
        const region = 'ap-northeast-2'; // [AWS 리전]
        const accessKeyId = 'AK..A6'; // [IAM 액세스 키]
        const secretAccessKey = 'mP..5J'; // [IAM 시크릿 키]
        const thingName = 'TWOK_0000000001'; // [사물 명칭]
        const shadowName = 'control'; // [Shadow 명칭]

        // --------------------------------------------------------------------------------------------------------------

        // [html 최초 로드 및 이벤트 상시 대기 실시]
        window.onload = function() {
            console.log("");
            console.log("=========================================");
            console.log("[window onload] : [start]");
            console.log("=========================================");
            console.log("");
            
            
            // -----------------------------------------
            // [요약 개념 정리]
            // -----------------------------------------
            // AWS IoT Device Shadow 섀도우 서비스 설명 :
            // 
            // AWS IoT Device Shadow 서비스는 앱 및 클라우드에서 실시간 IOT 디바이스에 접근해 현재 상태에 대한 액세스, 제어, 변경할 수 있게 도움을 주는 서비스입니다
            // AWS IoT Device Shadow 는 MQTT 기반으로 동작하며, publish 제어 명령 수행 및 subscribe 구독으로 상태를 확인할 수 있습니다
            // -----------------------------------------
            // 필요 CDN 주소 : 
            // 
            // https://sdk.amazonaws.com/js/aws-sdk-2.1416.0.min.js
            // https://unpkg.com/aws-iot-device-sdk/browser/aws-iot-sdk-browser-bundle.js
            // -----------------------------------------
            // 참고 사이트 : 
            // 
            // https://blog.naver.com/kkh0977/223695582654?trackingCode=blog_bloghome_searchlist
            // -----------------------------------------             


            // -----------------------------------------
            // [AWS.config 지정]
            // -----------------------------------------
            AWS.config.update({              
              accessKeyId: accessKeyId,
              secretAccessKey: secretAccessKey
            });


            // -----------------------------------------
            // [AWS.IotData 객체 생성]
            // -----------------------------------------
            const awsClient = new AWS.IotData({
              endpoint: endPoint,
              region: region
            });


            // -----------------------------------------
            // [Publish 수행 Json 페이로드 생성]
            // -----------------------------------------

            const params = {              
              thingName: thingName, 
              shadowName: shadowName, 
              payload: JSON.stringify({ // Publish 요청 JSON 페이로드 정의
                state: {
                  desired: { // Client Publish 페이로드 작성
                    color: 'blue' // Key : color / Value : blue
                  }
                }
              })
            }; 


            // -----------------------------------------
            // [updateThingShadow 사용해 publish 요청 수행]
            // -----------------------------------------
            awsClient.updateThingShadow(params, (err, data) => {
              if (err) {
                console.error("");
                console.error("=========================================");
                console.error("[updateThingShadow] : [Error]");
                console.error("---------------------------------------");
                console.error(err);					
                console.error("=========================================");
                console.error("");

              } else {
                console.log("");
                console.log("=========================================");
                console.log("[updateThingShadow] : [Success]");
                console.log("=========================================");
                console.log("");
              }

            });

        };

        // --------------------------------------------------------------------------------------------------------------

    </script>


</head>


<body>

</body>

</html>

-----------------------------------------------------------------------------------------





-----------------------------------------------------------------------------------------
[참고 사이트]
-----------------------------------------------------------------------------------------

[Aws Iot Core] AWS IoT Device Shadow 섀도우 서비스 설명 정리 - 실시간 디바이스 상태 확인 및 제어

https://blog.naver.com/kkh0977/223695582654?


[업무 이슈] Aws Iot Core Shadow 섀도우 구독 수행 에러 응답 관련 이슈 확인 - 기존 클레임 인증서 연결 요청으로 구독 수행 문제

https://blog.naver.com/kkh0977/223851956250?trackingCode=blog_bloghome_searchlist


[Aws Iot Core] Aws Iot Core 프로비저닝 수행 완료 후 생성 된 Shadow 섀도우 목록 확인 방법

https://blog.naver.com/kkh0977/223698063948?trackingCode=blog_bloghome_searchlist


[Aws Iot Core] Aws 프로비저닝 수행 및 섀도우 Shadow 토픽 Topic 구독 시 와일드 카드 (wild card) 설명 정리

https://blog.naver.com/kkh0977/223825295723?trackingCode=blog_bloghome_searchlist


[Aws Iot Core] Https , MQTT , Websocket 통신 Port 포트 정보 정리 - aws iot core port

https://blog.naver.com/kkh0977/223695574812?trackingCode=blog_bloghome_searchlist


[투케이 학습] : [aws] Aws IoT Core MQTT 지원 버전 정보 확인 - MQTT3 , MQTT5

https://blog.naver.com/kkh0977/223579461395?trackingCode=blog_bloghome_searchlist

-----------------------------------------------------------------------------------------
 
728x90
반응형
Comments