Commit 77b0c6cc authored by Arnaud WATLET's avatar Arnaud WATLET
Browse files

Fixes bugs on MQTT and TCP communication - start woks on webserver and...

Fixes bugs on MQTT and TCP communication - start woks on webserver and mqtt_interface (through Node-Red)
Showing with 70 additions and 57 deletions
+70 -57
......@@ -56,13 +56,13 @@ SOH_LOGGING_CONFIG = {
# MQTT logging configuration parameters
MQTT_LOGGING_CONFIG = {
'hostname': 'ohmpy.umons.ac.be',
'hostname':'mg3d-dev.umons.ac.be',
'port': 1883,
'qos': 2,
'retain': False,
'keepalive': 60,
'will': None,
'auth': None,
'auth': { 'username': 'mqtt_user', 'password': 'mqtt_password' },
'tls': None,
'protocol': MQTTv31,
'transport': 'tcp',
......@@ -74,13 +74,13 @@ MQTT_LOGGING_CONFIG = {
# MQTT control configuration parameters
MQTT_CONTROL_CONFIG = {
'hostname': 'ohmpy.umons.ac.be',
'hostname': 'mg3d-dev.umons.ac.be',
'port': 1883,
'qos': 2,
'retain': False,
'keepalive': 60,
'will': None,
'auth': None,
'auth': { 'username': 'mqtt_user', 'password': 'mqtt_password' },
'tls': None,
'protocol': MQTTv31,
'transport': 'tcp',
......
......@@ -142,7 +142,7 @@
// useful functions
function sendCommand(query, callback=null) {
// dic in the form: {'command': X, ...} as JSON
// dic in the form: {'cmd': X, ...} as JSON
if (callback == null) {
function callback(x) {
console.log('default callback:', x)
......@@ -163,7 +163,7 @@
// start button
function startBtnFunc() {
sendCommand('{"command": "start"}', function(x) {
sendCommand('{"cmd": "start"}', function(x) {
console.log(x['status'])
if (x['status'] == 'running') {
output.innerHTML = 'Status: measuring...'
......@@ -175,7 +175,7 @@
// stop button
function stopBtnFunc() {
sendCommand('{"command": "stop"}', function(x) {
sendCommand('{"cmd": "stop"}', function(x) {
output.innerHTML = 'Status: ' + x['status']
clearInterval(interv)
getData()
......@@ -197,7 +197,7 @@
// define callback to send settigs to Pi
function configCallback() {
sendCommand(JSON.stringify({
'command': 'setConfig',
'cmd': 'setConfig',
'config': formVals
}), function(x) {
console.log('setconfig:', x)
......@@ -351,7 +351,7 @@
// run RS check
function rsBtnFunc() {
sendCommand('{"command": "rsCheck"}', function (res) {
sendCommand('{"cmd": "rsCheck"}', function (res) {
// update the bar plot
rsdata.push({
x: res['data']['AB'],
......@@ -376,7 +376,7 @@
// getData
function getData() {
sendCommand(JSON.stringify({
'command': 'getData',
'cmd': 'getData',
'surveyNames': Object.keys(data).slice(0, -1)
// last survey is often partial so we download it again
}), function(ddic) {
......@@ -497,7 +497,7 @@
// remove data
function removeDataBtnFunc() {
sendCommand('{"command": "removeData"}',function(x) {
sendCommand('{"cmd": "removeData"}',function(x) {
data = {}
output.innerHTML = 'Status: ' + x['status'] + ' (all data cleared)'
console.log('all data removed')
......@@ -508,7 +508,7 @@
// shutdown Pi
function shutdownBtnFunc() {
sendCommand('{"command": "shutdown"}', function(x) {
sendCommand('{"cmd": "shutdown"}', function(x) {
console.log('shuting down...')
})
}
......@@ -517,7 +517,7 @@
// restart Pi
function restartBtnFunc() {
sendCommand('{"command": "restart"}', function(x) {
sendCommand('{"cmd": "restart"}', function(x) {
console.log('rebooting...')
})
}
......@@ -526,7 +526,7 @@
// invert data
// function invertBtnFunc() {
// sendCommand('{"command": "invert"}', function(x) {
// sendCommand('{"cmd": "invert"}', function(x) {
// console.log('inversion results', x)
// })
// }
......@@ -535,7 +535,7 @@
// download data
function downloadBtnFunc() {
sendCommand('{"command": "download"}', function(x) {
sendCommand('{"cmd": "download"}', function(x) {
let dwl = document.getElementById('download')
dwl.setAttribute('href', serverUrl + '/data.zip')
dwl.setAttribute('download', 'data.zip')
......
......@@ -6,42 +6,52 @@ import zmq
ctrl_queue = Queue()
def on_message(client, userdata, message):
global socket
# Send the command
print(f'Sending command {message.payload.decode("utf-8")}')
socket.send_string(message.payload.decode("utf-8"))
# Get the reply.
socket.send(message.payload)
# Get the reply
# event = socket.poll(timeout=1000)
# if event == 0:
# print('timeout')
# reply = 'no reply...'
# else:
reply = socket.recv()
print(f'Received reply {message.payload.decode("utf-8")}: {reply}')
print(f'Received reply {message.payload.decode("utf-8")}: {reply}')
mqtt_client = mqtt.Client(f'ohmpi_{OHMPI_CONFIG["id"]}_listener', clean_session=False) # create new instance
print('now this')
print('connecting to broker')
trials = 0
trials_max = 10
broker_connected = False
while trials < trials_max:
try:
mqtt_client.username_pw_set(MQTT_CONTROL_CONFIG['auth'].get('username'),MQTT_CONTROL_CONFIG['auth']['password'])
mqtt_client.connect(MQTT_CONTROL_CONFIG['hostname'])
trials = trials_max
broker_connected = True
except:
print('new trial')
print('trying again...')
time.sleep(2)
trials+=1
print('Subscribing to topic', MQTT_CONTROL_CONFIG['ctrl_topic'])
mqtt_client.subscribe(MQTT_CONTROL_CONFIG['ctrl_topic'], MQTT_CONTROL_CONFIG['qos'])
mqtt_client.on_message = on_message
mqtt_client.loop_start()
context = zmq.Context()
# Socket to talk to server
print("Connecting to ohmpi control server")
socket = context.socket(zmq.REQ)
socket.connect(f'tcp://localhost:{CONTROL_CONFIG["tcp_port"]}')
while True:
time.sleep(.1)
if broker_connected:
print('Subscribing to topic', MQTT_CONTROL_CONFIG['ctrl_topic'])
mqtt_client.subscribe(MQTT_CONTROL_CONFIG['ctrl_topic'], MQTT_CONTROL_CONFIG['qos'])
mqtt_client.on_message = on_message
mqtt_client.loop_start()
context = zmq.Context()
# Socket to talk to server
print("Connecting to ohmpi control server")
socket = context.socket(zmq.REQ)
socket.connect(f'tcp://localhost:{CONTROL_CONFIG["tcp_port"]}')
while True:
time.sleep(.1)
else:
print("Unable to connect to broker")
exit(1)
......@@ -656,6 +656,9 @@ class OhmPi(object):
self.exec_logger.debug(f'Start listening for commands on port {tcp_port}')
while self.cmd_listen:
try:
#id_sock = socket.recv()
#assert not socket.recv() # empty data here
#assert socket.recv() == id_sock
message = socket.recv(flags=zmq.NOBLOCK)
self.exec_logger.debug(f'Received command: {message}')
e = None
......@@ -706,14 +709,15 @@ class OhmPi(object):
reply = {'cmd_id': cmd_id, 'status': status}
reply = json.dumps(reply)
self.exec_logger.debug(f'Execution report: {reply}')
self.exec_logger.debug(reply)
reply = bytes(reply, 'utf-8')
# self.exec_logger.debug(reply)
# reply = bytes(reply, 'utf-8')
reply = reply.encode('utf-8')
socket.send(reply)
except zmq.ZMQError as e:
if e.errno == zmq.EAGAIN:
pass # no message was ready (yet!)
else:
traceback.print_exc()
self.exec_logger.error(f'Unexpected error while process: {e}')
def measure(self, cmd_id=None):
"""Run the sequence in a separate thread. Can be stopped by 'OhmPi.stop()'.
......@@ -827,8 +831,5 @@ print(current_time.strftime("%Y-%m-%d %H:%M:%S"))
if __name__ == "__main__":
# start interface
Popen(['python', CONTROL_CONFIG['interface']])
print('done')
ohmpi = OhmPi(settings=OHMPI_CONFIG['settings'])
[{"id":"ea6628fd.4d57e8","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"6ae7e77e.04c64","type":"mqtt-broker","name":"ohmpi_mqtt_broker","broker":"ohmpy.umons.ac.be","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"64a75353.37700c","type":"ui_group","name":"Messages","tab":"5d888f29.07334","order":1,"disp":true,"width":"16","collapse":true},{"id":"142ad6ae.d55e29","type":"ui_group","name":"Buttons","tab":"5d888f29.07334","order":3,"disp":true,"width":"6","collapse":false},{"id":"5d888f29.07334","type":"ui_tab","name":"Home","icon":"dashboard","disabled":false,"hidden":false},{"id":"ea73b76b.ee0738","type":"ui_base","theme":{"name":"theme-light","lightTheme":{"default":"#0094CE","baseColor":"#0094CE","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif","edited":false},"darkTheme":{"default":"#097479","baseColor":"#097479","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif","edited":false},"customTheme":{"name":"Untitled Theme 1","default":"#4B7930","baseColor":"#4B7930","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"},"themeState":{"base-color":{"default":"#0094CE","value":"#0094CE","edited":false},"page-titlebar-backgroundColor":{"value":"#0094CE","edited":false},"page-backgroundColor":{"value":"#fafafa","edited":false},"page-sidebar-backgroundColor":{"value":"#ffffff","edited":false},"group-textColor":{"value":"#1bbfff","edited":false},"group-borderColor":{"value":"#ffffff","edited":false},"group-backgroundColor":{"value":"#ffffff","edited":false},"widget-textColor":{"value":"#111111","edited":false},"widget-backgroundColor":{"value":"#0094ce","edited":false},"widget-borderColor":{"value":"#ffffff","edited":false},"base-font":{"value":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"}},"angularTheme":{"primary":"indigo","accents":"blue","warn":"red","background":"grey","palette":"light"}},"site":{"name":"Node-RED Dashboard","hideToolbar":"false","allowSwipe":"false","lockMenu":"false","allowTempTheme":"true","dateFormat":"DD/MM/YYYY","sizes":{"sx":48,"sy":48,"gx":6,"gy":6,"cx":6,"cy":6,"px":0,"py":0}}},{"id":"147e389f.fc5a6f","type":"mqtt in","z":"ea6628fd.4d57e8","name":"","topic":"ohmpi_0001/exec","qos":"2","datatype":"auto","broker":"6ae7e77e.04c64","inputs":0,"x":110,"y":40,"wires":[["ddcc63.c93813a","40efede3.33021c"]]},{"id":"ddcc63.c93813a","type":"debug","z":"ea6628fd.4d57e8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":390,"y":40,"wires":[]},{"id":"40efede3.33021c","type":"ui_text","z":"ea6628fd.4d57e8","group":"64a75353.37700c","order":0,"width":"0","height":"0","name":"MQTT exec","label":"Execution","format":"{{msg.payload}}","layout":"row-spread","x":390,"y":80,"wires":[]},{"id":"64e06023.868f58","type":"mqtt in","z":"ea6628fd.4d57e8","name":"","topic":"ohmpi_0001/data","qos":"2","datatype":"auto","broker":"6ae7e77e.04c64","inputs":0,"x":100,"y":140,"wires":[["ac400b27.992c78","8d7f5d51.c06c4"]]},{"id":"ac400b27.992c78","type":"debug","z":"ea6628fd.4d57e8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":390,"y":140,"wires":[]},{"id":"8d7f5d51.c06c4","type":"ui_text","z":"ea6628fd.4d57e8","group":"64a75353.37700c","order":1,"width":0,"height":0,"name":"MQTT Data","label":"Data","format":"{{msg.payload}}","layout":"row-spread","x":390,"y":180,"wires":[]},{"id":"e1cc28ee.d2dd6","type":"mqtt out","z":"ea6628fd.4d57e8","name":"MQTT ctrl","topic":"ohmpi_0001/ctrl","qos":"0","retain":"false","broker":"6ae7e77e.04c64","x":380,"y":340,"wires":[]},{"id":"a144e7f8.416768","type":"ui_button","z":"ea6628fd.4d57e8","name":"","group":"142ad6ae.d55e29","order":0,"width":"2","height":"1","passthru":false,"label":"Start","tooltip":"","color":"","bgcolor":"green","className":"","icon":"","payload":"start","payloadType":"str","topic":"topic","topicType":"msg","x":70,"y":340,"wires":[["e1cc28ee.d2dd6","4a86345b.fb400c"]]},{"id":"abd65786.c433c8","type":"ui_button","z":"ea6628fd.4d57e8","name":"","group":"142ad6ae.d55e29","order":0,"width":"2","height":"1","passthru":false,"label":"Stop","tooltip":"","color":"","bgcolor":"red","icon":"","payload":"stop","payloadType":"str","topic":"topic","topicType":"msg","x":70,"y":400,"wires":[["e1cc28ee.d2dd6","4a86345b.fb400c"]]},{"id":"4a86345b.fb400c","type":"ui_audio","z":"ea6628fd.4d57e8","name":"","group":"142ad6ae.d55e29","voice":"urn:moz-tts:speechd:English%20(Received%20Pronunciation)?en","always":"","x":380,"y":400,"wires":[]},{"id":"398460c6.27a9e8","type":"mqtt in","z":"ea6628fd.4d57e8","name":"","topic":"ohmpi_0001/soh","qos":"2","datatype":"auto","broker":"6ae7e77e.04c64","inputs":0,"x":100,"y":240,"wires":[["21b85b73.b7ef34","498c2864.b36b18"]]},{"id":"21b85b73.b7ef34","type":"debug","z":"ea6628fd.4d57e8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":390,"y":240,"wires":[]},{"id":"498c2864.b36b18","type":"ui_text","z":"ea6628fd.4d57e8","group":"64a75353.37700c","order":1,"width":0,"height":0,"name":"MQTT SOH","label":"SOH","format":"{{msg.payload}}","layout":"row-spread","x":390,"y":280,"wires":[]},{"id":"3dbcbc0e.3d24ac","type":"ui_form","z":"ea6628fd.4d57e8","name":"Commands","label":"","group":"142ad6ae.d55e29","order":4,"width":0,"height":0,"options":[{"label":"cmd_id","value":"cmd_id","type":"text","required":false,"rows":null},{"label":"cmd","value":"cmd","type":"text","required":true,"rows":null},{"label":"args","value":"args","type":"text","required":false,"rows":null}],"formValue":{"cmd_id":"","cmd":"","args":""},"payload":"","submit":"submit","cancel":"cancel","topic":"topic","topicType":"msg","splitLayout":"","className":"","x":120,"y":640,"wires":[["e1cc28ee.d2dd6","bfc5c3.3e79724"]]},{"id":"bfc5c3.3e79724","type":"ui_text","z":"ea6628fd.4d57e8","group":"64a75353.37700c","order":3,"width":0,"height":0,"name":"","label":"text","format":"{{msg.payload}}","layout":"row-spread","className":"","x":380,"y":640,"wires":[]}]
\ No newline at end of file
[{"id":"ea6628fd.4d57e8","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"6ae7e77e.04c64","type":"mqtt-broker","name":"ohmpi_mqtt_broker","broker":"mg3d-dev.umons.ac.be","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"64a75353.37700c","type":"ui_group","name":"Messages","tab":"5d888f29.07334","order":1,"disp":true,"width":"16","collapse":true},{"id":"142ad6ae.d55e29","type":"ui_group","name":"Buttons","tab":"5d888f29.07334","order":3,"disp":true,"width":"6","collapse":false},{"id":"5d888f29.07334","type":"ui_tab","name":"Home","icon":"dashboard","disabled":false,"hidden":false},{"id":"ea73b76b.ee0738","type":"ui_base","theme":{"name":"theme-light","lightTheme":{"default":"#0094CE","baseColor":"#0094CE","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif","edited":false},"darkTheme":{"default":"#097479","baseColor":"#097479","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif","edited":false},"customTheme":{"name":"Untitled Theme 1","default":"#4B7930","baseColor":"#4B7930","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"},"themeState":{"base-color":{"default":"#0094CE","value":"#0094CE","edited":false},"page-titlebar-backgroundColor":{"value":"#0094CE","edited":false},"page-backgroundColor":{"value":"#fafafa","edited":false},"page-sidebar-backgroundColor":{"value":"#ffffff","edited":false},"group-textColor":{"value":"#1bbfff","edited":false},"group-borderColor":{"value":"#ffffff","edited":false},"group-backgroundColor":{"value":"#ffffff","edited":false},"widget-textColor":{"value":"#111111","edited":false},"widget-backgroundColor":{"value":"#0094ce","edited":false},"widget-borderColor":{"value":"#ffffff","edited":false},"base-font":{"value":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"}},"angularTheme":{"primary":"indigo","accents":"blue","warn":"red","background":"grey","palette":"light"}},"site":{"name":"Node-RED Dashboard","hideToolbar":"false","allowSwipe":"false","lockMenu":"false","allowTempTheme":"true","dateFormat":"DD/MM/YYYY","sizes":{"sx":48,"sy":48,"gx":6,"gy":6,"cx":6,"cy":6,"px":0,"py":0}}},{"id":"147e389f.fc5a6f","type":"mqtt in","z":"ea6628fd.4d57e8","name":"","topic":"ohmpi_0001/exec","qos":"2","datatype":"auto","broker":"6ae7e77e.04c64","inputs":0,"x":110,"y":40,"wires":[["ddcc63.c93813a","40efede3.33021c"]]},{"id":"ddcc63.c93813a","type":"debug","z":"ea6628fd.4d57e8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":390,"y":40,"wires":[]},{"id":"40efede3.33021c","type":"ui_text","z":"ea6628fd.4d57e8","group":"64a75353.37700c","order":0,"width":"0","height":"0","name":"MQTT exec","label":"Execution","format":"{{msg.payload}}","layout":"row-spread","x":390,"y":80,"wires":[]},{"id":"64e06023.868f58","type":"mqtt in","z":"ea6628fd.4d57e8","name":"","topic":"ohmpi_0001/data","qos":"2","datatype":"auto","broker":"6ae7e77e.04c64","inputs":0,"x":100,"y":140,"wires":[["ac400b27.992c78","8d7f5d51.c06c4"]]},{"id":"ac400b27.992c78","type":"debug","z":"ea6628fd.4d57e8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":390,"y":140,"wires":[]},{"id":"8d7f5d51.c06c4","type":"ui_text","z":"ea6628fd.4d57e8","group":"64a75353.37700c","order":1,"width":0,"height":0,"name":"MQTT Data","label":"Data","format":"{{msg.payload}}","layout":"row-spread","x":390,"y":180,"wires":[]},{"id":"e1cc28ee.d2dd6","type":"mqtt out","z":"ea6628fd.4d57e8","name":"MQTT ctrl","topic":"ohmpi_0001/ctrl","qos":"0","retain":"false","broker":"6ae7e77e.04c64","x":380,"y":340,"wires":[]},{"id":"a144e7f8.416768","type":"ui_button","z":"ea6628fd.4d57e8","name":"","group":"142ad6ae.d55e29","order":0,"width":"2","height":"1","passthru":false,"label":"Start","tooltip":"","color":"","bgcolor":"green","className":"","icon":"","payload":"start","payloadType":"str","topic":"topic","topicType":"msg","x":70,"y":340,"wires":[["e1cc28ee.d2dd6","4a86345b.fb400c"]]},{"id":"abd65786.c433c8","type":"ui_button","z":"ea6628fd.4d57e8","name":"","group":"142ad6ae.d55e29","order":0,"width":"2","height":"1","passthru":false,"label":"Stop","tooltip":"","color":"","bgcolor":"red","icon":"","payload":"stop","payloadType":"str","topic":"topic","topicType":"msg","x":70,"y":400,"wires":[["e1cc28ee.d2dd6","4a86345b.fb400c"]]},{"id":"4a86345b.fb400c","type":"ui_audio","z":"ea6628fd.4d57e8","name":"","group":"142ad6ae.d55e29","voice":"urn:moz-tts:speechd:English%20(Received%20Pronunciation)?en","always":"","x":380,"y":400,"wires":[]},{"id":"398460c6.27a9e8","type":"mqtt in","z":"ea6628fd.4d57e8","name":"","topic":"ohmpi_0001/soh","qos":"2","datatype":"auto","broker":"6ae7e77e.04c64","inputs":0,"x":100,"y":240,"wires":[["21b85b73.b7ef34","498c2864.b36b18"]]},{"id":"21b85b73.b7ef34","type":"debug","z":"ea6628fd.4d57e8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":390,"y":240,"wires":[]},{"id":"498c2864.b36b18","type":"ui_text","z":"ea6628fd.4d57e8","group":"64a75353.37700c","order":1,"width":0,"height":0,"name":"MQTT SOH","label":"SOH","format":"{{msg.payload}}","layout":"row-spread","x":390,"y":280,"wires":[]},{"id":"3dbcbc0e.3d24ac","type":"ui_form","z":"ea6628fd.4d57e8","name":"Commands","label":"","group":"142ad6ae.d55e29","order":4,"width":0,"height":0,"options":[{"label":"cmd_id","value":"cmd_id","type":"text","required":false,"rows":null},{"label":"cmd","value":"cmd","type":"text","required":true,"rows":null},{"label":"args","value":"args","type":"text","required":false,"rows":null}],"formValue":{"cmd_id":"","cmd":"","args":""},"payload":"","submit":"submit","cancel":"cancel","topic":"topic","topicType":"msg","splitLayout":"","className":"","x":120,"y":640,"wires":[["e1cc28ee.d2dd6","bfc5c3.3e79724"]]},{"id":"bfc5c3.3e79724","type":"ui_text","z":"ea6628fd.4d57e8","group":"64a75353.37700c","order":3,"width":0,"height":0,"name":"","label":"text","format":"{{msg.payload}}","layout":"row-spread","className":"","x":380,"y":640,"wires":[]}]
......@@ -29,6 +29,8 @@ context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect(f'tcp://localhost:{CONTROL_CONFIG["tcp_port"]}')
print(colored(f'Sending commands and listenning on tcp port {tcp_port}.'))
#id_sock = socket.getsockopt(zmq.IDENTITY)
#socket.send(id_sock, zmq.SNDMORE)
class MyServer(SimpleHTTPRequestHandler):
# because we use SimpleHTTPRequestHandler, we do not need to implement
......@@ -52,19 +54,19 @@ class MyServer(SimpleHTTPRequestHandler):
#global ohmpiThread, status, run
dic = json.loads(self.rfile.read(int(self.headers['Content-Length'])))
rdic = {} # response dictionnary
if dic['command'] == 'start':
if dic['cmd'] == 'start':
#ohmpi.measure()
socket.send_string(json.dumps({
'cmd_id': cmd_id,
'command': 'start'
'cmd': 'start'
}))
elif dic['command'] == 'stop':
elif dic['cmd'] == 'stop':
#ohmpi.stop()
socket.send_string(json.dumps({
'cmd_id': cmd_id,
'command': 'stop'
'cmd': 'stop'
}))
elif dic['command'] == 'getData':
elif dic['cmd'] == 'getData':
# get all .csv file in data folder
fnames = [fname for fname in os.listdir('data/') if fname[-4:] == '.csv']
ddic = {}
......@@ -81,10 +83,10 @@ class MyServer(SimpleHTTPRequestHandler):
'rho': df['R [ohm]'].tolist(),
}
rdic['data'] = ddic
elif dic['command'] == 'removeData':
elif dic['cmd'] == 'removeData':
shutil.rmtree('data')
os.mkdir('data')
elif dic['command'] == 'update_settings':
elif dic['cmd'] == 'update_settings':
#ohmpi.stop()
socket.send_string(json.dumps({
'cmd_id': cmd_id,
......@@ -106,11 +108,11 @@ class MyServer(SimpleHTTPRequestHandler):
print('new sequence set.')
print('setConfig', ohmpi.pardict)
"""
elif dic['command'] == 'invert':
elif dic['cmd'] == 'invert':
pass
elif dic['command'] == 'getResults':
elif dic['cmd'] == 'getResults':
pass
elif dic['command'] == 'rsCheck':
elif dic['cmd'] == 'rsCheck':
#ohmpi.rs_check()
socket.send_string(json.dumps({
'cmd_id': cmd_id,
......@@ -123,12 +125,12 @@ class MyServer(SimpleHTTPRequestHandler):
'res': df['RS [kOhm]'].tolist()
}
rdic['data'] = ddic
elif dic['command'] == 'download':
elif dic['cmd'] == 'download':
shutil.make_archive('data', 'zip', 'data')
elif dic['command'] == 'shutdown':
elif dic['cmd'] == 'shutdown':
print('shutting down...')
os.system('shutdown now -h')
elif dic['command'] == 'restart':
elif dic['cmd'] == 'restart':
print('shutting down...')
os.system('reboot')
else:
......@@ -141,7 +143,7 @@ class MyServer(SimpleHTTPRequestHandler):
message = socket.recv()
print('+++////', message)
rdic['data'] = message
rdic['data'] = message.decode('utf-8')
"""
while False:
message = socket.recv()
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment