강의자료 · 마이크로프로세서응용설계

장치 명령 처리와 메시지 연동 · 학습

실행 조건

기본 활동은 Python만 사용합니다. 실제 메신저·MQTT 연결은 처리 규칙을 확인한 뒤 선택합니다.

이번에 배울 내용

메신저·웹·장치 버스가 달라도 같은 명령 처리 규칙을 재사용할 수 있도록 입력·상태·응답을 나눕니다.

전체 흐름

외부 메시지 → 공통 명령 → 검증·중복 제거 → 상태·응답

메시지와 장치 동작 분리

같은 on 명령은 웹·메신저·장치 버스로 들어올 수 있습니다. 전송 형식을 공통 요청 {request_id,device,command}로 바꾼 뒤 한 처리 함수에 전달합니다.

중복과 잘못된 명령

on처럼 목표 상태를 지정하는 명령과 toggle처럼 현재 상태를 바꾸는 명령은 재전송의 영향이 다릅니다. 요청 ID·장치·명령을 검증한 뒤 중복을 처리하고, 응답과 실제 상태를 함께 남깁니다.

풀이 예제

입력은 /start, /led on, /led off, /led invalid, /unknown입니다. 초기 LED 상태는 off입니다.

def handle(text,state):
    if text=='/start':return state,'Commands: /led on, /led off'
    if text=='/led on':return True,'LED on'
    if text=='/led off':return False,'LED off'
    return state,'Usage: /led on | /led off'
state=False
for text in ['/start','/led on','/led off','/led invalid','/unknown']:
    next_state,reply=handle(text,state);print(text,state,next_state,reply);state=next_state
/start False False Commands: /led on, /led off
/led on False True LED on
/led off True False LED off
/led invalid False False Usage: /led on | /led off
/unknown False False Usage: /led on | /led off

참고 예제

추가 예제 보기

참고 자료