Introduction: Raspberry Pi - Smart Office
What is the application about?
OfficeHelperBOT is an application targeted towards a smart office setting. 2 Raspberry Pi 3 Model B would be setup for this.
Raspberry Pi 1 would be the main machine which will take in all the values from the sensors, publishing the data via MQTT, storing data into cloud database which we are using DynamoDB and running the web portal server.
Raspberry Pi 2 would be used at the door. It would require the employee to verify their identity before they are allowed access into the office. There are two methods to do so which are via a pin code sequence and a QR code verification. In the cases that the verification may be misused, we would take picture of whoever is having failed verification and store the person’s image onto AWS S3 Bucket.
A webpage would be able to view DHT, light, motion detected photos and video of the office. The webpage would also be able to control the office lights and also view a live stream of CCTV of the office.
There would also be a Telegram bot which allow control to the LED lights in the office, check value of sensor values such as the temperature and also allowing employee to get their QR code image if they happen to lose their QR code image or forgot their pin by requesting and getting their QR code image from AWS S3 Bucket.
Step 1: Let's Look at the Overview!
System Architecture Diagram
How the machines will communicate with one another
Hardware Outcome
Look at how the two Raspberry Pi would look like in the end
Web Portal
View the web portal that is made using Python via Flask
Telegram Bot
Finding the Bot we created
Livestream
Using 1 of the PiCam as a CCTV and streaming live footage
Hardware Requirement
- 2x Raspberry Pi
- 2x GPIO Board
- 1x LDR
- 1x DHT11
- 1x Motion Sensor
- 4x LED
- 7x Button
- 2x Buzzer
- 2x LCD Display
- 1x Webcam
Step 2: Set Up for Raspberry Pi 1 (Office)
- Create a folder to store your html called templates
- Create a folder to store your css/javascript files called static
- Create a folder to store your camera files called camera with 3 sub folder capture_photos, motion_photos, motion_videos
mkdir ~/ca2
mkdir ~/ca2/templates
mkdir ~/ca2/static
mkdir ~/ca2/static/camera
mkdir ~/ca2/static/camera/capture_photos
mkdir ~/ca2/static/camera/motion_photos
mkdir ~/ca2/static/camera/motion_Videos
Step 3: Set Up for Raspberry Pi 2 (Door)
- Create a folder to store your files called door
- Create a folder to store your QR Code images called qr_code
mkdir ~/door
mkdir ~/door/qr_code
Step 4: Set Up Telegram Bot
- Open Telegram
- Find "BotFather"
- Type "/start"
- Type "/newbot"
- Follow the instructions, name for bot, username for bot, jot down bot authentication token
Step 5: Set Up DynamoDB
- Sign up for AWS
- Search DynamoDB in AWS Service
- Click "Create table"
- Fill in table name
- Set Partition key as 'id'(String) and Add Sort Key as 'datetime'(String)
- Do it for the 4 tables, dht, lights, gallery, employee
Preview of the 4 Tables
Step 6: Set Up AWS S3 Bucket
- Search for AWS S3
- Click on "Create bucket"
- Follow the rules to name the bucket
- Follow screenshots
- Create Bucket
How do I even upload into S3 bucket?
We do not have an admin portal so we would be manually importing the QR Code image via AWS graphic user-interface. Follow the screenshots to create the bucket. The snippet of the code is the logic required to upload the image onto S3 Bucket
Step 7: Set Up AWS SNS
- Search for AWS SNS
- Follow Topic Tag
- Create new Topic
- Set topic name and display name
- Edit policy to allow everyone to publish
- Subscribe to the topic that is created
- Set email in the endpoint field to receive email when the value reaches a certain value
Step 8: Creating a Rule
- Click on "Create a rule"
- Write name and brief description
- Choose the latest SQL version to send the entire MQTT message
- The rule engine uses the topic filter to determine which rules to trigger when MQTT message is recieved
- Click on "Add action"
- Select sending a message via SNS push notification
Step 9: Creating Web Interface
Create these new html files called
- head
- login
- logs
- dht
- light
- gallery
- motion
- led
Copy and paste from the Google Drive file into the respective html.
https://drive.google.com/file/d/1zd-x21G7P5JeZyPGZp1mdUJsfjoclYJ_/view?usp=sharing
Step 10: Main Scripts
There are 3 main scripts
- server.py - Create a Web Portal
- working.py - Logic for Raspberry Pi 1 (Office)
- door.py Logic for Raspberry Pi 2 (Door)
We simply run all 3 codes to get the result we want
We can get it from Google drive under the Main.zip
https://drive.google.com/open?id=1xZRjqvFi7Ntna9_KzLzhroyEs8Wryp7g