DHT22 Sensor Werte über Homebridge in HomeKit

  • Hallo liebe Community,


    ich bin noch ein blutiger Anfänger und zunächst vielen Dank für eure Tutorials und Beiträge.

    Mit dieser bisherigen Hilfe konnte ich auf meinem Pi 3 Homebridge installieren und eine Kamera anschließen, die ich tatsächlich auch in HomeKit sehe.


    Als nächstes wollte ich eine DHT22-Temperatursensor installieren, um damit mein EVE-Thermostat besser zu steuern.


    Ich habe den Sensor angeschlossen mittels Anleitung von AZ-Delivery und kann auch erfolgreich mittels Python-Skript die Temperatur und Luftfeuchtigkeit auslesen:


    pi@mazlpi:~ $ python DHT22.py

    [press ctrl+c to end the script]

    Temp=23.4*c Humidity=59.4%

    Temp=22.8*c Humidity=60.4%

    Temp=22.8*c Humidity=60.4%

    ^CScript end!

    pi@mazlpi:~ $


    Der Sensor an sich scheint also zu funktionieren.


    Daraufhin habe ich in der Homebridge GUI "Homebridge Dht" installiert (homebridge-dht v.0.1.33) und folgende Konfiguration hinterlegt:

    {
                "accessory": "Dht",
                "name": "dht22",
                "service": "dht22"
    }



    Ich hab mich dabei hier orientiert: https://github.com/NorthernMan54/homebridge-dht


    Leider bekomme ich beim Start folgende Fehlermeldung:

    Nov 14 16:24:59 mazlpi homebridge[15920]: [14.11.2020, 16:24:59] [dht22] Error: [Error: failed to read sensor]


    Und sie wiederholt sich regelmäßig:

    Nov 14 16:25:59 mazlpi homebridge[15920]: [14.11.2020, 16:25:59] [dht22] Error: [Error: failed to read sensor]


    In der Home-App wird das Gerät angezeigt, aber beide Werte sind bei 0 Grad bzw. 0 %.


    Ich hab versucht, an der config zu spielen und z.B. folgendes ausprobiert:

    {
                "accessory": "Dht",
                "name": "dht22 - indoor",
                "gpio": "4",
                "service": "dht22"
    }

    Ebenfalls kein Erfolg.


    Diese Option ließ meine Homebridge gar nicht mehr starten:

    {

    "accessory": "DhtSensor",

    "name": "Sensor",

    "sensorType": 22,

    "gpioPin": 4

    }



    Ich hab mit gpio und pin rumgespielt und egal was ich versucht habe, entweder hat die config mein homebridge abgeschossen, oder es wird einfach kein Wert geliefert. ;(


    Hier im Forum konnte ich nichts finden und auch sonst nichts im Internet. Habt ihr eine Idee?


    Der Sensor ist angeschlossen an PIN 7 bzw. GPIO 4.
    (In der Anleitung von AZ-Delivery war er an PIN 32 / GPIO 12, aber das hat auch nicht funktioniert und so habe ich es mit Umstecken versucht - erfolglos.)


    Vorab vielen Dank für eure Mühen!

    Marcel

    Raspberry Pi 3 Model B V. 1.2

    Homebridge v 1.1.6
    Node.js v 14.15.0

    Npm v 6.14.8

  • Mit dieser bisherigen Hilfe konnte ich auf meinem Pi 3 Homebridge installieren

    Das hört sich so an, als hättest du unsere Anleitung verwendet.


    Du hast dein Python-Skript als User pi ausgeführt:

    pi@mazlpi:~ $ python DHT22.py

    Die Homebridge nach der Forenanleitung läuft aber unter dem User homebridge. Um zu testen, dass das Skript auch für diesen User funktioniert, solltest du es mal als User homebridge aufrufen. Gehe so vor:


    cp DHT22.py /tmp

    sudo su - homebridge

    cd /tmp

    python DHT22.py


    exit

    Ich würde jetzt gern wissen: funktioniert das immer noch?

  • Vielen Dank sschuste für die super schnelle Rückmeldung.

    Ja, ich habe eure Anleitung verwendet. Jedenfalls zum Großteil, an einer Stelle kam ich nicht weiter.

    Tatsächlich funktioniert es nicht mehr :(

    pi@mazlpi:~ $ cp DHT22.py /tmp

    pi@mazlpi:~ $ sudo su - homebridge

    homebridge@mazlpi:~ $ cd /tmp

    homebridge@mazlpi:/tmp $ python DHT22.py

    [press ctrl+c to end the script]

    Traceback (most recent call last):

    File "DHT22.py", line 8, in <module>

    humidity, temperature = Adafruit_DHT.read_retry(sensor,pin)

    File "build/bdist.linux-armv7l/egg/Adafruit_DHT/common.py", line 94, in read_retry

    File "build/bdist.linux-armv7l/egg/Adafruit_DHT/common.py", line 80, in read

    File "build/bdist.linux-armv7l/egg/Adafruit_DHT/common.py", line 55, in get_platform

    File "build/bdist.linux-armv7l/egg/Adafruit_DHT/Raspberry_Pi_2.py", line 22, in <module>

    File "build/bdist.linux-armv7l/egg/Adafruit_DHT/Raspberry_Pi_2_Driver.py", line 7, in <module>

    File "build/bdist.linux-armv7l/egg/Adafruit_DHT/Raspberry_Pi_2_Driver.py", line 4, in __bootstrap__

    File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1198, in resource_filename

    self, resource_name

    File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1710, in get_resource_filename

    self._extract_resource(manager, self._eager_to_zip(name))

    File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1740, in _extract_resource

    self.egg_name, self._parts(zip_path)

    File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1265, in get_cache_path

    self.extraction_error()

    File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1245, in extraction_error

    raise err

    pkg_resources.ExtractionError: Can't extract file(s) to egg cache


    The following error occurred while trying to extract file(s) to the Python egg

    cache:


    [Errno 13] Permission denied: '/home/homebridge/.cache/Python-Eggs'


    The Python egg cache directory is currently set to:


    /home/homebridge/.cache/Python-Eggs


    Perhaps your account does not have write access to this directory? You can

    change the cache directory by setting the PYTHON_EGG_CACHE environment

    variable to point to an accessible directory.



    Komisch, denn ich hatte dem User homebridge zuvor Zugriff auf GPIO gegeben:


    pi@mazlpi:~ $ sudo adduser homebridge gpio

    perl: warning: Setting locale failed.

    perl: warning: Please check that your locale settings:

    LANGUAGE = (unset),

    LC_ALL = "en_US.UTF-8",

    LANG = "de_DE.UTF-8"

    are supported and installed on your system.

    perl: warning: Falling back to a fallback locale ("de_DE.UTF-8").

    Der Benutzer »homebridge« ist bereits ein Mitglied der Gruppe »gpio«.

    pi@mazlpi:~ $


    Oder hat das nichts damit zu tun?

    Raspberry Pi 3 Model B V. 1.2

    Homebridge v 1.1.6
    Node.js v 14.15.0

    Npm v 6.14.8

  • pi@mazlpi:~ $ sudo adduser homebridge gpio

    Danke, das wollte ich wissen. Die Anleitung tut das ja auch, aber meine Erfahrungen mit GPIO liegen bei etwa 1 von 1000. Ich habe aber damals extra mit GPIO und einer LED getestet und herausgefunden, dass der User homebridge Mitglied der Gruppe gpio sein muss, damit er auf die Pins zugreifen kann.


    Der Fehler oben ist aber erstmal ein ganz anderer:

    pkg_resources.ExtractionError: Can't extract file(s) to egg cache


    The following error occurred while trying to extract file(s) to the Python egg

    cache:


    [Errno 13] Permission denied: '/home/homebridge/.cache/Python-Eggs'


    Der User Homebridge darf nicht in sein eigenes Homeverzeichnis schreiben. Das sollte nicht so sein. Hilft vielleicht ein als User pi ausgeführtes

    sudo chown -R homebridge:homebridge /home/homebridge

    sudo chown -R homebridge:homebridge /home/homebridge/.cache

    ?

  • Ja, jetzt kann ich das Skript als homebridge ausführen:

    homebridge@mazlpi:/tmp $ python DHT22.py

    [press ctrl+c to end the script]

    Temp=22.8*c Humidity=60.4%

    Temp=22.9*c Humidity=60.5%

    Temp=22.9*c Humidity=60.5%

    ^CScript end!


    Aber auch nach einem Neustart von Homebridge gibt es weiterhin einen Fehler beim Sensor:

    Nov 14 17:07:37 mazlpi homebridge[14025]: [14.11.2020, 17:07:37] [dht22 - indoor] Error: [Error: failed to read sensor]


    Ich wollte ein anderes Plugin probieren, namentlich homebridge-dht-sensor v2.1.2 (2017-01-29) --> https://github.com/maxnowack/homebridge-dht-sensor#readme


    Dafür musste ich zunächst BCM2835 installieren (https://www.techworked.com/ins…-library-in-raspberry-pi/) - hier gab es, soweit ich es sehen kann, keine Probleme.


    Leider kommt bei der Plugin-Installation via GUI folgender Fehler:

    >>

    ...



    Versuche ich es direkt über das Terminal, komme ich auch nicht weiter:


    Raspberry Pi 3 Model B V. 1.2

    Homebridge v 1.1.6
    Node.js v 14.15.0

    Npm v 6.14.8

  • Der User pi hat nicht die erforderlichen Rechte dort was zu installieren. Ist aber nicht schlimm, sondern so gewollt. Plugins musst du - wenn du die Forenanleitung benutzt hast - mit Superuser-Zugriffsrechten installieren. Das machst du, indem du dem Befehl ein "sudo" vorschiebst.


    Versuch es mal mit:

    sudo npm install -g homebridge-dht-sensor


    Die Installation sollte dann laufen.

  • lugins musst du - wenn du die Forenanleitung benutzt hast - mit Superuser-Zugriffsrechten installieren.

    Stimmt, vielen Dank Gerrit.Fries :)
    Habe es mit sudo versucht, dann kommt aber der gleiche Fehler wie beim Installationsversuch über die GUI.


    Egal wie viel ich noch google, ich finde nichts passendes für mein Problem.
    Hier hatte wohl scheinbar jemand die gleichen Schwierigkeiten, aber da gibt es keinen Lösungvorschlag: https://github.com/maxnowack/homebridge-dht-sensor/issues/46


    Als ihr den Sensor an euren Pi angeschlossen habt, konntet das Plugin direkt auf die Werte zugreifen?
    Könnt ihr vielleicht eine Anleitung empfehlen, die ich nochmals durchspielen sollte?

    Raspberry Pi 3 Model B V. 1.2

    Homebridge v 1.1.6
    Node.js v 14.15.0

    Npm v 6.14.8

  • npm install -g homebridge-dht-sensor

    Versuch mal ein sudo npm install -g --unsafe-perm homebridge-dht-sensor.


    Ja, jetzt kann ich das Skript als homebridge ausführen:

    homebridge@mazlpi:/tmp $ python DHT22.py

    Das ist schon mal gut: der User homebridge darf also auf GPIO zugreifen und damit ist schon mal eine Fehlerquelle eliminiert. Bei allem Weiteren muss ich passen.

    Einmal editiert, zuletzt von DJay () aus folgendem Grund: Ein Beitrag von sschuste mit diesem Beitrag zusammengefügt.

  • Hat leider auch keinen Erfolg gebracht:

    Raspberry Pi 3 Model B V. 1.2

    Homebridge v 1.1.6
    Node.js v 14.15.0

    Npm v 6.14.8

  • Bei allem Weiteren muss ich passen.

    Schade :( Aber nochmals vielen Danke für deine Mühen!

    Vielleicht hat ja noch jemand anderes eine Idee :S

    Raspberry Pi 3 Model B V. 1.2

    Homebridge v 1.1.6
    Node.js v 14.15.0

    Npm v 6.14.8

  • Hallo in die Runde!


    ich habe folgendes Anliegen; an meinem ESP hängt ein DHT 22 Sensor und überwacht die Luftfeuchtigkeit. Diesen habe ich mittels Homebrdige in mein Apple Home eingebunden.


    Allerdings wird mir unter dem Reiter Automation nicht die Möglichkeit gegeben, auf Grundlage der Sensorwerte eine Automation zu starten. Gibt es hier eine Lösung, oder liegt es daran, dass es kein original Sensor ist?


    Ziel wäre eine Benachrichtigung über Pushover o.ä. ab einem bestimmten Sensorwert


    Grüße!

  • Mir ist nicht klar, was du machen willst. Kannst du den entsprechenden Sensor in der Automation gar nicht auswählen? Ich habe mehrere DHT22 an einem ESP, die die Daten per Mqtt verschicken. Und die kann ich auch auswählen und etwas triggern lassen.

  • Seit iOS15 kann Mann auch Automationen auf Grundlage von Sensorwerten auslösen.

    „Wenn ein Sensor entdeckt.“

    Bilder

  • Ja, das ist mir schon klar. Darum sagte ich ja, dass ich die auswählen und etwas triggern lassen kann. Die Frage ist, ob er mit seinem Sensor gar nicht so weit kommt, oder ob es danach hakt und wie die Sensoren überhaupt eingebunden sind.