Advertisement
Guest User

Untitled

a guest
Sep 17th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. import appdaemon.plugins.mqtt.mqttapi as mqtt
  2.  
  3. class MqttEventListener(mqtt.Mqtt):
  4.  
  5. def initialize(self):
  6. self.mqtt_subscribe("valetudo/rockrobo/map_data", namespace=mqtt)
  7. self.listen_event(self.updatemap, namespace=mqtt)
  8.  
  9. def test(self, event_name, data, *args, **kwargs):
  10. self.log(event_name)
  11.  
  12. def updatemap(self, event_name, data, *args, **kwargs):
  13. def floor(point, paddingX, paddingY, width):
  14. return [((point[0] - paddingX) * 4), ((point[1] - paddingY) * 4),(((point[0] - paddingX) * 4) + width), (((point[1] - paddingY) * 4) + width)]
  15.  
  16. img = Image.new('RGBA', (1280, 1280))
  17. imgmap = Image.open('/config/img/vacuummap.svg.png')
  18. draw = ImageDraw.Draw(img)
  19.  
  20. # Load vacuum JSON data
  21. pathpoint = []
  22. # Calculate padding
  23. minX = (min(data['image']['pixels']['floor'], key = lambda t: t[0]))[0] - 20
  24. minY = (min(data['image']['pixels']['floor'], key = lambda t: t[1]))[1] - 20
  25.  
  26. # Draw floor
  27. for point in data['image']['pixels']['floor']:
  28. draw.ellipse(floor(point,minX,minY,4), fill=(0, 118, 255, 200))
  29. for point in data['image']['pixels']['obstacle_strong']:
  30. draw.ellipse(floor(point,minX,minY,3), fill=(82, 174, 255, 200))
  31. # Draw path
  32. for path in data['path']['points']:
  33. pathpoint.append((math.floor((path[0]/50 - data['image']['position']['left'] - minX) * 4), math.floor((path[1]/50 - data['image']['position']['top'] - minY) * 4)))
  34. draw.line(pathpoint, fill=(255, 255, 255, 255), width=1)
  35. # Draw robot
  36. robot = (math.floor((data['robot'][0]/50 - data['image']['position']['left'] - minX) * 4), math.floor((data['robot'][1]/50 - data['image']['position']['top'] - minY) * 4))
  37. draw.ellipse([robot[0]-15,robot[1]-15,(robot[0]+15),(robot[1]+15)], fill=(255, 255, 255, 255), outline=(0,0,0,255), width=3)
  38. img.paste(imgmap, (minX+15, minY+15), imgmap)
  39. img.save("/config/img/vacuummap.png", "PNG")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement