• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
python salvataggio con dati e monitoraggio

Monitoraggio e salvataggio dati con python
#31
Non sono esperto di python (ho sempre preferito il C) ma se il codice che hai inserito è quello che "gira" , vedo un errore di indentazione da "if" a seguire: "if" non deve essere allineato al "while", ma deve essere interno, così come "else".
Codice:
while True:
   myData = arduinoSerialData.readline()
   counterpos += 1
   counterneg += 1
   lun = len(myData)
   v = float(myData[0:5])
   c = float(myData[5:9])
   i = float(myData[9:lun])
   k = 0.001
   j = 0.1
   V = (float(v)*k)
   soc = (float(c)*j)
   I = (float(i)*k)
   if I>0:
      Ppos = V*I
   else:
      Pneg = V*I
   bmv702v = str(metern8) + '(' + str(V) + '*V)'
   bmv702s = str(metern9) + '(' + str(soc) + '*soc)'
   bmv702i = str(metern10) + '(' + str(I) + '*A)'
   energypos = str(metern11) + '(' + str(counterpos) + '*Wh)\n'
   ........
   ........

"v = float(myData[0:5])": la variabile v contiene già il valore numerico di tipo float, quindi "V = (float(v)*k)" non ha molto senso, prorio perchè v e k sono valori di tipo float e il risultato sarà del tipo float.
Quando apri un file lo devi poi chiudere:

fp = open(file1,'w')
fp.write(bmv702v)
fp = open(file2,'w')
fp.write(bmv702s)
fp = open(file3,'w')
fp.write(bmv702i)
fp = open(file4,'w')
fp.write(energypos)
fp.write(powerpos)
fp = open(file5,'w')
fp.write(energyneg)
fp.write(powerneg)
fp.close()

fp.close() chiude il file5 e non i precedenti che sono rimasti aperti.

P.S.
Per curiosità sto mandando in esecuzione il tuo codice assegnando a MyData la seguente stringa = '12345678910\n'
Non conosco cosa arduino restituisca al raspberry. Dalla costante K immagino che anche la corrente necessiti di 5-6 byte invce che 2 (previsto come valore 10, quindi 2 soli byte).
Risposta
#32
Ciao ippogrifo.
Il codice che ho scritto è un po' pasticciato e lo sto modificando mano a mano che trovo degli errori e/o un'idea diversa. Se tu non sei pratico di python io lo sono ancora meno. Sto cercando di imparare, anche dalle esperienze altrui. Arduino restituisce una stringa simile a quella che hai scritto tu, tipo:
5395110001548
e fino ad ora non ho ricevuto errori particolari se non al primo avvio del file.py, poi tutto funziona regolarmente, come puoi vedere dall'immagine allegata. Le prime cinque cifre sono la tensione, le successive quattro il soc (quantità di carica in %) e le rimanenti sono la corrente. Il file.py è ancora un cantiere aperto.


Allegati Anteprime
   
Risposta
#33
Si, avevo individuato la lunghezza e composizione (anche con segno negativo) della stringa inviata da arduino e modificato il codice per adattarlo alla simulazione con risultati validi.
Risposta
  


Vai al forum:


Navigazione: 2 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect