Kategorie-Archiv: Linux

Alles rund um Linux

LIRC neue Fernbedienung anlernen

Damit eine Fernbiedienung mit LIRC funktioniert, muss man Sie erst anlernen. Es sei denn, es gibt schon eine fertige Konfiguration.
Ich habe 2 Universal- Fernbedienungen, aber hier keine fertige Konfiguration. Das ist allerdings kein Problem, das Anlernen ist ganz einfach. Außer die Fernbedienung wird nicht erkannt und im RAW Format gespeichert. Diese würde ich bei Seite legen, da RAW nicht so genau ist. Zum Anlernen der Fernbedienung darf der Dienst LIRC nicht laufen. So kann man den Dienst anhalten:

/etc/init.d/lirc stop

Zum Konfigurieren der Tasten muss man die verfügbaren Namen kennen, diese Liste habe ich in den Editor kopiert.

irrecord –list-namespace

Hier habe ich mir meine benötigten Tasten rausgesucht.

Das sind meine Tasten:
KEY_0
KEY_1
KEY_2
KEY_3
KEY_4
KEY_5
KEY_6
KEY_7
KEY_8
KEY_9
KEY_PAUSE
KEY_PLAY
KEY_POWER
KEY_NEXT
KEY_PREVIOUS
KEY_STOP
KEY_VCR
KEY_CHANNELDOWN
KEY_CHANNELUP
KEY_VOLUMEDOWN
KEY_VOLUMEUP
KEY_RECORD
KEY_MUTE
KEY_E
KEY_F
KEY_G
KEY_H
KEY_MENU
KEY_SETUP
KEY_A
KEY_UP
KEY_DOWN
KEY_RIGHT
KEY_LEFT
KEY_OK
KEY_LAST
KEY_102ND

Jetzt muss „irrecord“ ausgeführt werden. Hier wird der gedrückten Taste ein Name hinterlegt.

irrecord -d /dev/lirc0 /root/lircd.conf

Am Anfang kommt ein Hinweistext, hier kann man mit Return bestätigen.
Jetzt soll man nach Eingabe von Return unterschiedliche Tasten drücken. Pro Taste wird ein Punkt am Bildschirm ausgegeben werden.
Das Ganze macht man so lange, bis der Assistent etwas Neues erwarten.
Jetzt verlangt der Assistent immer einen Namen, z.B. KEY_0. Nach Eingabe soll die Taste 0 gedrückt werden.
Das Ganze macht man bis man keine Tasten mehr hat oder man bricht vorher hab. Das Ganze macht man mit der Taste Return.

Jetzt muss die Konfigurations-datei am richtigen Ort abgelegt werden:
cp /root/lircd.conf /etc/lirc/lircd.conf

Nachdem am Anfang der Dienst gestoppt wurde, sollte man jetzt LIRC wieder starten:

/etc/init.d/lirc start

Jetzt kann man seine Aufnahme testen:

irw

Nach Eingabe des Befehls sollte man auf die Fernbedienung drücken. Als Ergebnis sieht man seine programmierten Tasten:

0000000000000002 00 KEY_1 /root/lircd.conf
0000000000000004 00 KEY_2 /root/lircd.conf
0000000000000005 00 KEY_3 /root/lircd.conf
0000000000000008 00 KEY_6 /root/lircd.conf
0000000000000007 00 KEY_5 /root/lircd.conf
0000000000000006 00 KEY_4 /root/lircd.conf
0000000000000009 00 KEY_7 /root/lircd.conf
000000000000000a 00 KEY_8 /root/lircd.conf
000000000000000b 00 KEY_9 /root/lircd.conf
0000000000000009 00 KEY_7 /root/lircd.conf
000000000000000a 00 KEY_8 /root/lircd.conf
000000000000000b 00 KEY_9 /root/lircd.conf
0000000000000006 00 KEY_4 /root/lircd.conf
0000000000000007 00 KEY_5 /root/lircd.conf
0000000000000008 00 KEY_6 /root/lircd.conf
0000000000000008 01 KEY_6 /root/lircd.conf
0000000000000008 00 KEY_6 /root/lircd.conf
0000000000000008 00 KEY_6 /root/lircd.conf
0000000000000008 00 KEY_6 /root/lircd.conf

Falls etwas nicht funktioniert, sollte der lirc Treiber kontrolliert werden:
lsmod
modprobe lirc_dev
dmesg

Sollte hier kein fehler vorliegen, sollte man die Konfiguration (irrecord) prüfen:

/etc/init.d/ stop
mode2 -d /dev/lirc0

Jetzt auf der Fernbedienung rumdrücken und es sollte etwas am Bildschirm erscheinen. Damit kann man sehen, ob der IR-Empfänger überhaupt was empfangen kann. Sollte auch das funktionieren, muss man die hardware.conf überprüfen:

sudo nano /etc/lirc/hardware.conf

Die Zeile DEVICE sollte so aussehen:
DEVICE=/dev/lirc0

Ist auch das richtig, wurde vielleicht die lirc.conf nicht ins richtige Verzeichnis erstellt.
Am Besten überprüfen, ob die lircd.conf vorhanden ist.


cp -v /root/lircd.conf /etc/lirc/lircd.conf
chown root:root /etc/lirc/lircd.conf

LIRC jetzt wieder starten:
/etc/init.d/lirc start

Jetzt wieder irw ausführen und an der Fernbedienung drücken. Sollte da nichts erscheinen und vorher kein Fehler aufgetaucht sein, ist die Aufzeichnung der Tasten nicht in Ordnung. Es muss die Fernbedienung neu angelegt werden.

irrecord -d /dev/lirc0 /root/lircd.conf

Bei dem Befehl irw, werden nur angelernte Tasten ausgegeben!

Raspberry Pi von USB-Festplatte betreiben

Raspian Pi kann nur von SD-Karten booten, gleich von USB booten ist nicht möglich. Wer Angst wegen Schreibzugriffe auf der SD-Karte hat, kann die SD-Karte auch nur zum booten verwenden. Das eigentliche System kann auf der USB-Festplatte oder USB-Stick laufen. Externe USB-Festplatten sollten eine eigene Stromversorgung haben.

Als erstes sollte sicher gestellt werden, dass die Patition MBR ist und nicht GPT. Es sollten auch keine Daten mehr drauf sein die benötigt werden. Alle Daten von der Festplatte gehen verloren!

Schließt eure USB-Festplatte am Raspberry Pi an und bootet ganz normal von euer SD-Karte. Meine Festplatte lautet /dev/sda , solltet ihr eine weitere Festplatte betreiben, kann das z.B. /dev/sdb sein.

Wer jetzt GPT hat, kann so auf MBR umstellen:
sudo parted /dev/sda

Jezt wird parted gestartet und erwartet einen Befehl:
mklabel msdos

Jetzt gebt quit als Befehl ein um parted zu beenden. Jetzt kann die Festplatte partitioniert werden:

sudo cfdisk /dev/sda

Ich habe 170 GB für eine Linux-Partition, 2GB für Swap eingerichtet. Danach muss man die Partition auswählen und den Typ der Partition angeben. Linux-Partition bekommt Type 83 und SWAP Type 82. Nun die Partitionsdaten auf die Platte schreiben und cfdisk beenden. Das Dateisystem kann nun angelegt werden:

sudo mkfs.ext4 /dev/sda1
sudo mkswap /dev/sda2

Ab jetzt kann man die Festplatte schon verwenden, man muss die Festplatte nur noch zur Verfügung stellen mit:

sudo mount /dev/sda1 /mnt

Kopiert eure Daten von der SD-Karte auf die Festplatte:
cd /mnt
sudo cp -axuv / .

Da booten von der Festplatte nicht möglich ist, löschen wir den Boot-Ordner von der Festplatte. Nicht von der SD-Karte!


sudo rm -R /mnt/boot
sudo nano /mnt/etc/fstab

Sucht die Zeile und setzt eine Raute davor:

#/dev/mmcblk0p2 / ext4 defaults,noatime 0 0

Fügt unter dieser Zeile diese Einträge hinzu:

/dev/sda1 / ext4 defaults,errors=remount-ro 0 1
/dev/sda2 none swap sw 0 0

Auf der SD-Karte muss nun cmdline.txt bearbeitet werden.

sudo nano /boot/cmdline.txt

