Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. from picamera import PiCamera
  2. from time import sleep
  3. from datetime import datetime
  4. from gpiozero import Button
  5. from paramiko import SSHClient, AutoAddPolicy
  6. from scp import SCPClient
  7. import serial
  8. import string
  9. import pynmea2
  10. import RPi.GPIO as gpio
  11. import influxdb
  12.  
  13. camera = PiCamera()
  14. button1 = Button(17)
  15.  
  16. ip_addresses =['172.27.0.3']
  17.  
  18. def take_photo(gps_data):
  19. global filename
  20. now = datetime.now()
  21. filename = "{0:%S}-{0:%M}-{0:%H}-{0:%d}-{0:%m}-{0:%Y}|".format(now)
  22. filename = filename + "LON:" + str(gps_data.get('longitude')) + "-LAT:" + str(gps_data.get('latitude')) +".jpg"
  23. camera.start_preview()
  24. sleep(1)
  25. camera.capture('/home/pi/Desktop/camera/{0}'.format(filename))
  26. camera.stop_preview()
  27. return filename
  28.  
  29. def send_photo(host, filename):
  30. ssh = SSHClient()
  31. ssh.load_system_host_keys()
  32. ssh.set_missing_host_key_policy(AutoAddPolicy())
  33. ssh.connect(hostname=host, username='pi', password='raspberry')
  34. with SCPClient(ssh.get_transport()) as scp:
  35. scp.put('/home/pi/Desktop/camera/'+filename,
  36. '/home/pi')
  37.  
  38. def init_gps():
  39. port="/dev/ttyAMA0"
  40. ser = serial.Serial(port, baudrate = 9600, timeout = 5)
  41. return ser
  42.  
  43. def parse_data_gps(serial):
  44. try:
  45. while 1:
  46. data = serial.readline().decode('utf-8')
  47. print(data)
  48. if data[0:6] == '$GPGGA':
  49. print("Write Location!")
  50. msg = pynmea2.parse(data)
  51. return {"latitude": msg.lat,
  52. "longitude": msg.lon }
  53. except:
  54. print("loading")
  55. return {"latitude": 0,
  56. "longitude": 0}
  57.  
  58. def union():
  59. for ip in ip_addresses:
  60. try:
  61. #send_photo(ip, take_photo())
  62. gps_data = parse_data_gps(init_gps())
  63. sendGPSData(gps_data)
  64. take_photo(gps_data)
  65. except:
  66. print("tidak bisa")
  67.  
  68.  
  69. def sendGPSData(gpsData):
  70. host='localhost'
  71. port=8086
  72. USER='root'
  73. PASSWORD='djambancoedaliar'
  74. DBNAME='candangcoedaliar'
  75.  
  76. time = datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")
  77. metric = "coordinate"
  78. series = []
  79. hostname = "server-jamban"
  80. pointValues = {
  81. "time": time,
  82. "measurement": metric,
  83. 'fields': {
  84. 'altitute': gpsData.get('latitude'),
  85. 'longitude': gpsData.get('longitude'),
  86. },
  87. 'tags': {
  88. "hostname": hostname,
  89. },
  90. }
  91.  
  92. series.append(pointValues)
  93. print(series)
  94.  
  95. client = InfluxDBClient(host, port, USER, PASSWORD, DBNAME)
  96.  
  97. retention_policy = 'coeda-liar-persistent'
  98. client.create_retention_policy(retention_policy, '30d', 3, default=True)
  99.  
  100. client.write_points(series, retention_policy=retention_policy)
  101.  
  102.  
  103. while True:
  104. button1.when_pressed = union
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement