Officer’s architecture

Let me introduce all modules and layers used to create whole Officer’s Pi architecture.

the heart

Main part of Officer Pi is the python script placed in _rpi directory. It loads every module needed and is responsible for connecting to frontend/azure/slack/body script and gathering data from different APIs. It uses external config file where you can place connection strings and other important values.

the body

The body is another python script placed in the same directory as the heart. It is used to control external devices connected to raspberry pi such as move detector, binary display, speakers (text to speech), camera and microphone (for voice recognition).

the view

The view is a node.js application which runs locally on the board. It’s loaded automatically on the boot and it runs in full screen mode. You can also simply access the view on your computer by typing http://<officers ip>:4000. The view gathers data from the heart and displays it on reactjs based site. View can be controlled using playstation move navigator controller.

the admin

there is special part of the view that can be accesed at http://<officers ip>:4000/admin. it was build for easy configuration managment and ability for runnig some admin tasks like rebooting the board.

the cloud

I am using azure’s service bus for creating connection bridge between slack and the heart. there is special app placed on my azure account for creating new items in the service bus queue. You can find the code in _azure directory. there is also pusher notification service used for sending notifications

the bot

Officer pi has his alter-ego on slack. I’ve created special command /officer which can get any information from the heart used in the view and pass it to a slack channel. the bot can also control external devices and ie. send you current photo of the office.