Raspi mit langem Tastendruck runterfahren
-
rooki_1 -
2. April 2022 um 07:18 -
Unerledigt
-
-
Raspi mit langem Tastendruck runterfahren? Schau mal ob du hier fündig wirst!
-
gpiozero gabs wohl unter Wheezy auch noch nicht und ein apt update && apt-dist-upgrade wird wohl auch nicht mehr funktionieren.
Gabs pip3 schon ?
-
Gabs pip3 schon ?
Theoretisch schon, aber ob pip überhaupt installiert ist weiß ich natürlich nicht.
Nachinstallieren über Paketquelle geht ja auch nicht mehr.
-
-
Starte das Skript mal mit python /Pfad/zum/skript, also mit Python2. Vielleicht haben wir ganz viel Glück und gpiozero ist dafür installiert.
Wenn nicht, dann wird es komplizierter als anfangs gedacht.
-
-
Ich habe in der Zwischenzeit mal ein altes Skript eines ehemaligen Users ein bisschen angepasst. Testen kann ich das aber mangels Python2 leider nicht.
Python
Alles anzeigen#!/usr/bin/python2 # -*- coding: utf-8 -*- from __future__ import print_function from time import sleep, time from RPi import GPIO from Queue import Queue from functools import partial def interrupt_Event(q, channel): q.put( (channel, GPIO.input(channel)) ) def main(switchPi=4, specialTime=3): GPIO.setmode(GPIO.BCM) GPIO.setup(switchPi, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) queue=Queue() triggerTime=0 GPIO.add_event_detect(switchPi, GPIO.BOTH, callback=partial(interrupt_Event, queue), bouncetime=150) try: while True: job = queue.get() pin = job[0] state = job[1] print(pin, state) if state == GPIO.HIGH: triggerTime = time() elif state == GPIO.LOW: triggerTime = time() - triggerTime if pin == switchPi: if triggerTime > specialTime: print("%s: Shutdown" % triggerTime) else: print("time '%s' not valid" % triggerTime) except (KeyboardInterrupt, SystemExit): GPIO.cleanup() print("\nQuit\n") if __name__ == "__main__": main()
Starte das mal mit python /Pfad/zum/skript und drücke mal die Taste länger als 3 Sekunden.
Zeige dann mal alle Ausgaben hier in einem Codeblock!
-
Das ist uralt und wird nicht mehr unterstützt.
Zum Glück sind Maintainer was das betrifft sehr strikt und leisten keinen Support mehr für abgekündigte Versionen der vertriebenen Software.
Das Problem, dass du hast, tritt so oft auf, dass es sogar lustige Cheat-Sheets dazu gibt.
Grundsätzlich ist es besser, mit Virtuellen Environments zu arbeiten.
Abhängigkeiten:
Codesudo apt-get update && sudo apt-get install python3-pip # für pip, falls das Paket noch nicht installiert sein sollte
Virtuelles Environment erstellen:
Python 3.2 unterstützt es nicht
Code
Alles anzeigen# z.B. als User pi python3 -m venv MY_VENV # wenn man sich gerade in /home/pi befindet, # wird das VENV in /home/pi/MY_VENV installiert # venv in der aktuellen Shell aktivieren source MY_VENV/bin/activate # jetzt kann man einfach pip benutzen und die Pakete # landen in MY_VENV # wenn man die Terminal-Session schließt, ist auch des Venv deaktiviert # gpiozero im venv installieren pip install gpiozero # venv kann man auch wieder deaktivieren deactivate
Nun ist gpiozero im venv installiert worden.
Man kann das Virtuelle Environment adressieren, ohne es aktivieren zu müssen:
Code# Mit User root # -c "angegebenen String als Programmcode ausführen" sudo /home/pi/MY_VENV/bin/python -c "import gpiozero; print(gpiozero)"
Bei mir sieht es etwas anders aus, da anderes OS und andere Python-Version und ein anderer User:
Zitat[deadeye@nexus ~]$ MY_SHIT_VENV/bin/python -c "import gpiozero; print(gpiozero)"
<module 'gpiozero' from '/home/deadeye/MY_SHIT_VENV/lib/python3.10/site-packages/gpiozero/__init__.py'>
# wie man sehen kann, Python 3.10 und es wird aus dem VENV das Modul gpiozero geladen und nicht von einem anderen Ort
Das funktioniert deswegen, da der Python-Interpreter ihm bekannte Pfade ausprobiert.
Etwas besser zu verstehen ist das, wenn man die Pfade einfach ausgibt:
Python[deadeye@nexus ~]$ MY_SHIT_VENV/bin/python -c "from sysconfig import get_paths; print('\n'.join(f'{kind:<15} {path}' for kind, path in get_paths().items()))" stdlib /home/deadeye/.pyenv/versions/3.10.4/lib/python3.10 platstdlib /home/deadeye/MY_SHIT_VENV/lib/python3.10 purelib /home/deadeye/MY_SHIT_VENV/lib/python3.10/site-packages platlib /home/deadeye/MY_SHIT_VENV/lib/python3.10/site-packages include /home/deadeye/.pyenv/versions/3.10.4/include/python3.10 platinclude /home/deadeye/.pyenv/versions/3.10.4/include/python3.10 scripts /home/deadeye/MY_SHIT_VENV/bin data /home/deadeye/MY_SHIT_VENV
Wie man erkennen kann, kommt MY_SHIT_VENV in Pfaden vor. Die stdlib nimmt er hingegen vom System und bei mir das von pyenv (Programm um Python-Versionen zu installieren). Wichtig sind purelib und platlib bei nachträglich installierten Modulen wie z.B. gpiozero.
Später kann man das Programm ausführen, in dem man den kompletten Pfad zu python im Virtuellen Environment angibt. Ob das nun via systemd (aktuell), rc.local (total veraltet) oder einem init-script (total veraltet) macht, ist kein Unterschied.
Code/home/pi/MY_VENV/bin/python /home/pi/.local/bin/my_programm.py # Der Interpreter aus MY_VENV führt dann das Programm in /home/pi/.local/bin/my_programm.py aus # Der Pfad zu dem Programm kann natürlich ein anderer sein
Wenn man das ignoriert, kommt man irgendwann in die Abhängigkeitshölle.
Ein Update des OS wäre sinnvoll. Eine Sicherung solltest du auf jeden Fall machen, da Updates auch schiefgehen können.
Alternativ würde sich noch anbieten, dass du Python mit pyenv installierst, aber dazu benötigst du die Toolchain (Compiler, Linker, Bibliotheken, git), da pyenv Python aus den Quellen kompiliert.
-
Also vielen Dank erstmal für eure Unterstützung, aber ich glaube das hilft mir jetzt mit meinem problem nicht wirklich weiter.....
Es untersreicht aber mal wieder warum ich auf meinem Hauptrechner immer noch mit Windows arbeite. Keine Frage Linux an sich ist toll, man kann wundervolle Sachen damit machen.
Aber mal ehrlich - für Leute die ab und an Projekte in Angriff nehmen, dann keinen Support mehr bekommen bzw. fehlende Abhängkeiten usw. das ist einfach für die meisten NICHT praktikabel. Und genau das ist meiner Meinung immer noch das Problem von Linux im ganz allgemeinen. sonst hätte es evtl. Windows auch schon abgelöst.....
Vielen Dank - ich fürchte ich muss bei meiner "Notkrücke" bleiben um den Automat runterzufahren.
Gruß Rooki
-
Aber mal ehrlich - für Leute die ab und an Projekte in Angriff nehmen, dann keinen Support mehr bekommen bzw. fehlende Abhängkeiten usw. das ist einfach für die meisten NICHT praktikabel. Und genau das ist meiner Meinung immer noch das Problem von Linux im ganz allgemeinen. sonst hätte es evtl. Windows auch schon abgelöst.....
Ich habe auch noch tolle Programme für Windows, leider liefen die nur bis Windows XP, ab Windows7 wurde der Start verweigert.
-
aber ich glaube das hilft mir jetzt mit meinem problem nicht wirklich weiter.....
[...]
Aber mal ehrlich - für Leute die ab und an Projekte in Angriff nehmen, dann keinen Support mehr bekommen bzw. fehlende Abhängkeiten usw. das ist einfach für die meisten NICHT praktikabel.
Ich wollte ja erst noch ein paar Sätze dazu schreiben. Hier in Beitrag #51(!) dieses Threads.
Aber bei Deiner Einstellung scheint mir das vergeblicher Aufwand.
Ich bin raus.
-
Ich wollte ja erst noch ein paar Sätze dazu schreiben. Hier in Beitrag #51(!) dieses Threads.
Aber bei Deiner Einstellung scheint mir das vergeblicher Aufwand.
Ich bin raus.
Hallo simonz,
ich glaube dass du mich da falsch verstanden hast. Den fehlenden Support meinte ich natürlich bezogen auf das Image im ganz Allgemeinen, nicht auf dieses Forum.
-
ich glaube dass du mich da falsch verstanden hast. Den fehlenden Support meinte ich natürlich bezogen auf das Image im ganz Allgemeinen, nicht auf dieses Forum.
Ich denke, ich habe schon richtig verstanden...
-
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!