Alias-Befehl im .bash_aliases zeigt keine Reaktion, Raspberry 3B Stretch
Verfasst: Mittwoch 3. September 2025, 12:11
Hi,
Ich brauche Hilfe.
Ein endlos laufendes Python-Skript wird über einen Alias-Befehl vom Terminal aus gestartet.
Der Alias-Befehl lautet: pidon und funktioniert einwandfrei.
Hier der Inhalt von .bash_alisaes
pi@pi3solar:~ $ cat .bash_aliases
alias pidon='sudo python3 /home/pi/aPy/test_scripts/GPIO/PID_EMAIL_3.py &'
alias pidoff='ps -elf | grep /home/pi/aPy/test_scripts/GPIO/PID_EMAIL_3.py | awk '{print $4}' | xargs sudo kill'
Der Alias-Befehl "pidoff" hingegen, funktioniert nicht, keine Reaktion!
Wenn die den Alias-Befehl representierende Komandozeile im Terminal Fenster
ausgeführt wird, dann stop das Script.
Hier ist das Python Script: (Ver.3.5.3)
#!/usr/bin/env python3
import RPi.GPIO as GPIO
from time import sleep, perf_counter
from datetime import datetime
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM) # is the GPIO-name, NOT the Pin
SW_GPIO = 12 # pin32 & pin30 is GND
GPIO.setup(SW_GPIO, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def email():
import smtplib
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.ehlo()
server.login("k10101305dak@gmail.com","vwkpeqgdwbarvjsg")
SUBJECT = "Warnung des Bewegungsmelders"
TEXT = "Achtung !! der Bewegungsmelder hat eine Bewegung erkannt."
msg = 'Subject: {}\n\n{}'.format(SUBJECT, TEXT)
#server.sendmail("k10101305dak@gmail.com","wallieschen@gmail.com", msg)
#server.sendmail("k10101305dak@gmail.com","wasserpop@gmx.de", msg)
server.quit()
print(' Email has been send:',datetime.now())
movement = 0
active = 0
wait = 180 #__in seconds when sleep < 1 sec__
start = perf_counter() - wait
loop = True
print(' Go -> ')
if __name__ == '__main__':
try:
while loop:
movement = GPIO.input(SW_GPIO)
#print('PIR',movement)
if movement == 1 and active == 0:
actual = perf_counter()
print(' movement',movement)
if actual - start > wait:
email()
active = 1
start = perf_counter()
elif movement == 0 and active == 1:
print(' PIR free')
active = 0
elif movement == 1 and active == 1:
print(' PIR blocked')
actual = perf_counter()
if actual - start > wait:
active = 0
sleep(0.3)
except KeyboardInterrupt:
loop = False
print('\n Bye')
GPIO.cleanup()
Hat jemand eine Idee warum, gibt es Alternativen?
Grüsse
Ich brauche Hilfe.
Ein endlos laufendes Python-Skript wird über einen Alias-Befehl vom Terminal aus gestartet.
Der Alias-Befehl lautet: pidon und funktioniert einwandfrei.
Hier der Inhalt von .bash_alisaes
pi@pi3solar:~ $ cat .bash_aliases
alias pidon='sudo python3 /home/pi/aPy/test_scripts/GPIO/PID_EMAIL_3.py &'
alias pidoff='ps -elf | grep /home/pi/aPy/test_scripts/GPIO/PID_EMAIL_3.py | awk '{print $4}' | xargs sudo kill'
Der Alias-Befehl "pidoff" hingegen, funktioniert nicht, keine Reaktion!
Wenn die den Alias-Befehl representierende Komandozeile im Terminal Fenster
ausgeführt wird, dann stop das Script.
Hier ist das Python Script: (Ver.3.5.3)
#!/usr/bin/env python3
import RPi.GPIO as GPIO
from time import sleep, perf_counter
from datetime import datetime
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM) # is the GPIO-name, NOT the Pin
SW_GPIO = 12 # pin32 & pin30 is GND
GPIO.setup(SW_GPIO, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def email():
import smtplib
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.ehlo()
server.login("k10101305dak@gmail.com","vwkpeqgdwbarvjsg")
SUBJECT = "Warnung des Bewegungsmelders"
TEXT = "Achtung !! der Bewegungsmelder hat eine Bewegung erkannt."
msg = 'Subject: {}\n\n{}'.format(SUBJECT, TEXT)
#server.sendmail("k10101305dak@gmail.com","wallieschen@gmail.com", msg)
#server.sendmail("k10101305dak@gmail.com","wasserpop@gmx.de", msg)
server.quit()
print(' Email has been send:',datetime.now())
movement = 0
active = 0
wait = 180 #__in seconds when sleep < 1 sec__
start = perf_counter() - wait
loop = True
print(' Go -> ')
if __name__ == '__main__':
try:
while loop:
movement = GPIO.input(SW_GPIO)
#print('PIR',movement)
if movement == 1 and active == 0:
actual = perf_counter()
print(' movement',movement)
if actual - start > wait:
email()
active = 1
start = perf_counter()
elif movement == 0 and active == 1:
print(' PIR free')
active = 0
elif movement == 1 and active == 1:
print(' PIR blocked')
actual = perf_counter()
if actual - start > wait:
active = 0
sleep(0.3)
except KeyboardInterrupt:
loop = False
print('\n Bye')
GPIO.cleanup()
Hat jemand eine Idee warum, gibt es Alternativen?
Grüsse