hello,
J'ai une urgence pour ce week-end, un anniversaire 70 ans
Et on me demande de mettre en place un photomaton...Merci c'est sympa les gars
Alors j'ai quoi ?
Un raspberry et sa camera, c'est déjà bien
Une recherche sur le net pour un truc simple et je tombe sur ça:
http://fablab-chalon.fr/tuto-realiser-photomaton/
un bouton sur le Pi et ça marche, une photo est enregistrée.
Le script en python:
http://fablab-chalon.fr/tuto-realiser-photomaton/
Je voulais prendre cette photo et une fois prise l'envoyer en ftp, mais moi, le python, je connais pas.
Je cherche un script sur le net, et je trouve ça:
https://openclassrooms.com/forum/sujet/python-envoi-ftp-98860
Bien sur, ça ne fonctionne pas avec une erreur:
host = "ftp.cluster.hosting.ovh.net"
^
IndentationError: unexpected unindent
le script python avec ma modif, j'ai mis entre des ------ ce que j'ai rajouté: Ligne 10 et à partir de la ligne 93
La connexion au ftp fonctionne, j'ai testé dans le navigateur web
#!/usr/bin/env python2.7
# -*- coding: utf-8 -*
import RPi.GPIO as GPIO
import time
from datetime import datetime
from PIL import Image
import pygame
from pygame.locals import *
import os
------import ftplib as ftp------
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
pygame.init()
screen = pygame.display.set_mode((0,0),pygame.FULLSCREEN)
width, height = screen.get_size()
def takepic(imageName): #prend une photo (note: il faut selectionner la ligne qui correspond à votre installation en enlevant le premier # )
# command = "sudo raspistill -t 1000 -w 960 -h 720 -o "+ imageName +" -q 80" #prend une photo
# command = "sudo raspistill -t 1000 -w 960 -h 720 -o "+ imageName +" -rot 90 -q 80" #prend une photo et la tourne de 90°
command = "sudo raspistill -t 1000 -w 960 -h 720 -o "+ imageName +" -rot 180 -q 80" #prend une photo et la tourne de 180°
# command = "sudo raspistill -t 1000 -w 960 -h 720 -o "+ imageName +" -rot 270 -q 80" #prend une photo et la tourne de 270°
os.system(command)
def loadpic(imageName): # affiche imagename
print("loading image: " + imageName)
background = pygame.image.load(imageName);
background.convert_alpha()
background = pygame.transform.scale(background,(width,height))
screen.blit(background,(0,0),(0,0,width,height))
pygame.display.flip()
def minuterie():
writemessage(" 3")
time.sleep(1)
writemessage(" 2")
time.sleep(1)
writemessage(" 1")
time.sleep(1)
writemessage("souriez")
def writemessage(message): # pour pouvoir afficher des messages sur un font noir
screen.fill(pygame.Color(0,0,0))
font = pygame.font.SysFont("verdana", 250, bold=1)
textsurface = font.render(message, 1, pygame.Color(255,255,255))
screen.blit(textsurface,(35,40))
pygame.display.update()
def writemessagetransparent(message): # pour pouvoir afficher des messages en conservant le font
font = pygame.font.SysFont("verdana", 50, bold=1)
textsurface = font.render(message, 1, pygame.Color(255,255,255))
screen.blit(textsurface,(35,40))
pygame.display.update()
if (os.path.isdir("/home/pi/Desktop/photos") == False): # si le dossier pour stocker les photos n'existe pas
os.mkdir("/home/pi/Desktop/photos") # alors on crée le dossier (sur le bureau)
os.chmod("/home/pi/Desktop/photos",0o777) # et on change les droits pour pouvoir effacer des photos
while True : #boucle jusqu'a interruption
try:
print "\n attente boucle"
#on attend que le bouton soit pressé
GPIO.wait_for_edge(18, GPIO.FALLING)
# on a appuyé sur le bouton...
#on lance le decompte
minuterie()
#on genere le nom de la photo avec heure_min_sec
date_today = datetime.now()
nom_image = date_today.strftime('%d_%m_%H_%M_%S')
#on prend la photo
#chemin_photo = '/home/pi/Desktop/photos/image.jpeg'
#takepic(chemin_photo) #on prend la photo
#on affiche la photo
# loadpic(chemin_photo)
---------host = "ftp.cluster.hosting.ovh.net"
user = "xxxxxxxx"
password = "xxxxxxxx"
connect = (ftp.FTP(host, user, password))
# Connexion
print "Connexion a " +host
etat = connect.getwelcome()
print "Etat : ",etat
raw_input("------------")
# Ouverture Fichier
fichier = "/home/pi/Desktop/photos/image.jpg"
file = open(fichier,'rb')
# Envoi Fichier
connect.storbinary('STOR '+'image.jpg', file)
connect.retrlines('LIST')
raw_input("eof")-------
#on affiche un message
writemessagetransparent("et voila...")
if (GPIO.input(18) == 0): #si le bouton est encore enfoncé (sont etat sera 0)
print("bouton appuye, je dois sortir")
break # alors on sort du while
except KeyboardInterrupt:
print 'sortie du programme!'
raise
GPIO.cleanup() # reinitialisation GPIO lors d'une sortie normale
Ce qui me gène le plus c'est le temps qu'il me reste, je pars demain après midi dans le Midi :)
Donc, une grosse aide serait la bienvenue
Merci
Afficher la suite
23 août 2018 à 03:59