Koden bak pantehullet i veggen: – Ufattelig komplisert på baksiden!

Hva skjer når du panter en flaske? Det er mer innviklet enn de fleste tror, kan utviklerne bak avsløre.

Olav Johan Horgen i Tomra viser hvordan alt henger sammen. 📸: Kurt Lekanger
Olav Johan Horgen i Tomra viser hvordan alt henger sammen. 📸: Kurt Lekanger Vis mer

Det norske selskapet Tomra er verdensledende innenfor panteløsninger, med rundt 81.000 panteautomater i 60 land. Totalt pantes det så mye som 46 milliarder flasker hvert år verden over.

Men hva skjer egentlig etter at du har puttet flasken inn i hullet i veggen? Og hvordan sørger man for at ingen kan pante den samme flasken to ganger, for eksempel ved å jukse med strekkoder eller pantelapper?

kode24-dagen torsdag 9. februar kunne programvareingeniør Johnny Njåstad og data scientist Olav Johan Horgen i Tomra avsløre hvordan det hele fungerer.

– Vi har et grensesnitt som er utrolig enkelt – hullet i veggen, for noe som er ufattelig komplisert på baksiden, sa Horgen fra scenen.

Tar 1500 bilder i sekundet

Panteautomatene blir bygget av deler kjøpt fra hele verden, og satt sammen i Lier utenfor Oslo. Rundt 38.000 forskjellige deler brukes til å sette sammen de ulike typene pantemaskiner Tomra selger.

Tomra har laget panteautomater lenge, og det står automater i butikker som kan være opptil 20 år gamle. Den høye alderen på mange av maskinene skaper noen ekstra utfordringer for utviklerne.

– Vi må støtte gamle maskiner, selv de som er kjøpt for 20 år siden. Vi må alltid være bakoverkompatible, forteller Njåstad.

«Samtidig som strekkoden blir skannet, sørger et intrikat system av speil og linser for at automaten kan kjenne igjen formen på flasken.»

De mest moderne maskinene er svært avanserte.

– Rett på innsiden er det seks kameraer som ser på objektet som går inn, leser strekkoder og finner ut hvilket objekt det er. I noen markeder må vi også validere ulike pantemerker som har egne sikkerhetsmekanismer, sier Horgen.

Hvert av de seks kameraene tar 250 bilder i sekundet, altså tilsammen 1500 bilder per sekund. Gjenkjenning av en flaske eller boks går derfor mye raskere enn på de gamle maskinene, der flaskene roterte rundt til en strekkodeleser kunne lese strekkoden.

Blir til digitale penger

Samtidig som strekkoden blir skannet, sørger et intrikat system av speil og linser for at automaten kan kjenne igjen formen på flasken. Flasken blir også veid, og det er sensorer som finner ut hva slags materiale flasken eller boksen er laget av.

«Det er nå flaskens digitale liv starter.»

– Da tar automaten beslutningen: pant eller ikke pant. Er det ikke pant, går flasken ut igjen, forteller Horgen.

Er det pant, blir flasken eller boksen flatklemt, og den mister pengeverdien i systemet slik at ingen kan pante den på nytt.

– Pengeverdien lever så videre i maskinen og i skyen. Det er nå flaskens digitale liv starter.

Mikrokontroller produsert i Asker

Panteautomatene har en egenutviklet mikrokontroller som er designet og produsert i Asker.

– Vi er en norsk bedrift som gjør veldig mye av produksjonen i Norge, sier Njåstad.

Tomra har mange utviklere som jobber med embedded-programmering. 📸: Kurt Lekanger
Tomra har mange utviklere som jobber med embedded-programmering. 📸: Kurt Lekanger Vis mer

For å få opp prosesseringshastigheten og kunne parallellisere prosesser brukes det programmerbar elektronikk, såkalte FPGA-er (Field-Programmable Gate Array).

– Vi måtte ty til "bleeding edge" for prosessering. I tillegg til en hoveddatamaskin har vi haugevis av mikrokontrollere, sier Horgen.

Linux, Qt og C++

Datamaskinen i panteautomaten kjører Linux som operativsystem.

– Som primært rammeverk bruker vi Qt og C++, sier Horgen.

Qt er et kryssplattform-rammeverk for å lage grafiske brukergrensesnitt, og opprinnelig utviklet i Norge av Trolltech – et selskap som senere ble solgt til Nokia. Nå eies det av The Qt Company, men mye av utviklingen skjer fortsatt i Oslo.

