NS20_1 AI 서비스 (LLM + 정지영상 JPG 분석) 패키지 ================================================= 이 ZIP에는 아래 2개의 독립 실행 스크립트가 포함되어 있습니다. 1) 기존 LLM(센서 요약) 리포트 - ns20_1_ai_report.sh 2) 신규 정지영상(JPG) 생육/이상징후 리포트 (이번에 추가됨) - ns20_1_ai_image_report.sh 두 스크립트는 서로 독립적으로 동작하며, 결과 JSON은 reports 아래에 서로 다른 위치에 저장됩니다. 1. 사전 준비사항 ---------------- - Linux (bash) - jq 설치 필요 sudo apt-get install -y jq - MySQL 접속 가능해야 함 - OpenAI API Key 필요 ※ 보안상 openai_connect.inc 내부의 OPENAI_API_KEY / MYSQL_PASS는 운영환경에서는 파일 권한(600) 설정 및 외부노출 금지를 권장합니다. 2. 설정 파일 (openai_connect.inc) --------------------------------- 기존 서비스와 동일한 설정 파일을 그대로 사용하며, 이번에 '카메라 이미지 경로' 설정이 추가되었습니다. 추가된 항목: - CAM_ROOT="/home/nextgreen/html/nextgreen/ns20/1/ns20_1_cam" (환경에 맞게 실제 경로로 수정) - (선택) 장치별 카메라 매핑 declare -A CAM_NAME 예) CAM_NAME["ns20_003"]="cam3" CAM_NAME["ns20_004"]="cam4" 매핑을 비워두면 기본으로 deviceid 끝자리 숫자를 읽어서 camN으로 추정합니다. 예) ns20_003 -> cam3 3. 신규 정지영상 분석 스크립트 사용법 ------------------------------------ (1) 최신 이미지(오늘 폴더) 자동 선택 ./ns20_1_ai_image_report.sh ns20_003 (2) 특정 이미지 파일 지정 ./ns20_1_ai_image_report.sh ns20_003 /home/nextgreen/html/nextgreen/ns20/1/ns20_1_cam/cam3/20260127/images/P26012708595910.jpg 4. 결과 파일 저장 위치 / 형식 ---------------------------- - Raw(OpenAI 응답 원문): raw/openai_image_raw__.json - 최종 리포트(JSON): reports/image_reports/image__.json 최종 리포트는 아래 정보를 한 번에 담도록 구성했습니다. - deviceid, farm_name, crop_type, camera, image_path, capture_time - sensor: 가장 촬영시각과 가까운 ns20_1 테이블의 1개 row(온/습/CO2/GPS 등) - analysis: OpenAI 비전 분석 결과 - overall_growth (양호/주의/불량) - leaf_color - wilting_stress - env_relation (온도/습도와 연관성 + 조치사항) - confidence, reason 5. MySQL 연동 (기존 테이블 그대로 사용) --------------------------------------- 기존 서비스가 사용하는 테이블: ns20_1_ai_report 본 스크립트도 동일 테이블에 INSERT 합니다. 단, json_file 컬럼에는 아래처럼 "하위 폴더 포함 상대경로"가 저장됩니다. 예) image_reports/image_ns20_003_20260127_085959.json 따라서 리포트 파일을 열 때는: /reports/ 경로로 접근하면 됩니다. ※ 테이블 스키마 변경은 필요 없습니다. 6. 적용/배포 방법 ----------------- 1) 기존 ns20_1_ai 디렉토리에 ZIP 내용을 덮어쓰기(또는 파일만 복사) 2) openai_connect.inc의 CAM_ROOT 경로 확인/수정 3) 실행권한 부여 chmod +x ns20_1_ai_report.sh ns20_1_ai_image_report.sh 4) 테스트 실행 ./ns20_1_ai_image_report.sh ns20_003 7. 문제 해결 체크리스트 ----------------------- - jq 설치 여부 확인 - OpenAI API Key 유효 여부 확인 - CAM_ROOT 경로가 실제 이미지 저장 경로와 일치하는지 확인 - ns20_1 테이블의 datetime 포맷이 "YYYY-MM-DD HH:MM:SS" 또는 "YYYYMMDDHHMMSS" 형식인지 확인 (둘 다 시도하도록 구현되어 있습니다) 끝.