본문 바로가기
융복합 프로젝트 PZONE

<PZONE 프로젝트> 17. IoT Core 규칙으로 Lambda 호출하기 및 장고 연동하기

by 앙팡공기팡 2023. 2. 21.

 

 

지난 글

 

 

 

IoT Core와 센서 연결하기: https://cooookieeee.tistory.com/18

 

 

 

 

진행사항

 

 

 

1. Lambda 생성 및 Iot Core와 RDS에 대한 권한 역할 부착

 

 

2. pymysql layer 다운 받기 위해  서버에서 pip install pymysql 후 library에서 pymysql zip으로 압축 후 sftp 서버로 로컬 전송

 

 

3. Lambda에 layer 등록 후 환경변수로 DB 접속 Requirement 등록

 

 

4. event로 받은 정보를 column에 맞게 DB에 insert하는 함수 작성 ( RDS 에서 table 생성 선행)

 

 

5. Iot core에서 규칙 생성 및 query 작성 및 Lambda와 연결

 

 

6. Django에서 RDS로부터 센서 데이터 받아와서 처리

 

- 특정 sensor_id로부터의 값을 받아온 시간과 현재 시간을 비교하여 10초 이내에 센서가 값을 보냈을 시를 조건으로

    score 값에 변화를 주었다. 

 # 3. 기울기 sensor
        sensor_score = dict()

        slope_sensor_id = "ea2b62"
        sql = f"""SELECT i.time, i.inc
                  FROM inclination i
                  WHERE i.sen_id='{slope_sensor_id}'
                  ORDER BY i.`time` DESC LIMIT 1"""

        # now = datetime.utcnow()
        sensor_data = connectDB(sql)[0]
        time_diff = datetime.utcnow() - datetime.strptime(sensor_data[0], "%Y-%m-%d %H:%M:%S")

        if time_diff.seconds < 10:
            sensor_score["angle"] = 0
        else:
            sensor_score["angle"] = 2

 

 

 

결과

 

 

 

1024, 0 값이 기울기 센서 값 , sen_id , 기울기를 보낼때의 시간으로 table을 구성하였다.

 

 

 

 

문제점 및 개선점

 

1. pymysql insert 사용시 커밋도 같이 해줘야 반영된다.

 

2. 메시지 먼저 개시해보고 구독 실행하는것이 진행이 매끄럽다.

 

3. 메시지 형식에서 작은 따옴표를 인식 못하는 문제 =>  람다 호출 불가

        

    - 큰따옴표로 수정

 

4..ino 파일(C언어 기반) 컴파일시 작은 따옴표를 string으로 컴파일   불가

 

  - 역 슬래시로 “ 내  “ 사용  

 

5. lambda event에서 str아닌 정보는 받지 못함

 

6. pymysql 에서 insert구문 쓸땐 작은 따옴표를 적용해야한다.

 

 

 

Ref

 

 

https://aws.amazon.com/ko/premiumsupport/knowledge-center/iot-core-publish-mqtt-messages-python/

 

-python으로 iot core에 메시지 pub 하는 방법

 

https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/iot-lambda-rule.html

 

-iot core와 lambda 연결