Raspberry Pi Sicherheitssystem mit Ultraschallsensor + Raspi

Du hast eine Idee für ein Projekt?
Peter123.
User
Beiträge: 2
Registriert: Dienstag 16. Mai 2017, 16:04

Raspberry Pi Sicherheitssystem mit Ultraschallsensor + Raspi

Beitragvon Peter123. » Dienstag 16. Mai 2017, 16:09

Hallo zusammen,
ich hätte da eine Frage und zwar habe ich ein Projekt am laufen das relativ ähnlich ist mit diesem Post. Es geht um einen Raspberry Pi mit einem Ultraschallsensor in Verbindung mit einer Raspberry Pi Kamera.Es geht halt darum das die Kamera ein Bild aufnehmen soll, sobald eine Bewegung durch den Ultraschallsensor in einer bestimmten Distanz erkannt wird. Anschließend sollte dieses Foto dann auf einen Server hochgeladen werden. Es würde mich sehr freuen wenn mir jemand bei der Interaktion helfen könnte.

Das Programm läuft nun, es macht ein Foto mit einem Zeitstempel sobald die Entfernung weniger als 20 cm beträgt.

Der Code sieht folgendermaßen aus:

CODE: SELECT ALL
  1. #Bibliotheken einbinden
  2. import RPi.GPIO as GPIO
  3. import time
  4.  
  5. #GPIO Modus (BOARD / BCM)
  6. GPIO.setmode(GPIO.BCM)
  7.  
  8. #GPIO Pins zuweisen
  9. GPIO_TRIGGER = 18
  10. GPIO_ECHO = 24
  11.  
  12. #Richtung der GPIO-Pins festlegen (IN / OUT)
  13. GPIO.setup(GPIO_TRIGGER, GPIO.OUT)
  14. GPIO.setup(GPIO_ECHO, GPIO.IN)
  15.  
  16. def distanz():
  17.    # setze Trigger auf HIGH
  18.    GPIO.output(GPIO_TRIGGER, True)
  19.  
  20.    # setze Trigger nach 0.01ms aus LOW
  21.    time.sleep(0.00001)
  22.    GPIO.output(GPIO_TRIGGER, False)
  23.  
  24.    StartZeit = time.time()
  25.    StopZeit = time.time()
  26.  
  27.    # speichere Startzeit
  28.    while GPIO.input(GPIO_ECHO) == 0:
  29.        StartZeit = time.time()
  30.  
  31.    # speichere Ankunftszeit
  32.    while GPIO.input(GPIO_ECHO) == 1:
  33.        StopZeit = time.time()
  34.  
  35.    # Zeit Differenz zwischen Start und Ankunft
  36.    TimeElapsed = StopZeit - StartZeit
  37.    # mit der Schallgeschwindigkeit (34300 cm/s) multiplizieren
  38.    # und durch 2 teilen, da hin und zurueck
  39.    distanz = (TimeElapsed * 34300) / 2
  40.  
  41.    return distanz
  42.  
  43. if __name__ == '__main__':
  44.    try:
  45.        while True:
  46.            abstand = distanz()
  47.            print ("Gemessene Entfernung = %.1f cm" % abstand)
  48.            time.sleep(1)
  49.  
  50.        # Beim Abbruch durch STRG+C resetten
  51.    except KeyboardInterrupt:
  52.        print("Messung vom User gestoppt")
  53.        GPIO.cleanup()


Und der 2. Code

CODE: SELECT ALL
  1. # -*- coding: utf-8 -*-
  2. import sys
  3. import os
  4. import picamera
  5. import sensor
  6. import RPi.GPIO as GPIO
  7. import time
  8. import subprocess
  9. GPIO.setwarnings(False)
  10. GPIO.setmode(GPIO.BCM)
  11. ## hier die Distanz eingeben
  12. leer=20
  13.  
  14. def main():
  15.   trig_pin = 18 ##GPIO Trigger
  16.   echo_pin = 24 ##GPIO ECHO
  17.  
  18.   while True:
  19.       value = sensor.distanz()
  20.       print("Gemessene Entfernung =%.1f cm" % value)
  21.       time.sleep(2)
  22.       if value <= 20:
  23.          timestr = time.strftime("%Y%m%d-%H%M%S")
  24.          camera = picamera.PiCamera()
  25.          camera.start_preview()
  26.          time.sleep(5)
  27.          camera.capture('bild_{}.jpg'.format(timestr))
  28.          camera.stop_preview()
  29.          camera.close()
  30.          
  31.             ##p = subprocess.Popen(["./foto2.sh"])
  32.             ##time.sleep(2)
  33. if __name__ == "__main__":
  34.   main()


Ich möchte jetzt, dass das das ganze auf einem Webserver darstellen. Das heißt das Foto soll automatisch auf dem Webserver hochgeladen werden und es soll eine Tabellendarstellung geben auf dem Webserver der z.B. in der ersten Spalte eine Nummerierung hat (1,2,3,4,5 usw) und in der 2. Spalte dann die Dateiname von dem Hochgeladenen Foto also in meinem Fall einfach Timestamp -- Vielleicht muss ich einfach eine CSV Datei erzeugen lassen vom Python Programm. Ich weiß nicht, wie ich vorgehen soll. Könnt ihr mir weiterhelfen, eventuell Code umschreiben ?

