From 1e95bf0fc815c15175ad244a8d153f8c3c7b2eef Mon Sep 17 00:00:00 2001 From: Aaro Haikonen Date: Mon, 7 Nov 2022 18:07:46 +0200 Subject: [PATCH 1/7] Added dumb movability function --- FASTory.py | 74 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 57 insertions(+), 17 deletions(-) diff --git a/FASTory.py b/FASTory.py index 15e75bd..d525cda 100644 --- a/FASTory.py +++ b/FASTory.py @@ -7,39 +7,69 @@ _ip = socket.gethostbyname(socket.gethostname()) class Workstation: - def __init__(self,ip): + def __init__(self,ip, zspot_number): self.serviceurl = f'{ip}{_services}' self.eventsurl = f'{ip}{_events}' + self.pen_color = None + self.zspots = [None]*zspot_number def move12(self): - - return 0 + if self.zspots[0] != None and self.zspots[1] == None: + pallet = self.zspots[0] + self.zspots[1] = pallet + self.zspots[0] = None + return True + else: + return False def move23(self): - - return 0 - + if self.zspots[1] != None and self.zspots[2] == None: + pallet = self.zspots[1] + self.zspots[2] = pallet + self.zspots[1] = None + return True + else: + return False + def move35(self): - - return 0 + if self.zspots[2] != None and self.zspots[4] == None: + pallet = self.zspots[2] + self.zspots[4] = pallet + self.zspots[2] = None + return True + else: + return False def move14(self): - - return 0 + if self.zspots[0] != None and self.zspots[3] == None: + pallet = self.zspots[0] + self.zspots[3] = pallet + self.zspots[0] = None + return True + else: + return False def move45(self): - - return 0 + if self.zspots[3] != None and self.zspots[4] == None: + pallet = self.zspots[3] + self.zspots[3] = pallet + self.zspots[4] = None + return True + else: + return False - def get_status(self): + def load_pallets(self, spot, value): + self.zspots[spot-1] = value + - return 0 + def get_status(self, spot): + return self.zspots[spot-1] def draw(self, receipe): return 0 - #r="RED", g="GREEN", b="BLUE" + # r="RED", g="GREEN", b="BLUE" def select_pen(self, c): if c == "r" or c == "RED": s = "ChangePenRED" @@ -51,7 +81,9 @@ def select_pen(self, c): print("Undefined color") command = f'{self.serviceurl}{s}' - requests.post(url=command) + response = requests.post(url=command) + if response.status_code == 202: + self.pen_color = "RED" return 0 def check_IP(): @@ -62,10 +94,18 @@ def check_IP(): except: print('Something happened with IP. Dunno lol:D') + + def main(): ip = check_IP() print("Currently connected to ", ip) - Workstation(ip).select_pen("r") + station1 = Workstation(ip,5) + station1.load_pallets(1, "Pallet") + print(station1.get_status(1)) + station1.move12() + print(station1.get_status(1)) + print(station1.get_status(2)) + return 0 main() \ No newline at end of file From 20ca5fb937861a409e7b991aa0335f7542aae948 Mon Sep 17 00:00:00 2001 From: Aaro Haikonen Date: Mon, 7 Nov 2022 20:04:36 +0200 Subject: [PATCH 2/7] now more along the specs --- FASTory.py | 74 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 26 deletions(-) diff --git a/FASTory.py b/FASTory.py index d525cda..bead3a8 100644 --- a/FASTory.py +++ b/FASTory.py @@ -7,54 +7,71 @@ _ip = socket.gethostbyname(socket.gethostname()) class Workstation: - def __init__(self,ip, zspot_number): - self.serviceurl = f'{ip}{_services}' - self.eventsurl = f'{ip}{_events}' + def __init__(self,ip_rob, ip_cnv, zspot_number): + self.robot_ip = ip_rob + self.conveyor_ip = ip_cnv + self.roboturl = f'{ip_rob}{_services}' + self.conveyorurl = f'{ip_cnv}{_events}' self.pen_color = None self.zspots = [None]*zspot_number def move12(self): if self.zspots[0] != None and self.zspots[1] == None: - pallet = self.zspots[0] - self.zspots[1] = pallet - self.zspots[0] = None - return True + body = {"destUrl" : f"{self.aswer:url}:8080"} + response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone12", data=body) + if response.status_code == 202: + pallet = self.zspots[0] + self.zspots[1] = pallet + self.zspots[0] = None + return True else: return False def move23(self): if self.zspots[1] != None and self.zspots[2] == None: - pallet = self.zspots[1] - self.zspots[2] = pallet - self.zspots[1] = None - return True + body = {"destUrl" : f"{self.aswer:url}:8080"} + response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone23", data=body) + if response.status_code == 202: + pallet = self.zspots[1] + self.zspots[2] = pallet + self.zspots[1] = None + return True else: return False def move35(self): if self.zspots[2] != None and self.zspots[4] == None: - pallet = self.zspots[2] - self.zspots[4] = pallet - self.zspots[2] = None - return True + body = {"destUrl" : f"{self.aswer:url}:8080"} + response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone35", data=body) + if response.status_code == 202: + pallet = self.zspots[2] + self.zspots[4] = pallet + self.zspots[2] = None + return True else: return False def move14(self): if self.zspots[0] != None and self.zspots[3] == None: - pallet = self.zspots[0] - self.zspots[3] = pallet - self.zspots[0] = None - return True + body = {"destUrl" : f"{self.aswer:url}:8080"} + response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone14", data=body) + if response.status_code == 202: + pallet = self.zspots[0] + self.zspots[3] = pallet + self.zspots[0] = None + return True else: return False def move45(self): if self.zspots[3] != None and self.zspots[4] == None: - pallet = self.zspots[3] - self.zspots[3] = pallet - self.zspots[4] = None - return True + body = {"destUrl" : f"{self.aswer:url}:8080"} + response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone45", data=body) + if response.status_code == 202: + pallet = self.zspots[3] + self.zspots[3] = pallet + self.zspots[4] = None + return True else: return False @@ -63,7 +80,10 @@ def load_pallets(self, spot, value): def get_status(self, spot): - return self.zspots[spot-1] + if self.zspots[spot-1] != None: + return self.zspots[spot-1] + else: + return -1 def draw(self, receipe): @@ -80,11 +100,13 @@ def select_pen(self, c): else: print("Undefined color") - command = f'{self.serviceurl}{s}' + command = f'{self.robot_ip}/rest/services/{s}' response = requests.post(url=command) if response.status_code == 202: self.pen_color = "RED" - return 0 + + def get_pen_color(self): + return self.pen_color def check_IP(): try: From a06b4d356300817abe4e84b959c988b409b9aa7d Mon Sep 17 00:00:00 2001 From: Aaro Haikonen Date: Thu, 10 Nov 2022 11:57:42 +0200 Subject: [PATCH 3/7] fixed bug --- FASTory.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/FASTory.py b/FASTory.py index bead3a8..f87b0bf 100644 --- a/FASTory.py +++ b/FASTory.py @@ -7,9 +7,10 @@ _ip = socket.gethostbyname(socket.gethostname()) class Workstation: - def __init__(self,ip_rob, ip_cnv, zspot_number): + def __init__(self,ip_rob, ip_cnv, answerurl ,zspot_number): self.robot_ip = ip_rob self.conveyor_ip = ip_cnv + self.answerurl = answerurl self.roboturl = f'{ip_rob}{_services}' self.conveyorurl = f'{ip_cnv}{_events}' self.pen_color = None @@ -17,7 +18,7 @@ def __init__(self,ip_rob, ip_cnv, zspot_number): def move12(self): if self.zspots[0] != None and self.zspots[1] == None: - body = {"destUrl" : f"{self.aswer:url}:8080"} + body = {"destUrl" : f"{self.answerurl}:8080"} response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone12", data=body) if response.status_code == 202: pallet = self.zspots[0] @@ -29,7 +30,7 @@ def move12(self): def move23(self): if self.zspots[1] != None and self.zspots[2] == None: - body = {"destUrl" : f"{self.aswer:url}:8080"} + body = {"destUrl" : f"{self.answerurl}:8080"} response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone23", data=body) if response.status_code == 202: pallet = self.zspots[1] @@ -41,7 +42,7 @@ def move23(self): def move35(self): if self.zspots[2] != None and self.zspots[4] == None: - body = {"destUrl" : f"{self.aswer:url}:8080"} + body = {"destUrl" : f"{self.answerurl}:8080"} response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone35", data=body) if response.status_code == 202: pallet = self.zspots[2] @@ -53,7 +54,7 @@ def move35(self): def move14(self): if self.zspots[0] != None and self.zspots[3] == None: - body = {"destUrl" : f"{self.aswer:url}:8080"} + body = {"destUrl" : f"{self.answerurl}:8080"} response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone14", data=body) if response.status_code == 202: pallet = self.zspots[0] @@ -65,7 +66,7 @@ def move14(self): def move45(self): if self.zspots[3] != None and self.zspots[4] == None: - body = {"destUrl" : f"{self.aswer:url}:8080"} + body = {"destUrl" : f"{self.answerurl}:8080"} response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone45", data=body) if response.status_code == 202: pallet = self.zspots[3] From 8d1d9308763cc12d5070388cceabd7ce33a2b648 Mon Sep 17 00:00:00 2001 From: Aaro Haikonen Date: Thu, 10 Nov 2022 12:37:02 +0200 Subject: [PATCH 4/7] made get pen color function --- FASTory.py | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/FASTory.py b/FASTory.py index f87b0bf..84d274f 100644 --- a/FASTory.py +++ b/FASTory.py @@ -7,71 +7,71 @@ _ip = socket.gethostbyname(socket.gethostname()) class Workstation: - def __init__(self,ip_rob, ip_cnv, answerurl ,zspot_number): + def __init__(self,ip_rob, ip_cnv, answerurl, zspot_number): self.robot_ip = ip_rob self.conveyor_ip = ip_cnv self.answerurl = answerurl self.roboturl = f'{ip_rob}{_services}' self.conveyorurl = f'{ip_cnv}{_events}' self.pen_color = None - self.zspots = [None]*zspot_number + self.zspots = [-1]*zspot_number def move12(self): - if self.zspots[0] != None and self.zspots[1] == None: + if self.zspots[0] != -1 and self.zspots[1] == -1: body = {"destUrl" : f"{self.answerurl}:8080"} response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone12", data=body) if response.status_code == 202: pallet = self.zspots[0] self.zspots[1] = pallet - self.zspots[0] = None + self.zspots[0] = -1 return True else: return False def move23(self): - if self.zspots[1] != None and self.zspots[2] == None: + if self.zspots[1] != -1 and self.zspots[2] == -1: body = {"destUrl" : f"{self.answerurl}:8080"} response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone23", data=body) if response.status_code == 202: pallet = self.zspots[1] self.zspots[2] = pallet - self.zspots[1] = None + self.zspots[1] = -1 return True else: return False def move35(self): - if self.zspots[2] != None and self.zspots[4] == None: + if self.zspots[2] != -1 and self.zspots[4] == -1: body = {"destUrl" : f"{self.answerurl}:8080"} response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone35", data=body) if response.status_code == 202: pallet = self.zspots[2] self.zspots[4] = pallet - self.zspots[2] = None + self.zspots[2] = -1 return True else: return False def move14(self): - if self.zspots[0] != None and self.zspots[3] == None: + if self.zspots[0] != -1 and self.zspots[3] == -1: body = {"destUrl" : f"{self.answerurl}:8080"} response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone14", data=body) if response.status_code == 202: pallet = self.zspots[0] self.zspots[3] = pallet - self.zspots[0] = None + self.zspots[0] = -1 return True else: return False def move45(self): - if self.zspots[3] != None and self.zspots[4] == None: + if self.zspots[3] != -1 and self.zspots[4] == -1: body = {"destUrl" : f"{self.answerurl}:8080"} response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone45", data=body) if response.status_code == 202: pallet = self.zspots[3] self.zspots[3] = pallet - self.zspots[4] = None + self.zspots[4] = -1 return True else: return False @@ -81,10 +81,8 @@ def load_pallets(self, spot, value): def get_status(self, spot): - if self.zspots[spot-1] != None: - return self.zspots[spot-1] - else: - return -1 + + return self.zspots[spot-1] def draw(self, receipe): @@ -107,7 +105,13 @@ def select_pen(self, c): self.pen_color = "RED" def get_pen_color(self): - return self.pen_color + response = requests.get(url=f"{self.robot_ip}/rest/services/GetPenColor") + return response.json() + + def initialize(self): + for spot in range(len(self.zspots)): + self.zspots[spot] = self.get_status(spot+1) + def check_IP(): try: From 9a8aa8cb50222cea71fb0276f6bff015e532df73 Mon Sep 17 00:00:00 2001 From: Aaro Haikonen Date: Thu, 10 Nov 2022 15:42:41 +0200 Subject: [PATCH 5/7] started creating orchestrator script --- app.py | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 app.py diff --git a/app.py b/app.py new file mode 100644 index 0000000..04893cb --- /dev/null +++ b/app.py @@ -0,0 +1,57 @@ +from flask import Flask, request +from FASTory import Workstation +import json + +app = Flask(__name__) + +history = [] +orders = {} +order_id = 0 +workstations = {} +input_file = "fileWithFASTortyinfo" + +@app.post("/makeOrder/") +def make_order(): + global history + if request: + jsonmessage = request.form + message = json.loads(jsonmessage) + print(message) + phone_model = message['phone'] + phone_color = message['color'] + history.append(message) + create_order() + move_workstations() + +@app.post("/actionDone/") +def make_ready(ws_id=None): + wsid = ws_id + ws = workstations[wsid] + ws.ready_for_action() + move_workstations() + return 202 + +def FASTory_intialize(input_file): + with open(input_file, "w") as file: + data = json.loads(file) + for ws in data: + wstation = Workstation(ws['id'], ws['robot']['ip'], ws['conveyor']['ip'], ws['response']['url'], len(ws['spots'])) + wstation.initialize() + workstations[ws['id']] = wstation + +def create_order(model, color): + global orders + global order_id + order = [model, color] + orders[order_id] = order + order_id += 1 + +def clear_order(order_id): + global orders + del orders[order_id] + +def move_workstations(): + global workstations + for ws in workstations: + ws_status = ws.zspots + From 4e01afe2c194ad3f114fada09c889511bc3286f6 Mon Sep 17 00:00:00 2001 From: Aaro Haikonen Date: Wed, 23 Nov 2022 21:01:36 +0200 Subject: [PATCH 6/7] that should work --- FASTory.py | 228 +++++++++++++++++++++++++++++++++++++---------------- app.py | 71 ++++++++++++----- 2 files changed, 208 insertions(+), 91 deletions(-) diff --git a/FASTory.py b/FASTory.py index 84d274f..8bed4b8 100644 --- a/FASTory.py +++ b/FASTory.py @@ -1,91 +1,120 @@ import requests import socket +import time +import json #{IP}/_services/{command} -_services = "/rest/services/" -_events = "/rest/events/" _ip = socket.gethostbyname(socket.gethostname()) +TEST = True + class Workstation: - def __init__(self,ip_rob, ip_cnv, answerurl, zspot_number): - self.robot_ip = ip_rob - self.conveyor_ip = ip_cnv - self.answerurl = answerurl - self.roboturl = f'{ip_rob}{_services}' - self.conveyorurl = f'{ip_cnv}{_events}' + def __init__(self, ws_id, ip_rob, ip_cnv, answerurl, zspot_number): + self.id = ws_id + self.robot_ip = f"http://{ip_rob}" + self.conveyor_ip = f"http://{ip_cnv}" + self.answerurl = f"http://{answerurl}:8080" self.pen_color = None - self.zspots = [-1]*zspot_number + self.zspots = [-1]*zspot_number # -1 means the spot is empty + self.busy = False + self.order_ready = False + self.responses = { + 1 : "Success", + 2 : "Wrong status response", + 3 : "Conveyor is busy or spot is occupied", + 4 : "Connection problem: " + } def move12(self): - if self.zspots[0] != -1 and self.zspots[1] == -1: - body = {"destUrl" : f"{self.answerurl}:8080"} - response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone12", data=body) - if response.status_code == 202: - pallet = self.zspots[0] - self.zspots[1] = pallet - self.zspots[0] = -1 - return True + if self.busy == False and self.zspots[0] != -1 and self.zspots[1] == -1: + body = '{"destUrl" : ""}' + try: + response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone12", data=body, timeout=1) + if response.status_code == 202: + self.busy = True + self.__move_pallet(1,2) + return (True, self.responses[1]) + return (False, self.responses[2]) + except requests.exceptions.RequestException as e: + return (False, self.responses[4]) else: - return False + return (False, self.responses[3]) def move23(self): - if self.zspots[1] != -1 and self.zspots[2] == -1: - body = {"destUrl" : f"{self.answerurl}:8080"} - response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone23", data=body) - if response.status_code == 202: - pallet = self.zspots[1] - self.zspots[2] = pallet - self.zspots[1] = -1 - return True + if self.busy == False and self.zspots[1] != -1 and self.zspots[2] == -1: + body = '{"destUrl" : ""}' + try: + response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone23", data=body, timeout=1) + if response.status_code == 202: + self.busy = True + self.__move_pallet(2,3) + return (True, self.responses[1]) + return (False, self.responses[2]) + except requests.exceptions.RequestException as e: + return (False, self.responses[4]) else: - return False + return (False, self.responses[3]) def move35(self): - if self.zspots[2] != -1 and self.zspots[4] == -1: - body = {"destUrl" : f"{self.answerurl}:8080"} - response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone35", data=body) - if response.status_code == 202: - pallet = self.zspots[2] - self.zspots[4] = pallet - self.zspots[2] = -1 - return True + if self.busy == False and self.zspots[2] != -1 and self.zspots[4] == -1: + body = '{"destUrl" : ""}' + try: + response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone35", data=body, timeout=1) + if response.status_code == 202: + self.busy = True + self.__move_pallet(3,5) + return (True, self.responses[1]) + return (False, self.responses[2]) + except requests.exceptions.RequestException as e: + return (False, self.responses[4]) else: - return False + return (False,self.responses[3]) def move14(self): - if self.zspots[0] != -1 and self.zspots[3] == -1: - body = {"destUrl" : f"{self.answerurl}:8080"} - response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone14", data=body) - if response.status_code == 202: - pallet = self.zspots[0] - self.zspots[3] = pallet - self.zspots[0] = -1 - return True + if self.busy == False and self.zspots[0] != -1 and self.zspots[3] == -1: + body = '{"destUrl" : ""}' + try: + response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone14", data=body, timeout=1) + if response.status_code == 202: + self.busy = True + self.__move_pallet(1,4) + return (True, self.responses[1]) + return (False, self.responses[2]) + except requests.exceptions.RequestException as e: + return (False, self.responses[4]) else: - return False + return (False,self.responses[3]) def move45(self): - if self.zspots[3] != -1 and self.zspots[4] == -1: - body = {"destUrl" : f"{self.answerurl}:8080"} - response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone45", data=body) - if response.status_code == 202: - pallet = self.zspots[3] - self.zspots[3] = pallet - self.zspots[4] = -1 - return True + if self.busy == False and self.zspots[3] != -1 and self.zspots[4] == -1: + body = '{"destUrl" : ""}' + try: + response = requests.post(url=f"{self.conveyor_ip}/rest/services/TransZone45", data=body, timeout=1) + if response.status_code == 202: + self.busy = True + self.__move_pallet(4,5) + return (True, self.responses[1]) + return (False, self.responses[2]) + except requests.exceptions.RequestException as e: + return (False, self.responses[4]) else: - return False + return (False,self.responses[3]) def load_pallets(self, spot, value): self.zspots[spot-1] = value def get_status(self, spot): - - return self.zspots[spot-1] + try: + response = requests.post(url=f"{self.conveyor_ip}/rest/services/Z{spot}", data='{}' ) + res = json.loads(response.text) + return res["PalletID"] + except requests.exceptions.RequestException as e: + return (False, self.responses[4]) def draw(self, receipe): - + self.order_ready = True + self.busy = True return 0 # r="RED", g="GREEN", b="BLUE" @@ -105,13 +134,26 @@ def select_pen(self, c): self.pen_color = "RED" def get_pen_color(self): - response = requests.get(url=f"{self.robot_ip}/rest/services/GetPenColor") - return response.json() + try: + response = requests.get(url=f"{self.robot_ip}/rest/services/GetPenColor") + return response.json() + except requests.exceptions.RequestException as e: + return (False, self.responses[4]) def initialize(self): for spot in range(len(self.zspots)): self.zspots[spot] = self.get_status(spot+1) + def ready(self): + self.busy = False + + def __move_pallet(self,spot1, target): + self.zspots[target-1] = self.zspots[spot1-1] + self.zspots[spot1-1] = -1 + + def get_spots(self): + return self.zspots + def check_IP(): try: @@ -120,19 +162,65 @@ def check_IP(): return ip except: print('Something happened with IP. Dunno lol:D') - + +def viasualize(ws): + visu = f" /--[{ws.zspots[3]:3}]----------\\ \n-[{ws.zspots[4]:3}]----[{ws.zspots[2]:3}]-[{ws.zspots[1]:3}]---[{ws.zspots[0]:3}]" + print(visu) + print() def main(): - ip = check_IP() - print("Currently connected to ", ip) - station1 = Workstation(ip,5) - station1.load_pallets(1, "Pallet") - print(station1.get_status(1)) - station1.move12() - print(station1.get_status(1)) - print(station1.get_status(2)) + print("Test script") + + print("Create WS") + ws = Workstation("10", "192.168.10.1", "192.168.10.2", "127.0.0.1",5) - return 0 + print("Initialize WS") + # ws.initialize() + print("WS spot pallet ids:") + viasualize(ws) -main() \ No newline at end of file + if -1 in ws.zspots: + print("Cnv empty, load pallets") + ws.load_pallets(1,"1") + ws.load_pallets(2,"2") + print() + viasualize(ws) + + print("move 12") + suc, msg = ws.move12() + print(msg) + viasualize(ws) + + print("move 23") + suc, msg = ws.move23() + print(msg) + viasualize(ws) + + print("move 14") + suc, msg = ws.move14() + print(msg) + viasualize(ws) + + print("toggle ws") + ws.ready() + + print("move 14") + suc, msg = ws.move14() + print(msg) + viasualize(ws) + + print("move 12") + suc, msg = ws.move35() + print(msg) + viasualize(ws) + + print("move 45") + suc, msg = ws.move45() + print(msg) + viasualize(ws) + + +if __name__ == '__main__': + main() + \ No newline at end of file diff --git a/app.py b/app.py index 04893cb..229b098 100644 --- a/app.py +++ b/app.py @@ -1,10 +1,12 @@ from flask import Flask, request from FASTory import Workstation import json +import time app = Flask(__name__) history = [] +running = False orders = {} order_id = 0 workstations = {} @@ -12,32 +14,20 @@ @app.post("/makeOrder/") def make_order(): - global history if request: jsonmessage = request.form message = json.loads(jsonmessage) print(message) phone_model = message['phone'] phone_color = message['color'] - history.append(message) - create_order() - move_workstations() + create_order(phone_model,phone_color) -@app.post("/actionDone/") -def make_ready(ws_id=None): - wsid = ws_id - ws = workstations[wsid] - ws.ready_for_action() - move_workstations() - return 202 - -def FASTory_intialize(input_file): - with open(input_file, "w") as file: - data = json.loads(file) - for ws in data: - wstation = Workstation(ws['id'], ws['robot']['ip'], ws['conveyor']['ip'], ws['response']['url'], len(ws['spots'])) - wstation.initialize() - workstations[ws['id']] = wstation +@app.post("/kill/") +def stop(): + global running + if running: + running = False + return True def create_order(model, color): global orders @@ -49,9 +39,48 @@ def create_order(model, color): def clear_order(order_id): global orders del orders[order_id] + +def move_workstation(ws): + ws.ready() + spots = ws.get_spots() + if spots[2] != -1 and ws.order_ready == False: + ws.draw(orders[order_id]) + elif spots[4] == -1 and spots[2] != -1: + suc, msg = ws.move35() + if not suc: + print(suc, msg) + elif spots[2] == -1 and spots[1] != -1: + suc, msg = ws.move23() + if not suc: + print(suc, msg) + elif spots[1] == -1 and spots[0] != -1: + suc, msg = ws.move12() + if not suc: + print(suc, msg) + elif spots[3] == -1 and spots[0] != -1: + suc, msg = ws.move14() + if not suc: + print(suc, msg) + elif spots[4] == -1 and spots[3] != -1: + suc, msg = ws.move45() + if not suc: + print(suc, msg) + else: + ws.load_pallet(1,order_id) -def move_workstations(): +def cycle_workstations(): global workstations for ws in workstations: - ws_status = ws.zspots + move_workstation(ws) +def add_workstaion(ws_id, ip_rob, ip_cnv, answerurl, zspot_number): + global workstations + ws = Workstation(ws_id, ip_rob, ip_cnv, answerurl, zspot_number) + workstations.append(ws) + + +if __name__ == '__main__': + app.run(debug=True, port=8080) + while(running): + cycle_workstations() + time.sleep(10) \ No newline at end of file From 20ee9101b1bae7bd8313c763951b212b01e4c08a Mon Sep 17 00:00:00 2001 From: Aaro Haikonen Date: Sun, 11 Dec 2022 20:17:04 +0200 Subject: [PATCH 7/7] final changes --- FASTory.py | 1 - app.py | 5 +---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/FASTory.py b/FASTory.py index 8bed4b8..72a895d 100644 --- a/FASTory.py +++ b/FASTory.py @@ -1,6 +1,5 @@ import requests import socket -import time import json #{IP}/_services/{command} diff --git a/app.py b/app.py index 229b098..84d7025 100644 --- a/app.py +++ b/app.py @@ -6,7 +6,7 @@ app = Flask(__name__) history = [] -running = False +running = True orders = {} order_id = 0 workstations = {} @@ -81,6 +81,3 @@ def add_workstaion(ws_id, ip_rob, ip_cnv, answerurl, zspot_number): if __name__ == '__main__': app.run(debug=True, port=8080) - while(running): - cycle_workstations() - time.sleep(10) \ No newline at end of file