AWS IoT를 사용한 라즈파이의 사활 모니터링의 예
이번에는 connection 주제에 송신되는 메시지를 사용한 사활 감시의 일례를 적어 둡니다.
환경
IoT 장비: 라즈파이
라즈파이는 AWSIoTPythonSDK의 인스톨과 증명서 파일의 배치를 실시해, MQTT 접속할 수 있는 상태의 것을 상정.
통신 상태 감지
첫째, 다음과 같이 AWSIoTPythonSDK의 AWSIoTMQTTShadowClient를 사용하여 라즈파이와 AWSIoT 사이에 연결합니다.
from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTShadowClient
...
# Connect to AWS IoT
myAWSIoTMQTTShadowClient.connect()
그러면 AWSIoT 측은 연결을 감지하고 다음 주제에 메시지를 보내는 사양입니다.
# 対象のclientIdのIoT機器が接続、切断を実施した際にパブリッシュされるトピック
$aws/events/presence/connected/clientId
$aws/events/presence/disconnected/clientId
여기에 게시된 메시지는 다음 구조로 들어옵니다.
{
"clientId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"timestamp": 1460065214626,
"eventType": "connected",
"sessionIdentifier": "00000000-0000-0000-0000-000000000000",
"principalIdentifier": "000000000000/ABCDEFGHIJKLMNOPQRSTU:some-user/ABCDEFGHIJKLMNOPQRSTU:some-user"
}
이 메시지를 사활 감시 정보로 하는 것으로 감시를 실시합니다.
IoT Role을 이용한 다른 서비스와의 연계
사활 정보의 취득 장소를 알 수 있었으므로, AWS의 다른 서비스와 제휴해 보존해 갑니다.
AWS IoT에서는 주제에 포함된 메시지를 트리거로 다른 서비스를 호출할 수 있습니다.
이번에는 Lambda를 사용하여 라즈파이의 Shadow에 사활 정보를 저장합니다.
Lambda 함수를 미리 만든 후 IoT Role에서 호출하여 저장합니다.
3. 액션 항목에서
アクションの追加
4. 실행하고 싶은 AWS 서비스를 선택, 이번에는 Lambda를 선택여기서 Shadow에 쓰는 Lambda 함수를 선택합니다. 지정하는 Lambda 함수는 아래에 설명되어 있습니다.
Shadow를 다시 쓰는 Lambda 함수 만들기
Lambda 콘솔로 이동합니다.
이번에는 Python에서 boto3을 사용하고 Shadow에 상태를보고하는 과정을 설명합니다.
import boto3
import json
def lambda_handler(event, context):
client = boto3.client('iot-data')
connected_bool = 0
if event['eventType'] == "connected":
connected_bool = 1
shadow = {"state":{'reported': {'connected': connected_bool}}}
print(event)
response = client.update_thing_shadow(
thingName = event['clientId'],
payload = json.dumps(shadow, ensure_ascii=False)
)
return
이 함수를 함께 사용하면 Shadow가 항상 상태 확인 정보를 반영할 수 있습니다.
헬스 체크의 정보와 Shadow의 상태는 나누지 않고 정리하는 것이 관리가 하기 쉽다고 생각 이러한 구성으로 했습니다.
데이터베이스에 저장 등은이 Shadow의 내용을 그대로 DynamoDB에 저장하면 좋다고 생각합니다.
Reference
이 문제에 관하여(AWS IoT를 사용한 라즈파이의 사활 모니터링의 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Tanashun/items/e3ac82d4b11d5b3b04e4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)