Skip to content

Commit

Permalink
Output SDK logs, anonymous mode
Browse files Browse the repository at this point in the history
  • Loading branch information
gorzechowski committed Nov 13, 2020
1 parent a4c0e5f commit 4a2c932
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 15 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## [0.2.0] - 2020-11-13

### Added

* Node is able now to output logs from Veides Agent SDK
* New optional property `~capath` (`veides_client_capath`) to provide custom certificates directory path to AgentClient
* ROS Node is now initialized in `anonymous` mode

## [0.1.0] - 2020-11-11

This is an initial release
Expand Down
7 changes: 1 addition & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,7 @@ add_service_files(

generate_messages()

catkin_package(
# INCLUDE_DIRS include
# LIBRARIES veides
# CATKIN_DEPENDS rospy
# DEPENDS system_lib
)
catkin_package()

include_directories(
${catkin_INCLUDE_DIRS}
Expand Down
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,10 @@ Required parameters:

Optional parameters:

| Property | Description |
| ----------------: | --------------------------------------------------------------------------------------- |
| veides_agent_name | Agent name used to compose publish topics. By default `veides_agent_client_id` is used. |
| Property | Description |
| -------------------: | --------------------------------------------------------------------------------------- |
| veides_agent_name | Agent name used to compose publish topics. By default `veides_agent_client_id` is used. |
| veides_client_capath | Path to certificates directory |

## Publish topics

Expand Down
2 changes: 2 additions & 0 deletions launch/veides_agent.launch
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
<arg name="veides_agent_key" />
<arg name="veides_agent_secret_key" />
<arg name="veides_client_host" />
<arg name="veides_client_capath" default="" />

<node name="veides_agent_$(arg veides_agent_name)" pkg="veides_agent_ros" type="veides_agent_node" output="screen">
<param name="name" value="$(arg veides_agent_name)" />
<param name="client_id" value="$(arg veides_agent_client_id)" />
<param name="key" value="$(arg veides_agent_key)" />
<param name="secret_key" value="$(arg veides_agent_secret_key)" />
<param name="host" value="$(arg veides_client_host)" />
<param name="capath" value="$(arg veides_client_capath)" />
</node>
</launch>
2 changes: 1 addition & 1 deletion package.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<package format="2">
<name>veides_agent_ros</name>
<version>0.1.0</version>
<version>0.2.0</version>
<description>Package that allows ROS developers to easily connect agents and interact with Veides platform</description>

<maintainer email="contact@veides.io">Veides Team</maintainer>
Expand Down
23 changes: 18 additions & 5 deletions src/veides_agent/__init__.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
from veides_agent_ros.msg import Action, ActionEntity
from veides.sdk.agent import AgentClient, ConnectionProperties, AgentProperties
from veides_agent.logger import RosNodeConnectedLogger


class VeidesAgentNode:
def __init__(self, ros, service_factories):
ros.init_node('veides_agent_node', log_level=ros.DEBUG)
ros.init_node('veides_agent_node', log_level=ros.INFO, anonymous=True)

self._services = []
self._ros = ros
Expand All @@ -16,22 +17,34 @@ def __init__(self, ros, service_factories):
secret_key = self._ros.get_param('~secret_key')
client_id = self._ros.get_param('~client_id')
self.agent_name = self._ros.get_param('~name', client_id)
capath = self._ros.get_param('~capath', "")

connection_propeties = {
'host': host
}

if isinstance(capath, str) and len(capath) > 0:
connection_propeties['capath'] = capath

self.client = AgentClient(
connection_properties=ConnectionProperties(host=host),
connection_properties=ConnectionProperties(**connection_propeties),
agent_properties=AgentProperties(
client_id=client_id,
key=key,
secret_key=secret_key
),
logger=RosNodeConnectedLogger(self._ros, '[veides_agent_sdk]'),
mqtt_logger=RosNodeConnectedLogger(self._ros, '[veides_agent_sdk/Paho]')
)

self.client.on_any_action(self._on_action)
self.client.connect()

if self.client.connected.wait(timeout=60):
self._create_services(service_factories)
self._register_services()
if not self.client.connected.wait(timeout=30):
raise Exception('Not connected')

self._create_services(service_factories)
self._register_services()

self.action_publisher = self._ros.Publisher('/veides/agent/{}/action_received'.format(self.agent_name), Action, queue_size=5)

Expand Down
37 changes: 37 additions & 0 deletions src/veides_agent/logger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import logging


class RosNodeConnectedLogger(logging.Logger):
def __init__(self, rospy, name=''):
self.rospy = rospy
self.name = name

def log(self, level, message, *_):
if level == logging.DEBUG:
self.debug(message)
elif level == logging.INFO:
self.info(message)
elif level == logging.WARN:
self.warning(message)
elif level == logging.ERROR:
self.error(message)
else:
self.critical(message)

def critical(self, message, *_):
self.rospy.logfatal(self._format_message(message))

def error(self, message, *_):
self.rospy.logerr(self._format_message(message))

def warning(self, message, *_):
self.rospy.logwarn(self._format_message(message))

def info(self, message, *_):
self.rospy.loginfo(self._format_message(message))

def debug(self, message, *_):
self.rospy.logdebug(self._format_message(message))

def _format_message(self, message):
return '{} {}'.format(self.name, message)

0 comments on commit 4a2c932

Please sign in to comment.