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) odermodel_version_id. Ersetzen Sie dafürserial_prefixin 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=1024an (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
donelabels/SV2027-000182.svg
labels/SV2027-000184.svg
labels/SV2027-000185.svgJede 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.
Nächtlicher Zustandsdaten-Push
Ein geplanter Job, der die Messwerte der letzten Nacht aus Ihrer eigenen Quelle liest und je Einheit ein updateCondition sendet, mit Backoff bei 429.
Data-Warehouse-Abgleich
Gehen Sie alle Einheiten und ihre aktuellen Werte seitenweise durch und schreiben Sie je Einheit eine JSON-Zeile, bereit zum Laden in ein Data Warehouse.