From b1a5a7750dc22ab3df2fb446470a734f554f898e Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 31 Jan 2024 00:36:02 -0500 Subject: [PATCH 1/5] 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') From 372c25967b61e0946d82a8b0a2d62c05f23a1a94 Mon Sep 17 00:00:00 2001 From: Daniel Valadas Date: Tue, 21 May 2024 04:11:32 -0400 Subject: [PATCH 2/5] Update grocy/rootfs/etc/s6-overlay/s6-rc.d/php-fpm/run Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- grocy/rootfs/etc/s6-overlay/s6-rc.d/php-fpm/run | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7e5f59d..c3917d5 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 @@ -135,7 +135,7 @@ if bashio::config.has_value 'tweaks.tprinter_ip'; then fi if bashio::config.has_value 'tweaks.tprinter_port'; then - tprinter_ip=$(bashio::config 'tweaks.tprinter_port') + tprinter_port=$(bashio::config 'tweaks.tprinter_port') export GROCY_TPRINTER_PORT=${tprinter_port} fi From 84bc21d93d4ec2f2602e0f0627a5615189fdd1d7 Mon Sep 17 00:00:00 2001 From: Daniel Valadas Date: Tue, 21 May 2024 04:12:53 -0400 Subject: [PATCH 3/5] Update grocy/DOCS.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- grocy/DOCS.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/grocy/DOCS.md b/grocy/DOCS.md index 923a8a1..cc7fd5a 100644 --- a/grocy/DOCS.md +++ b/grocy/DOCS.md @@ -211,7 +211,7 @@ 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 +- `label_printer_hook_json`: TRUE to use JSON or FALSE to use normal POST request variables ### Option: `Thermal Printer` @@ -224,7 +224,6 @@ the printer must support the ESC/POS protocol, see https://github.com/mike42/esc - `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 From 0fbc3fe707ad7bb67c6b43a40fc8ac6dd9627821 Mon Sep 17 00:00:00 2001 From: Daniel Valadas Date: Tue, 21 May 2024 04:36:54 -0400 Subject: [PATCH 4/5] Update grocy/DOCS.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- grocy/DOCS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grocy/DOCS.md b/grocy/DOCS.md index cc7fd5a..c5c0040 100644 --- a/grocy/DOCS.md +++ b/grocy/DOCS.md @@ -216,7 +216,7 @@ Allows posting to a webhook to print labels ### 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 +the printer must support the ESC/POS protocol, see [ESC/POS protocol](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) From 0cb55afaa3250a4616a9acbdd0d8e80951b95dca Mon Sep 17 00:00:00 2001 From: Daniel Valadas Date: Mon, 23 Dec 2024 16:01:56 -0500 Subject: [PATCH 5/5] Update run to fix typo --- grocy/rootfs/etc/s6-overlay/s6-rc.d/php-fpm/run | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 c3917d5..6d27470 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 @@ -101,7 +101,7 @@ 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} + export LABEL_PRINTER_WEBHOOK=${label_printer_webhook} fi if bashio::config.false 'tweaks.label_printer_run_server'; then