{ "_comment": "Config optimisee pour RPi4 2Go - Photomaton Les Sapins Du Web", "_comment2": "Changements vs config originale marques avec OPTI:", "common": { "admin_password": "xxxxxxxxxxx", "logging_level": "WARNING", "_OPTI_logging": "OPTI: DEBUG -> WARNING. DEBUG consomme CPU+RAM en continu. Passer en INFO si besoin de diagnostiquer.", "users_delete_to_recycle_dir": true }, "actions": { "image": [ { "_comment": "Action principale sans remove_background - la plus legere en RAM", "name": "HnB - normal", "jobcontrol": { "countdown_capture": 5.0 }, "processing": { "remove_background": false, "fill_background_enable": false, "fill_background_color": "#ededed", "img_background_enable": false, "img_background_file": "userdata/demoassets/backgrounds/background.jpg", "image_filter": "original", "img_frame_enable": true, "img_frame_file": "userdata/hopnbloc/frames/hnb cadre final.png", "texts_enable": false, "texts": [] }, "trigger": { "ui_trigger": { "show_button": true, "_OPTI_show_button": "OPTI: false -> true. Au moins 1 action doit etre visible pour les utilisateurs.", "title": "Photo", "icon": "photo_camera", "use_custom_color": true, "custom_color": "#016911" }, "keyboard_trigger": { "keycode": "" }, "gpio_trigger": { "pin": "27", "_OPTI_gpio": "OPTI: '' -> '27'. Declenchement direct via GPIO sans passer par Node-RED.", "trigger_on": "pressed" } } }, { "_comment": "Avec remove_background - uniquement quand on change le fond", "name": "Hnb - Etoile", "jobcontrol": { "countdown_capture": 5.0 }, "processing": { "remove_background": true, "fill_background_enable": true, "fill_background_color": "#ededed", "img_background_enable": true, "img_background_file": "userdata/demoassets/backgrounds/background.jpg", "image_filter": "original", "img_frame_enable": true, "img_frame_file": "userdata/hopnbloc/frames/hnb cadre final.png", "texts_enable": false, "texts": [] }, "trigger": { "ui_trigger": { "show_button": true, "title": "Voie lactee", "icon": "star_shine", "use_custom_color": true, "custom_color": "#016911" }, "keyboard_trigger": { "keycode": "" }, "gpio_trigger": { "pin": "", "trigger_on": "pressed" } } }, { "name": "Hnb - Cailloux", "jobcontrol": { "countdown_capture": 5.0 }, "processing": { "remove_background": true, "fill_background_enable": true, "fill_background_color": "#f2f0f0", "img_background_enable": true, "img_background_file": "userdata/hopnbloc/backgrounds/Wall-with-large-and-small-stones.jpg", "image_filter": "original", "img_frame_enable": true, "img_frame_file": "userdata/hopnbloc/frames/hnb cadre final.png", "texts_enable": false, "texts": [] }, "trigger": { "ui_trigger": { "show_button": false, "title": "Mur de pierre", "icon": "brick", "use_custom_color": true, "custom_color": "#016911" }, "keyboard_trigger": { "keycode": "" }, "gpio_trigger": { "pin": "", "trigger_on": "pressed" } } }, { "name": "Hnb - Light", "jobcontrol": { "countdown_capture": 5.0 }, "processing": { "remove_background": true, "fill_background_enable": true, "fill_background_color": "#f2f0f0", "img_background_enable": true, "img_background_file": "userdata/hopnbloc/backgrounds/2149243965.jpg", "image_filter": "original", "img_frame_enable": true, "img_frame_file": "userdata/hopnbloc/frames/calque photos final.png", "texts_enable": false, "texts": [] }, "trigger": { "ui_trigger": { "show_button": false, "title": "Soiree branchee", "icon": "nightlife", "use_custom_color": true, "custom_color": "#016911" }, "keyboard_trigger": { "keycode": "" }, "gpio_trigger": { "pin": "", "trigger_on": "pressed" } } }, { "_comment": "OPTI: remove_background desactive car img_frame_enable est false et pas de fond custom utile", "name": "Normal image", "jobcontrol": { "countdown_capture": 5.0 }, "processing": { "remove_background": false, "fill_background_enable": false, "fill_background_color": "#2d68c4", "img_background_enable": false, "img_background_file": "userdata/demoassets/backgrounds/background.jpg", "image_filter": "original", "img_frame_enable": false, "img_frame_file": "userdata/demoassets/frames/frame_image_photobooth-app.png", "texts_enable": false, "texts": [] }, "trigger": { "ui_trigger": { "show_button": false, "title": "Normal", "icon": "photo_camera", "use_custom_color": true, "custom_color": "#016911" }, "keyboard_trigger": { "keycode": "" }, "gpio_trigger": { "pin": "", "trigger_on": "pressed" } } }, { "_comment": "LULU - sans remove_background car juste un cadre", "name": "LULU", "jobcontrol": { "countdown_capture": 5.0 }, "processing": { "remove_background": false, "fill_background_enable": false, "fill_background_color": "#ededed", "img_background_enable": false, "img_background_file": "userdata/demoassets/backgrounds/background.jpg", "image_filter": "original", "img_frame_enable": true, "img_frame_file": "userdata/LSDW/lulu-versaire2.png", "texts_enable": false, "texts": [] }, "trigger": { "ui_trigger": { "show_button": false, "title": "LULU", "icon": "star_shine", "use_custom_color": true, "custom_color": "#016911" }, "keyboard_trigger": { "keycode": "" }, "gpio_trigger": { "pin": "", "trigger_on": "pressed" } } }, { "name": "LULU - Etoile", "jobcontrol": { "countdown_capture": 5.0 }, "processing": { "remove_background": true, "fill_background_enable": true, "fill_background_color": "#ededed", "img_background_enable": true, "img_background_file": "userdata/demoassets/backgrounds/background.jpg", "image_filter": "original", "img_frame_enable": true, "img_frame_file": "userdata/LSDW/lulu-versaire2.png", "texts_enable": false, "texts": [] }, "trigger": { "ui_trigger": { "show_button": false, "title": "LULU - Etoile", "icon": "star_shine", "use_custom_color": true, "custom_color": "#016911" }, "keyboard_trigger": { "keycode": "" }, "gpio_trigger": { "pin": "", "trigger_on": "pressed" } } } ], "_OPTI_removed_actions": "OPTI: Supprime 'background stars' (doublon de Hnb-Etoile) et 'Hnb-Etoile-copy' (copie). Garde 7 actions au lieu de 9.", "collage": [ { "name": "default action", "jobcontrol": { "countdown_capture": 2.0, "countdown_capture_second_following": 1.0, "ask_approval_each_capture": true, "approve_autoconfirm_timeout": 15.0, "show_individual_captures_in_gallery": true }, "processing": { "capture_remove_background": true, "capture_fill_background_enable": true, "capture_fill_background_color": "white", "capture_img_background_enable": false, "capture_img_background_file": null, "canvas_width": 1920, "canvas_height": 1280, "merge_definition": [ { "description": "left", "pos_x": 160, "pos_y": 220, "pos_z": 0, "width": 510, "height": 725, "rotate": 0, "predefined_image": null, "image_filter": "FilterPilgram2.earlybird" }, { "description": "middle predefined", "pos_x": 705, "pos_y": 66, "pos_z": 0, "width": 510, "height": 725, "rotate": 0, "predefined_image": "userdata/demoassets/predefined_images/photobooth-collage-predefined-image.png", "image_filter": "original" }, { "description": "right", "pos_x": 1245, "pos_y": 220, "pos_z": 0, "width": 510, "height": 725, "rotate": 0, "predefined_image": null, "image_filter": "FilterPilgram2.reyes" } ], "canvas_fill_background_enable": false, "canvas_fill_background_color": "#2e6f40", "canvas_img_background_enable": false, "canvas_img_background_file": null, "canvas_img_front_enable": true, "canvas_img_front_file": "userdata/demoassets/frames/pixabay-poster-2871536_1920.png", "canvas_texts_enable": true, "canvas_texts": [ { "text": "Have a nice day :)", "pos_x": 200, "pos_y": 1100, "rotate": 1, "font_size": 40, "font": "userdata/demoassets/fonts/Roboto-Bold.ttf", "color": "#333" } ] }, "trigger": { "ui_trigger": { "show_button": false, "title": "Collage", "icon": "auto_awesome_mosaic", "use_custom_color": false, "custom_color": "#196cb0" }, "keyboard_trigger": { "keycode": "c" }, "gpio_trigger": { "pin": "22", "trigger_on": "pressed" } } } ], "animation": [], "video": [], "multicamera": [] }, "share": { "sharing_enabled": true, "actions": [ { "_comment": "Action visible par les utilisateurs - envoie la demande a Node-RED pour la file d'attente SQLite + dashboard admin", "name": "Demande d'impression", "handles_images_only": true, "processing": { "share_command": "curl http://127.0.0.1:1880/api/photobooth-custom/ask_print?filename={filename}", "ask_user_for_parameter_input": false, "parameters_dialog_caption": "Make your choice!", "parameters_dialog_action_icon": "print", "parameters_dialog_action_label": "GO", "parameters": [], "share_blocked_time": 1, "max_shares": 0 }, "trigger": { "ui_trigger": { "show_button": true, "title": "Demander l'impression ?", "icon": "photo_prints", "use_custom_color": true, "custom_color": "#ab0a78" }, "keyboard_trigger": { "keycode": "" }, "gpio_trigger": { "pin": "", "trigger_on": "pressed" } } }, { "_comment": "Action cachee - appelee par Node-RED dashboard quand l'admin valide l'impression", "name": "Impression directe", "handles_images_only": true, "processing": { "share_command": "/home/pi/photobooth-data/script/script_print.sh \"{filename}\" \"{media_type}\" \"{action_config_name}\" \"{copies}\"", "ask_user_for_parameter_input": false, "parameters_dialog_caption": "Combien de copies ?", "parameters_dialog_action_icon": "print", "parameters_dialog_action_label": "Imprimer", "parameters": [ { "key": "copies", "label": "Copies", "ui_type": "int", "default": "1", "valid_min": "1", "valid_max": "2" } ], "share_blocked_time": 60, "_OPTI_blocked_time": "OPTI: 120 -> 60s de blocage.", "max_shares": 0 }, "trigger": { "ui_trigger": { "show_button": false, "title": "Impression directe", "icon": "print", "use_custom_color": true, "custom_color": "#b01992" }, "keyboard_trigger": { "keycode": "" }, "gpio_trigger": { "pin": "", "trigger_on": "pressed" } } } ], "_OPTI_removed_share_actions": "OPTI: Supprime 'Pouet' (test), 'Mailing action' (demo), 'Printing copies' (doublon). Garde 'Demande impression' (via Node-RED SQLite) + 'Impression directe' (via script_print.sh). 2 actions au lieu de 5." }, "qrshare": { "enabled": false, "shareservice_url": "https://photobooth-app.org/extras/shareservice-landing/", "shareservice_apikey": "changedefault!", "enabled_custom": true, "share_custom_qr_url": "https://photomaton.lessapinsduweb.com/sharepage/#?url=https://photomaton.lessapinsduweb.com/media/full/{identifier}" }, "filetransfer": { "enabled": false, "target_folder_name": "photobooth" }, "mediaprocessing": { "full_still_length": 2304, "_OPTI_full_still": "OPTI: 4608 -> 2304. La Selphy CP1300 imprime en 300dpi sur 4x6 pouces = 1200x1800px. 2304px est largement suffisant et divise la RAM par 4 pour le traitement d'image.", "preview_still_length": 1200, "_OPTI_preview": "OPTI: 2304 -> 1200. Pour l'affichage web/QR share, 1200px est largement suffisant.", "thumbnail_still_length": 480, "_OPTI_thumbnail": "OPTI: 960 -> 480. Les thumbnails de la galerie n'ont pas besoin d'etre si grands.", "video_bitrate": 3000, "video_compatibility_mode": true, "remove_background_model": "modnet", "fileformat_animations": "webp", "fileformat_multicamera": "mp4" }, "uisettings": { "PRIMARY_COLOR": "#196cb0", "SECONDARY_COLOR": "#4283b8", "theme": "system", "show_gallery_on_frontpage": true, "show_admin_on_frontpage": true, "admin_button_invisible": true, "show_frontpage_timeout": 5, "enable_automatic_slideshow": true, "show_automatic_slideshow_timeout": 120, "enable_livestream_when_idle": false, "enable_livestream_when_active": true, "livestream_mirror_effect": false, "livestream_blurredbackground": false, "livestream_blurredbackground_high_framerate": false, "enable_livestream_frameoverlay": true, "livestream_frameoverlay_image": "userdata/hopnbloc/frames/hnb cadre final.png", "livestream_frameoverlay_mirror_effect": false, "FRONTPAGE_TEXT": "
\tSi vous utilisez le photomaton, vous nous autorisez \u00e0 utiliser les photos.
\tCe photomaton est propos\u00e9 en libre-service par 'Les Sapins Du Web'.
\tLes photos peuvent \u00eatre imprim\u00e9es sur demande et sur dons libre. (2 Photos maximum par personne)
\tMerci de votre compr\u00e9hension. \t
Comp\u00e9t Hop'N Bloc !!!!!
\"LSDW
", "TAKEPIC_MSG_TIME": 0.5, "TAKEPIC_MSG_TEXT": "\ud83d\ude03", "AUTOCLOSE_NEW_ITEM_ARRIVED": 30, "GALLERY_EMPTY_MSG": "
Pas encore de photos ! \ud83e\udd37\u200d\u2642\ufe0f
Appuyez sur le bouton !
\ud83d\udcf7\ud83d\udc95
", "_OPTI_gallery_empty": "OPTI: Traduit en francais", "gallery_show_qrcode": true, "qrcode_text_above": "\u2b07\ufe0f T\u00e9l\u00e9charger la photo!", "qrcode_text_below": "Scannez le QR code ci-dessus pour t\u00e9l\u00e9charger cette photo. ( Vous devez \u00eatre connect\u00e9 au Wifi Photomaton)", "qrcode_link_codes": true, "gallery_show_filter": false, "gallery_show_download": false, "gallery_show_delete": false, "gallery_show_shareprint": false }, "backends": { "enable_livestream": true, "retry_capture": 3, "countdown_camera_capture_offset": 0.2, "index_backend_stills": 0, "index_backend_video": 0, "index_backend_multicam": 0, "group_backends": [ { "enabled": true, "description": "pi camera module V3", "backend_config": { "orientation": "1: 0\u00b0", "backend_type": "Picamera2", "camera_num": 0, "CAPTURE_CAM_RESOLUTION_WIDTH": 2304, "CAPTURE_CAM_RESOLUTION_HEIGHT": 1536, "_OPTI_capture_res": "OPTI: 4608x3072 -> 2304x1536. Divise la RAM par 4 pour chaque capture. Toujours suffisant pour impression Selphy 300dpi.", "PREVIEW_CAM_RESOLUTION_WIDTH": 1152, "PREVIEW_CAM_RESOLUTION_HEIGHT": 768, "_OPTI_preview_res": "OPTI: 2304x1536 -> 1152x768. La preview n'a pas besoin d'etre aussi grande que la capture.", "LIVEVIEW_RESOLUTION_WIDTH": 750, "LIVEVIEW_RESOLUTION_HEIGHT": 500, "framerate_still_mode": 20, "framerate_video_mode": 25, "frame_skip_count": 4, "optimized_lowlight_short_exposure": false, "videostream_quality": "MEDIUM", "original_still_quality": 90, "_OPTI_quality": "OPTI: 100 -> 90. Difference visuelle imperceptible, fichiers 30-40% plus petits = moins de RAM et I/O disque." } } ] }, "hardwareinputoutput": { "keyboard_input_enabled": false, "gpio_enabled": true, "_OPTI_gpio": "OPTI: false -> true. Active le GPIO natif pour le bouton, permet de se passer de Node-RED.", "gpio_pin_shutdown": 17, "gpio_pin_reboot": 18, "gpio_pin_job_next": 27, "gpio_pin_job_reject": 22, "gpio_pin_job_abort": 20 }, "misc": { "secret_key": "CHANGER_CETTE_CLE_SECRETE", "_OPTI_secret": "OPTI: Changer la cle par defaut ! Generer avec: python3 -c \"import secrets; print(secrets.token_hex(32))\"", "cmd_shutdown": "shutdown now", "cmd_reboot": "reboot" } }