
오랜만에 포스팅이다. 4학년인만큼 취업이나 프로젝트나 이것저것 하는 것이 많다보니 바쁜 핑계로 많이 미러뒀다ㅠㅠ
이번 해 5월달부터 경북 테크노 파트에서 진행한 공모전을 통해 학생과 기업, 교수님과 컨소시엄을 맺어 진행하고 있는 IoT 기반의 프로젝트를 진행했다.
애당초 해당 프로젝트는 5월부터 시작해서 6개월간 진행하여 10월 31일에 마감이 됐지만 이 프로젝트를 기반으로 막학기 전공 수업인 PBL(Project Base Learn)로 진행하게 돼서 12월 중순까지 계속 개발 중이다.
개발 주제를 간략하게 설명하면 음...
Smarthome...?,
SmartCare...?
독거가구를 대상으로 가구에 허브 역할을 하는 게이트웨이와 여러 센서들을 설치해 수집된 데이터를 기반으로 IoT 생태계 구축과 응급 시스템을 구현하는 것이 목표!
+
위에 주제는 기존 공모전 프로젝트 기준이고 PBL 프로젝트를 위해 추가적으로 수집된 데이터를 기반으로 독거가구를 위한 Deep Learning Model 개발이 필요한 상황이다...
이번 포스팅에서는 대략적으로 프로젝트에 대한 개요 부분을 두 개의 파트로 나뉘어 첫 번째 부분을 기술할 예정이다~
IoT 프로젝트인만큼 가구에 설치한 센서의 종류들이 여러가지가 존재하는데 우리 프로젝트에서 사용한 센서의 종류는 아래와 같다.
아래 사진은 게이트웨이

그리고 데이터 수집하는 과정을 순서화하면 아래와 같다.
게이트웨이와 센서 간 데이터 통신은 Zigbee 프로토콜 기반의 센서들을 이용해 게이트웨이와 각 센서들을 페어링해 문닫힘이 감지되거나 모션이 감지되는 등 각 센서에 특정 이벤트 충족시 센서에서 게이트웨이로 데이터를 송신한다.
|
|
그리고 각 가정의 게이트웨이에서 서버로 데이터를 송신하기 위해 MQTT Protocol을 사용하는데 MQTT를 사용하기 위해서는 broker가 필요하다.
mqtt에 대해서 더 궁금하다면 아래 포스팅 참조
|
|
...
# 브로커에게 메시지가 도착하면 on_message 실행 (이벤트가 발생하면 호출)
def on_message(client, userdata, msg):
try:
data = json.loads(str(msg.payload.decode('utf-8')))
except Exception as es:
print(f"error: {es}")
print(f'msg: {msg}')
return
print(f'[{datetime.now().strftime("%Y-%m-%d %H:%M:%S")}]')
print("topic =", msg.topic)
print(data)
topic_split = msg.topic.split("/")
gateway_model = topic_split[1]
if topic_split[2] == "SENSOR":
if data.__contains__('SHTCX'):
write_basic_data_tsdb(topic_split[1], data['SHTCX'])
elif data.__contains__('ZbReceived'):
# 필요한 데이터만 딕셔너리에서 추출
data = data['ZbReceived']
for key, value in data.items():
sensor_value = value
if sensor_value.__contains__('ModelId'): # ModelId -> 디바이스가 게이트웨이로 등록된 상황
# mysql table 등록 대기 디바이스 저장
print(f'------{gateway_model} Gateway -> {sensor_value["Device"]} Device 대기 등록------')
register_device(sensor_value['Device'], gateway_model, get_device_type_by_ModelId(sensor_value["ModelId"]))
write_sensor_data_tsdb(gateway_model, sensor_value)
else:
print("------Invalid Data Type------")
print()
...
💡 지금까지 간략하게 IoT 프로젝트의 소개와 데이터를 수집하는 방법에 대해서 설명했다. 다음 포스팅에서는 서비스 개발을 위한 사용한 프레임워크, 데이터베이스 내용을 담고 프로젝트 큰 아키텍쳐에 대해서 설명하겠다.