add subscribe to drone status

This commit is contained in:
Sem van der Hoeven
2023-05-22 14:09:43 +02:00
parent d2caabc110
commit 851c098be7
2 changed files with 10 additions and 2 deletions

View File

@@ -1,23 +1,30 @@
import rclpy import rclpy
from rclpy.node import Node from rclpy.node import Node
from drone_services.msg import DroneStatus
import asyncio import asyncio
import websockets.server import websockets.server
import threading
class ApiListener(Node): class ApiListener(Node):
def __init__(self): def __init__(self):
super().__init__('api_listener') super().__init__('api_listener')
self.get_logger().info('ApiListener node started') self.get_logger().info('ApiListener node started')
self.messages = 0 self.drone_status_subscriber = self.create_subscription(DroneStatus, '/drone/status', self.drone_status_callback, 10)
self.server = None self.server = None
def drone_status_callback(self, msg):
self.get_logger().info('Received drone battery and cpu: {0} {1}'.format(msg.battery_percentage,msg.cpu_usage))
async def spin(self): async def spin(self):
self.get_logger().info('Starting API') self.get_logger().info('Starting API')
self.server = await websockets.serve(self.api_handler, '0.0.0.0', 9001) self.server = await websockets.serve(self.api_handler, '0.0.0.0', 9001)
self.get_logger().info('API started') self.get_logger().info('API started')
await self.server.wait_closed() await self.server.wait_closed()
async def api_handler(self, websocket): async def api_handler(self, websocket):
try: try:
while rclpy.ok(): while rclpy.ok():

View File

@@ -7,6 +7,7 @@
<maintainer email="semmer99@gmail.com">sem</maintainer> <maintainer email="semmer99@gmail.com">sem</maintainer>
<license>Apache License 2.0</license> <license>Apache License 2.0</license>
<depend>rclpy</depend> <depend>rclpy</depend>
<depend>drone_services</depend>
<test_depend>ament_copyright</test_depend> <test_depend>ament_copyright</test_depend>
<test_depend>ament_flake8</test_depend> <test_depend>ament_flake8</test_depend>