Skip to content

Commit

Permalink
- Add activeCmd value to robotInterface
Browse files Browse the repository at this point in the history
- Changed some loglevel messages in connections
  • Loading branch information
EinEinfach committed Oct 23, 2024
1 parent 7195010 commit fe9f7f0
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 34 deletions.
66 changes: 33 additions & 33 deletions CaSSAndRA/src/backend/comm/connections.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ def connect(self) -> None:
self.client.connect(self.mqtt_server, self.mqtt_port, keepalive=60)
logger.info('Connecting...')
except Exception as e:
logger.warning('Connection to the MQTT server failed')
logger.debug(str(e))
logger.error('Connection to the MQTT server failed')
logger.error(str(e))
self.client.loop_start()

def on_connect(self, client, userdata, flags, rc):
Expand All @@ -71,12 +71,12 @@ def on_connect(self, client, userdata, flags, rc):
client.connection_flag = False

def on_disconnect(self, client, userdata, rc):
logger.warning('MQTT connection disconnected')
logger.info('MQTT connection disconnected')
logger.info(f"Disconnecting reason: {rc}")
self.client.connection_flag = False

def on_message(self, client, userdata, msg):
logger.info('RX:'+msg.topic+' message:'+str(msg.payload))
logger.debug('RX:'+msg.topic+' message:'+str(msg.payload))
if 'TOPIC_STATE' in self.mqtt_topics and msg.topic == self.mqtt_mower_name+'/'+self.mqtt_topics['TOPIC_STATE']:
decoded_message = str(msg.payload.decode('utf-8'))
data = json.loads(decoded_message)
Expand All @@ -95,12 +95,12 @@ def on_message(self, client, userdata, msg):
elif 'TOPIC_API_CMD' in self.mqtt_topics and msg.topic == self.mqtt_mower_name+'/'+self.mqtt_topics['TOPIC_API_CMD']:
data = msg.payload.decode('utf-8')
try:
logger.info(f'Got message over api: {data}')
logger.debug(f'Got message over api: {data}')
data = json.loads(data)
self.buffer_api.append(data)
except Exception as e:
logger.warning('Message content is not valid json format')
logger.debug(str(e))
logger.error('Message content is not valid json format')
logger.error(str(e))

def on_subscribe(self, client, userdata, mid, granted_qos):
if mid in self.sub_ids.keys():
Expand All @@ -126,9 +126,9 @@ def cmd_to_rover(self) -> None:
result = self.client.publish(topic, msg_pckg['msg'][i])
status = result[0]
if status == 0:
logger.info('TX: '+topic+' with message: '+msg_pckg['msg'][i])
logger.debug('TX: '+topic+' with message: '+msg_pckg['msg'][i])
else:
logger.warning('Failed to publish: '+topic+' with message: '+msg_pckg['msg'][i])
logger.debug('Failed to publish: '+topic+' with message: '+msg_pckg['msg'][i])
time.sleep(0.1)
robotInterface.mapDataInBuffer = False

Expand Down Expand Up @@ -158,11 +158,10 @@ def connect(self):
logger.info('Connecting...')
try:
data = self.reqandchecksum('AT+V')
logger.debug(f'Data to be send: {data}')
logger.info('TX: '+data)
logger.debug('TX: '+data)
res = requests.post(url=self.http_ip, headers=self.header, data=data+'\n', timeout=6)
logger.debug('Status code: '+str(res.status_code))
logger.info('RX: '+res.text)
logger.info('Status code: '+str(res.status_code))
logger.debug('RX: '+res.text)
if res.status_code == 200 and 'V,' in res.text and res.text[0] == 'V':
reslist = res.text.split(',')
encrypt = int(reslist[3])
Expand All @@ -179,8 +178,8 @@ def connect(self):
# cmdlist.cmd_set_positionmode = True
robotInterface.performCmd('setPositionMode')
except Exception as e:
logger.warning('Password is invalid. Check your comm config')
logger.debug(str(e))
logger.error('Password is invalid. Check your comm config')
logger.error(str(e))
self.http_encryptkey = None
self.http_status = -1
else:
Expand All @@ -201,7 +200,7 @@ def connect(self):
self.http_encryptchallenge = 0

def get_state(self) -> None:
logger.info('Performing get state http-request')
logger.debug('Performing get state http-request')
data = self.reqandchecksum('AT+S')
logger.debug(f'Data to be send: {data}')
if self.http_encryption == 1:
Expand All @@ -210,10 +209,10 @@ def get_state(self) -> None:
data_encrypt = [x - 126 + 31 if x>126 else x for x in data_encrypt]
data = ''.join(map(chr, data_encrypt))
try:
logger.info('TX: '+data)
logger.debug('TX: '+data)
res = requests.post(url=self.http_ip, headers=self.header, data=data+'\n', timeout=6)
logger.debug('Status code: '+str(res.status_code))
logger.info('RX: '+res.text)
logger.debug('RX: '+res.text)
if len(res.text) == 0:
logger.warning('HTTP request for state delivered implausible string')
self.http_status = -1
Expand All @@ -229,7 +228,7 @@ def get_state(self) -> None:
self.http_status = -1

