[TIL] 2021.6.9_Term Project 개발일기_: Smart Light

·2021년 6월 12일
0

TIL

목록 보기
1/1
post-thumbnail

📍모바일 시스템 및 응용 Term Project

Project_GitHub
👆프로젝트 코드가 궁금하다면 여기루


💡Smart Light💡

라즈베리파이와 조도 센서를 통해 실시간 방의 밝기 측청한 후 밝기에 따라 조명을 켜주는 서비스

  • 라즈베리파이
    조도센서 연결, 소켓 통신으로 안드로이드 폰에 값 전달
    서버

  • 안드로이드 어플
    라즈베리파이에서 받아온 값을 UI로 표현
    클라이언트
    사용자가 조명을 조작할 수 있도록 함

    • 외출 모드 : 집 밖에 나갈 때 사용, 방의 밝기가 기준값 이하로 내려가도 조명이 켜지지 않음
    • 집콕 모드 : 집 안에 있을 때 사용, 방의 밝기에 따라 조명을 제어함

🙋‍♀️Server_Python

  • 조도센서를 이용해 실시간 밝기 측정
  • 안드로이드 어플과 소켓 통신
  • 조도센서를 이용해 측정한 값을 클라이언트에 전달
  • 클라이언트로부터 전달 받은 값을 통해 조명 제어

🙋‍♀️Client_Java

  • 라즈베리파이와 소켓 통신
  • 서버로 부터 받은 값을 저장, 받은 값에 따라 조명 제어
  • 조명을 어떻게 제어할지 서버로 전달

🙋‍♀️시연

❗Error Note

  • module Not Found 에러
    라즈베리파이에 bluetooth를 설치했지만 계속 찾을 수 없다고 한다.. 결국 이유를 찾지 못하고 소켓 통신을 통해서 라즈베리파이와 안드로이드폰을 연결했다.
    구글링을 통해서 upgrade, update, bluzman, pip... 전부 해봤지만 성공하지 못했다..

  • (project name) keep stopping 에러

  • UNICODE DECODE 에러

# 클라이언트에서 보내는 데이터를 서버에서 처리
print('rev : ', data.decode('utf-8'), len(data))
// 클라이언트에서 현재 밝기에 따라 조명의 상태를 제어, 제어 값을 서버에 보냄
dos.write(lightState);

클라이언트에서 서버로 받아오는 값을 utf-8로 디코드 하도록 처리했는데 클라이언트에서 보내는 값은 utf-8이 아니었다. 보내는 값은 utf-8이 아닌데, 받은 데이터를 해석하는 것은 utf-8로 하고 있기 때문에 나는 에러인 것 같다.

그래서 자바와 파이썬의 int 바이트를 맞춰서 보내는 복잡한 처리를 하는 것을 고민하고 있었는데, 생각보다 간단하게 클라이언트에서 서버로 보내는 데이터 처리를 utf로 하면 해결할 수 있는 문제였다.

// 클라이언트에서 현재 밝기에 따라 조명의 상태를 제어, 제어 값을 서버에 보냄
// 수정
dos.writeUTF(""+lightType);

📝참고자료

profile
익숙함을 향해👟

0개의 댓글