In der einen Zeile muss root=/dev/mmcblk0p2 durch root=/dev/sda1 ersetzt werden, damit wird das System von der Platte gebootet. Jetzt kann man die SWAP-Partition noch verwenden mit:

sudo swapon -a

Jetzt soll man mit sudo reboot neustarten. Zum Testen kann man dann df -h eingeben:

Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
rootfs 182G 2,5G 170G 2% /
/dev/root 182G 2,5G 170G 2% /
devtmpfs 211M 0 211M 0% /dev
tmpfs 44M 264K 44M 1% /run
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 470M 0 470M 0% /run/shm
https://dav.box.com/dav 10G 0 10G 0% /home/pi/Desktop/box.com

Wie man sehen kann hat /dev/root nun 170 GB : ), habe das Gefühl es geht schneller als von der SD-Karte. Jetzt kann man noch das dphys-swapfile deaktivieren:

sudo update-rc.d dphys-swapfile remove

Anschließend sollten Sie einen Neustart des Systems durchführen.

sudo shutdown -r now

Nach dem Neustart können Sie durch swapon überprüfen ob die Auslagerungsdatei nicht mehr verwendet wird. Bzw. nur unser angelegte SWAP-Partition verwendet wird:

swapon -s

Das Ergebniss sollte so aussehen:

Filename Type Size Used Priority
/dev/sda2 partition 1954444 0 -1

433 MHz Funk Transmitter am Raspberry Pi

FS1000A ist ein Transmitter modul, das am Raspberry Pi angeschlossen werden kann. Der Transmitter kann mit 3 bis 5 Volt umgehen.
Wobei bei 5 Volt mehr Leistung bzw. größere Reichweiten erziehlt werden. Auch bei 5 Volt komme ich maximal bis zum Nebenraum, danach reagiert der Empfänger schwer bis garnicht. Trotz intensiver Suche habe ich kein Handbuch bzw. Datasheet zu diesem Sender finden können.
Laut Internet soll der Sender auch 12V vertragen, dies kann ich aber nicht bestätigen oder verneinen. Ich habe mich für 5V entschieden, da ich keine zusätzliche Stromversorgung brauche und mir die Reichweite locker reicht.

FS1000A

Das Anschließen geht so einfach, dass man keinen Schaltplan braucht:

GND – Ground —-> Pin 6
VCC – Spannung —-> Pin 2 (5V) oder Pin 1(3.3V)
DATA – Daten —-> Pin 11 (GPIO 17)

Ihr könnt auch einen anderen GPOI verwenden, da ich aber auch IR Receiver, Power/Reset-Switch und Kontroll-LED verwende bietet sich GPIO 17 an. Als Software bietet sich rcswitch-pi oder PowerPi an. wiringPi wird für beide Anwendungen benötigt.

wiringPi:

sudo apt-get install git-core
sudo apt-get update
sudo apt-get upgrade
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
cd wiringPi
./build

rcswitch:
git clone https://github.com/r10r/rcswitch-pi.git
cd rcswitch-pi
make

Zum Schalten mit rcswitch-pi muss man die Funksteckdose mit einem Code versehen (Dipschalter).
Ich habe zum Testen mal 10000A eingestellt und eine Lampe angeschlossen. Wir sollten noch im Verzeichnis rcswitch-pi sein, da jetzt den Befehle eingeben:

Zum Einschalten:
./send 10000 1 1

Zum Ausschalten:

./send 11111 1 0

IMG_0720

Raspberry Pi mit IR Remote

Ich habe noch eine alte Universal Fernbedienung (TCM 64745) und einen TSOP34136 Infared Receiver (datasheet). TSOP38238 und TSOP4838 sollten auch funktionieren, sind aber nicht von mir getestet. TSOP38238 wird auch in eBay angeboten, aber etwas teuer ; ). Hier erstmal der Schaltplan:

Raspberry_IR

1 = OUT, 2 = GND, 3 = VS

Um via GPIO Ports eine einzelne Infrarot Empfänger Diode anzusprechen, benötigt man noch LIRC. Bei Raspbian muss das noch eingerichtet werden, bei OpenELEC ist LIRC von Haus aus eingerichtet.


