AWS Loft Tokyo의 IoT@Loft 핸즈온에 가입했습니다.
9293 단어 STM32awsIoTIoTAWSGreengrass
소개
어제 AWS Loft Tokyo의 IoT@Loft 핸즈온 #2에 참가했습니다. ST 마이크로 일렉트로닉스 주식회사 전, AWS전 감사합니다. 앙케이트에 대답해, STM32L4의 개발 보드 STM32L4 Discovery kit IoT 노드 까지 기념품에 받고 돌아왔습니다.
이 개발 보드는, 4종의 무선 모듈과 8종의 센서가 탑재되고 있고, ST-LINK도 짜넣어지고 있어 디버그 모니터(리모트 디버거)를 사용해, 단독으로 원스텝 실행도 할 수 있도록(듯이) 되어 있습니다. 평상시 사용하고 있는 M5Stack로 유감인 것이 이 기능을 사용할 수 없는 곳입니다.
Greengrass와의 협력
핸즈온으로 물건 자체는 등록되어 있으므로 근접 센서를 사용하여 사람이 다가오면 Greengrass를 올린 스마트 스피커(COET군)에서 소리를 냅니다. 순찰 등에 비해 스마트 스피커는 단어로 다양한 정보를 전달할 수 있습니다.
1. 센서 정보 주제 발행
센서 정보를 주워 주제를 발행하는 것은, 넷상에 여러가지 정보가 있으므로, 그쪽을 참조해 주세요.
2. IoT 규칙
센서에서 항상 발행되는 주제에서 스마트 스피커에서 소리를 내기 위해 조건을 좁히고 트리거를 실행하기 위해 이번에는 규칙을 사용합니다.
핸즈온으로 물건 자체는 등록되어 있으므로 근접 센서를 사용하여 사람이 다가오면 Greengrass를 올린 스마트 스피커(COET군)에서 소리를 냅니다. 순찰 등에 비해 스마트 스피커는 단어로 다양한 정보를 전달할 수 있습니다.
1. 센서 정보 주제 발행
센서 정보를 주워 주제를 발행하는 것은, 넷상에 여러가지 정보가 있으므로, 그쪽을 참조해 주세요.
2. IoT 규칙
센서에서 항상 발행되는 주제에서 스마트 스피커에서 소리를 내기 위해 조건을 좁히고 트리거를 실행하기 위해 이번에는 규칙을 사용합니다.
AWS IoT 관리 화면에서 ACT에서 규칙을 등록합니다.
센서 주제는 주제 이름이 'freertos/demos/sensor'이고 다음과 같은 형식이므로,
{
"temperature": 29,
"humidity": 35,
"pressure": 1001,
"proximity": 2312
}
규칙 쿼리 문은
select proximity from 'freertos/demos/sensor' where proximity < 1000
작업에 "AWS IoT 주제에 메시지 다시 게시"를 지정하고 스마트 스피커(COET-kun)와 연동하기 위한 주제('hello/world/wav/trigger')와 같이 지정합니다. 역할에는 주제를 게시하기 위해 "iot:Publish"정책이 필요합니다.
3. Greengrass 환경
소리를 내기 위해 OS 리소스에 액세스하지만 마지막으로 만든 Greengrass 환경은 컨테이너 없이 만들었으므로 AWS IoT 그룹에서 리소스를 등록할 수 없습니다. 그래서 Greengrass를 루트로 실행하도록 합니다.
/boot/config/config.json의 "runtime"에 "allowFunctionsToRunAsRoot": "yes"를 추가합니다.
/boot/config/config.json
...
"runtime" : {
"cgroup" : {
"useSystemd" : "yes"
},
"allowFunctionsToRunAsRoot" : "yes"
},
...
추가한 후 greengrass를 다시 시작합니다.
cd /greengrass/ggc/core
sudo ./greengrassd restart
아직 확인되지 않았지만 컨테이너를 사용하는 경우 리소스에/dev/snd/controlC0 및/dev/snd/pcmC0D0p를 추가해야합니다.
4. Lambda 함수
스마트 스피커(COET군)에서 소리를 내는 함수를 만듭니다.
소리를 내는 데 필요한 부분은 다음과 같습니다. 사운드 장치, WAV 파일은 자신의 환경에 맞게 확인하십시오.
import os
os.system('aplay -D plughw:0,0 /opt/wav/startup.wav')
샘플 코드는 이렇게 됩니다. 테스트를 위해 데모 카운터 코드도 남겨 둡니다.
#
# Copyright 2020 fukuebiz.
#
# greengrassHelloWorldWav.py
#
# This Lambda function requires the AWS Greengrass SDK to run on Greengrass devices. This can be found on the AWS IoT Console.
import greengrasssdk
import platform
import time
import json
import os
# Creating a greengrass core sdk client
client = greengrasssdk.client('iot-data')
# Retrieving platform information to send from Greengrass Core
my_platform = platform.platform()
# Counter to keep track of invocations of the function_handler
my_counter = 0
def function_handler(event, context):
global my_counter
my_counter = my_counter + 1
if not my_platform:
client.publish(
topic='hello/world/counter',
payload=json.dumps({'message': 'Hello world! Sent from Greengrass Core. Invocation Count: {}'.format(my_counter)})
)
os.system('aplay -D plughw:0,0 /opt/wav/startup.wav')
else:
client.publish(
topic='hello/world/counter',
payload=json.dumps({'message': 'Hello world! Sent from Greengrass Core running on platform: {}. Invocation Count: {}'
.format(my_platform, my_counter)})
)
os.system('aplay -D plughw:0,0 /opt/wav/startup.wav')
time.sleep(20)
return
Greengrass 그룹의 구독에 소스: IoT Cloud, 대상: Greengrass_HelloWorld_Wav Lambda 함수, 주제에 'hello/world/wav/trigger'를 지정합니다.
완성
센서에 가까워지면 스마트 스피커(COET군)에서 소리가 나왔습니다.
어제는 ST 마이크로 일렉트로닉스 주식회사 전, AWS 전 감사합니다.
메모
제1회 Amazon FreeRTOS 설치
제2회 L치카
제3회 TFT
제4회 SD 카드
제5회 AWS Shadows
제6회 OTA
제7회 Greengrass
Reference
이 문제에 관하여(AWS Loft Tokyo의 IoT@Loft 핸즈온에 가입했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fukuebiz/items/e2f026bdea63a54504f2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
제1회 Amazon FreeRTOS 설치
제2회 L치카
제3회 TFT
제4회 SD 카드
제5회 AWS Shadows
제6회 OTA
제7회 Greengrass
Reference
이 문제에 관하여(AWS Loft Tokyo의 IoT@Loft 핸즈온에 가입했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fukuebiz/items/e2f026bdea63a54504f2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)