Just nu i M3-nätverket
Gå till innehåll

Mjukvara för att se temperatur och fukt?


Mikael63
 Share

Rekommendera Poster

Har beställt en temp- och fuktsensor, DHT22/AM2302.

AM2302 är en "wired" version av DHT22 och innehåller ett motstånd som annars skulle behövas.

Jag ska ansluta den till min Raspberry Pi och tanken är sedan att jag ska ha ett program, ett fönster, som visar aktuella värden.

Inget mer. Inget styr, inga larm.

När jag själv söker (med DuckDuckGo) får jag i huvudsak träffar om hur man ska ansluta denna och i några gamla artiklar info att man behöver installera något paket med Python och att programmeringen utförs i Python.

Jag är inte intresserad av någon programmering. Jag vill bara kunna se, väldigt enkelt, aktuella värden. Det skulle t.o.m. räcka om jag kan se detta i ett terminalfönster.

Jag kör med Raspberry Pi OS och jag ser att jag (troligen) behöver "enabla" Remote GPIO men sen då?

 

Ja denna tråd kanske borde ligga i Linux-avdelningen men mjukvaror för detta finns kanske för andra miljöer?

Det verkar vara vanligt att man använder denna sensor till Arduino.

 

Frågan är alltså hur jag med minsta möjliga handpåläggning kan se aktuella värden?

 

image.png.f400d61e7be8ca763b6b06c675f140c3.png

 

 

Länk till kommentar
Dela på andra webbplatser

Det du söker är en så kallad "turn key" lösning. Dvs, du vrider om nyckeln och det kommer igång. Osäker på om det finns för specifikt detta ändamål.

 

Men detta verkar komma ganska nära Instructables 

 

Om du tittar på Steg 4 så är det inte mycket annorlunda jämfört med när man installerar program som inte kommer via paket-reopsitory, skillnaden är väl främst att man hämtar med git och kör configure, make osv via python.

 

Steg 5 är ditt program, du sparar det som en fil och kör filen, då bör du få det du är ute efter i ett kommandofönster.

 

Största skillnaden är att du måste spara programmet en extra gång efter installation. Så därav att jag tycker att denna lösning är väldigt nära en turn key.

  • Tack 1
Länk till kommentar
Dela på andra webbplatser

Inga felmeddelanden vid installation men får detta om jag kör koden:

 

image.png.0d10b5e334616b56a3fe6702eff5ece6.png

 

Jag har lagt ner nerladdade filen i mappen examples där det finns andra sådana filer.

 

Kör jag kommandot lsmod listas inget med ada

Om jag kör modprobe får jag

modprobe: FATAL: Module Adafruit_DHT not found in directory /lib/modules/5.10.52-v7l+
 

 

Länk till kommentar
Dela på andra webbplatser

Vilken version av python använder du? Python 2.7och 3 är inte helt kompatibla. Om du använder den ena, prova den andra. 

Länk till kommentar
Dela på andra webbplatser

sudo apt-get install build-essential python-dev
Läser paketlistor… Färdig
Bygger beroendeträd       
Läser tillståndsinformation… Färdig
build-essential is already the newest version (12.6).
python-dev is already the newest version (2.7.16-1).
0 att uppgradera, 0 att nyinstallera, 0 att ta bort och 0 att inte uppgradera.

 

sudo python setup.py install
running install
running bdist_egg
running egg_info
writing Adafruit_DHT.egg-info/PKG-INFO
writing top-level names to Adafruit_DHT.egg-info/top_level.txt
writing dependency_links to Adafruit_DHT.egg-info/dependency_links.txt
reading manifest file 'Adafruit_DHT.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'Adafruit_DHT.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-armv7l/egg
running install_lib
running build_py
running build_ext
creating build/bdist.linux-armv7l/egg
creating build/bdist.linux-armv7l/egg/Adafruit_DHT
copying build/lib.linux-armv7l-2.7/Adafruit_DHT/Raspberry_Pi_2.py -> build/bdist.linux-armv7l/egg/Adafruit_DHT
copying build/lib.linux-armv7l-2.7/Adafruit_DHT/__init__.py -> build/bdist.linux-armv7l/egg/Adafruit_DHT
copying build/lib.linux-armv7l-2.7/Adafruit_DHT/Test.py -> build/bdist.linux-armv7l/egg/Adafruit_DHT
copying build/lib.linux-armv7l-2.7/Adafruit_DHT/platform_detect.py -> build/bdist.linux-armv7l/egg/Adafruit_DHT
copying build/lib.linux-armv7l-2.7/Adafruit_DHT/Beaglebone_Black_Driver.so -> build/bdist.linux-armv7l/egg/Adafruit_DHT
copying build/lib.linux-armv7l-2.7/Adafruit_DHT/common.py -> build/bdist.linux-armv7l/egg/Adafruit_DHT
copying build/lib.linux-armv7l-2.7/Adafruit_DHT/Raspberry_Pi.py -> build/bdist.linux-armv7l/egg/Adafruit_DHT
copying build/lib.linux-armv7l-2.7/Adafruit_DHT/Beaglebone_Black.py -> build/bdist.linux-armv7l/egg/Adafruit_DHT
byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/Raspberry_Pi_2.py to Raspberry_Pi_2.pyc
byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/Test.py to Test.pyc
byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/platform_detect.py to platform_detect.pyc
byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/common.py to common.pyc
byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/Raspberry_Pi.py to Raspberry_Pi.pyc
byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/Beaglebone_Black.py to Beaglebone_Black.pyc
creating stub loader for Adafruit_DHT/Beaglebone_Black_Driver.so
byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/Beaglebone_Black_Driver.py to Beaglebone_Black_Driver.pyc
creating build/bdist.linux-armv7l/egg/EGG-INFO
copying Adafruit_DHT.egg-info/PKG-INFO -> build/bdist.linux-armv7l/egg/EGG-INFO
copying Adafruit_DHT.egg-info/SOURCES.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
copying Adafruit_DHT.egg-info/dependency_links.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
copying Adafruit_DHT.egg-info/top_level.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
writing build/bdist.linux-armv7l/egg/EGG-INFO/native_libs.txt
zip_safe flag not set; analyzing archive contents...
creating 'dist/Adafruit_DHT-1.4.0-py2.7-linux-armv7l.egg' and adding 'build/bdist.linux-armv7l/egg' to it
removing 'build/bdist.linux-armv7l/egg' (and everything under it)
Processing Adafruit_DHT-1.4.0-py2.7-linux-armv7l.egg
Removing /usr/local/lib/python2.7/dist-packages/Adafruit_DHT-1.4.0-py2.7-linux-armv7l.egg
Copying Adafruit_DHT-1.4.0-py2.7-linux-armv7l.egg to /usr/local/lib/python2.7/dist-packages
Adafruit-DHT 1.4.0 is already the active version in easy-install.pth

