Ftp python error

Résolu/Fermé
astuces72 Messages postés 7723 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 22 avril 2024 - Modifié le 22 août 2018 à 13:10
astuces72 Messages postés 7723 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 22 avril 2024 - 23 août 2018 à 03:59
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

1 réponse

astuces72 Messages postés 7723 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 22 avril 2024 1 637
22 août 2018 à 13:56
Une histoire de tabulation devant les codes ajoutés....
0
astuces72 Messages postés 7723 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 22 avril 2024 1 637
23 août 2018 à 03:59
ça fonctionne pour le ftp, mais comme je voulais en plus remplir une bdd ovh en pithon, c'est mort, sur un serveur ovh mutualisé...
0