Git Product home page Git Product logo

photobooth-app / photobooth-app Goto Github PK

View Code? Open in Web Editor NEW
71.0 3.0 13.0 137.48 MB

Photobooth app supporting DSLR, Raspberry Pi cameras and webcams. Optimized for speed, written in 🐍.

Home Page: https://photobooth-app.org/

License: MIT License

Python 96.66% Shell 0.07% PHP 2.74% Dockerfile 0.32% CSS 0.02% JavaScript 0.02% HTML 0.17%
dslr photobooth picamera2 python3 raspberry-pi camera python gphoto2 libgphoto2 3d-printing collage diy photobooth-wedding picamera

photobooth-app's Introduction

photobooth app logo

Welcome to your brand-new open-source photobooth-app! Written in Python 🐍, coming along with a modern Vue3 frontend.

PyPI python versions supported 3.9, 3.10, 3.11 rpi, linux and windows platform supported ruff pytest codecov Crowdin

Installation - Documentation - PyPI package - 3d printed box

😍 Features

πŸ“· capture stills, animated gif, collages and even πŸ“Ή videos!
πŸŽ‰ camera live preview with shortest delay as possible, permanent video live view in background
πŸ›« optimized for speed, highly response UI
🫢 several camera backends supported for high quality stills and livestream
πŸ’‘ WLED support signaling photo countdown and feedback to the user when the photo is actually taken
🀝 Linux 🐧, Raspberry Pi πŸ“ and Windows πŸͺŸ platforms supported
πŸ”“ Open-source, non-restrictive MIT license

πŸ“· Supported Cameras

The photobooth app's Python backend allows to use different camera types on Linux and Windows platforms:

  • Raspberry Pi Camera Module 1/2/3 (with or without autofocus)
  • Arducam cameras (with or without autofocus, not preferred because separate installation)
  • DSLR camera via
    • gphoto2, Linux
    • digicamcontrol, Windows
  • Webcameras (via opencv2 or v4l)

The app controls camera's autofocus, handles led signaling when a photo is taken and streams live video to photobooth.

The reference photobooth box is made from 3d printed parts, see the 3d printed reference box over here.

πŸ’… Screenshots

Find screenshots in the documentation

πŸ”§ Installation

See separate installation instructions in the documentation.

©️ License

The software is licensed under the MIT license.

πŸŽ‰ Donation

If you like my work and like to keep me motivated you can sponsor me:

Donate

Or help translate the software in your language.

photobooth-app's People

Contributors

dependabot[bot] avatar dominicwindisch avatar mart-e avatar mgineer85 avatar peda1996 avatar pixelalarm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

photobooth-app's Issues

Phtoboothproject live

Hi,
Moving forward and very impressed about this tool.
I have some concerns to get the live view working in photobooth but probably it is not related to this app. I can not get it on the interface whereas it take a correct picture. Here is my setup:
LIVE PREVIEW

