Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from picamera import PiCamera
- from time import sleep
- from datetime import datetime
- from gpiozero import Button
- from paramiko import SSHClient, AutoAddPolicy
- from scp import SCPClient
- import serial
- import string
- import pynmea2
- import RPi.GPIO as gpio
- import influxdb
- camera = PiCamera()
- button1 = Button(17)
- ip_addresses =['172.27.0.3']
- def take_photo(gps_data):
- global filename
- now = datetime.now()
- filename = "{0:%S}-{0:%M}-{0:%H}-{0:%d}-{0:%m}-{0:%Y}|".format(now)
- filename = filename + "LON:" + str(gps_data.get('longitude')) + "-LAT:" + str(gps_data.get('latitude')) +".jpg"
- camera.start_preview()
- sleep(1)
- camera.capture('/home/pi/Desktop/camera/{0}'.format(filename))
- camera.stop_preview()
- return filename
- def send_photo(host, filename):
- ssh = SSHClient()
- ssh.load_system_host_keys()
- ssh.set_missing_host_key_policy(AutoAddPolicy())
- ssh.connect(hostname=host, username='pi', password='raspberry')
- with SCPClient(ssh.get_transport()) as scp:
- scp.put('/home/pi/Desktop/camera/'+filename,
- '/home/pi')
- def init_gps():
- port="/dev/ttyAMA0"
- ser = serial.Serial(port, baudrate = 9600, timeout = 5)
- return ser
- def parse_data_gps(serial):
- try:
- while 1:
- data = serial.readline().decode('utf-8')
- print(data)
- if data[0:6] == '$GPGGA':
- print("Write Location!")
- msg = pynmea2.parse(data)
- return {"latitude": msg.lat,
- "longitude": msg.lon }
- except:
- print("loading")
- return {"latitude": 0,
- "longitude": 0}
- def union():
- for ip in ip_addresses:
- try:
- #send_photo(ip, take_photo())
- gps_data = parse_data_gps(init_gps())
- sendGPSData(gps_data)
- take_photo(gps_data)
- except:
- print("tidak bisa")
- def sendGPSData(gpsData):
- host='localhost'
- port=8086
- USER='root'
- PASSWORD='djambancoedaliar'
- DBNAME='candangcoedaliar'
- time = datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")
- metric = "coordinate"
- series = []
- hostname = "server-jamban"
- pointValues = {
- "time": time,
- "measurement": metric,
- 'fields': {
- 'altitute': gpsData.get('latitude'),
- 'longitude': gpsData.get('longitude'),
- },
- 'tags': {
- "hostname": hostname,
- },
- }
- series.append(pointValues)
- print(series)
- client = InfluxDBClient(host, port, USER, PASSWORD, DBNAME)
- retention_policy = 'coeda-liar-persistent'
- client.create_retention_policy(retention_policy, '30d', 3, default=True)
- client.write_points(series, retention_policy=retention_policy)
- while True:
- button1.when_pressed = union
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement