Adds ability to change mode from website

This commit is contained in:
Patrick McDonagh
2017-03-08 10:01:03 -06:00
parent a0025610f4
commit aab7537972
6 changed files with 134 additions and 95 deletions

129
.idea/workspace.xml generated
View File

@@ -4,9 +4,8 @@
<list default="true" id="28cc251f-c94f-44ee-a66d-77aaab6e3483" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/pocwww/pocwww/__init__.py" afterPath="$PROJECT_DIR$/pocwww/pocwww/__init__.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/pocwww/pocwww/json.py" afterPath="$PROJECT_DIR$/pocwww/pocwww/json.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/pocwww/pocwww/templates/layout.jinja2" afterPath="$PROJECT_DIR$/pocwww/pocwww/templates/layout.jinja2" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/pocwww/pocwww/views.py" afterPath="$PROJECT_DIR$/pocwww/pocwww/views.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/java/com/henrypump/poc/Database.java" afterPath="$PROJECT_DIR$/src/main/java/com/henrypump/poc/Database.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/pocwww/pocwww/templates/setpoints.jinja2" afterPath="$PROJECT_DIR$/pocwww/pocwww/templates/setpoints.jinja2" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/java/com/henrypump/poc/WebServer.java" afterPath="$PROJECT_DIR$/src/main/java/com/henrypump/poc/WebServer.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/java/com/henrypump/poc/Well.java" afterPath="$PROJECT_DIR$/src/main/java/com/henrypump/poc/Well.java" />
</list>
<ignored path="$PROJECT_DIR$/target/" />
@@ -138,10 +137,12 @@
<file leaf-file-name="Well.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/Well.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="371">
<caret line="1357" column="13" lean-forward="false" selection-start-line="1357" selection-start-column="13" selection-end-line="1357" selection-end-column="13" />
<state relative-caret-position="272">
<caret line="112" column="0" lean-forward="true" selection-start-line="112" selection-start-column="0" selection-end-line="112" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#19256#19257#0" expanded="true" />
<element signature="e#19294#19295#0" expanded="true" />
</folding>
</state>
</provider>
@@ -274,30 +275,11 @@
<file leaf-file-name="WellTest.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/WellTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="570">
<state relative-caret-position="510">
<caret line="43" column="10" lean-forward="false" selection-start-line="43" selection-start-column="4" selection-end-line="43" selection-end-column="10" />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#1233#1234#0" expanded="false" />
<element signature="e#1265#1266#0" expanded="false" />
<element signature="e#1308#1309#0" expanded="false" />
<element signature="e#1340#1341#0" expanded="false" />
<element signature="e#1380#1381#0" expanded="false" />
<element signature="e#1416#1417#0" expanded="false" />
<element signature="e#1453#1454#0" expanded="false" />
<element signature="e#1486#1487#0" expanded="false" />
<element signature="e#1525#1526#0" expanded="false" />
<element signature="e#1560#1561#0" expanded="false" />
<element signature="e#1597#1598#0" expanded="false" />
<element signature="e#1630#1631#0" expanded="false" />
<element signature="e#1664#1665#0" expanded="false" />
<element signature="e#1694#1695#0" expanded="false" />
<element signature="e#1729#1730#0" expanded="false" />
<element signature="e#1760#1761#0" expanded="false" />
<element signature="e#1797#1798#0" expanded="false" />
<element signature="e#1830#1831#0" expanded="false" />
<element signature="e#1868#1869#0" expanded="false" />
<element signature="e#1902#1903#0" expanded="false" />
<element signature="e#1308#1309#0" expanded="true" />
<element signature="e#1340#1341#0" expanded="true" />
</folding>
</state>
</provider>
@@ -346,6 +328,7 @@
<find>index</find>
<find>fluidGasRatio</find>
<find>setupFluidRatio</find>
<find>startupStrokes</find>
</findStrings>
</component>
<component name="Git.Settings">
@@ -778,7 +761,7 @@
</component>
<component name="ProjectFrameBounds">
<option name="x" value="-1868" />
<option name="y" value="115" />
<option name="y" value="85" />
<option name="width" value="1613" />
<option name="height" value="913" />
</component>
@@ -1168,7 +1151,7 @@
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="-1868" y="115" width="1613" height="913" extended-state="0" />
<frame x="-1868" y="85" width="1613" height="913" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
@@ -1252,27 +1235,8 @@
<state relative-caret-position="675">
<caret line="56" column="0" lean-forward="true" selection-start-line="56" selection-start-column="0" selection-end-line="56" selection-end-column="0" />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#1233#1234#0" expanded="false" />
<element signature="e#1265#1266#0" expanded="false" />
<element signature="e#1308#1309#0" expanded="false" />
<element signature="e#1340#1341#0" expanded="false" />
<element signature="e#1380#1381#0" expanded="false" />
<element signature="e#1416#1417#0" expanded="false" />
<element signature="e#1453#1454#0" expanded="false" />
<element signature="e#1486#1487#0" expanded="false" />
<element signature="e#1525#1526#0" expanded="false" />
<element signature="e#1560#1561#0" expanded="false" />
<element signature="e#1597#1598#0" expanded="false" />
<element signature="e#1630#1631#0" expanded="false" />
<element signature="e#1664#1665#0" expanded="false" />
<element signature="e#1694#1695#0" expanded="false" />
<element signature="e#1729#1730#0" expanded="false" />
<element signature="e#1760#1761#0" expanded="false" />
<element signature="e#1797#1798#0" expanded="false" />
<element signature="e#1830#1831#0" expanded="false" />
<element signature="e#1868#1869#0" expanded="false" />
<element signature="e#1902#1903#0" expanded="false" />
<element signature="e#1308#1309#0" expanded="true" />
<element signature="e#1340#1341#0" expanded="true" />
</folding>
</state>
</provider>
@@ -1407,6 +1371,8 @@
<caret line="875" column="5" lean-forward="true" selection-start-line="875" selection-start-column="5" selection-end-line="875" selection-end-column="5" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#19256#19257#0" expanded="true" />
<element signature="e#19294#19295#0" expanded="true" />
</folding>
</state>
</provider>
@@ -1814,14 +1780,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/POC.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="555">
<caret line="37" column="66" lean-forward="false" selection-start-line="37" selection-start-column="66" selection-end-line="37" selection-end-column="66" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/Card.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="675">
@@ -1904,36 +1862,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/WellTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="570">
<caret line="43" column="10" lean-forward="false" selection-start-line="43" selection-start-column="4" selection-end-line="43" selection-end-column="10" />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#1233#1234#0" expanded="false" />
<element signature="e#1265#1266#0" expanded="false" />
<element signature="e#1308#1309#0" expanded="false" />
<element signature="e#1340#1341#0" expanded="false" />
<element signature="e#1380#1381#0" expanded="false" />
<element signature="e#1416#1417#0" expanded="false" />
<element signature="e#1453#1454#0" expanded="false" />
<element signature="e#1486#1487#0" expanded="false" />
<element signature="e#1525#1526#0" expanded="false" />
<element signature="e#1560#1561#0" expanded="false" />
<element signature="e#1597#1598#0" expanded="false" />
<element signature="e#1630#1631#0" expanded="false" />
<element signature="e#1664#1665#0" expanded="false" />
<element signature="e#1694#1695#0" expanded="false" />
<element signature="e#1729#1730#0" expanded="false" />
<element signature="e#1760#1761#0" expanded="false" />
<element signature="e#1797#1798#0" expanded="false" />
<element signature="e#1830#1831#0" expanded="false" />
<element signature="e#1868#1869#0" expanded="false" />
<element signature="e#1902#1903#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/startup.sh">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30">
@@ -1960,12 +1888,33 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/WellTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="510">
<caret line="43" column="10" lean-forward="false" selection-start-line="43" selection-start-column="4" selection-end-line="43" selection-end-column="10" />
<folding>
<element signature="e#1308#1309#0" expanded="true" />
<element signature="e#1340#1341#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/POC.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="555">
<caret line="37" column="66" lean-forward="false" selection-start-line="37" selection-start-column="66" selection-end-line="37" selection-end-column="66" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/Well.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="371">
<caret line="1357" column="13" lean-forward="false" selection-start-line="1357" selection-start-column="13" selection-end-line="1357" selection-end-column="13" />
<state relative-caret-position="272">
<caret line="112" column="0" lean-forward="true" selection-start-line="112" selection-start-column="0" selection-end-line="112" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#19256#19257#0" expanded="true" />
<element signature="e#19294#19295#0" expanded="true" />
</folding>
</state>
</provider>

View File

@@ -159,6 +159,7 @@ def main(global_config, **settings):
config.add_route('config', '/config', factory='pocwww.security.UserLoginFactory')
config.add_route('json_setpoints', '/json/setpoints', factory='pocwww.security.UserLoginFactory')
config.add_route('json_mode', '/json/mode', factory='pocwww.security.UserLoginFactory')
config.add_route('setpoints', '/setpoints', factory='pocwww.security.UserLoginFactory')
config.add_route('admin', '/admin', factory='pocwww.security.UserLoginFactory')

View File

@@ -270,3 +270,24 @@ def json_setpoints_post(request):
return {"updated": list(request.db['setpoints'].find_one({"name": name})), 'status': update_status}
except KeyError:
return {"status": "bad reqest"}
runModes = {0: 'poc', 1: 'manual', 2: 'timer'}
@view_config(route_name="json_mode", renderer="prettyjson", request_method='POST', permission='edit')
def json_mode_post(request):
jsb = request.json_body
try:
mode = jsb['mode']
upsert = request.db['setpoints'].update_one({"name": "runMode"}, {"$set": {'value': mode, 'storedBy': request.authenticated_userid, 'lastStored': datetime.utcnow()}}, upsert=True)
address = get_poc_address(request) or 'localhost'
url = "http://{}:8000/mode?mode={}&user={}".format(address, runModes[mode], request.authenticated_userid)
print(url)
r = requests.get(url)
update_status = r.text if r.status_code == 200 else {"status": "failure sending command"}
return {"updated": request.db['setpoints'].find_one({"name": "runMode"}), 'status': update_status}
except KeyError:
return {"status": "bad reqest"}

View File

@@ -5,6 +5,16 @@
<div class="content">
<div class="container">
<div class="row">
<div class="col-xs-12 well" style="text-align:center;">
<h1>Run Mode: <span id="runMode">Loading...</span></h1>
<button class="btn btn-lg btn-warning runModeBtn" data-mode="POC">POC</button>
<button class="btn btn-lg btn-warning runModeBtn" data-mode="MANUAL">Manual</button>
<button class="btn btn-lg btn-warning runModeBtn" data-mode="TIMER">Timer</button>
<br/><br/>
<p>Set by <span id="runModeSetBy">Loading...</span> at <span id="runModeSetTime">Loading...</span>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<h1>POC Setpoints</h1>
@@ -30,8 +40,19 @@
<script>
function updateRunMode(data){
$('#runMode').text(runModeToString(data.updated.value));
$('#runModeSetBy').text(data.updated.storedBy);
$('#runModeSetTime').text(data.updated.lastStored);
}
function makeFormForSetpoint(i, s){
if(s.name == "runMode"){
$('#runMode').text(runModeToString(s.value));
$('#runModeSetBy').text(s.storedBy);
$('#runModeSetTime').text(s.lastStored);
return;
}
var row = '<tr>';
row += '<td>' + s.name +'</td>';
row += '<td><input type="number" class="form-control" id="' + s.name + '" value="' + s.value + '"></td>';
@@ -42,6 +63,26 @@
$('tbody').append(row);
}
function runModeToString(rm){
if (rm == 0){
return "POC";
} else if (rm == 1) {
return "MANUAL";
} else if (rm == 2) {
return "TIMER";
}
}
function runModeFromString(rm){
if (rm == "POC"){
return 0;
} else if (rm == "MANUAL") {
return 1;
} else if (rm == "TIMER") {
return 2;
}
}
function updateSingleRow(data){
var name = data.updated.name;
var storedBy = data.updated.storedBy;
@@ -69,5 +110,18 @@
}
getSetpoints();
$('.runModeBtn').click(function(e){
e.preventDefault();
var modeStr = $(this).data('mode');
var mode = runModeFromString(modeStr);
$.post({
dataType: 'json',
data: JSON.stringify({mode: mode}),
contentType: "application/json; charset=utf-8",
url: "/json/mode",
success: updateRunMode
});
});
</script>
{% endblock content %}

View File

@@ -213,13 +213,13 @@ public class WebServer{
if ((user.length() > 0) && (action.length() > 0)) {
switch (action) {
case "manual":
attachedPOC.thisWell.setRunMode("MANUAL");
attachedPOC.thisWell.setRunModeString("MANUAL");
break;
case "poc":
attachedPOC.thisWell.setRunMode("POC");
attachedPOC.thisWell.setRunModeString("POC");
break;
case "timer":
attachedPOC.thisWell.setRunMode("TIMER");
attachedPOC.thisWell.setRunModeString("TIMER");
break;
default:
respJSON.put(action, "not implemented");

View File

@@ -106,7 +106,7 @@ public class Well {
private boolean permissiveOK;
private long strokesSinceStart = 0;
private long startupStrokes = 1;
private long startupStrokes = 10;
private long strokesToday = 0;
private long strokesLifetime;
private int pointCounter =0;
@@ -305,6 +305,16 @@ public class Well {
} else {
fluidGasRatio = dbFluidGasRatio;
}
double dbRunMode = db.getSetpoint("runMode");
if (dbRunMode == Double.MIN_VALUE){
runMode = RUNMODE_MANUAL; // DEFAULT VALUE
System.out.println("Using default value of " + runMode + " for runMode.");
db.storeSetpoint("runMode", (double) runMode);
} else {
setRunMode((int) dbRunMode);
System.out.println("Run Mode set to " + getRunModeString());
}
}
private void initializeMeasurements(){
@@ -521,7 +531,7 @@ public class Well {
}
}
public void setRunMode(String runModeString){
public void setRunModeString(String runModeString){
switch (runModeString){
case "POC":
runMode = RUNMODE_POC;
@@ -540,6 +550,10 @@ public class Well {
}
}
public void setRunMode(int runMode) {
this.runMode = runMode;
}
public double getCurrentSurfacePosition() {
return currentSurfacePosition;
}