Building monitoring
Jump to navigation
Jump to search
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(values[])
- called when index.html loads and when RedrawVis() is called.
- takes an array of booleans processed by RedrawVis()
- 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. This is where you can adjust the starting range for the control wrapper.
- creates a data table with the data source as the json file data-gen.py makes.
- deletes columns in data table depending on the booleans that are in values[], the more columns that are deleted the better the performance.
- 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)