Oder Du benutzt diesen Sketch und schließt solch einen RFID-Reader an. Funktioniert. Weitere Ausbaustufe wäre dann das hier.
Gruß
Uwe
Oder Du benutzt diesen Sketch und schließt solch einen RFID-Reader an. Funktioniert. Weitere Ausbaustufe wäre dann das hier.
Gruß
Uwe
Hallo Volker,
perfekt, das funktioniert. Nur die Semikolons müssen durch Hochkommas ersetzt werden.
Somit wird nun tatsächlich ein und dasselbe Bild einmal mit festem Dateinamen gespeichert und einmal mit dynamischem Namen. Super.
Vielen Dank.
Gruß
Uwe
Hallo,
das ist komplette Script, liegt unter "/usr/local/lib/python2.7/dist-packages/doorpi/action/SingleActions/"
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import logging
from doorpi.action.base import SingleAction
import doorpi
import subprocess as sub
import os
import datetime
import glob
logger = logging.getLogger(__name__)
logger.debug("%s loaded", __name__)
conf = doorpi.DoorPi().config
DOORPI_SECTION = 'DoorPi'
def get_last_snapshot(snapshot_path=None):
if not snapshot_path:
snapshot_path = conf.get_string_parsed(DOORPI_SECTION, 'snapshot_path', '/tmp')
files = sorted(glob.glob(os.path.join(snapshot_path, "*.*")), key=os.path.getctime)
if len(files) > 0:
return files[-1]
else:
return False
def get_next_filename(snapshot_path):
if not os.path.exists(snapshot_path):
os.makedirs(snapshot_path)
files = sorted(glob.glob(os.path.join(snapshot_path, "*.*")), key=os.path.getctime)
if len(files) > conf.get_int(DOORPI_SECTION, 'number_of_snapshots', 10):
try:
os.remove(os.path.join(snapshot_path, files[0]))
except OSError as exp:
logger.warning("couldn't delete snapshot file %s with error %s" % (files[0], exp))
return os.path.join(
snapshot_path,
datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")+".jpg"
)
def get_snapshot_from_picam(snapshot_path):
import picamera
filename = get_next_filename(snapshot_path)
with picamera.PiCamera() as camera:
camera.resolution = (1024, 768)
camera.capture(filename)
conf.set_value(DOORPI_SECTION, 'last_snapshot', filename)
return filename
def get_snapshot_from_url(snapshot_path, url):
import requests
filename = get_next_filename(snapshot_path)
r = requests.get(url, stream=True)
with open(filename, 'wb') as fd:
for chunk in r.iter_content(1024):
fd.write(chunk)
conf.set_value(DOORPI_SECTION, 'last_snapshot', filename)
return filename
def get(parameters=""):
snapshot_path = conf.get_string_parsed(DOORPI_SECTION, 'snapshot_path', '/tmp')
if parameters == "":
return SnapShotAction(get_snapshot_from_picam, snapshot_path=snapshot_path)
else:
return SnapShotAction(get_snapshot_from_url, snapshot_path=snapshot_path, url=parameters)
class SnapShotAction(SingleAction):
pass
Alles anzeigen
Gruß
Uwe
Danke für die Antwort und den Link, aber das ist auch nicht das, was ich brauche. Vielleicht drücke ich mich auch falsch aus...Das schon existierende und schon ein Bild von der Kamera holende Script "take_snapshot.py" soll mir nicht nur ein, sondern gleich zwei Bilddateien speichern, einmal mit dem Timstamp im Namen (das macht es jetzt bereits schon) und einmal mit einem festen Dateinamen ("blabla.jpg").
Mittlerweile bin ich auch weitergekommen und weiß, dass mit dieser Funktion
from time import sleep
from picamera import PiCamera
camera = PiCamera()
camera.resolution = (1024, 768)
camera.start_preview()
# Camera warm-up time
sleep(2)
camera.capture('foo.jpg')
ein Bild erstellt wird. Dieser Code findet sich auch so in etwa im "take_snapshot.py" wieder. Wenn ich als Python-Laie das anpasse und zusammenschreibe, macht das Script nicht, was es soll. Mit fehlen die tieferen Kenntnisse, um das zum Laufen zu bringen...
Gruß
Uwe
Danke, aber dafür muss ich den mjpg_streamer laufen haben, das ist nicht, was ich möchte. Das vorhandene Script erzeugt ja schon eine Imagedatei, nur mit fortlaufendem Timestamp-Namen. Das gleiche Script kann auch eine Datei mit festem Namen erzeugen, ich kenne nur nicht die genaue Syntax.
Bin ich tatsächlich der Einzige, der das Kamerabild an ein FritzFon senden will?
Das kuriose ist ja, dass es geht. Ich muss eben nur ein Kamerabild mit festem Dateinamen abspeichern...
Da ist ja mein Problem, ich weiß nicht, ob das so geht oder der Code ganz anders aussehen muss. Meine Ahnung davon hält sich in engen Grenzen...
Moin,
ich bin aus dem FHEM-Forum rübergeflutscht, weil ich mal eine spezielle Frage zu DoorPi habe. Meine Türsprechstelle mit FHEM-Anbindung funktioniert auch schon soweit, nun will ich das geschossene Kamerabild an mein FritzFon senden. Das funktioniert prinzipiell auch, aber das FritzFon kann nicht mit den unterschiedlichen DoorPi-Dateinamen, die aus Timestamps bestehen, umgehen. Der Fritzmann braucht einen konkreten Dateinamen im Format "image.jpg". Ist ja kein Problem, dachte ich mir. Die Definition der erzeugten Dateinamen findet sich in "take_snapshot.py" in Zeile 42. Ich wollte die Definition erweitern, so dass sowohl ein Bild mit Timestamp-Dateiname und eins mit dem festen Namen "haustuer.jpg" erzeugt wird.
Im wesentlichen müsste der Code dann so aussehen, so funktioniert es aber nicht. Mir fehlen irgendwo Klammern, Trenner oder was auch immer, bin trotz durchackern von Python-Tutorials nicht drauf gekommen...
Kann mir dabei jemand helfen?
Danke und Gruß
Uwe