Skip to content

Instantly share code, notes, and snippets.

@hendrikhofstadt
Created February 26, 2018 11:53
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save hendrikhofstadt/fb72709ff5eb470c43c2d5ba509e7365 to your computer and use it in GitHub Desktop.
Save hendrikhofstadt/fb72709ff5eb470c43c2d5ba509e7365 to your computer and use it in GitHub Desktop.
import time
import RPi.GPIO as GPIO
import os
import picamera
from telethon import TelegramClient
# Pin an dem der Bewegungsmelder angeschlossen ist
sensor_port = 12
# Empfänger der Alarme (Telegram Nutzername)
alarm_recipient = ""
# Telegram aufsetzen
api_id = 0
api_hash = ''
# Client erstellen
client = TelegramClient('alarmanlage', api_id, api_hash)
client.start()
# Kamera vorbereiten
camera = picamera.PiCamera()
def alarm():
# Alarm versenden
client.send_message(alarm_recipient, 'Hallo. Eben wurde der Alarm ausgelöst. Du erhältst gleich ein Video!')
# Aufnahme starten
camera.start_recording('beweis.h264')
# Solange der Bewegunsmelder ausloest soll aufgenommen werden
# Die reine Auslösezeit kann an dem Potentiometer am Melder geändert werden
while GPIO.input(sensor_port) != 0:
time.sleep(1)
# alternativ camera.wait_recording(1)
# Aufnahme beenden
camera.stop_recording()
# Beweis umbenennen
os.system("MP4Box -fps 30 -add beweis.h264 -new beweis.mp4")
# Unkonvertierten Beweis löschen
os.remove("beweis.h264")
# Beweis versenden
client.send_file(alarm_recipient, 'beweis.mp4')
# Alarm beenden
client.send_message(alarm_recipient, 'Hallo Hendrik. Der Alarm wurde soeben beendet. Siehe Video ^|^')
# Setze Modus für Portzuweisung (siehe https://goo.gl/KnfQsT)
GPIO.setmode(GPIO.BOARD)
# IO Pin fuer Bewegungsmelder als Input konfigurieren
GPIO.setup(sensor_port, GPIO.IN)
while True:
if GPIO.input(sensor_port) == 0:
# Kein Alarm
time.sleep(1)
else:
# Alarm
alarm()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment