Difference between revisions of "Building monitoring"
Jump to navigation
Jump to search
(→Energy Display Scripts Outline version 2.0) |
(→Energy Display Scripts Outline version 2.0) |
||
Line 12: | Line 12: | ||
==Energy Display Scripts Outline version 2.0== | ==Energy Display Scripts Outline version 2.0== | ||
− | * | + | ===Postgres db=== |
− | ** | + | * Data stored in databse 'energy' under table 'electrical_energy' |
− | === | + | * 'electrical energy' has the following attributes: |
+ | **area - which building. | ||
+ | **preal - kW hours for that instant. | ||
+ | **date - date of harvest. | ||
+ | |||
+ | ===data_gen.py=== | ||
+ | * generates a JSON file filled with data from a sql call to the database. | ||
+ | |||
+ | *Main(building_file) | ||
+ | **file run by cron | ||
+ | **Called from main loop. | ||
+ | **Calls CreateBuildingList(), ConnectToDatabase(), GetAllData(), EncodeData(), DisconnectFromDatabase() | ||
+ | |||
+ | *CreateBuildingList(building_file) | ||
+ | **Called by Main(). | ||
+ | **For each building in building_file add to a python list. | ||
+ | **return that list. | ||
+ | |||
+ | *ConnectToDatabase() | ||
+ | **Called by Main(). | ||
+ | **connects to 'energy' databse in Postgres | ||
+ | **returns database connection and the current name of database. | ||
+ | |||
+ | *GetAllData(db connection, building list) | ||
+ | ** Called by Main(). | ||
+ | ** makes a python dict of all data | ||
+ | ** calls GetBuildingData() | ||
+ | ** replace unwanted dates from older buildings | ||
+ | ** calls EqualizeDataValues() | ||
+ | |||
+ | *GetBuildingData(dbconnection, building) | ||
+ | **called from GetAllData() | ||
+ | ** calls SetSQLQuery() | ||
+ | ** returns rows from sql call and row count | ||
+ | |||
+ | *SetSQLQuery(building) | ||
+ | ** called from GetBuildingData() | ||
+ | ** Makes a sql call to the databse energy from the table electrical_energy | ||
+ | ** returns rows from sql call and row count | ||
+ | |||
+ | *EqualizeDataValues(all_data, dates) | ||
+ | ** fills null values for dates of newer buildings. | ||
+ | ** returns all data | ||
+ | |||
+ | *EncodeData(all_data, dates) | ||
+ | ** Called by Main(). | ||
+ | ** sorts all_data by date | ||
+ | ** dumps in JSON file | ||
+ | ** initializes gviz metadata | ||
+ | ** calls LoadData(). | ||
+ | ** writes JSON file which JS reads from. | ||
+ | |||
+ | *LoadData() | ||
+ | ** Called by EncodeData() | ||
+ | ** gviz api call | ||
+ | ** encodes data to JSON file with headers. | ||
+ | |||
+ | *DisconnectFromDatabase() | ||
+ | **Called by Main(). | ||
+ | **disconnects from database 'energy'. | ||
+ | |||
+ | ===main.js=== | ||
+ | *non-function | ||
+ | **creates a global variable which keeps track of which buildings are checked, initializes as all true. | ||
+ | |||
+ | *Flip(which) | ||
+ | ** flips the boolean values of the global array. | ||
+ | ** calls RedrawVis() | ||
+ | |||
+ | *RedrawVis(values[]) | ||
+ | **Takes an array of booleans | ||
+ | **processes and array to pass to DrawLineChar() containing indices of which columns delete and therefore not draw. | ||
+ | **calls DrawLineChart() | ||
+ | |||
+ | *DrawLineChart() | ||
+ | **creates a Dashboard | ||
+ | **creates a chart wrapper, this is where you can adjust basic settings about the main chart. | ||
+ | **creates a control wrapper, this creates the controling bar on the bottom. | ||
+ | **binds the chart wrapper and the control wrapper together, draws the chart. | ||
+ | ** calls RedrawControls() | ||
+ | |||
+ | *RedrawControls() | ||
+ | **finds a certain string in the svg tag that designates the control tabs in the control wrapper | ||
+ | **replaces with a new string in svg format for a slightly larger control that can be more easily manipulated by touch. | ||
+ | **not functional at time of writing. | ||
+ | |||
+ | ===HTML+CSS=== | ||
+ | *index.html, the file people load. | ||
+ | *includes jquery.minm.1.7.2, for gviz api | ||
+ | *main.js, draws graphs | ||
+ | *bootratp-button.js, enables buttons to behave like checkboxes. | ||
+ | *main.css, styling. | ||
==Building EGX100 IPs== | ==Building EGX100 IPs== |
Revision as of 10:23, 1 August 2012
Contents
Energy Display Scripts Outline version 1.0
- Java scripts harvest data directly from Modbus
- Perl scripts collects this data and put it in the Postgress database "energy" under the table "electrical_energy"
- electrical_energy attributes:
- area - what building.
- preal - kW hours for that instant.
- date - date of harvest.
- electrical_energy attributes:
- A final perl script (display/production|development/js-file-gen.pl) accesses this data and generates a .png graph using the Google graph API
- This script takes one parameter for either the production or development branches.
- The images generated (day, week, month, year) are put in a html frame on a page to display the data.
- This page refreshes every 5 minutes
Energy Display Scripts Outline version 2.0
Postgres db
- Data stored in databse 'energy' under table 'electrical_energy'
- 'electrical energy' has the following attributes:
- area - which building.
- preal - kW hours for that instant.
- date - date of harvest.
data_gen.py
- generates a JSON file filled with data from a sql call to the database.
- Main(building_file)
- file run by cron
- Called from main loop.
- Calls CreateBuildingList(), ConnectToDatabase(), GetAllData(), EncodeData(), DisconnectFromDatabase()
- CreateBuildingList(building_file)
- Called by Main().
- For each building in building_file add to a python list.
- return that list.
- ConnectToDatabase()
- Called by Main().
- connects to 'energy' databse in Postgres
- returns database connection and the current name of database.
- GetAllData(db connection, building list)
- Called by Main().
- makes a python dict of all data
- calls GetBuildingData()
- replace unwanted dates from older buildings
- calls EqualizeDataValues()
- GetBuildingData(dbconnection, building)
- called from GetAllData()
- calls SetSQLQuery()
- returns rows from sql call and row count
- SetSQLQuery(building)
- called from GetBuildingData()
- Makes a sql call to the databse energy from the table electrical_energy
- returns rows from sql call and row count
- EqualizeDataValues(all_data, dates)
- fills null values for dates of newer buildings.
- returns all data
- EncodeData(all_data, dates)
- Called by Main().
- sorts all_data by date
- dumps in JSON file
- initializes gviz metadata
- calls LoadData().
- writes JSON file which JS reads from.
- LoadData()
- Called by EncodeData()
- gviz api call
- encodes data to JSON file with headers.
- DisconnectFromDatabase()
- Called by Main().
- disconnects from database 'energy'.
main.js
- non-function
- creates a global variable which keeps track of which buildings are checked, initializes as all true.
- Flip(which)
- flips the boolean values of the global array.
- calls RedrawVis()
- RedrawVis(values[])
- Takes an array of booleans
- processes and array to pass to DrawLineChar() containing indices of which columns delete and therefore not draw.
- calls DrawLineChart()
- DrawLineChart()
- creates a Dashboard
- creates a chart wrapper, this is where you can adjust basic settings about the main chart.
- creates a control wrapper, this creates the controling bar on the bottom.
- binds the chart wrapper and the control wrapper together, draws the chart.
- calls RedrawControls()
- RedrawControls()
- finds a certain string in the svg tag that designates the control tabs in the control wrapper
- replaces with a new string in svg format for a slightly larger control that can be more easily manipulated by touch.
- not functional at time of writing.
HTML+CSS
- index.html, the file people load.
- includes jquery.minm.1.7.2, for gviz api
- main.js, draws graphs
- bootratp-button.js, enables buttons to behave like checkboxes.
- main.css, styling.
Building EGX100 IPs
- 159.28.165.100 - Bundy
- 159.28.165.101 - Barrett
- 159.28.165.102 - Wilson
- 159.28.165.103 - Warren
- 159.28.165.104 - Mills*
- 159.28.165.105 - Olvey Andis
- 159.28.165.? - Main switch gear (PM8)
- * - CT magnets are not installed yet and/or no EGX100 on network
Building Amperage Correction Factors
- Bundy - 31.25
- Barrett - 15.625
- Wilson - 62.5
- Warren - 62.5
- Mills* - ?
- Olvey Andis - 31.25
- Source: load the schneider doc, amps, reference page
Documentation
- MIB for the PM8 (device mounted on the main switchgear)
- Register list for the Enercept/EGX100s (devices mounted in each of the buildings)