DHT22

Discussioni relative all'uso di sensori vari (temperatura, umidità, ....)
Avatar utente
amorospo
Messaggi: 61
Iscritto il: 20/01/2016, 15:44

DHT22

Messaggioda amorospo » 09/02/2016, 22:01

Ho installato uno di questi sensori seguendo la guida 2.20. Ho trovato un paio di errori da correggere e forse un terzo.
A pagina 54 allo script python sembra manchi l'ultima riga in grassetto (almeno confrontandolo con quelli nella cartella examples):


# 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 '{0}_1({1:0.1f}*C)'.format(id, temperature)
print '{0}_2({1:0.1f}*%)'.format(id, humidity)
else:
print 'ERROR'
sys.exit(1)


Alla fine di pagina 56 invece nell'editor del file /etc/rc.local mi pare manchi un & come di seguito in grassetto:

sudo /usr/bin/curl http://localhost/123solar/scripts/boot123s.php &
sudo sleep 6
sudo /usr/local/bin/dht22.sh 22 4 6 &
sudo /usr/bin/curl http://localhost/metern/scripts/bootmn.php &
exit 0


Infine il più subdolo di tutti che mi ha fatto impazzire nel capire cosa non funzionasse. All'inizio di pagina 55 nell'editor del file /usr/local/bin/dht22.sh i simboli "meno" prima del parametro "d" sono sbagliati. Non so come spiegarmi, ma quel simbolo che assomiglia ad un meno MA non è un meno! Infatti è leggermente diverso da quello prima della "f" nelle stesse righe.


#!/bin/sh
DATA="$(ADHT_metern.py $1 $2 $3)"
#echo $DATA
if [ x"$DATA" != x ] && [ "$DATA" != "ERROR" ]; then
echo $DATA | cut -f 1 –d\ > /run/shm/metern$3.txt
echo $DATA | cut -f 2 –d\ >> /run/shm/metern$3.txt
fi


Avatar utente
Flane
Messaggi: 2480
Iscritto il: 16/01/2016, 15:02

Re: DHT22

Messaggioda Flane » 10/02/2016, 8:49

Grazie per la segnalazione.

Mi deve essere sfuggito qualcosa nel copia incolla :oops:

Per il trattino, credo sia un problema di diversa formattazione dei caratteri speciali.
Vedo di inserire le correzioni nella nuova guida che stò cercando di pubblicare sulla wiki .... tempo permettendo ... ;)

dottorniù
Messaggi: 36
Iscritto il: 16/03/2016, 23:49

Re: DHT22

Messaggioda dottorniù » 15/09/2016, 16:57

Grazie mille amorospo! questo thread ieri sera è stata una manna dal cielo per far funzionare il sensore.... per semplificare ancor di più le cose riporto di seguito lo script python al completo che nella guida è diviso in due e durante il copia ed incolla si possono avere problemi di spaziature e poi alla riga 31

print 'example: sudo ./Adafruit_DHT.py 2302 4 8 - Read from an AM2302 connected to GPIO #4 and metern id 8'


l'otto del metern id è a capo mentre per funzionare deve stare sulla stessa riga.

Codice: Seleziona tutto

#!/usr/bin/python
# Copyright (c) 2014 Adafruit Industries
# Author: Tony DiCola
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
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) == 4 and sys.argv[1] in sensor_args:
 sensor = sensor_args[sys.argv[1]]
 pin = sys.argv[2]
 id = sys.argv[3]
else:
 print 'usage: sudo ./Adafruit_DHT.py [11|22|2302] GPIOpin# metern_id'
 print 'example: sudo ./Adafruit_DHT.py 2302 4 8 - Read from an AM2302 connected to GPIO #4 and metern id 8'
 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)
# 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 '{0}_1({1:0.1f}*C)'.format(id, temperature)
 print '{0}_2({1:0.1f}*%)'.format(id, humidity)
else:
 print 'ERROR'
 sys.exit(1)

marchetto91
Messaggi: 67
Iscritto il: 21/01/2019, 21:54

Re: DHT22

Messaggioda marchetto91 » 18/03/2019, 23:16

Immagine


non capisco perchè mi da questi errori
ho seguito la guida e copiato il file pyton sopra

grazie a chi sa darmi una mano

marchetto91
Messaggi: 67
Iscritto il: 21/01/2019, 21:54

Re: DHT22

Messaggioda marchetto91 » 18/03/2019, 23:57

aggiornamento...sono riuscto a far funzionare qualcosa anche se non so quanto giusti siano i dati

in metern n però non mi appaiono le letture
Immagine



Immagine

Immagine

Avatar utente
Flane
Messaggi: 2480
Iscritto il: 16/01/2016, 15:02

Re: DHT22

Messaggioda Flane » 19/03/2019, 10:16

Nelle ultime versioni di Metern (dalla 0.8 credo) non si può più mettere i comandi cat direttamente in Metern.

Si deve passare per uno script esterno come reqsdm.php.

marchetto91
Messaggi: 67
Iscritto il: 21/01/2019, 21:54

Re: DHT22

Messaggioda marchetto91 » 19/03/2019, 12:10

Praticamente come posso fare? Grazie della disponibilità

Avatar utente
Flane
Messaggi: 2480
Iscritto il: 16/01/2016, 15:02

Re: DHT22

Messaggioda Flane » 19/03/2019, 17:41

Editi il file /var/www/comapps/reqsdm.php ed aggiungi le seguenti righe prima della riga con } else {

Codice: Seleziona tutto

} elseif ($argv[1] == 'temp') {
         $outstr =  exec('cat /run/shm/metern6.txt | grep C');
} elseif ($argv[1] == 'umi') {
         $outstr =  exec('cat /run/shm/metern6.txt | grep %');


e poi come comandi di metern sia in live che in main inserisci:
per la temperatura

Codice: Seleziona tutto

reqsdm temp

per l'umidità

Codice: Seleziona tutto

reqsdm umi



PS: ma se il misuratore su MeterN è il 3 perchè tu gli assegni il numero 6 :? :shock:
Nel mio esempio ho messo il 6 perchè la configurazione base prevede di avere già occupati i primi 5 misuratori, ma nel tuo caso se hai il 3 assegnali il 3 nel comando che richiama lo script in phyton

Codice: Seleziona tutto

sudo ADHT_metern.py 22 4 3

e poi il comando sarà

Codice: Seleziona tutto

cat /run/shm/metern3.txt | grep C

:roll:

marchetto91
Messaggi: 67
Iscritto il: 21/01/2019, 21:54

Re: DHT22

Messaggioda marchetto91 » 19/03/2019, 22:15

sto provando ad editare il file con /var/www/comapps/reqsdm.php

ma mi da abordig no valid argumnt givin
cosa sbaglio?

marchetto91
Messaggi: 67
Iscritto il: 21/01/2019, 21:54

Re: DHT22

Messaggioda marchetto91 » 19/03/2019, 22:53

Immagine

Immagine

Immagine

ho provato a fare come da tue indicazioni
in metern ancora niente
non capisco perchè cn dht 11 ho dei valori corretti e cn dht22 cosi sballati


Torna a “Meters hardware”

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti