개발자/스마트팜

Greenhouse 원격 관리시스템 서버프로그램과 카메라 8

지구빵집 2020. 8. 24. 09:12
반응형

 

Greenhouse 원격 관리시스템 서버프로그램과 카메라 8 

 

Greenhouse 원격관리 시스템의 서버 프로그램은 Gateway기능을 수행하는 라즈베리파이에서 돌아가는 소프트웨어이다. Greenhouse 원격관리 시스템 서버 소프트웨어의 기능을 살펴보자.

 

Greenhouse 원격관리 시스템을 구현하는 전체 포스팅은 아래와 같이 진행합니다. 참고하세요.

Greenhouse 원격관리시스템 개요 1

Greenhouse 원격관리시스템 Hardware 2

Greenhouse 원격 관리시스템 센서와 액츄에이터 3

Greenhouse 원격 관리시스템 액츄에이터 4

Greenhouse 원격 관리시스템 전원부 5

Greenhouse 원격 관리시스템 연결도 6

Greenhouse 원격 관리시스템 소프트웨어 테스트 7

Greenhouse 원격 관리시스템 서버프로그램과 카메라 8

Greenhouse 원격 관리시스템 안드로이드 앱 9

 


○ 온습도 센서로부터 일정한 시간마다 센서 데이터 수집
○ 조도 센서로부터 일정한 시간마다 센서 데이터 수집
○ 수집된 센서 데이터는 시간마다 정보와 함께 데이터 베이스에 저장
○ 이미 설정된 환경 조건(물 부족, 야간)을 판단하여 액츄에이터 제어
○ Greenhouse의 실제 모습을 카메라를 이용하여 동영상 스트리밍으로 전송
○ 원격지 사용자의 요청이 있을 경우 액츄에이터 직접 제어  

 

 

서버 소프트웨어의 Data Flow Diagram

 

 

Greenhouse 원격관리 시스템 서버 프로그램은 데이터를 분석하고, 대기상태에서 사용자의 입력을 기다리게 된다. 사용자가 스마트폰을 이용하여 현재 상태와 카메라 보기, 설정을 Setting 하는 기능을 통해 서버 프로그램은 해당 기능을 수행한다. 

 

8.1 데이터 베이스 설계

 

일단 데이터 베이스에 대해 알아보자. 앞서 APM(Apache, PHP, MySQL)을 설치하였다. 그것을 바탕으로 데이터 베이스를 활용해보자. 여기서 사용하는 데이터 베이스는 Greenhouse의 모든 센서데이터와 이벤트 기록을 주기적으로, 아니면 발생시 데이터 베이스에 저장한다.

 

Greenhouse 원격관리 시스템의 데이터 베이스의 설계를 대략적으로 나타낸다. 데이터 베이스의 설계와 테이블 구성은 방대한 작업이므로 아래 실습에서 간단하게 실습하고, 실제 구현할 때에는 서버 코드를 참조하여 구현한다.

 

DB Name : iotfarm
Table : tfarmsensorvalue 센서값 저장 테이블
1분마다 센서값 저장한다.
날짜 day / 조도 int / 온도 float / 습도 float

 

Table : tfarmsensorcheck 센서 정상/불량 저장 테이블
센서 정상 불량 확인하여 저장 10분마다.
날짜 day / 조도센서 (정상, 오류) / 온도센서 (정상, 오류) / 습도센서(정상, 오류)

 

Table : tfarmactuoperate 액츄에이터 동작상태(동작중/정지중)
액츄 동작시 데이터베이스 업데이트 하고, 동작 끝날 때 업데이트
날짜 day / pump(on,stop) / fan(on, stop) / dcmotor(on, stop) / rgbled(on, stop)

 

Table : tfarmactucheck 액츄에이터가 정상/불량 저장 테이블
액츄에이터 정상 불량 기록 – 현재는 모두 정상
pump(normal, fail), fan(normal, fail), dcmotor(normal, fail), rgbled(normal, fail)

 

Table : tfarmsetting 설정값 저장 테이블
Now(), 매일/2일/3일(0,1,2)  

 

8.2 서버 실행과 카메라

 

영상 여기서는 Greenhouse 원격관리 시스템의 서버를 라즈베리 파이에서 실행하고 Greenhouse 원격관리 시스템 앱을 실행시킨 상태에서 결과를 확인하도록 한다.

 

pi@raspberrypi ~ $ cd smartfarm_server
pi@raspberrypi ~/smartfarm_server $
pi@raspberrypi ~/smartfarm_server $ sudo ./server

 

실행을 하고 스마트 폰에서 라즈베리 파이의 IP 주소를 연결한 후 확인하게 되면 다음과 같은 메시지를 보이면서 실행이 된다. 

 

pi@raspberrypi ~/smartfarm_server $ sudo ./server
Handling client ip : 192.168.1.98
Handling client port : 56323
Handling client socket number : 5
connected user  : 1
[5Sock][MyUserNum:0]:[0|257X˾▒X˾]
message parsing start :0|257X˾▒X˾
 app type : 0x0000
 command : 0x0101
 data :
Data not good, skip
Data not good, skip
Humidity = 17.40 % Temperature = 24.40 *C
Humidity = 17 Temperature = 24
Temperature = 24
Data not good, skip
Humidity = 17.40 % Temperature = 24.40 *C
Humidity = 17 Temperature = 24
Humidity = 17
Smartfarm_server>server

 

카메라를 확인할 경우 서버에서 카메라 쉘 프로그램이 실행되고 있어야 한다. 따라서 현재 상태에서 Putty 프로그램을 하나 더 실행하여 루트에서 sh mjpg.sh 명령어를 실행한 상태로 확인한다. 

 

pi@raspberrypi ~ $ sh mjpg.sh

MJPG Streamer Version: svn rev:
 DBG(/home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/input_raspicam.c, input_init(), 116): argv[0]=raspicam input plugin
 DBG(/home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/input_raspicam.c, input_init(), 116): argv[1]=-d
 DBG(/home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/input_raspicam.c, input_init(), 116): argv[2]=200
 DBG(/home/pi/mjpg-streamer/mjpg-streamer-experimental/plugins/input_raspicam/input_raspicam.c, input_init(), 183): case 6, 7
 i: delay.............: 200
 i: resolution........: 640 x 480
 i: camera parameters..............:
.
.
.

 

위와 같이 실행 한 상태에서 스마트폰과 연동하여 동작하게 된다. 

 

 

아무래도 거저 먹은 듯 너무 부실하다. 다시 정리를 해야겠다. 아니면 이전 작성한 자료를 소환하든지. 여기까지 하고 오늘 약속이 있어 놀러나간다. 달리기 훈련일도 빠지지 않아야 하고, 노는 일도 빠지지 않아야 하고, 만나는 일도 빠지지 않아야 한다. 인생에 빠뜨려도 되는 일은 무엇인가?

 

 

 

 

 

 

반응형