Arkitekturen som brukes i datamaskinen inne i pantemaskinen består av mange ulike moduler som snakker sammen over en databuss som heter DBUS. 📸: Kurt Lekanger
Arkitekturen som brukes i datamaskinen inne i pantemaskinen består av mange ulike moduler som snakker sammen over en databuss som heter DBUS. 📸: Kurt Lekanger Vis mer

Pantemaskiner varer nesten evig, men skal likevel ha programvareoppdateringer. Derfor er en del av kodebasen felles for ny og gammel teknologi.

«Pantemaskiner varer nesten evig, men skal likevel ha programvareoppdateringer.»

De gamle automatene har en fysisk mikrokontroller, mens de nye er en "softcore"-CPU inne i en FPGA.

– Slik kan vi ha mye av den samme kodebasen på ny og gammel maskinvare. Det er litt plagsomt, men nødvendig. Vi har et 20-årsperspektiv på programvaren vår, sier Horgen.

Utviklerne i Tomra er delt inn i fire team:

  • Et plattformteam
  • Recognition-team. Jobber med bildebehandling og gjenkjenning.
  • Sorting-team. De som styrer det som skjer på bakrommet til panteautomaten.
  • Et kjerneteam som jobber med forretningslogikk og brukergrensesnitt.

Avansert digital plattform

Tomra har laget en digital plattform som ikke bare skal støtte sluttbrukeren (den som panter flasken), men også den enkelte butikk og butikkjedene. Alle pantemaskiner er til enhver tid online, og mye kjører i skyen.

Johnny Njåstad forklarer hvordan Tomras digitale plattform er sydd sammen. 📸: Kurt Lekanger
Johnny Njåstad forklarer hvordan Tomras digitale plattform er sydd sammen. 📸: Kurt Lekanger Vis mer

En egen app som heter Notify+Assist kan levere sanntidsmeldinger til mobiltelefoner eller nettbrett, slik at ansatte kan varsles når en maskin trenger tilsyn.

Tomras egen service- og overvåkingsavdeling kan også koble seg opp mot hver enkelt maskin hvis den skulle kreve tilsyn.

«Tomras digitale plattform baserer seg mye på eventer og mikrotjenester.»

– Vi har ellers en utviklerportal som støtter store kjeder som har kjøpt flere tusen pantemaskiner, og ønsker å få oversikt over en hel flåte med automater, sier Horgen.

Tomras digitale plattform baserer seg mye på eventer og mikrotjenester. Hver gang noen panter en flaske, er dette en event med data om hvilken butikk det gjelder, hva slags type flaske eller boks, og så videre.

– Vi bruker pubsub som eventfordeler. Så blir hver mikrotjeneste eksponert for informasjon om en flaske hvis den har behov for det, forklarer Horgen.

Tomra var opprinnelig en typisk "fossefallsorganisasjon", som nå har gått over i en mer smidig (agil) DevOps-verden med CI/CD og hyppig utrulling av oppdateringer. De benytter mange av Googles "managed services" – som Cloud Run – for å få frontend til å kommunisere på det Horgen kaller "en trygg vei mot mikrotjenestene".

Vil bruke maskinlæring

Det sier seg selv at panteautomater ikke bare blir utsatt for slitasje gjennom hyppig bruk, men også er mye utsatt for søl fra brus, øl og annet som renner ut av tomflaskene. Derfor trenger maskinene innimellom service og vedlikehold.

– Vi har en ganske stor serviceorganisasjon, men trenger å få enda mer effektiv service. Derfor har vi begynt å se på prediktiv service, sier Horgen.

Sensorer og maskinlæring gjør det mulig å forutse når en komponent trenger utskiftning, før den går i stykker. 📸: Kurt Lekanger
Sensorer og maskinlæring gjør det mulig å forutse når en komponent trenger utskiftning, før den går i stykker. 📸: Kurt Lekanger Vis mer

Som et eksempel nevner han kompaktoren, enheten som presser alle flaskene og boksene sammen. Tomra ser nå på hvordan de kan bruke sensorer og maskinlæring for å finne ut når det er på tide å bytte komponenter. Poenget er at det ikke lønner seg å bytte for tidlig – men man kan heller ikke vente til noe har gått i stykker.

– Vi skal forutse når kompaktoren skal byttes ved å bruke de dataene vi har tilgjengelig. Dette ønsker vi å ta i produksjon neste år.

Målet er å gjenvinne 500 milliarder flasker i året, mer enn ti ganger det Tomra tar imot i dag.

– Da er vi nødt til å ha skalerbare tjenester. Det har vi gjennom Kubernetes og managed services i Google-plattformen, sier Horgen.