POCloud Tag Server

Written by Patrick McDonagh, Henry Pump

Prerequisites

  • NodeJS
  • Pyton 2.7
  • npm
  • Either SQLite or MySQL (not completely developed)
  • Bower
npm install -g bower
  • forever (if intending to run continuously)
npm install -g forever

Installation

  1. Clone this repository using either HTTPS:

    git clone https://patrickjmcd@bitbucket.org/patrickjmcd/tagserver.git
    

    or SSH:

    git clone git@bitbucket.org:patrickjmcd/tagserver.git
    
  2. Create the necessary database file:

    for MySQL run
    mysql -u root -p < www/dbcreate_MySQL.sql
    

    or

    for SQLite run
    sqlite3 /mnt/usb/data.db < www/dbcreate_SQLite.sql
    
  3. Install necessary npm packages

    npm install
    
  4. Install necessary bower packages

    bower install
    
  5. Create init.d scripts

    INFO HERE COMING SOON
    
  6. Test Web Server functionality

    node www/app.js
    

    Proceed to http://:3000 to test the web server and set up tags.

  7. Enter tag information in web server.

  8. Set IP of PLC in web server. Without configuration, the program will default to looking for the PLC at 192.168.1.10.

  9. Test the Python datalogger functiality.

    python python/tagserver_<dbtype>.py
    

    The program should return messages saying it has stored values. If errors occur, check the PLC ip address. If errors persist, contact Henry Pump.

  10. Start the init.d scripts so the programs run in the background.

    /etc/int.d/tagserver start
    

    and

    /etc/init.d/website start
    OR
    forever www/app.js
    

API Documentation

app.post('/json/tag/add',                                       fns.createTag);                 // Adds a tag to the scan list
app.post('/json/tag/update/',                                   fns.updateTag);                 // Updates tag data
app.get('/json/tag/delete/:tag',                                fns.deleteTag);                 // Removes a tag from the scan list
app.get('/json/tag/:id',                                        fns.getTag);                    // Gets a specific tag in the scan list
app.get('/json/tag',                                            fns.getAllTags);                // Lists all tags in the scan list
app.get('/json/val/:tag',                                       fns.latestValueSingleTag);      // Gets the latest value of a single tag
app.get('/json/series/:tag/:hours',                             fns.seriesTagValues);           // Gets all the values of a tag for the last X hours
app.get('/json/valBetween/:tag/:startDatetime/:endDatetime',    fns.seriesTagValuesBetween);    // Gets the values of a tag between the start time and end time
app.get('/json/CSV/all',                                        fns.allDataCSV);                // Gets a CSV of all values stored
app.get('/json/CSV/:tag/:startDatetime/:endDatetime',           fns.seriesCSVBetween);                 // Gets a CSV of the values of a tag between the start time and end time
app.get('/json/CSV/:tag/:hours',                                fns.seriesCSV);                 // Gets a CSV of the values of a tag for the last x hours
app.get('/json/all',                                            fns.latestValueAllTags);        // Gets the latest values of all tags in the scan list
app.get('/json/config',                                         fns.getSetup);                  // Gets the contents of the config table
app.post('/json/config',                                        fns.updateSetup);               // Adds a new parameter to the config table
app.get('/json/logger/status',                                  fns.checkLoggerStatus);         // Gets the status of the data logger
app.get('/json/logger/restart',                                 fns.restartLogger);             // Restarts the data logger
Description
No description provided
Readme 10 MiB
Languages
Python 84.4%
C 8%
JavaScript 5%
HTML 2%
CSS 0.3%
Other 0.2%