/wbb_PHP

2020 NET 챌린지 시즌 7 왕밤빵 - /var/www/html 내 php 코드 (compare_box)

Primary LanguagePHP

wbb_PHP

NET 챌린지 시즌 7 왕밤빵 - /var/www/html 내 php 코드 (compare_box)


주요 코드 설명

  • compare_box_1.php: LINK
    • Darknet을 exec하여 계속 실행
    • .weights 업로드는 처음에 한 번만 (시간 오래 걸리는 단계를 처음 한 번만 실행하도록 함)
    • 이어서 detection 진행
  • compare_box_2.php: LINK
    • 라즈베리파이로부터 CCTV 이미지를 받아와 로컬에 저장 (계속 덮어쓰기하여 이미지 파일을 라즈베리파이 당 하나로 유지)
    • 도난 상황 감지 알고리즘 (코드 내에서는 "star 알고리즘"이라 명명)

      라즈베리파이가 처음 실행 시 isFirst 변수를 POST에 포함시켜 보내므로, Jetson에서는 compare_box_2.php에서 isFirst == 1일 때 Darknet을 실행하는 compare_box_1.php에게 id를 포함하여 localhost POST를 전송함. 왜냐하면 compare_box_1.php에서 라즈베리파이에서 보내오는 id값이 필요하기 때문임.

  • compare_box_3.php: LINK
    • 실험용 코드
    • n초마다 다시 실행시켜주는 라즈베리파이 없이 수행한 실험이므로, while(true) 문 안에 sleep(5); 사용해서 5초 delay 부여하며 반복 실행
  • 모든 코드는 Jetson Nano(Ubuntu 18.04)에서 실행 (/var/www/html 디렉토리에 위치)

전체 동작


도난 상황 감지 알고리즘


라즈베리파이 - Jetson 연결 시 필요한 절차

  • 같은 핫스팟에 RPi랑 Jetson 연결
  • 라즈베리파이 python 코드에서 IP 주소 Jetson의 사설 IP 주소로 바꾸기 (ifconfig)
  • Jetson 방화벽 설정 restore 하기
    • sudo iptables-restore < 201022.rules
    • 보안적 위험성 줄이기 위해 재부팅 때마다 다시 방화벽 설정 restore
  • (맨 처음 한 번만) sudo chown -R www-data:www-data /var/www

프로세스 id로 kill

라즈베리파이로 QR코드 인식부터 다시 이어서하면 멈추므로 그 사이에 기존 프로세스 kill 해주기

  • ps -ef | grep darknet
  • sudo ./darknet detect ~ 랑 자식 프로세스 ./darknet detect ~ PID 확인
  • 각각 sudo kill -9 [PID]