sudo apt-get install lirc liblircclient-dev

Damit das Modul beim Neustart automatisch geladen wird, muss /etc/modules bearbeitet werden.

sudo nano /etc/modules

Fügt folgende Zeilen am Ende der Datei ein:

lirc_dev
lirc_rpi gpio_in_pin=18

Jetzt die Config /etc/lirc/hardware.conf bearbeiten, so sollte das Ergebnis aussehen:

# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS="--uinput"

# Don't start lircmd even if there seems to be a good config file
# START_LIRCMD=false

# Don't start irexec, even if a good config file seems to exist.
# START_IREXEC=false

# Try to load appropriate kernel modules
LOAD_MODULES=true

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="default"
# usually /dev/lirc0 is the correct setting for systems using udev
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""

Jetzt sollte das System neugestartet werden.

sudo shutdown -r now

Ob alles geklappt hat, kann man wie folgt testen:


/etc/init.d/lirc stop
mode2 -d /dev/lirc0

Nach Eingabe einfach auf die Fernbedienung drücken. Ich habe auch 2 verschiedne Windows Media Center Edition (MCE) Fernbedienungen getestet, die haben bei mir nur schlecht bis garnicht funktioniert. Am besten ging es mit den normalen Fernbedienungen.

Google Chrome OS – CD-Rom Mounten

Beim Testen von Google Chrome OS, war nach der Installation kein CD/DVD Laufwerk mehr vorhanden. Hier muss man kurz die 3 Befehle in der Konsole eingeben:

mkdir /mnt/cdrom

mount -t iso9660 /dev/hdd /mnt/cdrom

cd  /mnt/cd-rom

ls -la

Hier sollten eure Daten von der CD/DVD liegen.

Box am Raspberry Pi nutzen

Der Dropbox-Konkurrent Box bietet 10 GB kostenlos. Box bietet sich an, um sein Backup bzw. Scripte zu speichern. Das Einrichten ist auch nicht sonderlich schwer, da Box WebDAV unterstützt. WebDAV ist ein Standard zur Bereitstellung von Dateien im Internet.

Als Erstes muss davfs2 installiert werden, dass geht mit folgendem Befehl:

sudo apt-get install davfs2

Jetzt legen wir einen Ordner an, wo Ihr auf die Daten zugreifen wollt. Da ich auch ab und zu am Desktop arbeite, erstelle ich meinen Ordner am Desktop.

mkdir /home/pi/Desktop/box

Jetzt können wir uns auch schon mit Box verbinden:

sudo mount -o uid=pi -o gid=pi -t davfs https://dav.box.com/dav /home/pi/Desktop/box

Damit Box beim Neustart wieder zur Verfügung steht, muss /etc/davfs2/secrets bearbeitet werden:

sudo nano /etc/davfs2/secrets

Fügt dort diese Zeile am Schluss ein:
https://dav.box.com/dav Benutzer Passwort

Bitte bei Benutzer und Passwort eure Daten eintragen ; ). Jetzt gibt es noch ein Problem, nicht alle User dürfen auf Box speichern.

Gebt folgende Befehle ein:

sudo usermod -aG davfs2 pi

sudo dpkg-reconfigure davfs2

Beim letzten Befehl geht nach kurzer Zeit ein Fenster auf:

Die Datei /sbin/mount.davfs muss das SUID-Bit gesetzt haben, falls Sie unprivilegierten (nicht root) Benutzern erlauben möchten, WebDAV-Ressourcen einzubinden. Falls Sie diese Option nicht wählen, wird es nur root erlaubt sein, WebDAV-Ressourcen einzubinden. Dies kann zu einem späteren Zeitpunkt durch Aufruf von »dpkg-reconfigure davfs2« geändert werden. Soll unprivilegierten Benutzern erlaubt werden, WebDAV-Ressourcen einzubinden?

Diese Frage mit Ja beantworten, wenn alle Benutzer zugreifen dürfen.

Jetzt der letzte Teil, Box beim Neustart automatisch einbinden. Die Konfigurations-Datei /etc/fstab enthält nötige Informationen, um das Einhängen von Partitionen ganz oder teilweise zu automatisieren. Bitte aufpassen, was Ihr dort macht!

sudo nano /etc/fstab

Dort eine neue Zeile hinzufügen:

https://dav.box.com/dav /home/pi/box davfs rw,noexec,noauto,user,async,uid=pi,gid=pi 0 0

Ab jetzt sollte beim Neustart alles wieder da sein, vorausgesetzt Internet ist aktiv ; ).

USB Soundkarte am Raspberry Pi

Raspberry Pi besitzt keinen Audioeingang für z.B. ein Microfon. In dieser Anleitung verwende ich das Gerät Virtual 7.1CH (C-Media Chipset) USB Sound Card. Als Erstes steckt die Soundkarte am USB-Port der Raspberry Pi. Keine Gewalt bitte ;)!

Installiert noch folgende Pakete, wenn Ihr in der Konsole arbeitet.

sudo apt-get install alsa-utils mpg321 lame

Mpg321 ist ein MP3-Kommandozeilen-Abspieler
alsa-utils ist Dienstprogramme für Konfiguration und Verwendung von ALSA
LAME ist ein MP3 Encoder

Jetzt müssen wir das Gerät finden, am besten mit:

sudo lsusb

Bei mir sieht das Ergebnis so aus, meine Soundkarte habe ich jetzt fett makiert:

Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 008: ID 1941:8021 Dream Link WH1080 Weather Station / USB Missile Launcher
Bus 001 Device 005: ID 0d8c:000c C-Media Electronics, Inc. Audio Adapter

Nur Audiogeräte anzeigen:

cat /proc/asound/cards

Jetzt muss man die alsa-base.conf bearbeiten:

nano /etc/modprobe.d/alsa-base.conf

Sucht die folgende Einstellung, setzt eine Raute am Anfang der Zeile:

#options snd-pcsp index=-2

Bei options snd-usb-audio index=-2 darf keine Raute am Anfang sein. Falls das aber so sein sollte, muss die Raute entfernen.

Datei Speichern und Soundcheck : )!!!
Da ich jetzt keine Lust habe Audiodatein zu kopieren, mache ich es mit folgenem Befehl:
speaker-test -t sine -f 440 -c 2 -s 1

Funktioniert die Soundausgabe, heißt das noch lange nicht, dass auch ein Mikrofone funktioniert.
Falls man nichts hören kann, muss noch ein wenig an der Konfiguration drehen werden.

alsamixer

alsamixer

Hier muss der Regler Mic eingestellt werden. Wird aus allen Versuchen nichts, bleibt nur noch, ein anderen Mikro zu probieren, um einen Hardware-Defekt auszuschließen. Ebenso sollten Sie sicherheitshalber noch einmal prüfen, ob das Mikrofon auch wirklich eingeschaltet ist.

WS1080 Wetterstationen mit Raspberry Pi

PYWWS ist ein Python Skript, um verschiedene Fine Offset Wetterstationen auszulesen. Diese Anleitung richtet sich für die Wetterstation WS1080 bzw. WH1080 mit Rasbian „wheezy“. Installiert wird das Ganze über Terminal(SSH). Die Wetterstation sollte vom USB noch getrennt sein.

Als Erstes sollte das System aktualisiert werden, dazu geben wir folgende Befehle ein:

sudo apt-get update && sudo apt-get upgrade

Folgende Paket müssen installiert werden:

sudo apt-get install libusb-1.0.0 git python-dev libudev-dev python-usb python-crypto python-paramiko gnuplot gettext sphinx-common

Jetzt kommt die eigentliche Software pywws:

mkdir ~/weather
cd ~/weather

git clone https://github.com/jim-easterbrook/pywws.git
cd pywws
python setup.py msgfmt
python setup.py build_sphinx

Jetzt kann die Wetterstation angeschlossen werden. Wir testen auch gleich, ob alles geklappt hat mit folgendem Befehl:

python -m pywws.TestWeatherStation

