Hver eneste bryg fra de to Eversys-maskiner på 2. og 3. sal logges i Eversys Telemetry API. Vi henter dem hvert femte sekund og oversætter dem til en CO₂-værdi ved hjælp af to faktorer:
co₂(bryg) = bønner (g) × 1,24 + mælk (ml) × 1,4
1,24 g CO₂eq pr. g bønner kommer fra vores
kaffeleverandør
ØNSK kaffe
og er deres opgjorte aftryk for de specifikke bønner, vi bruger.
Det er usædvanligt lavt sammenlignet med ikke-certificeret kaffe
(typisk 15–17 g/g).
1,4 g CO₂eq pr. ml mælk er en standardværdi for
økologisk komælk fra nordeuropæiske LCA-studier. Begge tal kan
ændres i config.json.
Hvad er ikke regnet med
Elektricitet til maskinen, vand, emballage og logistik er bevidst udeladt. Bønner og mælk er de dominerende bidrag for kaffemaskinen som helhed; resten ville støje uden at flytte rangordenen mellem espresso og latte. Det er den vægtning, der gør det meningsfuldt at sammenligne en sort kaffe (≈13 g CO₂) med en cappuccino (≈210 g) — det er mælken, ikke elspareren, der gør forskellen.
Bønner pr. bryg
API'et fortæller os ikke direkte, hvor mange gram bønner der
gik i hver enkelt kop. Vi slår op i en lille tabel
(beansByProduct) på navnet for den knap, der blev
trykket — fx Espresso = 7 g, Dbl. Latte = 14 g,
Strong Coffee = 8 g, White tea 80° = 0 g.
Hver knap-værdi skaleres derefter med en kalibrerings-faktor k, som vi regelmæssigt justerer, så den samlede sum af vores estimater matcher maskinens fysiske bønne-tæller. Lige nu er k ≈ 1,5 på begge maskiner; det betyder, at en espresso reelt får ~10,5 g bønner i estimatet. Tallet for et enkelt bryg kan være let unøjagtigt, men de daglige og månedlige totaler er præcise til et kg.
Mælk pr. bryg
Eversys logger et tal i et felt der hedder
milk.consumption, men det er ikke i
millilitre — det er en intern pumpetælling. Vi har kalibreret
det mod en konkret Milk for Choco-portion på ~175 ml,
hvor API'et rapporterede consumption = 14. Det
giver
mælk (ml) = consumption × 12,5
For enkelt-bryg holder det vand: en Cappuccino ender på
~150 ml, en Latte på ~140 ml, en Cortado på ~60 ml. For
dobbelte drikke (Dbl. Latte, Dbl. Cappuccino o.l.)
rapporterer API'et samme consumption som det
enkelte alternativ — et kendt aftryk fra Eversys-firmwaren.
I de tilfælde overskriver vi med en fast værdi pr. produkt
i milkByProduct.
Navne på drikke
Eversys' API bruger to forskellige indekser for det samme
produkt: /product-parameters giver navne efter
productId, men brygge-historikken refererer til
knappen via keyId = productId + 1. Vi forskyder
derfor opslaget, så et bryg med keyId = 16
viser Milk for Choco (productId 15) og ikke Green
Tea 85°. API'ets indbyggede drink_type-felt
ignorerer vi — det er firmwarens egen klassifikation
og ikke til at stole på (en Latte registreres som
CAPPUCCINO, en Espresso som MILK_COFFEE
osv.).
Skvæt-mælk og opfølgnings-bryg
Når man dispenserer et lille skvæt ekstra mælk efter en kop kaffe, logger Eversys det som en ny separat bryg. Vi sammenlægger den med den foregående kop, hvis den kommer inden for fem minutter og kun indeholder mælk eller varmt vand. På den måde står Cappuccino + ekstra mælk som én kop, ikke to.
Kildekode & data
Hele projektet ligger på
github.com/NielsOerbaek/kaffe-skam.
Den fulde specifikation, beslutninger og afvejninger findes
under docs/superpowers/specs/.
API-dokumentationen for Eversys-telemetri er på
developers.eversys-telemetry.com.