Sì funziona anche l'ultima versione dello script.py, grazie
Direi che per quanto riguarda la temperatura del sensore DS18B20 potrebbe andare bene anche se se si lancia da terminale non fornisce un valore singolo ma un valore della temperatura ogni tot secondi.
1) sapreste dirmi che valore dovrei inserire in while (__) dello script per far apparire il valore una solo volta?
2) sono passato al tentativo di lanciare il valore del sensore DHT22 della temperatura e dell'umidità.
Ovviamente non ci sono riuscito e avvrei bisogno anche qui del vostro aiuto.
il sensore DHT22 funziona con uno script di python che si deve lanciare da terminale indicando dopo il nome del file il modello del sensore DHT e il pin del GPIO relativo ai dati. Ad esempio se il file python si chiama scriptDHT.py nel terminale bisogna scrivere:
Codice:
Sudo python /path/scriptDHT.py 22 26
E restituisce a video il valori della temperatura e dell'umidità in questo modo
Temperature 19.8 Humidity 57%
Sono riuscito al momento a modificare lo script in modo tale che restituisca solo la temperatura in modo da inviarla su freeboard separatamente dall'umidità.
Lo script modificato infatti restituisce nel terminale la temperatura.
Ho incollato nello script il solito
Codice:
import dweepy
dweepy.dweet_for('NomeLungoCasuale', {'TemperaturaAria': ('Temp={0:0.1f}%'.format(temperature))})
il dato viene inviato su freeboard ma come testo e non come valore per cui sull'indicatore appare invece del valore "NaN".
Dove è l'errore?
Riporto di seguito lo script
Codice:
import sys
import Adafruit_DHT
# Parse command line parameters.
sensor_args = { '11': Adafruit_DHT.DHT11,
'22': Adafruit_DHT.DHT22,
'2302': Adafruit_DHT.AM2302 }
if len(sys.argv) == 3 and sys.argv[1] in sensor_args:
sensor = sensor_args[sys.argv[1]]
pin = sys.argv[2]
else:
print('usage: sudo ./Adafruit_DHT.py [11|22|2302] GPIOpin#')
print('example: sudo ./Adafruit_DHT.py 2302 4 - Read from an AM2302 connected to GPIO #4')
sys.exit(1)
# Try to grab a sensor reading. Use the read_retry method which will retry up
# to 15 times to get a sensor reading (waiting 2 seconds between each retry).
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
# Un-comment the line below to convert the temperature to Fahrenheit.
# temperature = temperature * 9/5.0 + 32
# Note that sometimes you won't get a reading and
# the results will be null (because Linux can't
# guarantee the timing of calls to read the sensor).
# If this happens try again!
if humidity is not None and temperature is not None:
#print('Temp={0:0.1f}* Humidity={1:0.1f}%'.format(temperature, humidity))
print('Temp={0:0.1f}%'.format(temperature))
import dweepy
dweepy.dweet_for('NomeLungoCasuale', {'TemperaturaAria': ('Temp={0:0.1f}%'.format(temperature))})
else:
print('Failed to get reading. Try again!')
sys.exit(1)
Una considerazione generale su freeboard. Probabilmente è abbastanza semplice, una volta capito il meccanismo, però almeno la versione gratuita permette delle rappresentazioni dei dati molto scarne.
https://freeboard.io/board/jxGjiD
grazie
Saluti
LaPa