(30/04/2019, 14:17)Zzed Ha scritto: La guida è sicuramente vecchiotta
https://www.raspberryitaly.com/datalogge...pberry-pi/
Ma dicci dove trovi difficoltà e vediamo di aggiornarla insieme, se serve
Inviato dal mio A0001 utilizzando Tapatalk
Grazie!!
nel frattempo sono riuscito a combinare qualcosina. Ho cercato gli errori in google ed ho fatto qualche modifica allo script cambiando il nome di alcune librerie (ad esempio 'httplib' diventa 'http.client') ed aggiungendo qualche parentesi (ad esempio 'print "non trovo il file"' diventa 'print ("non trovo il file")') ecc.
In questo modo ora riesco a vedere le temperature di tutti e 7 i raspi in cluster in una sola pagina...
mi restano delle domande molto banali.. dovute alla mia scarsa conoscenza di linux... se non vi disturba le raccolgo e ve le scrivo....
qui come ho modificato il programma:
Codice:
#!/usr/bin/env python
__author__ = 'Zzed'
# Programma Datalogger di prova, con invio dati online su un canale Thingspeak
# per utilizzarlo, occorre sottoscrivere un account su Thingspeak.com, impostare un canale
# e prendere la KEY del canale https://thingspeak.com/docs/tutorials/
# Poi, incollare la propria KEY di canale nel codice sotto, come valore della variabile "key"
# se non si connette, salva i dati in locale, e prova a uploadarli non appena possibile
def main():
pass
import http.client,urllib,datetime,random,os # importo le librerie
from time import sleep
#configurazione:
intervallo = 60 # tempo di attesa in secondi tra un invio e l'altro
#definizione funzioni:
def thermometer():
# Calcoliamo la temperatura della CPU del RaspberryPi in gradi centigradi
temp = int(open('/sys/class/thermal/thermal_zone0/temp').read()) / 1e3 # prende temperatura CPU
#temp = str(random.randrange(40,51)) #valore random per test su pc
return temp
def inviothinkspeak(valore):
"""invia il valore a Thingspeak, se impossibile lo salva in ram"""
key = 'key' # <-- key del canale Thingspeak da aggiornare
dest = 'dati-temporanei.csv' # <- percorso del file dati temporanei locali
params = urllib.parse.urlencode ({'field1': valore, 'key':key })
headers = {"Content-typZZe": "application/x-www-form-urlencoded","Accept": "text/plain"}
conn = http.client.HTTPConnection("api.thingspeak.com:80")
try:
f = open(dest,'r')
righe = [x for x in f.readlines()]
f.close()
os.remove(dest)
except (IOError, OSError):
# non esiste file temporaneo
pass
try:
conn.request("POST", "/update", params, headers)
response = conn.getresponse()
conn.close()
except:
#connessione fallita!: implementare memorizzazione locale in ramdisk
t = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
vst = str(valore)
# Scrive un file.
out_file = open(dest,'a') # apre file.csv Append
out_file.write(t + ' CEST,'+ vst + '\n' ) # scrive i dati e va a capo
out_file.close() # chiude il file
def importcsvthingspeak(file):
try:
f = open(file,'r')
righe = [x for x in f.readlines()]
f.close()
for x in righe:
print (x)
except IOError:
print ("non trovo il file")
# programma vero e proprio, loop con attesa
if __name__ == "__main__":
while True:
misura = thermometer()
# print misura # TEST
inviothinkspeak(misura)
sleep(intervallo)