Local autonomy test 1
This commit is contained in:
3
controller/lockdown.py
Normal file
3
controller/lockdown.py
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
import state
|
||||||
|
|
||||||
|
state.safely_panic()
|
||||||
@@ -3,25 +3,31 @@ from state.server import Server
|
|||||||
from state.changer import Changer
|
from state.changer import Changer
|
||||||
from state.file import File
|
from state.file import File
|
||||||
|
|
||||||
|
def safely_panic():
|
||||||
|
safe_state = {}
|
||||||
|
changer = Changer(safe_state,safe_state)
|
||||||
|
changer.stop_everything
|
||||||
|
|
||||||
|
|
||||||
def sync():
|
def sync():
|
||||||
server = Server(config.API_BASE_URL, config.CONTROLLER_ID)
|
try:
|
||||||
local = File(config.STATE_FILE)
|
server = Server(config.API_BASE_URL, config.CONTROLLER_ID)
|
||||||
server_state = server.get_state()
|
local = File(config.STATE_FILE)
|
||||||
|
server_state = server.get_state()
|
||||||
|
|
||||||
|
if local.present():
|
||||||
|
local.load()
|
||||||
|
print "local present: " + repr(local.data)
|
||||||
|
else:
|
||||||
|
local.data = server_state
|
||||||
|
print "local not present, server: " + repr(local.data)
|
||||||
|
local.save()
|
||||||
|
|
||||||
|
local_state = local.data
|
||||||
|
|
||||||
if local.present():
|
changer = Changer(local_state, server_state)
|
||||||
local.load()
|
current_state = changer.process_change()
|
||||||
print "local present: " + repr(local.data)
|
|
||||||
else:
|
|
||||||
local.data = server_state
|
|
||||||
print "local not present, server: " + repr(local.data)
|
|
||||||
local.save()
|
|
||||||
|
|
||||||
|
server.post_state(current_state)
|
||||||
local_state = local.data
|
except:
|
||||||
|
safely_panic();
|
||||||
changer = Changer(local_state, server_state)
|
|
||||||
current_state = changer.process_change()
|
|
||||||
|
|
||||||
server.post_state(current_state)
|
|
||||||
|
|||||||
@@ -24,6 +24,10 @@ class Changer(object):
|
|||||||
'closed': self.close_in_valve
|
'closed': self.close_in_valve
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def stop_everything:
|
||||||
|
self.close_in_valve
|
||||||
|
self.close_out_valve
|
||||||
|
|
||||||
def safe_remote_state(self, key):
|
def safe_remote_state(self, key):
|
||||||
if key in ['out_valve', 'in_valve']:
|
if key in ['out_valve', 'in_valve']:
|
||||||
return self.remote_state.get(key, 'closed')
|
return self.remote_state.get(key, 'closed')
|
||||||
|
|||||||
Reference in New Issue
Block a user