Profilo di andrea d'alessandro

Nome andrea d'alessandro
Indirizzo email andrea.dalessandro@ingv.it
AvatarAvatar utenti
Messaggi5
  • Re: creare un file ogni 24 ore
    Forum >> Programmazione Python >> Files e Directory
    Ti ringrazio per la risposta....ma credo che il tuo esempio non faccia quello che sto cercando di fare.....
    e credo che tu non abbia bisogno di importare pikle per scrivere o leggere un file.

    Io devo :

    1 prendere delle stringhe che in continuazione escono dalla seriale




    2 scriverle in un file con il nome della data e ora Dell inizio del file.




    3 alle 23:59:59 chiudere il file.




    4 punto 1







    5 punto 2




    6punto 3 etc etc
  • creare un file ogni 24 ore
    Forum >> Programmazione Python >> Files e Directory
    Salve a Tutti,
    ho fatto un piccolo script che gira su raspberry collegato alla seriale di un gps.

    apre la seriale e mi scrive tutto cio che riceve in un file che viene chiamato (data + ora 'stazione1.txt')

    funziona bene solo che vorrei fare in modo da far chiudere il file alle 23.59.59 e farlo riaprire con la data del gg seguente.
    in poche parole vorrei avere dei files giornalieri invece di un unico grande files.......mi date qualche indizio please?????
    ecco il mio codice:
    qualsiasi consiglio e bene accetto ;) ;)





    import serial
    import time
    import datetime



    timestr = time.strftime("%Y%m%d-%H%M%S") #mese giorno anno ore minuti
    indirizzo = '/dev/ttyUSB0' #indirizzo dove andare a leggere i dati
    baud = 9600 #baud rate per la porta seriale
    file_name = 'stazione1.txt' #nome del file
    moode = 'a' #append



    streaming = serial.Serial(indirizzo,baud)


    timestr = time.strftime("%Y%m%d-%H%M%S")


    try:
    streaming.isOpen()

    print ('la porta : ',indirizzo +' è aperta')

    except:

    ('Errore')

    exit()


    if (streaming.isOpen()):

    contatore=0

    while True :

    linea= str(streaming.readline())

    contatore += 1

    contatoreSTR=str(contatore) #devo convertire in stringa altrimenti non scrive sul file

    linea2=(contatoreSTR +linea)

    fo = open(timestr+file_name,fmode)

    fo.write(linea2)






    else:

    print(indirizzo +' non si apre')





  • Re: Estrapolare dati da una stringa
    Forum >> Principianti
    Salve a tutti ,
    dopo la pausa estiva ho rimesso mano al programmino ho dovuto cambiare un po di cose poiche' mi sono reso conto che scrivere su un file e poi effettuare operazioni sui dati scritti nel file era parecchio macchinoso cosi ho modificato il programma in questo modo:
    1 ogni tot secondi invia un request richiesta()

    2 prende i valori ricevuti da json file e li scompone

    3 prende gli ultime tre valori della media del vento fa una lista e calcola la media crealista()

    4 se la media calcolata e' >= a 12 invia una mail alert()

    Funziona tutto a meraviglia solo che se la media del vento resta >= 12 invia milioni di mail

    il programma dovrebbe inviare una mail quando la media e >=12 e una sola mail quando la media riscende sotto quel valore.

    Chi mi aiuta?

    inoltre leggevo che con linux e possibile inviare messaggi con whats up qualcuno si e' mai cimentato?

    scusate se il programma e scritto in forma poco ortodossa prometto a me stesso che appena lo finisco comincio a studiare :py: dalla 1 pagina del tutorial ;)

    import time
    import requests
    import datetime
    import string
    import json 
    import smtplib
    
    
    
    
    
    def inviomail():
        user = 'miamail@miamail.it'
        pwd = 'miapswd'
        FROM = 'andrea dalessandro'
        TO='altramail@gmail.com'
        SUBJECT= 'ABBISM 2.0 DONPABLO_WINDALERT'
        TEXT= 'Ci sono',media,'nodi direzione',dire
     # messaggio mail
        message = """From: %s\nTo: %s\nSubject: %s\n\n%s
        """ % (FROM, ", ".join(TO), SUBJECT, TEXT)
        try:
            server = smtplib.SMTP("smtp.gmail.com", 587)
            server.ehlo()
            server.starttls()
            server.login(user,pwd)
            server.sendmail(FROM, TO, message)
            server.close()
            print ('mail inviata')
        except:
            print('invio mail fallito')
    
    def richiesta():
        r=requests.get('https://www.windguru.cz/int/wgsapi.php?uid=0080A3A8A416&password=omessa&q=station_data_current')
        rvalue= r.text
        return rvalue
    
    def crealista():
        media=0
        if len(lista)==0:
           print('1')
           lista.append(w)
           print (lista)                                                                                              
                 
        elif len(lista)==1:
            lista.append(w)
            print('2')
            print(lista)
            
        elif len(lista)==2:
            lista.append (w)
            print('3')
            print(lista)
        elif len(lista)==3:
            del lista0
            lista.append(w)
            print('4')
            print (lista)
            primov=lista0
            secondov=lista1
            terzov=lista2
            media=(primov+secondov+terzov)/3
    
        return media        
     
    def alert():
            if media >= 3:
            inviomail()
            print('Ci sono',media,'nodi')
            print('direzione',dire)
                  
        else:
            print('nulla')
            print(dire)
            print (media)
    #inizio ciclo
    
    t = input('seleziona il tempo di acquisizione')
    tempo = float (t)
    lista=[]
    
    
    while True:
            
          outvalue = richiesta()
          #chiama la funzione richiesta()
          
          #scompone il file json ricevuto    
          data = json.loads(outvalue)
          wind_avg = data['wind_avg']
          wind_max = data['wind_max']
          wind_min = data['wind_min']
          wind_direction = data['wind_direction']
          w=(wind_avg)
    
          #DIREZIONE VENTO =dire
    
          if (wind_direction > 348.75) and (wind_direction <=11.75):
             dire='N',wind_direction,'TRAMONTANA'
          elif (wind_direction > 11.75) and (wind_direction <=33.75):
            dire='NNE',wind_direction,'TRAMONTANA-GRECO'
          elif (wind_direction >33.75) and (wind_direction <=56.50):
            dire='NE',wind_direction,'GRECO'
          elif (wind_direction >56,50) and (wind_direction <=79):
            dire='ENE',wind_direction,'GRECO-LEVANTE'
          elif (wind_direction >79) and (wind_direction <=101.50):
            dire='E',wind_direction,'LEVANTE'
          elif (wind_direction >101.50) and (wind_direction <= 124):
            dire='ESE',wind_direction,'LEVANTE-SCIROCCO'
          elif (wind_direction >124) and(wind_direction  <=146.50):
             dire='SE',wind_direction,'SCIROCCO'
          elif (wind_direction >146.50) and(wind_direction  <=169):
            dire='SSE',wind_direction,'SCIROCCO-MEZZOGGIORNO'
          elif (wind_direction>169) and(wind_direction  <=191.50):
            dire='S',wind_direction,'MEZZOGGIORNO'
          elif (wind_direction>191.50) and (wind_direction <=214):
            dire='SSW',wind_direction,'MEZZOGGIORNO-LIBECCIO'
          elif (wind_direction>214) and(wind_direction <= 236.50):
            dire='SW',wind_direction,'LIBECCIO'
          elif (wind_direction>236.50) and(wind_direction <= 259):
            dire='WSW',wind_direction,'LIBECCIO-PONENTE'
          elif (wind_direction>259) and (wind_direction <= 281.50):
            dire= 'W',wind_direction,'PONENTE'
          elif (wind_direction >281.50) and(wind_direction <= 304):
            dire='WNW',wind_direction,'PONENTE-MAESTRALE'
          elif (wind_direction > 304) and(wind_direction <=326.50):
            dire='NW',wind_direction,'MAESTRALE'
          elif (wind_direction >326.50) and(wind_direction <=348.75):
            dire='NNW',wind_direction,'MAESTRALE-TRAMONTANA'
    
           
          media=crealista()
          alert()
          pausa()
          time.sleep(tempo)    
        
    
    


    --- Ultima modifica di andrea d'alessandro in data 2016-08-29 13:48:52 ---

    --- Ultima modifica di andrea d'alessandro in data 2016-08-29 13:54:43 ---

    --- Ultima modifica di andrea d'alessandro in data 2016-08-29 13:56:00 ---

    --- Ultima modifica di andrea d'alessandro in data 2016-08-29 13:58:46 ---

    --- Ultima modifica di andrea d'alessandro in data 2016-08-29 14:02:54 ---
  • Re: Estrapolare dati da una stringa
    Forum >> Principianti
    Ciao Claudio ,
    in realta erano diverse ore che "surfavo" nel web in cerca di qualche soluzione, ho letto parecchi post sul forum per vedere se trovavo qualcosa che faceva al caso mio e mi sono imbattuto in parecchie "romanzine" fatte a chi postava il codice in maniera disordinata.

    Grazie per la tua risposta mi mettero' subito al lavoro per cercare di andare avanti.......

    anche se la curiosita' di sapere come risolvere il problema senza usare json e' davvero forte..........
    magari se trovi un esempio ..........
    Caio
  • Estrapolare dati da una stringa
    Forum >> Principianti
    salve a tutti
    sto provando a fare un programmino che interroga una stazione meteo e scrive le risposte su di un file.



    ########################
    #########################################################################
    import time
    import requests
    import datetime
    import string
    
    
    def richiesta():
        r=requests.get('https://www.windguru.cz/int/wgsapi.php?uid=0080A3A8A416&password=OMESSA&q=station_data_current')
        rvalue= r.text
        #print(r.text)
        return rvalue
    
    
    t = input('seleziona il tempo di acquisizione')
    i = float (t)
    while True:
        
          savefile = open ('meteolog.txt','a')
          #apre un file meteilog.txt in modalita append
    
          
          now = datetime.datetime.now()
          #prende il tempo e lo immagazzina nella variabile now
          
    
          
          timestamp = now.strftime ('%Y/%m/%d/ %H:%M')
          #trasforma la variabile now in anno mese giorno ore e minuti
          
          
          outvalue = richiesta()
          #chiama la funzione richiesta()
                              
              
          outstring = outvalue
         
          print(outvalue)
               
          
          savefile.write(outstring)
          #scrive nel file creato outsring
    
          
          savefile.write('\n')
          #va a capo
    
          
          savefile.close()
          #chiude il file
    
          
          time.sleep(i)
          #aspetta il tempo indicato nella variabile i
     
    
    Il programma finqui funziona a meraviglia e scrive un file di questo tipo :

    {"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}
    {"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}
    {"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}
    {"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}
    {"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}
    {"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}
    {"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}
    {"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}
    {"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}




    adesso pero' dovrei prendere questi valori trasformarli in (int) o (float) ed inserirli in delle variabili per cominciare a fare dei calcoli........
    mi sono bloccato.......
    vi prego datemi uno spunto.

    Scusatemi se ho sbagliato sezione
    Buonaserata
    Andrea