From 78cdd983db7c853e4410ec955814bda889869336 Mon Sep 17 00:00:00 2001 From: Rrrrobert Date: Thu, 15 Oct 2026 18:27:14 -0400 Subject: [PATCH 1/2] openrfid: forward additional filament colors to filament_detect The OpenRFID webhook templates only sent RGB_1, so multicolor spools (e.g. Bambu dual-color, OpenSpool `additional_color_hexes`) showed a single color when using the OpenRFID detection system, while the built-in reader already populates RGB_2..RGB_5. Send colors 2-5 from `filament.colors_rgba` as RGB_2..RGB_5 in both the vendor and generic templates. filament_detect/set already derives COLOR_NUMS from these, so filament_color_multi is populated as with the built-in reader. Single-color spools are unchanged. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_011NVRoJLjL7JBmLBtmjrTrv --- .../usr/local/share/openrfid/extended/openrfid_u1_generic.cfg | 3 ++- .../usr/local/share/openrfid/extended/openrfid_u1_vendor.cfg | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/overlays/firmware-extended/64-app-openrfid/root/usr/local/share/openrfid/extended/openrfid_u1_generic.cfg b/overlays/firmware-extended/64-app-openrfid/root/usr/local/share/openrfid/extended/openrfid_u1_generic.cfg index 47c388d19..39ee7de7a 100644 --- a/overlays/firmware-extended/64-app-openrfid/root/usr/local/share/openrfid/extended/openrfid_u1_generic.cfg +++ b/overlays/firmware-extended/64-app-openrfid/root/usr/local/share/openrfid/extended/openrfid_u1_generic.cfg @@ -17,7 +17,8 @@ body_json_template = { "BED_TEMP": {{ filament.bed_temp_c | int }}, "ALPHA": {{ filament.alpha }}, "RGB_1": {{ filament.rgb }}, - "CARD_UID": [{% for i in range(0, scan.uid|length, 2) %}{{ scan.uid[i:i+2]|int(0, 16) }}{% if not loop.last %}, {% endif %}{% endfor %}], + {% for c in filament.colors_rgba[1:5] %}"RGB_{{ loop.index + 1 }}": {{ (c // 256) % 16777216 }}, + {% endfor %} "CARD_UID": [{% for i in range(0, scan.uid|length, 2) %}{{ scan.uid[i:i+2]|int(0, 16) }}{% if not loop.last %}, {% endif %}{% endfor %}], "CARD_TYPE": "{{ {'MifareUltralight': 'NTAG', 'MifareClassic1k': 'M1'}.get(scan.tag_type, scan.tag_type) }}" } } diff --git a/overlays/firmware-extended/64-app-openrfid/root/usr/local/share/openrfid/extended/openrfid_u1_vendor.cfg b/overlays/firmware-extended/64-app-openrfid/root/usr/local/share/openrfid/extended/openrfid_u1_vendor.cfg index 971a883fe..1940957e3 100644 --- a/overlays/firmware-extended/64-app-openrfid/root/usr/local/share/openrfid/extended/openrfid_u1_vendor.cfg +++ b/overlays/firmware-extended/64-app-openrfid/root/usr/local/share/openrfid/extended/openrfid_u1_vendor.cfg @@ -17,7 +17,8 @@ body_json_template = { "BED_TEMP": {{ filament.bed_temp_c | int }}, "ALPHA": {{ filament.alpha }}, "RGB_1": {{ filament.rgb }}, - "CARD_UID": [{% for i in range(0, scan.uid|length, 2) %}{{ scan.uid[i:i+2]|int(0, 16) }}{% if not loop.last %}, {% endif %}{% endfor %}], + {% for c in filament.colors_rgba[1:5] %}"RGB_{{ loop.index + 1 }}": {{ (c // 256) % 16777216 }}, + {% endfor %} "CARD_UID": [{% for i in range(0, scan.uid|length, 2) %}{{ scan.uid[i:i+2]|int(0, 16) }}{% if not loop.last %}, {% endif %}{% endfor %}], "CARD_TYPE": "{{ {'MifareUltralight': 'NTAG', 'MifareClassic1k': 'M1'}.get(scan.tag_type, scan.tag_type) }}" } } From 160a97ea9dc38727c2e49322865fa356aa70c772 Mon Sep 17 00:00:00 2001 From: Rrrrobert Date: Sat, 17 Oct 2026 15:50:25 -0400 Subject: [PATCH 2/2] openrfid: keep CARD_UID line unchanged in webhook templates Put the RGB_2..RGB_5 loop on its own lines instead of prefixing the CARD_UID line with the endfor tag, as requested in review. The rendered JSON is identical apart from whitespace. Made with help from Claude --- .../local/share/openrfid/extended/openrfid_u1_generic.cfg | 6 ++++-- .../local/share/openrfid/extended/openrfid_u1_vendor.cfg | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/overlays/firmware-extended/64-app-openrfid/root/usr/local/share/openrfid/extended/openrfid_u1_generic.cfg b/overlays/firmware-extended/64-app-openrfid/root/usr/local/share/openrfid/extended/openrfid_u1_generic.cfg index 39ee7de7a..0eca78c6b 100644 --- a/overlays/firmware-extended/64-app-openrfid/root/usr/local/share/openrfid/extended/openrfid_u1_generic.cfg +++ b/overlays/firmware-extended/64-app-openrfid/root/usr/local/share/openrfid/extended/openrfid_u1_generic.cfg @@ -17,8 +17,10 @@ body_json_template = { "BED_TEMP": {{ filament.bed_temp_c | int }}, "ALPHA": {{ filament.alpha }}, "RGB_1": {{ filament.rgb }}, - {% for c in filament.colors_rgba[1:5] %}"RGB_{{ loop.index + 1 }}": {{ (c // 256) % 16777216 }}, - {% endfor %} "CARD_UID": [{% for i in range(0, scan.uid|length, 2) %}{{ scan.uid[i:i+2]|int(0, 16) }}{% if not loop.last %}, {% endif %}{% endfor %}], + {% for c in filament.colors_rgba[1:5] %} + "RGB_{{ loop.index + 1 }}": {{ (c // 256) % 16777216 }}, + {% endfor %} + "CARD_UID": [{% for i in range(0, scan.uid|length, 2) %}{{ scan.uid[i:i+2]|int(0, 16) }}{% if not loop.last %}, {% endif %}{% endfor %}], "CARD_TYPE": "{{ {'MifareUltralight': 'NTAG', 'MifareClassic1k': 'M1'}.get(scan.tag_type, scan.tag_type) }}" } } diff --git a/overlays/firmware-extended/64-app-openrfid/root/usr/local/share/openrfid/extended/openrfid_u1_vendor.cfg b/overlays/firmware-extended/64-app-openrfid/root/usr/local/share/openrfid/extended/openrfid_u1_vendor.cfg index 1940957e3..53092eae2 100644 --- a/overlays/firmware-extended/64-app-openrfid/root/usr/local/share/openrfid/extended/openrfid_u1_vendor.cfg +++ b/overlays/firmware-extended/64-app-openrfid/root/usr/local/share/openrfid/extended/openrfid_u1_vendor.cfg @@ -17,8 +17,10 @@ body_json_template = { "BED_TEMP": {{ filament.bed_temp_c | int }}, "ALPHA": {{ filament.alpha }}, "RGB_1": {{ filament.rgb }}, - {% for c in filament.colors_rgba[1:5] %}"RGB_{{ loop.index + 1 }}": {{ (c // 256) % 16777216 }}, - {% endfor %} "CARD_UID": [{% for i in range(0, scan.uid|length, 2) %}{{ scan.uid[i:i+2]|int(0, 16) }}{% if not loop.last %}, {% endif %}{% endfor %}], + {% for c in filament.colors_rgba[1:5] %} + "RGB_{{ loop.index + 1 }}": {{ (c // 256) % 16777216 }}, + {% endfor %} + "CARD_UID": [{% for i in range(0, scan.uid|length, 2) %}{{ scan.uid[i:i+2]|int(0, 16) }}{% if not loop.last %}, {% endif %}{% endfor %}], "CARD_TYPE": "{{ {'MifareUltralight': 'NTAG', 'MifareClassic1k': 'M1'}.get(scan.tag_type, scan.tag_type) }}" } }