# 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_.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 ```