이번 포스팅에서는 webOS를 활용한 LED 제어하는 과정에 대해 다뤄보겠습니다.
webOS Open Source Edition : WebSocket Communication on webOS 를 참고하여 작성하였습니다.
- 전체 시스템 소개
- ESP+LED+websocket
- Enact webapplication
- websocket server
- 시스템 연동
Introduction
1. Interaction Objects
- Client (ESP8266, LED, WebSocket)
- Enact WebApplication (webOS 기반)
- WebSocket Server
2. WebSocket
- WebSocket 이란?
▶ WebSocket 은 하나의 전송 제어 프로토콜(TCP) 접속에 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜입니다.
- 프로토콜 HandShake
▶ WebSocket 을 연결하기 위해 Client 는 WebSocket HandShake 요청을 보내며, 이렇게 하면 Server 는 WebSocket HandShake 응답을 아래의 예에서 보는 바와 같이 반환합니다.
Client request :
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com
Server response :
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat
전체 시스템 구성도
STEP
1. WebSocket Server 만들기
- WebSocket Client(ESP8266 + LED) 로부터 메시지를 받으면 함수의 개체가 데이터를 수신합니다.
- WebSocket Client 는 JSON 형식의 문자열을 WebSocket Server 에 보내고 Server는 python 개체에 저장합니다.
- Server 프로그램에서 데이터를 사용할 때, 해당 개체를 JSON 형식 데이터로 다시 변환해야합니다.
2. WebSocket Client 만들기 (ESP8266 + LED)
- WebSocket Server 의 IP 주소 지정 후 IP 주소와 함께 WebSocket 개체를 만듭니다.
- Server 에서 JSON 형식으로 받은 메시지 출력 및 분석합니다.
- WebSocket Server 에 메시지 전송하면 메시지는 JSON 형식으로 형성된 후 문자열로 변환합니다.
※WebSocket 통신의 문자열에서 데이터 교환이 수행됨에 따라 JSON 개체를 전송하기 전에 JSON 형식 문자열로 변환해야 합니다. - WebSocket 테스트 화면을 통해 WebSocket Server에서 전송되는 결과가 화면에 출력되는 것을 확인합니다.
3. Enact WebApplication (Luna Service 알림 API 사용)
- LED의 점등 상태 변화에 따라 toast 알림을 받아봅니다.
- LED 점등 여부를 확인합니다.
- toggle 버튼을 이용하여 LED의 점등 상태를 제어합니다.
4. webOS에서 앱 설치 및 실행
필요한 것 :
Raspberry PI
CLI (webOSE SDK 도구에 포함)
- WebSocket 통신을 사용하는 Web Application을 개발했습니다. webOS 에서 어떻게 작동하는지 살펴보기 위해 CLI 를 사용하여 Application 을 패키징, 장치 등록, 앱 설치 및 실행합니다.
'webOS Article > 4. webOS 활용하기' 카테고리의 다른 글
toggle 버튼과 루나 서비스 이용해서 led 켜기/끄기 (0) | 2021.08.13 |
---|---|
webOS와 websocket을 이용하여 LED 제어하기 5 : 시스템 연동하기 (0) | 2021.08.06 |
webOS와 websocket을 이용하여 LED 제어하기 4 : websocket server (0) | 2021.08.05 |
webOS와 websocket을 이용하여 LED 제어하기 3 : Enact Web Application (0) | 2021.08.05 |
webOS와 websocket을 이용하여 LED 제어하기 2 : ESP와 LED ↔ server (2) | 2021.08.05 |