Skocz do zawartości

Podłączenie DHT22 do domoticza, Raspberry pi 3 model B


grniak

Pomocna odpowiedź

Nie jestem sobie w stanie poradzić z odczytywaniem danych z czujnika dh22 w domoticzu.

W konsoli odczytuje wartości za pomocą kodu:

# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT

import time
import board
import adafruit_dht

# Initial the dht device, with data pin connected to:
dhtDevice = adafruit_dht.DHT22(board.D4)

# you can pass DHT22 use_pulseio=False if you wouldn't like to use pulseio.
# This may be necessary on a Linux single board computer like the Raspberry Pi,
# but it will not work in CircuitPython.
# dhtDevice = adafruit_dht.DHT22(board.D18, use_pulseio=False)

while True:
    try:
        # Print the values to the serial port
        temperature_c = dhtDevice.temperature
        temperature_f = temperature_c * (9 / 5) + 32
        humidity = dhtDevice.humidity
        print(
            "Temp: {:.1f} F / {:.1f} C    Humidity: {}% ".format(
                temperature_f, temperature_c, humidity
            )
        )

    except RuntimeError as error:
        # Errors happen fairly often, DHT's are hard to read, just keep going
        print(error.args[0])
        time.sleep(2.0)
        continue
    except Exception as error:
        dhtDevice.exit()
        raise error

    time.sleep(2.0)


Po uruchomieniu programu otrzymuję:

domoticz@raspberrypi:~ $ python3 dht_simpletest.py
Temp: 87.1 F / 30.6 C    Humidity: 43.4% 
Temp: 87.1 F / 30.6 C    Humidity: 43.5% 

Chcąc przenieść wartości do domoticza skorzystałem ze skryptu:

#!/bin/sh
 
# Domoticz server
SERVER="192.168.xx.xx:xxxx"
# DHT IDX
DHTIDX="42"
 
# DHTPIN
DHTPIN="4"
 
sleep 5
 
sudo nice -20 python3 /home/domoticz/dht_simpletest.py 22 $DHTPIN > /var/tmp/te>
#TEMP=$(cat /var/tmp/temp.txt | grep "Temp" | awk '{ print $3 }')
#TEMP=$(cat /var/tmp/temp.txt | grep "Temp")
 
TEMP=$(awk ' /Temp/ {print substr ($0,6,4)}' /var/tmp/temp1.txt)
#HUM=$(awk ' /Hudmidity/ {print substr ($0,0)}' /var/tmp/temp.txt)
#HUM=$(awk ' /Humidity/ {print 1$}' /var/tmp/temp.txt)
HUM=$(awk ' /Humidity/ {print substr ($0,22,4)}' /var/tmp/temp1.txt)
echo $TEMP
echo $HUM
 
# Send data
curl -s -i -H "Accept: application/json" "http://$SERVER/json.htm?type=command&>
 
 
TEMP=""
HUM=""




I po uruchomieniu skryptu otrzymuję taki błąd:

domoticz@raspberrypi:~/domoticz/scripts $ ./dht22.sh
Traceback (most recent call last):
  File "/home/domoticz/dht_simpletest.py", line 5, in <module>
    import board
ModuleNotFoundError: No module named 'board'

Proszę o jakieś podpowiedzi 🙂 Przeszukałem forum ale nie znalazłem rozwiązania 😕 

Link do komentarza
Share on other sites

(edytowany)

Podpowiedź
Masz problem ze ścieżkami systemowymi, w których python3 poszukuje niestandardowych modułów a do takich należy moduł board czymkolwiek on jest (w życiu nie dotykałem jeszcze RaspberryPi i nie mam pojęcia, co robisz).

Na potwierdzenie tej tezy dodaj sobie do skryptu dht_simpletest.py:
 

import sys

oraz na samo dzień dobry w tymże skrypcie wywołanie funkcji:
 

print(sys.path)

i porównaj to, co zobaczysz na konsoli, wywołując w/w skrypt w obydwu scenariuszach, które wymieniłeś:
- bezpośrednio z konsoli dht_simpletest.py 
- dht22.sh, który wewnątrz woła dht_simpletest.py 

Zobaczysz od razu róźnice w wartości zmiennej sys.path w obu przypadkach. Po szczegóły odsyłam do dokumentacji Pythona, Linuxa, Google, stackoverflow, inne ulubione😉 Chyba, że ktoś inny pamięta i poda Ci tu przepis, jak to szybko poprawić.

Uzupełnienie do podpowiedzi
Twój skrypt dht22.sh wywołuje dht_simpletest.py poprzez sudo, a więc chyba z innymi ustawieniami zmiennych środowiska (Bingo?) niż wywołanie z konta domoticz (??).

Edytowano przez ReniferRudolf
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.