Ein Php-code habe ich dazu schon vorbereitet komme aber nicht weiter

CODE: SELECT ALL
  1. <?php
  2.  
  3.  
  4. $error=0;
  5. // Prüfen ob GET Variable vorhanden
  6. if (isset($_GET)) {
  7. //Daten auslesen
  8. $ts = $_GET[ 'timestamp' ];
  9.  
  10.  
  11.  //Eingaben überprüfen
  12.  // Timestamp Format 2016-05-23-14-54-12
  13.  $tsRegex = "/^[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{2}$/";
  14.  if (preg_match($tsRegex, $ts)) {
  15.    //echo "timestamp in ordnung<br>";
  16.  } else {
  17.    //echo "timestamp fehlerhaft<br>";
  18.    $error=1;
  19.  }
  20.  
  21. }
  22.  
  23. // Wenn Eingaben in Ordnung CSV Datei schreiben
  24. // Rückgabewert 0 = ok , 1 = Error
  25. if ($error == 0){
  26.  $Logdatei='sensordaten.csv';
  27.  $Ausgabe="$ts;$ip\n";
  28.  $fh=fopen($Logdatei,"a");
  29.  fwrite($fh,$Ausgabe);
  30.  fclose($fh);
  31.  //echo "Kein Error -> $ts log: $Logdatei - $fh - $Ausgabe";
  32.  return 0;
  33. } else {
  34.  //echo "Error";
  35.  return 1;
  36. }
  37. ?>



Fazit
Das PHP-Skript wird über das Python-Programm von dem Raspberry Pi aufgerufen. Der Webservice empfängt über einen Query-String (GET-Methode) eine Zeile mit den Daten. Weiß nicht so genau wie ich es hinbekommen soll.

Danke schonmal :)
Zuletzt geändert von Anonymous am Dienstag 16. Mai 2017, 16:21, insgesamt 1-mal geändert.
Grund: Quelltext in Codebox-Tags gesetzt.
Benutzeravatar
__deets__
User
Beiträge: 1100
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: Raspberry Pi Sicherheitssystem mit Ultraschallsensor + Raspi

Beitragvon __deets__ » Dienstag 16. Mai 2017, 16:33

Ich bin ja immer fasziniert von dieser Code-Abgreifer-Mentalitaet im Raspberry PI Lager. Keine Ahnung zu haben ist ja nicht weiter schlimm, aber zu erwarten, andere wuerden einem die gestellte Aufgabe loesen - wo sonst ist das eigentlich so?

Im dazugehoerigen Forum findet sich die Frage ja auch schon: http://www.forum-raspberrypi.de/Thread- ... r-raspicam

Zu deiner Frage: eine CSV-Datei zu schreiben kann man machen, notwendig ist es aber nicht, da die Dateien ja schon alle Informationen haben - es gibt ja das Erstellungsdatum. Siehe die PHP Dateifunktionen:

http://php.net/manual/en/ref.filesystem.php

Da kannst du die Liste der Bilder bekommen, deren Datum rausfinden, danach sortieren - und fertig. Aber da das PHP ist, frag doch auch noch mal in einem Forum dafuer nach :twisted:
Peter123.
User
Beiträge: 2
Registriert: Dienstag 16. Mai 2017, 16:04

Re: Raspberry Pi Sicherheitssystem mit Ultraschallsensor + Raspi

Beitragvon Peter123. » Dienstag 16. Mai 2017, 16:50

__deets__ hat geschrieben:Ich bin ja immer fasziniert von dieser Code-Abgreifer-Mentalitaet im Raspberry PI Lager. Keine Ahnung zu haben ist ja nicht weiter schlimm, aber zu erwarten, andere wuerden einem die gestellte Aufgabe loesen - wo sonst ist das eigentlich so?

Im dazugehoerigen Forum findet sich die Frage ja auch schon: http://www.forum-raspberrypi.de/Thread- ... r-raspicam

Zu deiner Frage: eine CSV-Datei zu schreiben kann man machen, notwendig ist es aber nicht, da die Dateien ja schon alle Informationen haben - es gibt ja das Erstellungsdatum. Siehe die PHP Dateifunktionen:

http://php.net/manual/en/ref.filesystem.php

Da kannst du die Liste der Bilder bekommen, deren Datum rausfinden, danach sortieren - und fertig. Aber da das PHP ist, frag doch auch noch mal in einem Forum dafuer nach :twisted:



Der andere Beitrag in dem anderen Forum wurde auch von mir verfasst :D

Ich danke dir für deine Antwort, so wie ich es verstanden habe lasse ich also einfach alle Bilder auf dem Webserver hochladen und eine Liste erzeugen lassen mit den dazugehörigen Dateinamen. Du hast recht, dann ist keine CSV-Datei erforderlich.
lackschuh
User
Beiträge: 265
Registriert: Dienstag 8. Mai 2012, 13:40

Re: Raspberry Pi Sicherheitssystem mit Ultraschallsensor + Raspi

Beitragvon lackschuh » Dienstag 16. Mai 2017, 16:57

Du könntest die Sensorabfrage noch verkürzen:
https://gpiozero.readthedocs.io/en/stab ... nce-sensor

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder