AWS IoT Greengrass Version 1이(가) 2023년 6월 30일에 수명 연장 단계에 들어갔습니다. AWS IoT Greengrass V1 관리형 정책에 대한 자세한 정보는 섹션을 참조하세요. 이 날짜 이후에는 AWS IoT Greengrass V1에서 기능, 개선 사항, 버그 수정 또는 보안 패치를 제공하는 업데이트를 릴리스하지 않습니다. AWS IoT Greengrass V1에서 실행되는 장치는 중단되지 않으며 계속 작동하고 클라우드에 연결됩니다. 중대한 새 기능과 추가 플랫폼에 대한 지원이 추가되는 AWS IoT Greengrass Version 2(으)로 마이그레이션하는 것이 좋습니다.
Serial Stream 커넥터
주의
이 커넥터는 수명 연장 단계로 전환되었으며 AWS IoT Greengrass는 기능, 기존 기능의 개선 사항, 보안 패치 또는 버그 수정을 제공하는 업데이트를 릴리스하지 않을 예정입니다. 자세한 내용은 AWS IoT Greengrass Version 1 유지 관리 정책 단원을 참조하십시오.
Serial Stream 커넥터는 AWS IoT Greengrass 코어 장치의 직렬 포트에서 읽고 씁니다.
이 커넥터는 다음 두 가지 작업 모드를 지원합니다.
온디맨드 읽기 MQTT 주제에 대한 읽기 및 쓰기 요청을 수신하고 읽기 작업의 응답 또는 쓰기 작업의 상태를 게시합니다.
폴링 읽기 직렬 포트에서 정기적으로 읽습니다. 이 모드에서는 온디맨드 읽기 요청도 지원합니다.
참고
읽기 요청의 최대 읽기 길이는 63,994바이트로 제한됩니다. 쓰기 요청의 최대 데이터 길이는 128,000바이트로 제한됩니다.
이 커넥터의 버전은 다음과 같습니다.
버전 |
ARN |
---|---|
3 |
|
2 |
|
1 |
|
버전 변경 사항에 대한 자세한 내용은 Changelog를 참조하십시오.
요구 사항
이 커넥터에는 다음과 같은 요구 사항이 있습니다.
커넥터 파라미터
이 커넥터는 다음 파라미터를 제공합니다.
BaudRate
-
직렬 연결의 전송 속도입니다.
AWS IoT 콘솔의 표시 이름: Baud 속도
필수:
true
유형:
string
유효값:
110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200, 230400
유효한 패턴:
^110$|^300$|^600$|^1200$|^2400$|^4800$|^9600$|^14400$|^19200$|^28800$|^38400$|^56000$|^57600$|^115200$|^230400$
Timeout
-
읽기 작업에 대한 제한 시간(초)입니다.
AWS IoT 콘솔의 표시 이름: 제한 시간
필수:
true
유형:
string
유효값:
1 - 59
유효한 패턴:
^([1-9]|[1-5][0-9])$
SerialPort
-
장치에서 물리적 직렬 포트의 절대 경로입니다. 로컬 장치 리소스에 대해 지정된 소스 경로입니다.
AWS IoT 콘솔의 표시 이름: 직렬 포트
필수:
true
유형:
string
유효한 패턴:
[/a-zA-Z0-9_-]+
SerialPort-ResourceId
-
물리적 직렬 포트를 나타내는 로컬 장치 리소스의 ID입니다.
참고
이 커넥터에는 리소스에 대한 쓰기 전용 액세스 권한이 부여됩니다.
AWS IoT 콘솔의 표시 이름: 직렬 포트 리소스
필수:
true
유형:
string
유효한 패턴:
[a-zA-Z0-9_-]+
PollingRead
-
읽기 모드(폴링 읽기 또는 온디맨드 읽기)를 설정합니다.
폴링 읽기 모드의 경우
true
를 지정합니다. 이 모드에서는PollingInterval
,PollingReadType
및PollingReadLength
속성이 필요합니다.온디맨드 읽기 모드의 경우
false
를 지정합니다. 이 모드에서는 유형 및 길이 값이 읽기 요청에서 지정됩니다.
AWS IoT 콘솔의 표시 이름: 읽기 모드
필수:
true
유형:
string
유효값:
true, false
유효한 패턴:
^([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$
PollingReadLength
-
각 폴링 읽기 작업에서 읽을 데이터(바이트)의 길이입니다. 이는 폴링 읽기 모드를 사용하는 경우에만 적용됩니다.
AWS IoT 콘솔의 표시 이름: 폴링 읽기 길이
필수:
false
.PollingRead
가true
인 경우 이 속성은 필수입니다.유형:
string
유효한 패턴:
^(|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-2][0-9]{3}|63[0-8][0-9]{2}|639[0-8][0-9]|6399[0-4])$
PollingReadInterval
-
폴링 읽기를 수행하는 간격(초)입니다. 이는 폴링 읽기 모드를 사용하는 경우에만 적용됩니다.
AWS IoT 콘솔의 표시 이름: 폴링 읽기 간격
필수:
false
.PollingRead
가true
인 경우 이 속성은 필수입니다.유형:
string
유효한 값은 1~999입니다.
유효한 패턴:
^(|[1-9]|[1-9][0-9]|[1-9][0-9][0-9])$
PollingReadType
-
폴링 스레드가 읽는 데이터 형식입니다. 이는 폴링 읽기 모드를 사용하는 경우에만 적용됩니다.
AWS IoT 콘솔의 표시 이름: 폴링 읽기 유형
필수:
false
.PollingRead
가true
인 경우 이 속성은 필수입니다.유형:
string
유효값:
ascii, hex
유효한 패턴:
^(|[Aa][Ss][Cc][Ii][Ii]|[Hh][Ee][Xx])$
RtsCts
-
RTS/CTS 흐름 제어를 활성화할지 여부를 나타냅니다. 기본값은
false
입니다. 자세한 내용은 RTS, CTS 및 RTR을 참조하십시오. AWS IoT 콘솔의 표시 이름: RTS/CTS 흐름 제어
필수:
false
유형:
string
유효값:
true, false
유효한 패턴:
^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$
XonXoff
-
소프트웨어 흐름 제어를 활성화할지 여부를 나타냅니다. 기본값은
false
입니다. 자세한 내용은 소프트웨어 흐름 제어를 참조하십시오. AWS IoT 콘솔의 표시 이름: 소프트웨어 흐름 제어
필수:
false
유형:
string
유효값:
true, false
유효한 패턴:
^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$
Parity
-
직렬 포트의 패리티입니다. 기본값은
N
입니다. 자세한 내용은 패리티를 참조하십시오. AWS IoT 콘솔의 표시 이름: 직렬 포트 패리티
필수:
false
유형:
string
유효값:
N, E, O, S, M
유효한 패턴:
^(|[NEOSMneosm])$
커넥터 만들기 예(AWS CLI)
다음 CLI 명령은 Serial Stream 커넥터가 포함된 초기 버전을 사용하여 ConnectorDefinition
을 생성합니다. 폴링 읽기 모드에 대해 커넥터를 구성합니다.
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MySerialStreamConnector", "ConnectorArn": "arn:aws:greengrass:
region
::/connectors/SerialStream/versions/3", "Parameters": { "BaudRate" : "9600", "Timeout" : "25", "SerialPort" : "/dev/serial1", "SerialPort-ResourceId" : "my-serial-port-resource", "PollingRead" : "true", "PollingReadLength" : "30", "PollingReadInterval" : "30", "PollingReadType" : "hex" } } ] }'
AWS IoT Greengrass 콘솔에서는 그룹의 커넥터 페이지에서 커넥터를 추가할 수 있습니다. 자세한 내용은 Greengrass 커넥터 시작하기(콘솔) 단원을 참조하십시오.
입력 데이터
이 커넥터는 두 개의 MQTT 주제에서 직렬 포트에 대한 읽기 또는 쓰기 요청을 수락합니다. 입력 메시지는 JSON 형식이어야 합니다.
-
serial/+/read/#
주제에 대한 읽기 요청. -
serial/+/write/#
주제에 대한 쓰기 요청.
이러한 주제에 게시하려면 +
와일드카드를 코어 사물 이름으로 바꾸고 #
와일드카드를 직렬 포트의 경로로 바꿉니다. 예:
serial/
core-thing-name
/read/dev/serial-port
- 주제 필터:
serial/+/read/#
-
이 주제를 사용하여 온디맨드 읽기 요청을 직렬 핀에 전송합니다. 읽기 요청의 최대 읽기 길이는 63,994바이트로 제한됩니다.
- 메시지 속성
-
readLength
-
직렬 포트에서 읽을 데이터의 길이입니다.
필수:
true
유형:
string
유효한 패턴:
^[1-9][0-9]*$
type
-
읽을 데이터의 유형입니다.
필수:
true
유형:
string
유효값:
ascii, hex
유효한 패턴:
(?i)^(ascii|hex)$
id
-
요청에 대한 임의의 ID입니다. 이 속성은 입력 요청을 출력 응답에 매핑하는 데 사용됩니다.
필수:
false
유형:
string
유효한 패턴:
.+
- 입력 예
-
{ "readLength": "30", "type": "ascii", "id": "abc123" }
- 주제 필터:
serial/+/write/#
-
이 주제를 사용하여 쓰기 요청을 직렬 핀에 전송합니다. 쓰기 요청의 최대 데이터 길이는 128,000바이트로 제한됩니다.
- 메시지 속성
-
data
-
직렬 포트에 쓸 문자열입니다.
필수:
true
유형:
string
유효한 패턴:
^[1-9][0-9]*$
type
-
읽을 데이터의 유형입니다.
필수:
true
유형:
string
유효값:
ascii, hex
유효한 패턴:
^(ascii|hex|ASCII|HEX)$
id
-
요청에 대한 임의의 ID입니다. 이 속성은 입력 요청을 출력 응답에 매핑하는 데 사용됩니다.
필수:
false
유형:
string
유효한 패턴:
.+
- 입력 예: ASCII 요청
-
{ "data": "
random serial data
", "type": "ascii", "id": "abc123" } - 입력 예: 16진수 요청
-
{ "data": "
base64 encoded data
", "type": "hex", "id": "abc123" }
출력 데이터
이 커넥터는 다음 두 가지 주제에 대한 출력 데이터를 게시합니다.
-
serial/+/status/#
주제에 대한 커넥터의 상태 정보. -
serial/+/read_response/#
주제에 대한 읽기 요청의 응답입니다.
이 주제에 게시하는 경우 커넥터는 +
와일드 카드를 코어 사물 이름으로 바꾸고 #
와일드카드를 직렬 포트 경로로 바꿉니다. 예:
serial/
core-thing-name
/status/dev/serial-port
- 주제 필터:
serial/+/status/#
-
이 주제를 사용하여 읽기 및 쓰기 요청의 상태를 수신합니다.
id
속성이 응답에 포함된 경우 속성이 응답으로 반환됩니다.- 출력 예: 성공
-
{ "response": { "status": "success" }, "id": "abc123" }
- 출력 예: 실패
-
실패 응답은 읽기 또는 쓰기 작업을 수행하는 동안 발생한 오류 또는 제한 시간을 설명하는
error_message
속성을 포함합니다.{ "response": { "status": "fail", "error_message": "Could not write to port" }, "id": "abc123" }
- 주제 필터:
serial/+/read_response/#
-
이 주제를 사용하여 읽기 작업에서 응답 데이터를 수신합니다. 형식이
hex
인 경우 응답 데이터는 base64로 인코딩됩니다.- 출력 예
-
{ "data": "
output of serial read operation
" "id": "abc123" }
사용 예
다음 상위 수준 단계를 사용하여 커넥터를 사용해 보는 데 이용할 수 있는 예제 Python 3.7 Lambda 함수를 설정합니다.
참고
-
다른 Python 런타임을 사용하는 경우 Python3.x에서 Python 3.7로의 심볼릭 링크를 만들 수 있습니다.
-
커넥터 시작하기(콘솔) 및 커넥터 시작하기(CLI) 주제에는 예제 Twilio 알림 커넥터를 구성하고 배포하는 방법을 보여주는 자세한 단계가 포함되어 있습니다.
커넥터에 대한 요구 사항을 충족하는지 확인합니다.
-
입력 데이터를 커넥터로 보내는 Lambda 함수를 생성하고 게시합니다.
예제 코드를 PY 파일로 저장합니다. Python용 AWS IoT Greengrass 코어 SDK를 다운로드하고 압축을 풉니다. 그런 다음 루트 수준에서 PY 파일과
greengrasssdk
폴더를 포함하는 zip 패키지를 생성합니다. 이 zip 패키지는 AWS Lambda에 업로드하는 배포 패키지입니다.Python 3.7 Lambda 함수를 생성한 후 함수 버전을 게시하고 별칭을 만듭니다.
-
Greengrass 그룹을 구성합니다.
-
별칭으로 Lambda 함수를 추가합니다(권장). Lambda 수명 주기를 수명이 긴 함수(또는 CLI의
"Pinned": true
)로 구성합니다. -
필요한 로컬 장치 리소스를 추가하고 Lambda 함수에 대한 읽기/쓰기 액세스 권한을 부여합니다.
-
그룹에 커넥터를 추가하고 해당 파라미터를 구성합니다.
-
커넥터가 입력 데이터를 수신하고 지원되는 주제 필터에서 출력 데이터를 전송할 수 있도록 허용하는 구독을 그룹에 추가합니다.
Lambda 함수를 소스로, 커넥터를 대상으로 설정하고 지원되는 입력 주제 필터를 사용합니다.
커넥터를 소스로, AWS IoT Core를 대상으로 설정하고 지원되는 출력 주제 필터를 사용합니다. 이 구독을 사용하여 AWS IoT에서 상태 메시지를 확인합니다.
-
-
그룹을 배포합니다.
-
AWS IoT 콘솔의 테스트 페이지에서 출력 데이터 주제를 구독하여 커넥터의 상태 메시지를 확인합니다. 예제 Lambda 함수는 수명이 긴 함수로 그룹이 배포된 직후 메시지 전송을 시작합니다.
테스트를 마치면 Lambda 수명 주기를 온디맨드 함수(또는 CLI의
"Pinned": false
)로 설정하고 그룹을 배포할 수 있습니다. 이렇게 하면 함수가 메시지 전송을 중지합니다.
예
다음 예제 Lambda 함수는 커넥터에 입력 메시지를 보냅니다.
import greengrasssdk import json TOPIC_REQUEST = 'serial/CORE_THING_NAME/write/dev/serial1' # Creating a greengrass core sdk client iot_client = greengrasssdk.client('iot-data') def create_serial_stream_request(): request = { "data": "TEST", "type": "ascii", "id": "abc123" } return request def publish_basic_request(): iot_client.publish(payload=json.dumps(create_serial_stream_request()), topic=TOPIC_REQUEST) publish_basic_request() def lambda_handler(event, context): return
라이선스
Serial Stream 커넥터에는 다음 타사 소프트웨어/라이선스가 포함되어 있습니다.
pyserial
/BSD
이 커넥터는 Greengrass 코어 소프트웨어 라이선스 계약
Changelog
다음 표에서는 의 각 릴리스에서 변경된 중요 사항에 대해 설명합니다.
버전 |
변경 |
---|---|
3 |
Lambda 런타임 요구 사항을 변경하는 Python 3.7로 런타임을 업그레이드했습니다. |
2 |
AWS 리전 지원용 커넥터 ARN이 업데이트됨. |
1 |
최초 릴리스. |
Greengrass 그룹은 한 번에 하나의 커넥터 버전만 포함할 수 있습니다. 커넥터 버전 업그레이드에 대한 자세한 내용은 커넥터 버전 업그레이드을 참조하십시오.