Link Search Menu Expand Document

People Counter System Frontend and Hardware Interface, 2018

1) Frontend (Angular 6+).
2) Hardware Interface (C++, Windows).

May 2018 ~ Apr 2019

A system to count people entering and leaving a building for data analytics. Although based on existing software, I completely redeveloped the user interface to meet evolving customer needs.

The core purpose of the system is: “Aggregating people entering and leaving a building or area to create actionable data for analytics.”

The system consists of camera sensors for detecting movement, a data processor for DB storage, a web server, and a web client for visualization. It also supports external database integration.

While it started as a replica of an existing solution, I believe it has far greater potential for development.

I chose SQLite for the DBMS. Since the user base was small (<5 concurrent users), it was a good opportunity to learn a new technology. However, given SQLite’s single-writer limitation and the high frequency of read/write operations, I had to be extremely careful with thread safety to avoid race conditions.

This system was delivered with 1 year warranty contract to

  • E Mart: Simple version(planned to install 150 buildings)
  • Starfield City: Advanced version (Analysis function add for by Period, Group)

[Korean] 2018년 5월 ~ 2019년 4월 기존에 개발되어 사용중인 카메라 센서 + 데이터 처리 프로세스 + 사용자 인터페이스중 카메라 센서를 제외한 데이터 처리, 사용자 인터페이스를 진화하는 고객 요구사항에 맞게 지속적으로 개선하기 위한 작업으로, 같은 기능의 프로그램을 향후에 발생할 요구사항에 적극 대응하기 위해 (기존 하드웨어 회사의 기본 프로그램을 대체하는 형태로 다시) 개발하였다. 피플카운팅 시스템의 기본 목적은 다음과 같다.

“건물 또는 어떤 구역에 들어오고 나가는 사람들을 집계하여 고객이 원하는 용도에 맞게 분석하는데 쓰일 데이터를 만듬.”

피플카운팅 시스템은 기본적으로 실제 사람의 이동 방향을 인지하고 집계하는 카메라 센서, 카메라센서에 접속하여 데이터를 읽어와 데이터베이스에 저장하는 데이터 처리 프로세스, 사용자 인터페이스를 통해 요청된 데이터를 읽어서 제공하는 웹 서버, 읽어들인 데이터를 가공하여 웹페이지에 표출하는 웹 클라이언트로 구성하며, 필요에 따라 외부 데이터베이스에 접속하여 보유한 데이터를 원하는 형태로 저장하는 역할을 하는 인터페이스를 추가한다. 이 외에도 파일 로깅 등의 부수적인 역할을 담당하는 프로세스도 있다. 이미 만들어진 소프트웨어의 카피 형태이지만 기존 소프트웨어 패키지에 비해 발전 형태가 무궁무진하다는 점에서 의의를 두겠다. DBMS는 Sqlite로 선택하였는데, 어플리케이션 사용자가 많지 않고, 사용해보지 않았던 기술이라 겸사겸사 적용해보았다. 다만 사용자가 5명 이내로 많지 않은 어플리케이션임에도 불구하고 Sqlite가 한 번에 하나의 접속만을 허용하는 DB이고, 수시로 읽고 쓰는 데이터량이 많다보니 프로세스, 스레드간의 경합(DB접근)을 매우 주의해서 코드를 작성해야만 했다.

해당 시스템은 다음의 회사에 시스템 판매(1년 무상 기술지원) 형태로 납품하였다. - 이마트: 단순한 데이터 처리, 표출만을 위한 버전(약 150개 점포 설치(예정)) - 스타필드시티: 기간, 그룹별 분석 기능을 추가한 버전

  • Developer: Taeung Ha
  • Actual time for development: about 3 months for core part
  • Contribution rate: 100%
  • Technologies used: Angular6+, C++(boost beast), Http, WebSocket, SQLite