Libre + GPIO Steuerung funktioniert nicht

  • Hallo zusammen!
    Ich nutze meinen PI3 als Media Center fürs heimische Netzwerk. Er soll Bilder, Videos, Musik usw streamen und abspielen.
    So habe ich mich schnell in LibreElec verliebt!
    Da die Temperatur aber auch gerne mal höher geht, würde ich diese Lüftersteuerungen gerne übernehmen.
    Es gibt ja einige im Netz, die mit Transistor und GPIO zum Laufen gebracht werden.
    Zum Testen habe ich auch Rasbian mal installiert. Da funktioniert das mit der Installation von:

    Code
    wget https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.6.2.tar.gz
    tar zxf RPi.GPIO-0.6.2.tar.gz
    cd RPi.GPIO-0.6.2
    sudo python setup.py install


    einwandfrei!
    Ein Python Skript im Crontab schaltet ihn bei Bedarf fein an und wieder aus.
    Aber leider ist das alles andere als für mich zugeschnitten.
    Alle Einstellungen die mit LibreElec so schön funktionieren (Kore als Fernbedienung, Ordnereinspeisung aus Onlinespeicher, Streaming Dienste, usw) funktionieren nicht, oder müssen aufwändig programmiert werden.
    Das mit dem Programmieren hab ich aber nicht drauf. Dauerte schon Nächte, bis ich das mit Putty und den Kommandos drauf hatte...

    So...
    Diese Lüftersteuerung hätte ich auch gerne auf meinem LibreElec zum Laufen gebracht!
    Aber die Installation der genannten RPi.GPIO.tar.gz schlägt fehl!
    Es erscheint:

    Und bei der Installation folglich:

    Code
    # python fan_test.py
    Traceback (most recent call last):
    File „fan_test.py“, line 3, in
    import RPi.GPIO as GPIO
    ImportError: No module named RPi.GPIO

    Gibt es eine passende Installationsdatei für LibreElec?
    :danke_ATDE:
    Michael

    Einmal editiert, zuletzt von xde378 (14. September 2016 um 18:55)

  • Naja *ELEC ist deshalb was besonderes weil man den Schwerpunkt auf absolute Stabilität setzt und das wiederum bedeutet das der Benutzer auf Systemebene nichts verändern darf da sonst die Stabilität beeinflusst werden könnte.

    *ELEC hat deshalb auch keinen Paketmanager ala apt-get, man muss also wenn dann alles von Hand machen - riskiert dann aber eben auch die Stabilität negativ zu beeinflussen.

    Man könnte jetzt zwar argumentieren dass das Python Module RPi.GPIO nicht derart schlimm ist, aber erlaubt man eins will man mehr :fies:


    Ab LibreELEC v7 gibt es ein KODI Add-On namens "rpi tools" welches ua. RPi.GPIO , gpiozero und auch picamera beinhaltet. Bei OpenELEC gabs inoffiziel einzelne Addons kein Bundle.


    Im Hauptmenü geht man links auf Add-ons, dann rechts oben auf Add-on browser. Anschließend auf Repository => LibreELEC Add-ons => Programm-Addons. Darin befindet sich das gesuchte Raspberry Pi Tools.

    //EDIT: Und dann Beitrag#13


  • Hast du wenigstens meine Vorschläge in deinem ERSTEN THREAD ausprobiert???


    Ja, aber diese funktionieren nur beim Rasbian.
    Da hab ich zum Laufen gebracht.
    Ganz nett, aber ich wollte es ja beim LE haben.
    Deshalb mein neuer Beitrag in dieser Kategorie, um vllt andere User anzusprechen.
    Und vllt hats ja geklappt mithilfe von "meigrafd".

    Tut mir Leid das mit dem Doppelpost, ich hätte es direkt hier reinschreiben sollen...

  • Danke für den Tipp!
    Lässt sich das ähnlich bedienen, wie die Elecs?
    Bezüglich auf Steuerung zb mit Kore (aufm Smartphone), Netzwerkzugriff und -sichtbarkeit für einfaches hinzufügen von Musik usw...

    Werde das am Wochenende mal durchchecken...

    Gruß
    Michael


  • Nimm OSMC ! Dort kannst du ALLES nach installieren!

    Dass *ELEC keine Systemänderungen erlaubt ist keine Freiheitsberaubung oder so, sondern ist wie gesagt der entscheidene Grund wieso LibreELEC besser ist als andere KODI Distributionen.

    Einfach in LibreELEC bzw KODI die Addons durchforsten bis man "rpi-tools" gefunden hat und dann halt installieren.... Deshalb muss man nicht gleich zu ner anderen Distri wechseln - oder kaufst du dir auch sofort'n anderes Auto nur weil du zu bräsig bist den Sitz zu verstellen?

    Mal davon abgesehen das es nur mit LibreELEC möglich ist Amazone Prime zu gucken - und auch noch viele weitere Addons nur für LibreELEC verfügbar sind.

  • Im Hauptmenü gehst du links auf Add-ons und dann rechts oben auf Add-on browser. Anschließend auf Repository und dann auf LibreELEC Add-ons ...

    Ich hab grad kein LibreELEC zur Hand, könnte also evtl. sein das es ein klein wenig davon abweicht..


  • Im Hauptmenü gehst du links auf Add-ons und dann rechts oben auf Add-on browser. Anschließend auf Repository und dann auf LibreELEC Add-ons ...


    ...und dann auf Programm-Addons.
    Darin befindet sich das gesuchte Raspberry Pi Tools.
    Dieses installiert. Jetzt steht "aktiviert" da.

    Jetzt müssten die GIPO´s ansprechbar sein?
    Die Lüfter Testdatei funktioniert noch nicht. Es erscheint wieder:

    Code
    python fan_test.py
    Traceback (most recent call last):
     File "fan_test.py", line 3, in <module>
       import RPi.GPIO as GPIO
    ImportError: No module named RPi.GPIO

    Wenn ich nun wieder die runtergeladene RPi.GPIO-0.6.2 setup.py Datei zu installieren versuche, kommt auch wieder die Verweigerung.

    Einmal editiert, zuletzt von xde378 (16. September 2016 um 21:26)

  • Das scheint noch ein "Bug" in LibreELEC zu sein... Das Verzeichnis wo das Module installiert wird gehört nicht zum PYTHONPATH.

    Lösung:

    [code=php]
    import sys
    sys.path.append("/storage/.kodi/addons/virtual.rpi-tools/lib")

    import RPi.GPIO as GPIO

    print GPIO.VERSION
    [/php]

    Die ersten zwei Zeilen sind halt leider in jedem Script nötig wo die Module "RPi.GPIO" , "picamera" oder "gpiozero" verwendet werden sollen.

    Der Grund für diesen "Bug" ist vermutlich der, weil das Systemlaufwerk als "read only" eingebunden ist... Tja, so ist das mit etwas speziellen Systemen :X

  • @meigraf

    Toller Beitrag, der TE versteht dadurch nämlich nicht nur was "falsch" läuft sondern auch wie man es beheben kann! Ich gehe mal davon aus, dass Ihr Ansatz funktioniert. Vielleicht wenn der TE eine positive Rückmeldung gibt das es soweit läuft, vielleicht könnten wir ihre Lösung hier im Forum publizieren!

    Mfg

    Wenn's brennt 112 hilft weiter!

  • Du kannst mich ruhig duzen ;) Komm ich mir sonst viel zu alt vor :lol:

    Ich konnte nicht herausfinden ob dieses Problem bereits bekannt ist... Im "Bug Report" Bereich des LibreELEC Forums konnte ich dazu jedenfalls nichts finden und der übliche weg den PYTHONPATH anzupassen funktioniert leider nicht (oder ich mach das falsch).

  • [code=php]
    import sys
    sys.path.append("/storage/.kodi/addons/virtual.rpi-tools/lib")

    import RPi.GPIO as GPIO

    print GPIO.VERSION
    [/php]

    Hurra :bravo2: :bravo2: :bravo2:

    Meine Lüftersteuerung funktioniert nun auf LibreElec!
    Einfach die beiden ersten Zeilen ins Skript hinzugefügt, ausgeführt und der Lüfter dreht.
    Mit gleichzeitiger Logdatei und Crontab kann ich nun wunderbar meine Temperatur steuern und dokumentieren lassen!


    Vielen Dank für die Hilfe an "meigrafd" & "raspbastler"

    :danke_ATDE:

  • Aber gerne doch!

    (temp_float > 65): Einschalttemperatur
    time.sleep(110): läuft dann 110sec.
    logfile = open("/storage/logfiles/fan.log","a") 'Logfiles' kann über das Netzwerk am heimischen PC aufgerufen werden.


    Dies mit Crontab alle 2 Minuten ausführen

    Code
    */2 * * * * python /storage/fan/fan_control.py

    Einen kleinen Fehler habe ich noch:
    Wie befehle ich der .log Datei, dass sie die Einträge nicht nebeneinander sondern untereinander schreibt?

  • Das mit der Logdatei weiß ich leider nicht :(
    Jedoch würde ich generell wenn ein System läuft, KEINE Logs mehr anfertigen. Vor allem nicht bei einem Multimediasystem. Die CPU Leistung wäre mir zu schade :D
    Vielleicht hat es etwas mit der Ausgabe zu tun, also vom Format z.B. .json oder als CSV?


    Eine Frage bleibt bei mir jedoch, hast du es nach diesem Tutorial angeschlossen?
    Lüftersteuerung per Temperatur + Einbauanleitung

    Wenn's brennt 112 hilft weiter!

    Einmal editiert, zuletzt von raspbastler (18. September 2016 um 12:16)

  • Zum auslesen der CPU Temperatur würde ich nicht "vcgencmd" verwenden da der Befehl nicht unerhebliche CPU Last erzeugt. Nutze lieber die SysFS Dateien:
    [code=php]
    def getCPUtemperature():
    with open("/sys/class/thermal/thermal_zone0/temp", 'r') as f:
    content = f.read().splitlines()
    return "{0:.2f}".format(float(content[0]) / 1000.0)
    [/php]

    Eine Logdatei mit den Temperaturen würde ich ebenfalls nicht erstellen, das verursacht nur unnötige Belastung für die SD Karte (die verträgt nicht unendlich viele Schreibzugriffe). Guck mal hier: FAQ => Nützliche Links / Linksammlung => Windows Gadget

    Und allgemein wegen deines Scripts guck auch mal hier: FAQ => Nützliche Links / Linksammlung => Lüftersteuerung per Temperatur + Einbauanleitung => advanced Script


    Wie befehle ich der .log Datei, dass sie die Einträge nicht nebeneinander sondern untereinander schreibt?

    So:
    [code=php]

    def writeLog(temperature, text):
    date_time = time.strftime("%d.%m.%Y %H:%M:%S")
    log_line = "["+date_time+"] Temperatur: "+ temperature + "°C Aktion: " + text + "\n"
    logfile = open("/storage/logfiles/fan.log", "a")
    logfile.write(log_line + "\n");
    logfile.close()
    [/php]

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!