반응형
스마트 팜 만든 지 오래되었습니다. 지금은 왜 2차냐고요? 1차는 회사에서 개발했었고, 지금 2차는 회사에서 나와서 개발하고 있다는 의미입니다. 1차 때 IoT 사업하면서 스마트 팜을 시작했는데 매출액이 꽤 되었지요. 3년간 10억 정도 한 거 같네요. 일을 저 혼자 했거든요. 2차는 더 업그레이드하고 영리한 스마트 팜을 만들어 볼 생각입니다.
서버 코드를 변경하면 아래와 같이 메이크 파일을 실행하여 서버 실행 프로그램을 생성한다. 명령어와 기타 필요한 코드를 아래에 나타낸다.
filename은 Makefile 이다. 내용은 잘 모른다. 원체 어려워서 말이징. ㅠ.ㅠ 참고로 폴더구조는
iot_farmserver - include
- libs
- src - farm 에 서버 실행파일이 위치한다.
#############################################################################
#
# File Name: Makefile
#
#
#############################################################################
.SUFFIXES : .c .o
CC = gcc
SHELL=/bin/sh
MAKE = make
INC = -I$(PWD)/include
LIBS = -L$(PWD)/libs
INSTALLDIR = $(PWD)/output
IOTLIB = $(PWD)/libs/libiot.a
SUBDIRS = libs src
export INC
export INSTALLDIR
export IOTLIB
all :
@for i in $(SUBDIRS); do \
echo "make all in $$i..."; \
(cd $$i; $(MAKE) $(MFLAGS) $(MYMAKEFLAGS) all); done
install:
mkdir $(INSTALLDIR)
@for i in $(SUBDIRS); do \
echo "Installing in $$i..."; \
(cd $$i; $(MAKE) $(MFLAGS) $(MYMAKEFLAGS) install); done
clean:
rm -rf $(INSTALLDIR)
@for i in $(SUBDIRS); do \
echo "Clearing in $$i..."; \
(cd $$i; $(MAKE) $(MFLAGS) $(MYMAKEFLAGS) clean); done
이전 컴파일시 생성한 파일을 지운다.
$make clean
pi@raspberrypi:~/iot_farmserver $ make clean
rm -rf /home/pi/iot_farmserver/output
Clearing in libs...
make[1]: Entering directory '/home/pi/iot_farmserver/libs'
rm -rf iot_db.o parser.o libiot.a core
make[1]: Leaving directory '/home/pi/iot_farmserver/libs'
Clearing in src...
make[1]: Entering directory '/home/pi/iot_farmserver/src'
Clearing in farm...
make[2]: Entering directory '/home/pi/iot_farmserver/src/farm'
rm -rf farm_main.o farm_sensor.o core
make[2]: Leaving directory '/home/pi/iot_farmserver/src/farm'
make[1]: Leaving directory '/home/pi/iot_farmserver/src'
pi@raspberrypi:~/iot_farmserver $
컴파일 한다.
$make
pi@raspberrypi:~/iot_farmserver $ make
make all in libs...
make[1]: Entering directory '/home/pi/iot_farmserver/libs'
gcc -c -I/home/pi/iot_farmserver/include -I/usr/include/mysql iot_db.c -o iot_db.o
gcc -c -I/home/pi/iot_farmserver/include -I/usr/include/mysql parser.c -o parser.o
ar rcs libiot.a -o iot_db.o parser.o
make[1]: Leaving directory '/home/pi/iot_farmserver/libs'
make all in src...
make[1]: Entering directory '/home/pi/iot_farmserver/src'
make all in farm...
make[2]: Entering directory '/home/pi/iot_farmserver/src/farm'
gcc -g -c -I/home/pi/iot_farmserver/include -c farm_main.c -o farm_main.o
gcc -g -c -I/home/pi/iot_farmserver/include -c farm_sensor.c -o farm_sensor.o
gcc -o server_farm farm_main.o farm_sensor.o /home/pi/iot_farmserver/libs/libiot.a -lmysqlclient -lpthread -lwiringPi
make[2]: Leaving directory '/home/pi/iot_farmserver/src/farm'
make[1]: Leaving directory '/home/pi/iot_farmserver/src'
pi@raspberrypi:~/iot_farmserver $
실행파일을 생성하여 제 위치에 둔다.
$make install
실행은 실행 파일이 있는 폴더 위치에서 아래와 같이 실행한다.
pi@raspberrypi:~/iot_farmserver/src/farm $
pi@raspberrypi:~/iot_farmserver/src/farm $ ls
Makefile farm_main.c farm_main.o farm_query.h farm_sensor.c farm_sensor.h farm_sensor.o server_farm
pi@raspberrypi:~/iot_farmserver/src/farm $ sudo ./server_farm
실행모습은 아래와 같다. 앱은 현재 미개발이므로 연동하는 것은 어렵다. 개발한 앱을 테스트를 위해 실행 파일을 올려둔다.
pi@raspberrypi:~/iot_farmserver/src/farm $ sudo ./server_farm
validate database...if not exist, make table
iot_send_query : query - CREATE TABLE IF NOT EXISTS tfarmsensorvalue (id INT AUTO_INCREMENT PRIMARY KEY, date DATE, time TIME, temperature FLOAT, humid FLOAT, light INT)
iot_send_query : query - CREATE TABLE IF NOT EXISTS tfarmsensorcheck (id INT AUTO_INCREMENT PRIMARY KEY, date DATE, time TIME, temperature INT, humid INT, light INT)
iot_send_query : query - CREATE TABLE IF NOT EXISTS tfarmactuoperate (id INT AUTO_INCREMENT PRIMARY KEY, date DATE, time TIME, pump INT, fan INT, dcmotor INT, rgbled INT)
iot_send_query : query - CREATE TABLE IF NOT EXISTS tfarmactucheck (id INT AUTO_INCREMENT PRIMARY KEY, date DATE, time TIME, pump INT, fan INT, rgbled INT)
iot_send_query : query - CREATE TABLE IF NOT EXISTS tfarmsetting (id INT AUTO_INCREMENT PRIMARY KEY, hour INT, min INT, period INT)
done
iot_count_setting_data_from_db : query - SELECT COUNT(*) FROM tfarmsetting
iot_count_setting_data_from_db data: 1
validate setting data... : 1
starting server...
Data not good, skip
Data not good, skip
Data not good, skip
Data not good, skip
Data not good, skip
Data not good, skip
Temperature = 0
Data not good, skip
Data not good, skip
Humidity = 29.00 % Temperature = 20.90 *C
Humidity = 29 Temperature = 20
Humidity = 29
light sensor = 349
SensorInterruptLoop : write to DB - INSERT INTO tfarmsensorvalue values (null ,now(), now(), 0.000000, 29.000000, 1)
iot_insert_data_from_db : query - INSERT INTO tfarmsensorvalue values (null ,now(), now(), 0.000000, 29.000000, 1)
SensorInterruptLoop : write to DB - INSERT into tfarmsensorcheck values (null, now(), now(), 0.000000, 29.000000, 1)
iot_insert_data_from_db : query - INSERT into tfarmsensorcheck values (null, now(), now(), 0.000000, 29.000000, 1)
SensorInterruptLoop : write to DB - INSERT into tfarmactuoperate values (null, now(), now(), 0, 0, 0, 0)
iot_insert_data_from_db : query - INSERT into tfarmactuoperate values (null, now(), now(), 0, 0, 0, 0)
SensorInterruptLoop : write to DB - INSERT into tfarmactucheck values (null, now(), now(), 1, 1, 1)
iot_insert_data_from_db : query - INSERT into tfarmactucheck values (null, now(), now(), 1, 1, 1)
auto sensor = 7
in Manual Mode
switch0 - pump off
switch0 - fan off
Humidity = 29.00 % Temperature = 20.90 *C
Humidity = 29 Temperature = 20
Temperature = 20
Data not good, skip
Humidity = 29.00 % Temperature = 20.90 *C
Humidity = 29 Temperature = 20
Humidity = 29
light sensor = 346
SensorInterruptLoop : write to DB - INSERT INTO tfarmsensorvalue values (null ,now(), now(), 20.000000, 29.000000, 1)
iot_insert_data_from_db : query - INSERT INTO tfarmsensorvalue values (null ,now(), now(), 20.000000, 29.000000, 1)
SensorInterruptLoop : write to DB - INSERT into tfarmsensorcheck values (null, now(), now(), 20.000000, 29.000000, 1)
iot_insert_data_from_db : query - INSERT into tfarmsensorcheck values (null, now(), now(), 20.000000, 29.000000, 1)
SensorInterruptLoop : write to DB - INSERT into tfarmactuoperate values (null, now(), now(), 0, 0, 0, 0)
iot_insert_data_from_db : query - INSERT into tfarmactuoperate values (null, now(), now(), 0, 0, 0, 0)
SensorInterruptLoop : write to DB - INSERT into tfarmactucheck values (null, now(), now(), 1, 1, 1)
iot_insert_data_from_db : query - INSERT into tfarmactucheck values (null, now(), now(), 1, 1, 1)
auto sensor = 8
in Manual Mode
switch0 - pump off
switch0 - fan off
Humidity = 29.00 % Temperature = 20.90 *C
Humidity = 29 Temperature = 20
Temperature = 20
반응형
'개발자 > 스마트팜' 카테고리의 다른 글
아쿠아포닉스란? Aquaponics 농업에 대한 쉬운 설명 (1) | 2023.01.20 |
---|---|
스마트팜 스위치 사용 (0) | 2020.11.03 |
Greenhouse 원격 관리시스템 안드로이드 앱 9 (0) | 2020.08.25 |
Greenhouse 원격 관리시스템 서버프로그램과 카메라 8 (0) | 2020.08.24 |
Greenhouse 원격 관리시스템 소프트웨어 테스트 7 (0) | 2020.08.21 |
Greenhouse 원격 관리시스템 연결도 6 (0) | 2020.08.20 |
Greenhouse 원격 관리시스템 전원부 5 (0) | 2020.08.19 |
Greenhouse 원격 관리시스템 액츄에이터 4 (0) | 2020.08.18 |
더욱 좋은 정보를 제공하겠습니다.~ ^^