Installed /usr/local/lib/python2.7/dist-packages/Adafruit_DHT-1.4.0-py2.7-linux-armv7l.egg
Processing dependencies for Adafruit-DHT==1.4.0
Finished processing dependencies for Adafruit-DHT==1.4.0


 

Länk till kommentar
Dela på andra webbplatser

Det här "projektet" var mest en kul grej. Något att nyttja min Raspberry till. Beställde givaren i samband med annan leverans.

Trodde det skulle finnas flera färdiga program att nyttja men det verkar som, i jämförelse, att om man vill cykla kan man inte bara skaffa en billig cykel på Biltema. Man måste först uppfinna hjulet och bygga det. Sedan måste man bygga en cykel. Sen lära sig hur den cykeln fungerar...

Länk till kommentar
Dela på andra webbplatser

19 timmar sedan, skrev .M:

Python 2.7och 3

Okej.

Thonny och mu verkar använda python3.

Om jag via terminalen skriver

sudo python3 ./AdafruitDHT.py 2302 4

får jag

Traceback (most recent call last):
  File "./AdafruitDHT.py", line 24, in <module>
    import Adafruit_DHT
ModuleNotFoundError: No module named 'Adafruit_DHT'

 

Om jag skriver

sudo python2 ./AdafruitDHT.py 2302 4

får jag

Failed to get reading. Try again!

 

(Utelämnar jag python2 blir det samma sak)


AdafruitDHT.py är en fil som medföljde som "example".

Om man bara kör den får man förslaget att lägga till 2302 4 och det stämmer med att jag har en 2302 och den är kopplad till GPIO4

 

Om jag då testar med den extra fil man skulle ladda ner, och anger python2, får jag:

Traceback (most recent call last):
  File "./dht22tutorial.py", line 10, in <module>
    print('Temp={0:0.1f}*C  Humidity={1:0.1f}%'.format(t,h))
ValueError: Unknown format code 'f' for object of type 'str'

 

 

Lite för mycket "Rita-gissa-spring" för min del.

Lägger ner projektet.

 

Länk till kommentar
Dela på andra webbplatser

Fast, "failed to get reading" så känns det som att det programmet körs korrekt, men kan inte få kontakt med din pryl.

 

Kanske dubbelkolla att den är korrekt ansluten.

Länk till kommentar
Dela på andra webbplatser

Jodå, den är ansluten enligt exemplet.

Tillägg: med filen gpiotest.py kan jag testa alla GPIOs och det stämmer bra, jag har nu anslutit till pin 23 och lossar jag den anslutningen visas det också för pinne 23.

 

Felmeddelandet kommer kanske oavsett felorsak?

Koden ser ut så här:

#!/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) == 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] <GPIO pin number>')
    print('Example: sudo ./Adafruit_DHT.py 2302 4 - Read from an AM2302 connected to GPIO pin #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))
else:
    print('Failed to get reading. Try again!')
    sys.exit(1)

 

Redigerad av Mikael63
Länk till kommentar
Dela på andra webbplatser

Tack.

Det tycks inte spela någon roll vilka filer jag kör, det fungerar helt enkelt inte.

Vanligt felmeddelande är att en import inte lyckades och/eller ett det är fel syntax, en ( som det klagas på.

 

Länk till kommentar
Dela på andra webbplatser

 Share

×
×
  • Skapa nytt...