Guest User

Untitled

a guest
Aug 18th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. import os
  2. import re
  3. import time
  4. import picamera
  5. import slack
  6. import RPi.GPIO as GPIO
  7.  
  8. SERVO_OUT = 2
  9. IMAGE_FILENAME = 'test.jpg'
  10. RECORDING_FILENAME = 'test.h264'
  11. VIDEO_FILENAME = 'test.mp4'
  12.  
  13. camera = picamera.PiCamera()
  14. camera.rotation = 180
  15. camera.led = True
  16. camera.start_preview()
  17. time.sleep(2)
  18.  
  19. GPIO.setmode(GPIO.BCM)
  20. GPIO.setup(SERVO_OUT, GPIO.OUT)
  21.  
  22. def change_duty_cycle(angle):
  23. servo = GPIO.PWM(SERVO_OUT, 50)
  24. servo.start(0.0)
  25. servo.ChangeDutyCycle((12 - 2.5) / 180 * angle + 2.5)
  26. time.sleep(1)
  27. servo.stop()
  28.  
  29. user_id = None
  30.  
  31. @slack.RTMClient.run_on(event='message')
  32. def capture(**payload):
  33. data = payload['data']
  34. client = payload['web_client']
  35. global user_id
  36. if not user_id:
  37. res = client.auth_test()
  38. user_id = res['user_id']
  39. if 'text' in data and 'user' in data and data['user'] == user_id:
  40. text = data['text']
  41. if 'servo' in text:
  42. match = re.search(r'\d+', text)
  43. if match:
  44. angle = int(match.group())
  45. if 0 <= angle <= 180:
  46. change_duty_cycle(angle)
  47. if 'capture' in text:
  48. camera.resolution = (1280, 720)
  49. camera.capture(IMAGE_FILENAME)
  50. client.files_upload(channels=data['channel'],file=IMAGE_FILENAME,filetype='jpg')
  51. if 'start_recording' in text:
  52. camera.resolution = (640, 480)
  53. camera.start_recording(RECORDING_FILENAME)
  54. if 'stop_recording' in text:
  55. camera.stop_recording()
  56. os.system(f'ffmpeg -y -i {RECORDING_FILENAME} -c copy {VIDEO_FILENAME}')
  57. client.files_upload(channels=data['channel'],file=VIDEO_FILENAME,filetype='mp4')
  58.  
  59. try:
  60. slack_token = os.environ['SLACK_API_TOKEN']
  61. rtm_client = slack.RTMClient(token=slack_token)
  62. rtm_client.start()
  63. finally:
  64. camera.close()
  65. GPIO.cleanup()
Advertisement
Add Comment
Please, Sign In to add comment