[TIL] 2021.6.9_Term Project 개발일기_: Smart Light
📍모바일 시스템 및 응용 Term Project
Project_GitHub
👆프로젝트 코드가 궁금하다면 여기루
💡Smart Light💡
라즈베리파이와 조도 센서를 통해 실시간 방의 밝기 측청한 후 밝기에 따라 조명을 켜주는 서비스
-
라즈베리파이
조도센서 연결, 소켓 통신으로 안드로이드 폰에 값 전달
서버 -
안드로이드 어플
라즈베리파이에서 받아온 값을 UI로 표현
클라이언트
사용자가 조명을 조작할 수 있도록 함- 외출 모드 : 집 밖에 나갈 때 사용, 방의 밝기가 기준값 이하로 내려가도 조명이 켜지지 않음
- 집콕 모드 : 집 안에 있을 때 사용, 방의 밝기에 따라 조명을 제어함
🙋♀️Server_Python
- 조도센서를 이용해 실시간 밝기 측정
- 안드로이드 어플과 소켓 통신
- 조도센서를 이용해 측정한 값을 클라이언트에 전달
- 클라이언트로부터 전달 받은 값을 통해 조명 제어
🙋♀️Client_Java
- 라즈베리파이와 소켓 통신
- 서버로 부터 받은 값을 저장, 받은 값에 따라 조명 제어
- 조명을 어떻게 제어할지 서버로 전달
🙋♀️시연
❗Error Note
-
module Not Found 에러
라즈베리파이에 bluetooth를 설치했지만 계속 찾을 수 없다고 한다.. 결국 이유를 찾지 못하고 소켓 통신을 통해서 라즈베리파이와 안드로이드폰을 연결했다.
구글링을 통해서 upgrade, update, bluzman, pip... 전부 해봤지만 성공하지 못했다.. -
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);
📝참고자료
Author And Source
이 문제에 관하여([TIL] 2021.6.9_Term Project 개발일기_: Smart Light), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zero9657/TIL-2021.5.29개발일기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)