Zum Inhalt springen

QR-Etiketten für eine Produktionscharge

Listen Sie die veröffentlichten Einheiten einer Charge über das Seriennummernpräfix und speichern Sie den QR-Code jeder Einheit als SVG-Datei für den Etikettendruck.

Das Skript listet mit listBatteries die Einheiten, deren Seriennummer mit einem Präfix beginnt (Ihre Charge, etwa SV2027-0001) und deren Pass veröffentlicht ist, und speichert den QR-Code jeder Einheit mit getPassportQr als labels/<Seriennummer>.svg. Es braucht einen Schlüssel mit dem Scope read.

  • Andere Wege, eine Charge auszuwählen: import_id (die Einheiten eines Tabellenimports) oder model_version_id. Ersetzen Sie dafür serial_prefix in der Abfrage.
  • Etiketten, die vor der Veröffentlichung gedruckt werden: Verwenden Sie stattdessen passport_status=qr_locked. Den QR-Code gibt es, sobald die Kennungen gesperrt sind, und der Link darin ändert sich danach nie mehr.
  • SVG skaliert für jede Etikettengröße. Für eine Rastergrafik fragen Sie ?format=png&size=1024 an (128 bis 2048 Pixel).
  • Ein / in einer Seriennummer wird im Dateinamen zu _.
#!/usr/bin/env bash
# qr-labels.sh SV2027-0001: an SVG QR code per published unit of a batch (needs curl and jq)
set -euo pipefail
prefix="$1" # the batch: serial numbers that start with this, e.g. SV2027-0001
auth="Authorization: Bearer $BATTERYPASS_API_KEY"
mkdir -p labels
cursor=""
while :; do
  page=$(curl -sS --fail --retry 5 -G "$BATTERYPASS_URL/api/v1/batteries" -H "$auth" \
    --data-urlencode "serial_prefix=$prefix" -d passport_status=published -d limit=200 \
    ${cursor:+--data-urlencode "cursor=$cursor"})
  jq -r '.items[] | [.id, (.serial_number | gsub("/"; "_"))] | @tsv' <<<"$page" |
    while IFS=$'\t' read -r id serial; do
      curl -sS --fail --retry 5 -H "$auth" -o "labels/$serial.svg" \
        "$BATTERYPASS_URL/api/v1/batteries/$id/passport/qr?format=svg"
      echo "labels/$serial.svg"
    done
  cursor=$(jq -r '.next_cursor // empty' <<<"$page")
  [ -n "$cursor" ] || break
done
Ausgabe
labels/SV2027-000182.svg
labels/SV2027-000184.svg
labels/SV2027-000185.svg

Jede Einheit kostet eine Anfrage, und alle Schlüssel Ihrer Organisation teilen sich 600 Anfragen pro Minute; bei 429 warten die Skripte. Mehr zum QR-Code und zu den anderen Exporten unter Pässe exportieren.