Eden EMS Architecture

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

Functions and Services

Premium
Weekly Issues Quarterly Savings Subscription
Weekly Savings
Report Report Invoice
Report

User

eden-ems.com website

- Display properties and settings


- Make/schedule changes to settings
- Display (& download) reports:
savings, issues…

Background

- Generate savings
- Generate quarterly savings
- Calculate rolling kwh API for own use and
- Rotate PTAC data 3rd party access
- Premium subscription
payment processing
Data Flow

eden-
ems.com set_config load/refresh

UpdateHistory save
table Update RoomData
table table

send in update file

save
get_config

Controller/PTAC

set config: send changes from website to DB (current code: eden\eden\api\views.py – UpdateViewSet())

get_config: PTAC gets website changes (current code: eden\eden\eden\views.py – get_config())

load/refresh: website loads current data from DB

send in update file: PTAC updates DB with changes from unit (current code: eden\eden\eden\utils\
controller.py - receive_controller_data())
Sending in Update File (Importing)

Start

PTAC sends in update file (CSV)

RoomData
Next file
table

Dump file into DB


Is with stored procedure
m61_data.put Yes import_m61_data PTACData
file?
table
via Staging table

No

Runtime
Throw away Archive in table
AWS
AWS Servers

New PTAC Old PTAC


controller controller

Background Haproxy (old IP)


Tasks
Docker
Logs & search
Container
Django Nginx Apache

Production AWS AWS Staging


AWS Arm-test AWS Arm-elk
Production
(Pre-production)

Git worker Git worker Git worker

Continuous Development/Continuous Integration

(CD/CI)
AWS RDS

Database

git.eden-ems.com

Gitlab Code
Repository

Beside what is described above, there’s also a local development environment. It’s built & works the
same way Production or Staging does, except that it works with a local database with a tiny amount of
data.

Terms/Definitions
PTAC: Packaged Terminal Air Conditioner

12-digit MAC address: address of a controller (example: 00063F057CEB)

16-digit MAC address: address of a PTAC (example: 00063F000004D7AF)

Update table: holds settings that user makes on the web site waiting to be pushed to controller/PTAC.

Staging table: CSV data a PTAC sends in is dumped into this temporary table.

RoomData table: contains interpreted Staging data. For example, an Occupied column in RoomData is
Staging’s Current Status column AND’ed with 1 (i.e., Staging.current_status & 1), a Rented column in
RoomData is Staging’s Current Status AND’ed with 2. RoomData generally is ready-for-display-to-end-
user data .

PTACData table: holds copies of Staging tables, used for deriving & displaying more technical data.

Runtime table: holds only Staging data columns specifically for calculating PTAC energy savings.

Savings table: holds savings per room/per day/per property data

** Notes: specific types of data are stored in different tables in order to cut down search & processing
time when there is a need to display or report data. It’s kind of like preprocessing data, and it’s done
either at data import time, or in other background tasks.

Thermistor: a sensor that senses or holds information about a specific type of temperature. An example
is the IAT thermistor for Indoor Ambient Temperature.

You might also like