def get_stats(self) -> None:
logger.info('Performing get stats http-request')
logger.debug('Performing get stats http-request')
data = self.reqandchecksum('AT+T')
logger.debug(f'Data to be send: {data}')
if self.http_encryption == 1:
Expand All @@ -238,10 +237,10 @@ def get_stats(self) -> None:
data_encrypt = [x - 126 + 31 if x>126 else x for x in data_encrypt]
data = ''.join(map(chr, data_encrypt))
try:
logger.info('TX: '+data)
logger.debug('TX: '+data)
res = requests.post(url=self.http_ip, headers=self.header, data=data+'\n', timeout=6)
logger.debug('Status code: '+str(res.status_code))
logger.info('RX: '+res.text)
logger.debug('RX: '+res.text)
if len(res.text) == 0:
logger.warning('HTTP request for state delivered implausible string')
self.http_status = -1
Expand All @@ -257,7 +256,7 @@ def get_stats(self) -> None:
self.http_status = -1

def get_obstacles(self) -> int:
logger.info('Performing get obstacles http-request')
logger.debug('Performing get obstacles http-request')
data = self.reqandchecksum('AT+S2')
logger.debug(f'Data to be send: {data}')
if self.http_encryption == 1:
Expand All @@ -266,10 +265,10 @@ def get_obstacles(self) -> int:
data_encrypt = [x - 126 + 31 if x>126 else x for x in data_encrypt]
data = ''.join(map(chr, data_encrypt))
try:
logger.info('Backend: TX '+data)
logger.debug('Backend: TX '+data)
res = requests.post(url=self.http_ip, headers=self.header, data=data+'\n', timeout=6)
logger.debug('Status code: '+str(res.status_code))
logger.info('Backend: RX '+res.text)
logger.debug('Backend: RX '+res.text)
if len(res.text) == 0:
logger.warning('Backend: HTTP request for obstacles delivered implausible string')
self.http_status = -1
Expand Down Expand Up @@ -303,15 +302,15 @@ def cmd_to_rover(self) -> None:
data_encrypt = [x - 126 + 31 if x>126 else x for x in data_encrypt]
data = ''.join(map(chr, data_encrypt))
try:
logger.info('TX '+data)
logger.debug('TX '+data)
res = requests.post(url=self.http_ip, headers=self.header, data=data+'\n', timeout=6)
logger.info('RX: '+res.text)
logger.debug('RX: '+res.text)
got_res = f"AT+{res.text.split(',')[0]}"
self.http_status = res.status_code
while self.http_status != 200 or expected_res != got_res:
rep_cnt += 1
res = requests.post(url=self.http_ip, headers=self.header, data=data+'\n', timeout=6)
logger.info('RX: '+res.text)
logger.debug('RX: '+res.text)
got_res = f"AT+{res.text.split(',')[0]}"
self.http_status = res.status_code
if rep_cnt > 30:
Expand Down Expand Up @@ -371,9 +370,10 @@ def connect(self) -> None:
logger.info('Connection successful')
# cmdlist.cmd_set_positionmode = True
robotInterface.performCmd('setPositionMode')
except:
except Exception as e:
self.uart_status = False
logger.warning('Connection to the rover is not possible.')
logger.error('Connection to the rover is not possible.')
logger.error(str(e))

def check_buffer(self) -> None:
try:
Expand All @@ -396,19 +396,19 @@ def get_state(self) -> None:
if self.uart_status:
msg_pckg = 'AT+S\n'
self.client.write(bytes(msg_pckg, 'UTF-8'))
logger.info('TX: '+str(bytes(msg_pckg, 'UTF-8')))
logger.debug('TX: '+str(bytes(msg_pckg, 'UTF-8')))

def get_stats(self) -> None:
if self.uart_status:
msg_pckg = 'AT+T\n'
self.client.write(bytes(msg_pckg, 'UTF-8'))
logger.info('TX: '+str(bytes(msg_pckg, 'UTF-8')))
logger.debug('TX: '+str(bytes(msg_pckg, 'UTF-8')))

def get_obstacles(self) -> None:
if self.uart_status:
msg_pckg = 'AT+S2\n'
self.client.write(bytes(msg_pckg, 'UTF-8'))
logger.info('TX: '+str(bytes(msg_pckg, 'UTF-8')))
logger.debug('TX: '+str(bytes(msg_pckg, 'UTF-8')))

def cmd_to_rover(self) -> None:
# msg_pckg = message.check()
Expand All @@ -419,7 +419,7 @@ def cmd_to_rover(self) -> None:
uart_msg = msg_pckg['msg'][i] + ',\n'
logger.debug(msg_pckg['msg'][i]+' will be send to rover')
self.client.write(bytes(uart_msg,'UTF-8'))
logger.info('TX: '+str(bytes(uart_msg,'UTF-8')))
logger.debug('TX: '+str(bytes(uart_msg,'UTF-8')))
time.sleep(0.1)
robotInterface.mapDataInBuffer = False
except Exception as e:
Expand Down
6 changes: 5 additions & 1 deletion CaSSAndRA/src/backend/comm/robotinterface.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

@dataclass
class RobotInterface:
status: str = 'ready'
activeCmd: str = None
pendingRequest: str = None
pendingRequestCnt: int = 0
mapDataInBuffer: bool = False
Expand Down Expand Up @@ -127,6 +127,8 @@ def onRobotMessageReceived(self, type: str, message) -> None:
logger.warning('Unknown message type')

def performCmd(self, cmd: str) -> None:
self.activeCmd = cmd
logger.info(f'Send command to robot: {cmd}')
if cmd == 'stop':
self._cmdStop()
elif cmd == 'move':
Expand Down Expand Up @@ -169,6 +171,8 @@ def performCmd(self, cmd: str) -> None:
def resetRobotCmds(self) -> None:
if self.robotCmds != []:
del self.robotCmds[0]
else:
self.activeCmd = None

def setRobotCmds(self, data: pd.DataFrame) -> None:
self.robotCmds.append(data)
Expand Down

0 comments on commit fe9f7f0

Please sign in to comment.