101 lines
3.9 KiB
Markdown
101 lines
3.9 KiB
Markdown
# 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://<IP OF POConsole>: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
|
|
```
|