Preview mode: from URL (remote preview)
Execute start command for preview on take picture/collage: Off
Time before the countdown ends to execute the preview stop command: 2second(s)
Capture image from preview from device cam: Off
Preview style: scale-down
Flip preview from device cam: off
Rotate preview: No rotation
Preview-URL: url(<http://localhost:8000/stream.mjpg>)
Device cam picture width: 1280
Device cam picture height: 720
Camera facing mode: Back facing camera
Use preview from device cam as background: On
Show frame over the preview: On

USER INTERFACE
Background image path: url(<http://photobooth:8000/stream.mjpg>)

COMMANDS

Take picture command: curl -X POST http://localhost:8000/cmd/capture -H 'accept: application/json' -H 'Content-Type: application/json' -d '"%s"'
Success message for take picture: Done
Pre-photo script / command: curl http://localhost:8000/cmd/frameserver/capturemode
Post-photo script / command: curl http://localhost:8000/cmd/frameserver/previewmode
Print command: lp -o landscape -o fit-to-page %s
Success message for print
EXIFtool command: exiftool -overwrite_original -TagsFromFile %s %s
Success message for EXIF preservation:
Command to generate a live preview: 
Command to kill live preview: 
Node.js Executable Path: /usr/bin/node
Reboot command: /sbin/shutdown -r now
Shutdown command: /sbin/shutdown -h now

Did I missed domething?

Filter apply in gallery on collage

Describe the bug
When apply filter to collage its treated like 1pic.
Filter shall not be avail for collages to the user.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

System (please complete the following information):

  • OS: [e.g. Raspberry Pi Bookworm 64bit]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Feature Request: Dynamic ISO Setting for Live View and Photo Capture with EOS 2000D on gphoto2 Backend

I am proposing the implementation of a dynamic ISO setting feature for the Photobooth-App when using the Canon EOS 2000D camera with the gphoto2 backend. This feature is especially important as the EOS 2000D does not support auto-brightness in live view mode, leading to challenges in achieving the correct exposure during live view and photo capture.

Problem Statement

Currently, when setting a fixed ISO value, the live view tends to be either too dark (if the ISO is set low) or the final photo is overexposed (if the ISO is set high, especially when using an external flash).

Proposed Workflow

  1. Auto ISO in Live View: When the camera is in live view mode, set the ISO to auto. This will allow the camera to automatically adjust the ISO based on the ambient light, providing a clearer and more accurately exposed live view image for the user.
  2. Fixed ISO for Photo Capture: When the user captures the photo, switch the ISO setting from auto to a predefined fixed value. This ensures that the photo is taken with a consistent exposure setting, suitable for the lighting conditions and the use of external flash if any.

Autostart App

Hi,

Thanks for the project. Is this supposed to start automatically at boot or do we need to setup it via a service?
Any recommendation on how to do it?
Thanks

Originally posted by @mart-e in #72

Hide only the picture icon

Discussed in #99

Originally posted by laguinch October 24, 2023
Hy, is it possible to disable the collage icon on the panel like the admin icon ? Thx

Issue with Image Flipping in Photobooth-App libphoto2 Backend

The image flipping feature is not functioning correctly in the Photobooth-App when using the Canon EOS 2000D camera. The application utilizes the libphoto2 backend. When the flipping feature is activated, either no change occurs, or the feature does not respond at all.

Steps to Reproduce

Set up the Photobooth-App with a Canon EOS 2000D camera.
Ensure that the app is configured to use the libphoto2 backend.
Attempt to use the image flipping feature within the app.

Expected Behavior

The image should flip horizontally, allowing for a mirrored effect as typically seen in photobooth applications.

Actual Behavior

The flipping feature does not alter the image. No error messages are displayed, and the app continues to function normally aside from this issue.

Proposed Solutions

Adjustment in gphoto2 Backend: Investigate the integration with the libphoto2 backend. It might be possible that the flipping functionality is not properly implemented or there is a compatibility issue with the EOS 2000D model.
CSS-Based Flipping: As a workaround or alternative solution, implement the flipping feature using CSS. This approach would flip the image on the frontend. After the image capture, process the image to apply a permanent flip before saving or further processing. This method ensures the flipped image is consistent throughout the application's workflow.

First start error

Empty folders are not created correctly on first run.
Not an issue but gives warning messages.

Pipelines: Stage filters like instagram

  • 1st implementation in dev.
  • made default filter configurable
  • performance optimized, pipeline on RPI4 usually less than a second.
  • update frontend to allow choosing different filters

Features comparison

Feature PhotoboothApp PhotoboothProject PiBooth
first version release 2023 2016 2017
Stars GitHub Repo stars GitHub Repo stars GitHub Repo stars
Community ⏺️ new software, visit discussions βœ… ❌ issue tracker only
Reference system incl Box design βœ… ❌ ❌
Dev
Platforms Windows, Linux, Raspberry Pi Windows, Linux, Raspberry Pi Raspberry Pi, Linux (buster)
Stack runtime python, vue-webapp apache+php, html-webapp python+pygame, desktop app
Installable package βœ… ⏺️ install script βœ…
Automated testing including hardware βœ… ❌ ❌
Camera and Image Features
Cameras DSLR, Webcam, Pi Camera Modules DSLR, Webcam, Pi Camera Modules DSLR, Webcam, Pi Camera Modules
Camera Backends Integrated gphoto2, picamera2, v4l2py, opencv2 all via cli commands gphoto2, picamera, opencv2
Camera live preview βœ… ⏺️ 3rd party apps ❌
Take Picture βœ… βœ… βœ…
Collagen ❌ βœ… βœ…
Video ❌ ❌ ❌
Chromakeying ❌ βœ… ❌
Image Filter βœ…(instagram-like) βœ… βœ…
Gallery
Gallery local display βœ… βœ… ❌
Gallery external via IP βœ… βœ… ❌
Sync images to USB drive ❌ βœ… ❌
Share images online βœ… QR code ⏺️ external script βœ… external service
Personalization
Customizable Theme ❌ βœ… ❌
Translatable ❌ βœ… βœ…
Printing βœ… βœ… βœ…
Peripheral Hardware Integration
Configurable GPIO trigger (RPI) βœ… βœ… βœ…
Configurable keyboard trigger βœ… βœ… ❌
ws281x to signal capture βœ… (using WLED integrated) ❌ ❌
Admin
Admin Backend βœ… βœ… ❌
Plugin Architecture ❌ ❌ βœ…

Bug Report: Application Crash on Image Capture Failure in gphoto2 Backend

Description

The application crashes when attempting to capture an image using the gphoto2 backend, specifically when the image is black, and the maximum retry limit of 3 is reached. This issue typically occurs when the camera, such as the Canon EOS 2000D, is unable to find focus and fails to take a picture, likely leading to a timeout. An HTTP Exception is raised with the error message: 'NoneType' object has no attribute 'create_fileset_unprocessed' (originating from application.py). Subsequently, the application requires a restart to resume functionality.

Steps to Reproduce

  1. Configure the application with a Canon EOS 2000D camera using the gphoto2 backend.
  2. Attempt to capture an image in conditions where the camera cannot find focus, leading to a black image output.
  3. Observe the behavior of the application as it retries image capture up to the maximum limit (3 attempts).

Expected Behavior

The application should handle the failure gracefully, logging the error without crashing. It should then just end the cycle.

Actual Behavior

The application crashes after failing to capture an image within 3 attempts, raising an HTTP Exception related to a 'NoneType' object and necessitating a restart.

Error Messages

2023-12-12 12:32:54,086 [CRITICAL] finally failed after 3 attempts to capture image! (processingservice.py:182)
2023-12-12 12:32:54,086 [   ERROR] finally failed after 3 attempts to capture image! (processingservice.py:310)
Traceback (most recent call last):
  File "/home/fotobox/.local/lib/python3.10/site-packages/photobooth/services/processingservice.py", line 308, in start_job_1pic
    self.start(JobModel.Typ.image, 1)
  File "/home/fotobox/.local/lib/python3.10/site-packages/statemachine/event.py", line 54, in trigger_event
    return event_instance.trigger(self, *args, **kwargs)
  File "/home/fotobox/.local/lib/python3.10/site-packages/statemachine/event.py", line 29, in trigger
    return machine._process(trigger_wrapper)
  File "/home/fotobox/.local/lib/python3.10/site-packages/statemachine/statemachine.py", line 288, in _process
    return self._processing_loop()
  File "/home/fotobox/.local/lib/python3.10/site-packages/statemachine/statemachine.py", line 303, in _processing_loop
    result = trigger()
  File "/home/fotobox/.local/lib/python3.10/site-packages/statemachine/event.py", line 27, in trigger_wrapper
    return self._trigger(trigger_data)
  File "/home/fotobox/.local/lib/python3.10/site-packages/statemachine/event.py", line 39, in _trigger
    if transition.execute(event_data):
  File "/home/fotobox/.local/lib/python3.10/site-packages/statemachine/transition.py", line 140, in execute
    result = machine._activate(event_data)
  File "/home/fotobox/.local/lib/python3.10/site-packages/statemachine/statemachine.py", line 336, in _activate
    self._callbacks_registry[target.enter].call(
  File "/home/fotobox/.local/lib/python3.10/site-packages/statemachine/callbacks.py", line 228, in call
    return [
  File "/home/fotobox/.local/lib/python3.10/site-packages/statemachine/callbacks.py", line 229, in <listcomp>
    callback(*args, **kwargs)
  File "/home/fotobox/.local/lib/python3.10/site-packages/statemachine/callbacks.py", line 29, in __call__
    result = self._callback(*args, **kwargs)
  File "/home/fotobox/.local/lib/python3.10/site-packages/statemachine/dispatcher.py", line 48, in __call__
    return self._cache(*args, **kwds)
  File "/home/fotobox/.local/lib/python3.10/site-packages/statemachine/signature.py", line 56, in method_wrapper
    return method(*ba.args, **ba.kwargs)
  File "/home/fotobox/.local/lib/python3.10/site-packages/photobooth/services/processingservice.py", line 183, in on_enter_capture
    raise RuntimeError(f"finally failed after {MAX_ATTEMPTS} attempts to capture image!")
RuntimeError: finally failed after 3 attempts to capture image!
2023-12-12 12:32:54,088 [    INFO] start postprocessing phase 1 (processingservice.py:196)
2023-12-12 12:32:54,088 [    INFO] postprocessing last capture: mediaitem=None (processingservice.py:200)
2023-12-12 12:32:54,088 [CRITICAL] 'NoneType' object has no attribute 'create_fileset_unprocessed' (processing.py:31)
2023-12-12 12:32:54,088 [   ERROR] HTTPException: HTTPException(status_code=500, detail="something went wrong, Exception: 'NoneType' object has no attribute 'create_fileset_unprocessed'") (application.py:91)
2023-12-12 12:32:54,089 [    INFO] 127.0.0.1:46652 - "GET /processing/chose/1pic HTTP/1.1" 500 (h11_impl.py:478)
2023-12-12 12:32:54,153 [   ERROR] error capture lores image for stream. timeout expired attempt=3/3, retrying (abstractbackend.py:141)
2023-12-12 12:32:54,153 [CRITICAL] critical error getting stream. failed to get lores image after 3 attempts. giving up! (abstractbackend.py:149)
2023-12-12 12:32:54,766 [    INFO] (gp_camera_capture [gphoto2-camera.c:1339]) 'camera->functions->capture (camera, type, path, context)' failed: -110 (port_log.py:20)
2023-12-12 12:32:54,768 [CRITICAL] error capture! check logs for errors. [-110] I/O in progress (gphoto2.py:285)

Additional Information

  • This issue has been consistently reproducible under specific conditions with the Canon EOS 2000D.

App crash when I enable the GPIO option

Discussed in #109

Originally posted by laguinch October 27, 2023
hy, the app crash when I enable the gpio option on my bulleye and rpi4 installation

photobooth
added provider for picamera2 backend
added provider for gphoto2 backend
added provider for webcamv4l backend
2023-10-27 11:56:44,172 [ DEBUG] loggingservice init basicConfig set (loggingservice.py:95)
2023-10-27 11:56:44,172 [ DEBUG] loggingservice init started (loggingservice.py:96)
2023-10-27 11:56:44,173 [ DEBUG] loggingservice init finished (loggingservice.py:130)
2023-10-27 11:56:44,176 [ DEBUG] registered handlers: [<StreamHandler (NOTSET)>, <FileHandler /home/pi/log/photobooth_20231027.log (NOTSET)>, <EventstreamLogHandler (NOTSET)>] (loggingservice.py:131)
2023-10-27 11:56:44,579 [ INFO] photobooth directory: /home/pi/.local/lib/python3.9/site-packages/photobooth (main.py:81)
2023-10-27 11:56:44,580 [ INFO] working directory: /home/pi (main.py:83)
2023-10-27 11:56:44,581 [ INFO] app version started: 0.11.0 (main.py:84)
2023-10-27 11:56:44,671 [ INFO] loading autofocus module: picamera2_LibcamAfContinuous (picamera2_.py:94)
2023-10-27 11:56:44,671 [ INFO] photobooth.services.backends.picamera2_libcamafcontinuous initialized (picamera2_libcamafcontinuous.py:41)
[0:04:38.596498746] [4858] INFO Camera camera_manager.cpp:297 libcamera v0.0.0+4367-ad9428b4
[0:04:38.648052011] [4865] INFO RPI vc4.cpp:444 Registered camera /base/soc/i2c0mux/i2c@1/imx519@1a to Unicam device /dev/media4 and ISP device /dev/media0
[0:04:38.648136341] [4865] INFO RPI pipeline_base.cpp:1101 Using configuration file '/usr/share/libcamera/pipeline/rpi/vc4/rpi_apps.yaml'
2023-10-27 11:56:44,727 [ INFO] Initialization successful. (picamera2.py:428)
2023-10-27 11:56:44,727 [ INFO] Camera now open. (picamera2.py:449)
2023-10-27 11:56:44,732 [ DEBUG] change to preview mode requested (picamera2_.py:309)
2023-10-27 11:56:44,734 [ INFO] Camera configuration has been adjusted! (picamera2.py:940)
[0:04:38.658986887] [4858] INFO Camera camera.cpp:1033 configuring streams: (0) 2328x1748-XBGR8888 (1) 1280x720-YUV420 (2) 2328x1748-SBGGR10_CSI2P
[0:04:38.659698142] [4865] INFO RPI vc4.cpp:572 Sensor: /base/soc/i2c0mux/i2c@1/imx519@1a - Selected sensor format: 2328x1748-SBGGR10_1X10 - Selected unicam format: 2328x1748-pBAA
2023-10-27 11:56:44,737 [ INFO] Configuration successful! (picamera2.py:945)
2023-10-27 11:56:44,768 [ INFO] camera_config: {'use_case': 'video', 'transform': <libcamera.Transform 'hvflip'>, 'colour_space': <libcamera.ColorSpace 'Rec709'>, 'buffer_count': 2, 'queue': True, 'main': {'format': 'XBGR8888', 'size': (2328, 1748), 'stride': 9344, 'framesize': 16333312}, 'lores': {'format': 'YUV420', 'size': (1280, 720), 'stride': 1280, 'framesize': 1382400}, 'raw': {'format': 'SBGGR10_CSI2P', 'size': (2328, 1748), 'stride': 2912, 'framesize': 5090176}, 'controls': {'NoiseReductionMode': <NoiseReductionModeEnum.Fast: 1>, 'FrameDurationLimits': (33333, 33333)}, 'display': 'lores', 'encode': 'lores'} (picamera2_.py:173)
2023-10-27 11:56:44,769 [ INFO] camera_controls: {'ColourGains': (0.0, 32.0, None), 'AfMetering': (0, 1, 0), 'AnalogueGain': (1.0, 16.0, None), 'Saturation': (0.0, 32.0, 1.0), 'Contrast': (0.0, 32.0, 1.0), 'AeMeteringMode': (0, 3, 0), 'AfMode': (0, 2, 0), 'AeConstraintMode': (0, 3, 0), 'AeEnable': (False, True, None), 'ExposureTime': (305, 0, None), 'AfPause': (0, 2, 0), 'AfRange': (0, 2, 0), 'NoiseReductionMode': (0, 4, 0), 'ScalerCrop': ((0, 0, 128, 128), (0, 0, 4656, 3496), (0, 0, 4656, 3496)), 'Sharpness': (0.0, 16.0, 1.0), 'AwbEnable': (False, True, None), 'FrameDurationLimits': (33333, 127960799, None), 'ExposureValue': (-8.0, 8.0, 0.0), 'AwbMode': (0, 7, 0), 'AeExposureMode': (0, 3, 0), 'AfSpeed': (0, 1, 0), 'AfTrigger': (0, 1, 0), 'AfWindows': ((0, 0, 0, 0), (65535, 65535, 65535, 65535), (0, 0, 0, 0)), 'Brightness': (-1.0, 1.0, 0.0), 'LensPosition': (0.0, 32.0, 1.0)} (picamera2_.py:174)
2023-10-27 11:56:44,769 [ INFO] controls: <Controls: {'NoiseReductionMode': <NoiseReductionModeEnum.Fast: 1>, 'FrameDurationLimits': (33333, 33333)}> (picamera2_.py:175)
2023-10-27 11:56:44,770 [ INFO] set_ae_exposure, try to set to 1 (picamera2_.py:319)
2023-10-27 11:56:44,771 [ INFO] current picamera2.controls.get_libcamera_controls():{libcamera.ControlId(39, NoiseReductionMode, ControlType.Integer32): <NoiseReductionModeEnum.Fast: 1>, libcamera.ControlId(25, FrameDurationLimits, ControlType.Integer64): (33333, 33333), libcamera.ControlId(5, AeExposureMode, ControlType.Integer32): 1} (picamera2_.py:326)
2023-10-27 11:56:44,771 [ INFO] stream quality Quality[self.config.backends.picamera2_stream_quality.name]=<Quality.MEDIUM: 2> (picamera2.py:178)
2023-10-27 11:56:44,983 [ INFO] Camera started (picamera2.py:1026)
2023-10-27 11:56:44,985 [ INFO] photobooth.services.backends.picamera2_libcamafcontinuous init_autofocus call (picamera2_libcamafcontinuous.py:72)
2023-10-27 11:56:44,986 [ INFO] libcamautofocus set to continuous mode (picamera2_libcamafcontinuous.py:75)
2023-10-27 11:56:44,986 [ INFO] libcamautofocus AfSpeed set to fast mode (picamera2_libcamafcontinuous.py:81)
2023-10-27 11:56:45,263 [ DEBUG] photobooth.services.backends.picamera2
started (picamera2_.py:209)
2023-10-27 11:56:45,264 [ INFO] init self.primary_backend=<class 'photobooth.services.backends.picamera2_.Picamera2Backend'> (aquisitionservice.py:39)
2023-10-27 11:56:45,264 [ INFO] init self.secondary_backend=None (aquisitionservice.py:40)
2023-10-27 11:56:45,269 [ INFO] init database and creating missing scaled images. this might take some time. (mediacollectionservice.py:58)
2023-10-27 11:56:45,278 [ INFO] initialized image DB, added 1 valid images (mediacollectionservice.py:75)
2023-10-27 11:56:45,279 [ INFO] -- process time: 0.01s to initialize mediacollection (mediacollectionservice.py:76)
2023-10-27 11:56:45,286 [ INFO] on_enter_state self.current_state.id='idle' (processingservice.py:91)
2023-10-27 11:56:45,287 [ INFO] state idle entered. (processingservice.py:105)
2023-10-27 11:56:45,304 [ ERROR] Uncaught exception: <class 'RuntimeError'> Not running on a RPi! (loggingservice.py:195)
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 101, in pin
pin = self.pins[n]
KeyError: 17

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/pi/.local/bin/photobooth", line 8, in
sys.exit(main())
File "/home/pi/.local/lib/python3.9/site-packages/photobooth/main.py", line 91, in main
application_container.services().gpio_service.init()
File "src/dependency_injector/providers.pyx", line 3786, in dependency_injector.providers.Resource.init
File "src/dependency_injector/providers.pyx", line 225, in dependency_injector.providers.Provider.call
File "src/dependency_injector/providers.pyx", line 3865, in dependency_injector.providers.Resource._provide
File "/home/pi/.local/lib/python3.9/site-packages/photobooth/services/containers.py", line 67, in init_gpio_resource
resource = GpioService(
File "/home/pi/.local/lib/python3.9/site-packages/photobooth/services/gpioservice.py", line 54, in init
self.init_io()
File "/home/pi/.local/lib/python3.9/site-packages/photobooth/services/gpioservice.py", line 63, in init_io
self.shutdown_btn = Button(
File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 108, in call
self = super(GPIOMeta, cls).call(*args, **kwargs)
File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 414, in init
super(Button, self).init(
File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 433, in init
super(HoldMixin, self).init(*args, **kwargs)
File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 165, in init
super(DigitalInputDevice, self).init(
File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 218, in init
super(EventsMixin, self).init(*args, **kwargs)
File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 83, in init
super(InputDevice, self).init(pin, pin_factory=pin_factory)
File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 549, in init
pin = self.pin_factory.pin(pin)
File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 103, in pin
pin = self.pin_class(self, n)
File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 111, in init
GPIO.setup(self.number, GPIO.IN, self.GPIO_PULL_UPS[self._pull])
RuntimeError: Not running on a RPi!

install on 32 bit system failed (numpy wheel)

mennes@raspberrypi:~ $ pip install photobooth-app
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting photobooth-app
Using cached https://www.piwheels.org/simple/photobooth-app/photobooth_app-0.9.1-py3-none-any.whl (8.9 MB)
Collecting dependency-injector~=4.41.0 (from photobooth-app)
Using cached https://www.piwheels.org/simple/dependency-injector/dependency_injector-4.41.0-cp39-cp39-linux_armv7l.whl (4.0 MB)
Collecting fastapi<0.104.0,>=0.100.0 (from photobooth-app)
Using cached https://www.piwheels.org/simple/fastapi/fastapi-0.103.2-py3-none-any.whl (66 kB)
Collecting gphoto2~=2.5.0 (from photobooth-app)
Using cached https://www.piwheels.org/simple/gphoto2/gphoto2-2.5.0-cp39-cp39-linux_armv7l.whl (1.2 MB)
Requirement already satisfied: gpiozero~=1.6.2 in /usr/lib/python3/dist-packages (from photobooth-app) (1.6.2)
Collecting jsonref~=1.1.0 (from photobooth-app)
Using cached https://www.piwheels.org/simple/jsonref/jsonref-1.1.0-py3-none-any.whl (9.4 kB)
Collecting numpy>=1.25.0 (from photobooth-app)
Using cached numpy-1.26.0.tar.gz (15.6 MB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... done
Preparing metadata (pyproject.toml) ... error
error: subprocess-exited-with-error

Γ— Preparing metadata (pyproject.toml) did not run successfully.
β”‚ exit code: 1
╰─> [47 lines of output]
+ /usr/bin/python3 /tmp/pip-install-2jve2p4c/numpy_cf8120598a53465cad9b74c0b76372ba/vendored-meson/meson/meson.py setup /tmp/pip-install-2jve2p4c/numpy_cf8120598a53465cad9b74c0b76372ba /tmp/pip-install-2jve2p4c/numpy_cf8120598a53465cad9b74c0b76372ba/.mesonpy-kv1bebar/build -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md --native-file=/tmp/pip-install-2jve2p4c/numpy_cf8120598a53465cad9b74c0b76372ba/.mesonpy-kv1bebar/build/meson-python-native-file.ini
The Meson build system
Version: 1.2.99
Source dir: /tmp/pip-install-2jve2p4c/numpy_cf8120598a53465cad9b74c0b76372ba
Build dir: /tmp/pip-install-2jve2p4c/numpy_cf8120598a53465cad9b74c0b76372ba/.mesonpy-kv1bebar/build
Build type: native build
Project name: NumPy
Project version: 1.26.0
C compiler for the host machine: cc (gcc 10.2.1 "cc (Raspbian 10.2.1-6+rpi1) 10.2.1 20210110")
C linker for the host machine: cc ld.bfd 2.35.2
C++ compiler for the host machine: c++ (gcc 10.2.1 "c++ (Raspbian 10.2.1-6+rpi1) 10.2.1 20210110")
C++ linker for the host machine: c++ ld.bfd 2.35.2
Cython compiler for the host machine: cython (cython 3.0.2)
Host machine cpu family: arm
Host machine cpu: arm
Program python found: YES (/usr/bin/python3)
Found pkg-config: /usr/bin/pkg-config (0.29.2)
Run-time dependency python found: YES 3.9
Has header "Python.h" with dependency python-3.9: YES
Compiler for C supports arguments -fno-strict-aliasing: YES
Message: During parsing cpu-dispatch: The following CPU features were ignored due to platform incompatibility or lack of support:
"XOP FMA4"
Test features "NEON" : Supported
Test features "NEON_FP16" : Supported
Test features "NEON_VFPV4" : Supported
Test features "ASIMD" : Unsupported due to Compiler fails against the test code of "ASIMD"
Test features "ASIMDHP" : Unsupported due to Implied feature "ASIMD" is not supported
Test features "ASIMDFHM" : Unsupported due to Implied feature "ASIMD" is not supported
Configuring npy_cpu_dispatch_config.h using configuration
Message:
CPU Optimization Options
baseline:
Requested : min
Enabled :
dispatch:
Requested : max -xop -fma4
Enabled : NEON NEON_FP16 NEON_VFPV4

  Library m found: YES
  Did not find CMake 'cmake'
  Found CMake: NO
  Run-time dependency openblas found: NO (tried pkgconfig and cmake)
  Run-time dependency openblas found: NO (tried pkgconfig and cmake)
  
  ../../numpy/meson.build:207:4: ERROR: Problem encountered: No BLAS library detected! Install one, or use the `allow-noblas` build option (note, this may be up to 100x slower for some linear algebra operations).
  
  A full log can be found at /tmp/pip-install-2jve2p4c/numpy_cf8120598a53465cad9b74c0b76372ba/.mesonpy-kv1bebar/build/meson-logs/meson-log.txt
  [end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

Γ— Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

Reload stream if failed

Describe the bug

#133 if backend crashes temporarily or network is down, ensure to reconnect the stream preview properly.

Green screen

Hi,

I try to install again as you made lot of improvement.
The script break my arduno 64mp cam. But nevermind I reinstall from scratch and try to install manually.
I have a green screen when using the application. Is there anything to do to use the arduno_64mp?

Regards.

Add a frame to the picture

Discussed in #98

Originally posted by laguinch October 23, 2023
Hy, thx a lot for the phtobooth app. I want to take picture with a frame. Wich way can I put a frame in the app ? Thx

Collages

Capture multiple images and stitch to a collage
https://github.com/mgrl/photobooth-app/tree/statemachine_collage_video

  • statemachine to capture multiple images
  • frontend to control statemachine when capture several images (confirm / try again last image)
  • text on collage
  • image background for collage
  • image frame on top of the merged images
  • correct target size handling/determination
  • resample methods for hi performance or better quality
  • config preset that looks nice
  • predefined images not yet implemented
  • tests added
  • rotate text not yet implemented.
  • Test pages for pipelines quick review

Assistance with Setting Up Development Environment in PyCharm and Frontend Editing

Description

Hello, I've recently submitted several Bug/Feature Requests that I am interested in addressing myself. However, I'm encountering challenges in setting up the project in my local development environment for contribution.

Issues Faced

  1. Local Environment Setup: I attempted to install dependencies using python -m pip install ., but this approach doesn't seem to be working effectively.
  2. Frontend Editing: I am unable to locate the source files for frontend development. Currently, I only find compressed JavaScript files.

Specific Questions

  1. Are there any specific steps or additional configurations required to set up this project in PyCharm?
  2. Could you provide guidance on where to find the editable frontend files or how to work with the existing compressed JS files?

Attempts Made

  • Installed project dependencies via pip.
  • Searched the repository for frontend source files, but only found compressed .js files.

Any assistance or direction would be greatly appreciated, as I am eager to contribute to this project. Thank you!

gphoto2 backend start failsafe

if no cam is detected the app exits.
improve to

  • try conntect
  • if fails, repeat every x seconds infinite
  • if success, mark backend as in process.

Help needed: I somehow cannot get my Shareservice to work

Sorry, when creating this issue, i accidentally pressed enter.
I somehow cannot seem to get the share service to work.

My share service setup looks as following:

  • nginx
  • php 8.2
  • letsencrypt

on my frontendside I always get the following error:
2023-12-14 17:53:59,719 [ WARNING] error connecting to service: HTTPSConnectionPool(host='shareservice.censored.de', port=443): Read timed out. (read timeout=8) (shareservice.py:87)

But connecting to the .dl file via curl returns this result

(base) peda@peda-ubuntu-standpc:~/Schreibtisch$ curl -v "https://shareservice.censored.de/dl.php"
*   Trying 2a01:4f9:3a:2543::2:443...
* Connected to shareservice.censored.de (2a01:4f9:3a:2543::2) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.0 (OUT), TLS header, Certificate Status (22):
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS header, Finished (20):
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.2 (OUT), TLS header, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=shareservice.censored.de
*  start date: Nov 29 13:33:14 2023 GMT
*  expire date: Feb 27 13:33:13 2024 GMT
*  subjectAltName: host "shareservice.censored.de" matched cert's "shareservice.censored.de"
*  issuer: C=US; O=Let's Encrypt; CN=R3
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
* Using Stream ID: 1 (easy handle 0x5599903dee90)
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
> GET /dl.php HTTP/2
> Host: shareservice.censored.de
> user-agent: curl/7.81.0
> accept: */*
> 
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
* TLSv1.2 (IN), TLS header, Supplemental data (23):
< HTTP/2 406 
< server: nginx
< date: Thu, 14 Dec 2023 16:54:31 GMT
< content-type: text/html; charset=UTF-8
< 
* Connection #0 to host shareservice.censored.de left intact

Any idea whats the problem? And how to fix this?

Missing directory after install

Hi, after installing :

  • data, log and web folders are missing.
  • The transisitions module is missing in the install description.
  • ./config/config.json is missing
  • how to disable the WS2812

Not real issues ;)

Auto focus not working on arducam_64mp

Hi,
Thanks again for all the support you are providing.
I think the last driver for arducam_64mp made a change for the autofocus.
Here is the log:
INFO: Started server process [4131] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) Exception in thread AutofocusStats: Traceback (most recent call last): File "/usr/lib/python3.9/threading.py", line 954, in _bootstrap_inner self.run() File "/usr/lib/python3.9/threading.py", line 892, in run self._target(*self._args, **self._kwargs) File "/home/yaz/apps/photobooth-imageserver/src/ImageServerPicam2AddonCustomAutofocus.py", line 152, in statsThread roi_frame = getROIFrame(roi, frame) File "/home/yaz/apps/photobooth-imageserver/src/ImageServerPicam2AddonCustomAutofocus.py", line 102, in getROIFrame x_end = x_start + int(w * roi[2]) TypeError: int() argument must be a string, a bytes-like object or a number, not 'tuple' 2023-02-25 10:45:21,052 [WARNING] src.ImageServerPicam2AddonCustomAutofocus doFocus() L81 Focus is not done yet or in standby. 2023-02-25 10:45:26,052 [WARNING] src.ImageServerPicam2AddonCustomAutofocus doFocus() L81 Focus is not done yet or in standby. 2023-02-25 10:45:31,053 [WARNING] src.ImageServerPicam2AddonCustomAutofocus doFocus() L81 Focus is not done yet or in standby. INFO: 192.168.1.23:34034 - "GET /stream.mjpg HTTP/1.1" 200 OK 2023-02-25 10:45:36,053 [WARNING] src.ImageServerPicam2AddonCustomAutofocus doFocus() L81 Focus is not done yet or in standby. INFO: 192.168.1.23:45420 - "GET /config/schema?type=dereferenced HTTP/1.1" 200 OK 2023-02-25 10:45:41,055 [WARNING] src.ImageServerPicam2AddonCustomAutofocus doFocus() L81 Focus is not done yet or in standby. 2023-02-25 10:45:46,055 [WARNING] src.ImageServerPicam2AddonCustomAutofocus doFocus() L81 Focus is not done yet or in standby. 2023-02-25 10:45:51,055 [WARNING] src.ImageServerPicam2AddonCustomAutofocus doFocus() L81 Focus is not done yet or in standby. 2023-02-25 10:45:56,056 [WARNING] src.ImageServerPicam2AddonCustomAutofocus doFocus() L81 Focus is not done yet or in standby. 2023-02-25 10:46:01,056 [WARNING] src.ImageServerPicam2AddonCustomAutofocus doFocus() L81 Focus is not done yet or in standby. 2023-02-25 10:46:06,056 [WARNING] src.ImageServerPicam2AddonCustomAutofocus doFocus() L81 Focus is not done yet or in standby. 2023-02-25 10:46:11,057 [WARNING] src.ImageServerPicam2AddonCustomAutofocus doFocus() L81 Focus is not done yet or in standby. 2023-02-25 10:46:16,058 [WARNING] src.ImageServerPicam2AddonCustomAutofocus doFocus() L81 Focus is not done yet or in standby. 2023-02-25 10:46:21,058 [WARNING] src.ImageServerPicam2AddonCustomAutofocus doFocus() L81 Focus is not done yet or in standby. 2023-02-25 10:46:26,059 [WARNING] src.ImageServerPicam2AddonCustomAutofocus doFocus() L81 Focus is not done yet or in standby.
And the available option for focus from libacamera-still:

%focus (focus FoM value) --autofocus-mode arg (=default) Control to set the mode of the AF (autofocus) algorithm.(manual, auto, --autofocus-range arg (=normal) Set the range of focus distances that is scanned.(normal, macro, full) --autofocus-speed arg (=normal) Control that determines whether the AF algorithm is to move the lens as quickly --autofocus-window arg (=0,0,0,0) Sets AfMetering to AfMeteringWindows an set region used, e.g. --lens-position arg Set the lens to a particular focus position, expressed as a reciprocal distance --autofocus-on-capture [=arg(=1)] (=0)

Incompatible with opencv-python 32 bits

Hello,

I tried to install photobooth-app on my raspberry (raspbian bullseye, python 3.9.2) yesterday and I got the following error:

$ pip install photobooth-app
...
Collecting photobooth-app
  Downloading https://www.piwheels.org/simple/photobooth-app/photobooth_app-0.1.0b4-py3-none-any.whl (8.4 MB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 8.4 MB 8.6 MB/s 
  Downloading https://www.piwheels.org/simple/photobooth-app/photobooth_app-0.1.0b3-py3-none-any.whl (8.4 MB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 8.4 MB 8.5 MB/s 
  Downloading https://www.piwheels.org/simple/photobooth-app/photobooth_app-0.1.0b2-py3-none-any.whl (8.4 MB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 8.4 MB 3.2 MB/s 
  Downloading https://www.piwheels.org/simple/photobooth-app/photobooth_app-0.1.0b1-py3-none-any.whl (8.4 MB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 8.4 MB 10.2 MB/s 
ERROR: Cannot install photobooth-app==0.1.0b1, photobooth-app==0.1.0b2, photobooth-app==0.1.0b3, photobooth-app==0.1.0b4, photobooth-app==0.1.0b5, photobooth-app==0.1.0rc12, photobooth-app==0.1.0rc3, photobooth-app==0.1.0rc4, photobooth-app==0.1.0rc5, photobooth-app==0.1.0rc6, photobooth-app==0.1.0rc7, photobooth-app==0.1.0rc8 and photobooth-app==0.1.0rc9 because these package versions have conflicting dependencies.

The conflict is caused by:
    photobooth-app 0.1.0rc12 depends on opencv-python<4.9 and >=4.7
    photobooth-app 0.1.0rc9 depends on opencv-python<4.9 and >=4.7
    photobooth-app 0.1.0rc8 depends on opencv-python<4.9 and >=4.7
    photobooth-app 0.1.0rc7 depends on opencv-python<4.9 and >=4.7
    photobooth-app 0.1.0rc6 depends on opencv-python~=4.7.0
    photobooth-app 0.1.0rc5 depends on opencv-python~=4.7.0
    photobooth-app 0.1.0rc4 depends on opencv-python~=4.7.0
    photobooth-app 0.1.0rc3 depends on opencv-python~=4.7.0
    photobooth-app 0.1.0b5 depends on opencv-python<5.0.0.0 and >=4.7.0.72
    photobooth-app 0.1.0b4 depends on opencv-python<5.0.0.0 and >=4.7.0.72
    photobooth-app 0.1.0b3 depends on opencv-python<5.0.0.0 and >=4.7.0.72
    photobooth-app 0.1.0b2 depends on opencv-python<5.0.0.0 and >=4.7.0.72
    photobooth-app 0.1.0b1 depends on opencv-python<5.0.0.0 and >=4.7.0.72

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies

Full error logs

Thank you

Hide QR code

  • Add option to hide QR code in frontend ui.
  • add to docs latest description
  • add option to frontend store

Discussed in #88

Originally posted by peterwup October 5, 2023
I understand that sharing "only" works with internet access, not with a local accespoint.

Is it possible to hide the QR code for such cases ?
Shareservice Enabled = FALSE
Shareservice Url = ""
But QR Code is still shown.

Random focus in images

Hello,

thank you very much for this project! I currently try to get a working Photobooth with an arducam 64mp.
Unfortunately I have an issue and I'm not sure if it's normal.

When the live preview is running with LibcamAfInterval as focuser, it will refocus any 10 seconds.
If I now take a picture and it gets executed while the camera runs the autofocus, the picture is pretty bad.
Is it possible to make sure the autofocus process and picture taking don't overlap?

Feature Request: Automated Photo Copying to External USB Device

The photobooth application currently allows users to take and store photos locally. However, there might be a need for immediate and easy transfer of these photos to an external storage device, like a USB stick.

Feature Description:

I propose a feature that automatically detects the connection of an external USB device and copies all new photos (or photos that haven't been copied yet) to this device.

This could then be just run in another thread / daemon.

Raspi Bookworm compatibility

  • Bookworm beta OS installation tested.
  • Update installation instructions
  • elaborate more on venv installation in docs
  • test service installation with / without venv.
  • Bookworm: Python 3.11 works.
  • bookworm final release tested.

Wled Flash Time

Is your feature request related to a problem? Please describe.
I use the photobox app together with an led stripe powered by wled. I added the proper presets in wled. Everything is working as expected. Only the flash time is super short and therefore does not have a big effect. The camera can not react on this additional light.

Describe the solution you'd like
Define the time the flash preset of the wled should be activated

Describe alternatives you've considered
Tried to change other settings in wled like transition time, but no success.

Resolution picamera2 too high crashes app

I see the problem:

"picamera2_CAPTURE_CAM_RESOLUTION_WIDTH": 4656, "picamera2_CAPTURE_CAM_RESOLUTION_HEIGHT": 3496, "picamera2_PREVIEW_CAM_RESOLUTION_WIDTH": 4656, "picamera2_PREVIEW_CAM_RESOLUTION_HEIGHT": 3496, "picamera2_LIVEVIEW_RESOLUTION_WIDTH": 4656, "picamera2_LIVEVIEW_RESOLUTION_HEIGHT": 3496,

Please use only the full resolution in capture_cam_resolution.
The other leave at default because the pi cannot livestream such high resolution.
It switches automatically between capture mode and preview live view.

Will improve docs here.

Originally posted by @mgrl in #104 (reply in thread)

New Ui Settings

Hi @mgrl
thanks for this amazing app.

I was wondering if you were planing on the following settings in the admin panel.

Enable/ disable touch buttons on main page. I was planing on using hardware buttons. So it would be nice not to show any touchscreen options.

For the "gallery" I was planing on using a smaller display with touch. I don't want the user to be able to navigate from the "gallery" to the "main page", bypassing my hardware buttons.

Therefore I would like the option to enable/disable the "< start" button, which Leads back to the "main page".

Also I think it might be need to be able to go back to "main page" from the "capture page" via gpio button.
I know I can trigger a new picture from this page as well but the preview and the animation are missing which I really like.

Not really important but I think it would be nice, if the smily shown before taking the picture, is shown after the countdown instead of while. But that's just my personal preference and I understand if you would like to keep it that way.

Anyway, thanks again for your work! Cheers :)

wled stopped working

Hi,

wled was working fine , but stopped today after I did a "pip install --upgrade photobooth-app" as mentioned in the update docs ,
IΒ΄ve also tried swichting between and dev branch, both are not triggering the LED in my setup or generating any output relating to wledservice.py (which was the case before , see log below).

could you please give me a hint how to troubleshoot this ? log level is already set to debug. permissions to /dev/ttyUSB0 seems to be fine and I think dmesg output looks also good

[ 5826.390447] usb 1-1.2: new full-speed USB device number 4 using xhci_hcd
[ 5826.524151] usb 1-1.2: New USB device found, idVendor=10c4, idProduct=ea60, bcdDevice= 1.00
[ 5826.524186] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 5826.524203] usb 1-1.2: Product: CP2102 USB to UART Bridge Controller
[ 5826.524218] usb 1-1.2: Manufacturer: Silicon Labs
[ 5826.524231] usb 1-1.2: SerialNumber: 0001
[ 5826.536923] cp210x 1-1.2:1.0: cp210x converter detected
[ 5826.540573] usb 1-1.2: cp210x converter now attached to ttyUSB0

might be unrelated, but the admin center -> status tab looks also like itΒ΄s not working anymore:

Maintenance
CPU: % / % / %
No. active threads:
Free disk: 0.0GB
Memory: 0.0GB total 0.0GB free 0.0GB available
Cma: 0.0MB total / 0.0MB free

thanks a lot for your great software and support !

->journalctl --user --unit photobooth-app.service|grep wled
Jul 30 11:06:38 photobooth python[800]: 2023-07-30 11:06:38,463 [ INFO] WledService preset_shoot triggered (wledservice.py:130)
Jul 30 11:06:38 photobooth python[800]: 2023-07-30 11:06:38,768 [ INFO] WledService preset_standby triggered (wledservice.py:120)
Jul 30 11:06:43 photobooth python[800]: 2023-07-30 11:06:43,956 [ INFO] WledService preset_thrill triggered (wledservice.py:125)
Jul 30 11:06:46 photobooth python[800]: 2023-07-30 11:06:46,952 [ INFO] WledService preset_shoot triggered (wledservice.py:130)
Jul 30 11:06:47 photobooth python[800]: 2023-07-30 11:06:47,256 [ INFO] WledService preset_standby triggered (wledservice.py:120)
Jul 30 11:06:58 photobooth python[800]: 2023-07-30 11:06:58,829 [ INFO] WledService preset_standby triggered (wledservice.py:120)
Jul 30 11:13:45 photobooth python[800]: 2023-07-30 11:13:45,637 [ INFO] close port to WLED module (wledservice.py:113)
Jul 30 11:14:14 photobooth python[794]: 2023-07-30 11:14:14,742 [ INFO] WledService enabled, trying to setup and connect, self._serial_port='/dev/ttyUSB0' (wledservice.py:36)
Jul 30 11:14:14 photobooth python[794]: 2023-07-30 11:14:14,758 [ INFO] WLED version response: b'WLED 2306210\r\n' (wledservice.py:80)
Jul 30 11:14:14 photobooth python[794]: 2023-07-30 11:14:14,760 [ INFO] register events for WLED (wledservice.py:96)
Jul 30 11:14:14 photobooth python[794]: 2023-07-30 11:14:14,761 [ INFO] WledService preset_standby triggered (wledservice.py:120)
Jul 30 11:19:34 photobooth python[794]: 2023-07-30 11:19:34,086 [ INFO] WledService preset_thrill triggered (wledservice.py:125)
Jul 30 11:19:37 photobooth python[794]: 2023-07-30 11:19:37,169 [ INFO] WledService preset_shoot triggered (wledservice.py:130)
Jul 30 11:19:37 photobooth python[794]: 2023-07-30 11:19:37,575 [ INFO] WledService preset_standby triggered (wledservice.py:120)
Aug 01 13:36:05 photobooth python[888]: 2023-08-01 13:36:05,737 [ INFO] WledService enabled, trying to setup and connect, self._serial_port='/dev/ttyUSB0' (wledservice.py:36)
Aug 01 13:36:05 photobooth python[888]: 2023-08-01 13:36:05,756 [ INFO] WLED version response: b'WLED 2306210\r\n' (wledservice.py:80)
Aug 01 13:36:05 photobooth python[888]: 2023-08-01 13:36:05,757 [ INFO] register events for WLED (wledservice.py:96)
Aug 01 13:36:05 photobooth python[888]: 2023-08-01 13:36:05,759 [ INFO] WledService preset_standby triggered (wledservice.py:120)
Aug 01 13:37:27 photobooth python[888]: 2023-08-01 13:37:27,539 [ INFO] close port to WLED module (wledservice.py:113)
Aug 01 13:37:52 photobooth python[796]: 2023-08-01 13:37:52,321 [ INFO] WledService enabled, trying to setup and connect, self._serial_port='/dev/ttyUSB0' (wledservice.py:36)
Aug 01 13:37:52 photobooth python[796]: 2023-08-01 13:37:52,336 [ INFO] WLED version response: b'WLED 2306210\r\n' (wledservice.py:80)
Aug 01 13:37:52 photobooth python[796]: 2023-08-01 13:37:52,337 [ INFO] register events for WLED (wledservice.py:96)
Aug 01 13:37:52 photobooth python[796]: 2023-08-01 13:37:52,338 [ INFO] WledService preset_standby triggered (wledservice.py:120)
Aug 07 21:44:39 photobooth python[796]: 2023-08-07 21:44:39,639 [ INFO] close port to WLED module (wledservice.py:113)
Aug 07 21:45:06 photobooth python[797]: 2023-08-07 21:45:06,979 [ INFO] WledService enabled, trying to setup and connect, self._serial_port='/dev/ttyUSB0' (wledservice.py:36)
Aug 07 21:45:06 photobooth python[797]: 2023-08-07 21:45:06,995 [ INFO] WLED version response: b'WLED 2306210\r\n' (wledservice.py:80)
Aug 07 21:45:06 photobooth python[797]: 2023-08-07 21:45:06,997 [ INFO] register events for WLED (wledservice.py:96)

Slideshow

Discussed in #122

Originally posted by laguinch November 4, 2023
Hy, is it possible to make a slideshow from the galley ? Thx

No video stream (PiCamera 3)

Hi,
Thanks a lot for this project !
I've been trying to make it work with Camera v3 but no luck: it streams the default app's yellow background and not the camera's image.
The camera works fine on the pi (with libcamera)...
Any advise / help would be greatly appreciated.

Thanks again !

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.