From 79629fe24796acabc651c69101ee8d5922b01953 Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 31 Jan 2024 00:36:02 -0500 Subject: [PATCH] Adds support for printer configuration Adds support for printer configuration --- grocy/DOCS.md | 23 ++++++++ grocy/config.yaml | 14 +++++ .../rootfs/etc/s6-overlay/s6-rc.d/php-fpm/run | 58 +++++++++++++++++++ 3 files changed, 95 insertions(+) diff --git a/grocy/DOCS.md b/grocy/DOCS.md index 0851b3b..923a8a1 100644 --- a/grocy/DOCS.md +++ b/grocy/DOCS.md @@ -171,6 +171,8 @@ or disabled: - `shoppinglist` - `stock` - `tasks` +- `label_printer` +- `thermal_printer` Set it `true` to enable it, `false` otherwise. @@ -202,6 +204,27 @@ Allows you to specify a default ingress user if desired (e.g. `admin`). If no ingress user is set, the default login authentication is used. +### Option: `Label Printer` + +Allows posting to a webhook to print labels + +- `label_printer_webhook` The URI that Grocy will POST to when asked to print a label +- `label_printer_run_server` Whether the webhook will be called server- or client-side +- `label_printer_params` Additional parameters supplied to the webhook +- `` TRUE to use JSON or FALSE to use normal POST request variables + +### Option: `Thermal Printer` + +Thermal printers are receipt printers, not regular printers, +the printer must support the ESC/POS protocol, see https://github.com/mike42/escpos-php + +- `tprinter_is_network_printer` Set to true if it's a network printer +- `tprinter_print_quantity_name` Set to false if you do not want to print the quantity names (related to the shopping list) +- `tprinter_print_notes` Set to false if you do not want to print notes (related to the shopping list) +- `tprinter_ip` IP of the network printer (does only matter if it's a network printer) +- `tprinter_port` Port of the network printer (does only matter if it's a network printer) +- `tprinter_connector` Printer device (does only matter if you use a locally attached printer) For USB on Linux this is often '/dev/usb/lp0', for serial printers it could be similar to '/dev/ttyS0' Make sure that the user that runs the webserver has permissions to write to the printer - on Linux add your webserver user to the LP group with usermod -a -G lp www-data + ## Known issues and limitations - Grocy support to provide custom lookup resources to lookup information diff --git a/grocy/config.yaml b/grocy/config.yaml index d9ce244..3f5dac4 100644 --- a/grocy/config.yaml +++ b/grocy/config.yaml @@ -33,6 +33,8 @@ options: shoppinglist: true stock: true tasks: true + label_printer: false + thermal_printer: false tweaks: chores_assignment: true multiple_shopping_lists: true @@ -60,6 +62,8 @@ schema: shoppinglist: bool stock: bool tasks: bool + label_printer: bool + thermal_printer: bool tweaks: calendar_first_day_of_week: int(0,6)? chores_assignment: bool @@ -71,6 +75,16 @@ schema: stock_product_freezing: bool stock_product_opened_tracking: bool stock_count_opened_products_against_minimum_stock_amount: bool + label_printer_webhook: str + label_printer_run_server: bool + label_printer_params: str + label_printer_hook_json: bool + tprinter_is_network_printer: bool + tprinter_print_quantity_name: bool + tprinter_print_notes: bool + tprinter_ip: str + tprinter_port: int(1,65535)? + tprinter_connector: str ssl: bool certfile: str keyfile: str diff --git a/grocy/rootfs/etc/s6-overlay/s6-rc.d/php-fpm/run b/grocy/rootfs/etc/s6-overlay/s6-rc.d/php-fpm/run index b155e2a..7e5f59d 100755 --- a/grocy/rootfs/etc/s6-overlay/s6-rc.d/php-fpm/run +++ b/grocy/rootfs/etc/s6-overlay/s6-rc.d/php-fpm/run @@ -6,6 +6,11 @@ # ============================================================================== declare caldayweek declare mealday +declare label_printer_webhook +declare label_printer_params +declare tprinter_ip +declare tprinter_port +declare tprinter_connector export GROCY_CULTURE export GROCY_CURRENCY export GROCY_ENTRY_PAGE @@ -44,6 +49,14 @@ if bashio::config.false 'features.tasks'; then export GROCY_FEATURE_FLAG_TASKS=0 fi +if bashio::config.true 'features.label_printer'; then + export GROCY_FEATURE_FLAG_LABEL_PRINTER=1 +fi + +if bashio::config.true 'features.thermal_printer'; then + export FEATURE_FLAG_THERMAL_PRINTER=1 +fi + if bashio::config.has_value 'tweaks.calendar_first_day_of_week'; then caldayweek=$(bashio::config 'tweaks.calendar_first_day_of_week') export GROCY_CALENDAR_FIRST_DAY_OF_WEEK=${caldayweek} @@ -86,6 +99,51 @@ if bashio::config.false 'tweaks.stock_count_opened_products_against_minimum_stoc export GROCY_FEATURE_SETTING_STOCK_COUNT_OPENED_PRODUCTS_AGAINST_MINIMUM_STOCK_AMOUNT=0 fi +if bashio::config.has_value 'tweaks.label_printer_webhook'; then + label_printer_webhook=$(bashio::config 'tweaks.label_printer_webhook') + export GROCY_MEAL_PLAN_FIRST_DAY_OF_WEEK=${label_printer_webhook} +fi + +if bashio::config.false 'tweaks.label_printer_run_server'; then + export GROCY_LABEL_PRINTER_RUN_SERVER=0 +fi + +if bashio::config.has_value 'tweaks.label_printer_params'; then + label_printer_params=$(bashio::config 'tweaks.label_printer_params') + export GROCY_LABEL_PRINTER_PARAMS=${label_printer_params} +fi + +if bashio::config.true 'tweaks.label_printer_hook_json'; then + export GROCY_LABEL_PRINTER_HOOK_JSON=1 +fi + +if bashio::config.true 'tweaks.tprinter_is_network_printer'; then + export GROCY_TPRINTER_IS_NETWORK_PRINTER=1 +fi + +if bashio::config.false 'tweaks.tprinter_print_quantity_name'; then + export GROCY_TPRINTER_PRINT_QUANTITY_NAME=0 +fi + +if bashio::config.false 'tweaks.tprinter_print_notes'; then + export GROCY_TPRINTER_PRINT_NOTES=0 +fi + +if bashio::config.has_value 'tweaks.tprinter_ip'; then + tprinter_ip=$(bashio::config 'tweaks.tprinter_ip') + export GROCY_TPRINTER_IP=${tprinter_ip} +fi + +if bashio::config.has_value 'tweaks.tprinter_port'; then + tprinter_ip=$(bashio::config 'tweaks.tprinter_port') + export GROCY_TPRINTER_PORT=${tprinter_port} +fi + +if bashio::config.has_value 'tweaks.tprinter_connector'; then + tprinter_connector=$(bashio::config 'tweaks.tprinter_connector') + export GROCY_TPRINTER_CONNECTOR=${tprinter_connector} +fi + GROCY_CULTURE=$(bashio::config "culture") GROCY_CURRENCY=$(bashio::config "currency") GROCY_ENTRY_PAGE=$(bashio::config 'entry_page')