Wenn alles klappt sollte das Ergbnis ungefähr so aussehen:
0000 55 aa ff ff ff ff ff ff ff ff ff ff ff ff ff ff 05 20 02 21 09 00 00 00 00 7f 00 13 00 00 20 02
0020 97 27 ac 25 00 00 00 00 00 00 00 07 01 01 13 33 41 23 c8 00 00 00 46 2d 2b 01 64 80 c8 00 00 00
0040 64 00 64 80 a0 28 80 25 a0 28 80 25 00 b4 00 00 68 01 00 0a 00 f4 01 12 00 00 00 00 00 00 00 00
0060 00 00 45 0a 63 0a 68 01 81 00 cf 01 c0 80 cf 01 c0 80 a7 01 01 00 1a 27 d4 24 81 28 04 26 30 03
0080 ef 02 f4 ff f7 ff ee ff 4b fd 4e 2a 00 11 09 26 09 01 12 02 06 15 17 11 08 16 04 14 12 04 28 14
00a0 07 13 07 28 18 47 13 02 23 18 53 12 09 18 20 24 13 05 20 12 50 12 09 18 20 24 13 05 20 12 50 12
00c0 09 18 20 24 13 08 02 18 33 11 12 26 20 54 11 12 16 16 52 13 01 03 22 08 11 12 16 16 52 12 11 22
00e0 18 35 12 09 28 07 03 13 02 15 03 22 13 02 15 03 22 12 05 12 14 25 13 07 26 06 57 13 08 09 14 31

Damit ist die Installation abgeschlossen, ich wünsche viel Spaß :)!
Wie man mit pywws umgeht kann man hier nachlesen.

Ein und Ausschalter für Raspberry Pi

Leider kann Raspberry Pi nur mit Spannung gestartet werden, zum Ausschalten muss man „shutdown -h now“ im Terminal herunterfahren. Beim wieder Einschalten muss der Raspberry Pi von der Spannungsversorgung getrennt und wieder verbunden werden. Stecker ziehen verschleisst die micro-USB Buchse und diese sind bestimmt nicht für x mal ein-/ausstecken pro Tag ausgelegt. Ich habe hier eine einfache Schaltung für das Raspberry Pi Modell B Rev 2.0, die es ermöglicht per Tastendruck sauber Herunterzufahren und sich auf Kopfdruck wieder einschaltet.

Schaltplan

Schaltplan

Der erste Schalter ist für Hardreset bzw. zum Einschalten wenn der Rechner bereits aus ist. Schalter zwei ist zum Herunterfahren, hierfür ist mein Pythonscript notwendig. Die LED ist keine Power-LED! Die LED leuchtet nur wenn das Script läuft, beim Dücken der Herunterfahrtaste blinkt die LED zur Bestätigung. Der Hardreset sollte nur im Notfall verwendet werden, das kann das Dateisystem beschädigen. Reset ist nichts anderes, wie im laufenden Betrieb den Stecker ziehen!

Ich habe hier den P5 Header benutzt, damit der P1 frei für Module bleibt. Man kann aber auch P1 nutzen, dazu muss aber das Script angepasst werden! P6 muss aber nachgerüstet werden, ohne P6 ist das Einschalten nicht möglich.

Stückliste:
2 x Kurzhubtaster
1 x LED (3V)
1 x Lochrasterplatine
2 x 1 KOhm Widerstand
1 x 330 Ohm Widerstand
1 x 2-Pin Steckleiste (P6)
1 x 4-Pin Steckleiste (P5 Header)
6 x Jumperkabel

Schaltplan:

Tastendruck Herunterfahren / Reset

Tastendruck Herunterfahren / Reset

Raspberry Pi P6 und P5 header

Raspberry Pi P6 und P5 header

Software:

Dieses Python-Script runterladen und entpacken.

shutdown

Bei mir liegt die Datei im Verzeichniss /home/pi/Desktop/script/, dies kann aber von euch frei gewählt werden.
Die entpakte Datei muss nun für den Benutzer Root ausführbar gemacht werden.

chown root:root shutdown.py
chmod x shutdown.py

Damit das Script beim Neustart automatisch gestartet wird, muss die Datei rc.local angepasst werden.

vi /etc/rc.local

Die letzte Zeile sollte so aussehen:

exit 0

Vor dieser Zeile muss noch angegeben werden, wo das Script abgespeichert wurde.
Bei mir lautet die Zeile so:

python /home/pi/Desktop/script/shutdown.py &

Taster und LED fertig im Gehäuse

Taster und LED fertig im Gehäuse