These days, the new corona 19 (COVID-19) is disturbing at home and abroad. There are a large number of confirmed patients in Korea, and thermal cameras are installed in many places, including airports and hospitals. But in many places camera people keep monitoring the camera.

As an IT developer, I have come to think that I want to create a service that makes notifications easier, faster and more accurate.

doorman

Thermal camera

Higher pixel count and better cameras are expensive, especially since they need to be shipped from China, so I bought a thermal camera with an 8x8 resolution available immediately.

Adafruit AMG8833 IR Thermal Camera Breakout

amg8833

Sample code made with python + pygame.

Raspberry pi

Initially, AWS Deeplens was considered, but the thermal cameras received information through GPIO, so we had to find another alternative. So I chose the Raspberry Pi which was in the desk drawer.

Fortunately, the Raspberry Pi case was compatible with Lego, so the Raspberry camera and thermal camera could be installed on the Lego blocks.

raspberrypi

I installed a python program on my Raspberry Pi and gave it permission to upload photos to the Amazon S3.

For more code, please refer to here.

Slack App

In order to receive notifications from Slack, or to save usernames in Slack, Slack App was created according to Settings.

slack-04

Lambda Backend

When the photo is uploaded to Amazon S3 Bucket, AWS Lambda Function should be called by Trigger. The Lambda function performs facial recognition with Amazon Rekognition and stores them in Amazon DynamoDB for each person.

This time, I developed and deployed using Serverless framework.

For more code, please refer to here.

Amplify Frontend

Web-based service for names and photos stored in DynamoDB. This app was developed and distributed using AWS Amplify.

Forntend used Javascript and React. Then, I used the ‘Rest API’ to search DynamoDB created in Backend, which I also created with the AWS Lambda Function.

If the app doesn’t know the name, it is saved as Unknown, and the form that stores the name is handled using Amazon Cognito. Amplify made it easy to apply the login and signup pages without coding them.

doorman-web

For more code, please refer to here.

Architecture

doorman-arch

Thanks for reading.