Att bygga en akvaponi – del 6 – integration med blockkedja

Detta är en beskrivning av hur vi på Johannas Stadsodlingar och Concinnity tillsammans har byggt Johannas Akvaponi Pilotanläggning. Vi vill dela med oss hur vi har gjort och tänkt. Det är ganska mycket att tänka på, så det blir flera inlägg för att täcka det mesta.

Cultivation Management Platform

De digitala system vi byggt har grundats på den vision vi satte i början på projektet som vi kallar Cultivation Management Platform (CMP).

Cultivation Management Platform, Copyright 2019 Johannas Stadsodlingar AB. Some rights reserved. Creative Commons BY-SA-NC 3.0.

CMP kan delas upp i fyra delar:

● Vattenkvalitets- och näringstester (Water quality & nutrient tests)
● Vatten-, luft- och automationssensorer (Water & air sensors)
● Produktionsspårning (Production management)
Distributed ledger / blockkedja (Blockchain)

I detta avsnitt beskriver vi arbetet med distributed ledger / blockkedja (Blockchain).

Vi har byggt ett system som demonstrerar hur man kan använda en distributed ledger. En distributed ledger är en databas som kan delas mellan många olika parter, där alla parter gemensamt kontrollerar informationen och där all data som lagras är ”permanent”, dvs den går i princip inte att ändra på i efterhand. Det kan låta väldigt opraktiskt, men vad man istället gör när data behöver ändras är att man refererar till den ursprungliga informationen och lägger till en ändring. På så vis blir alla förändringar av databasen synliga för alla parter. Blockkedjan, blockchain, är den underliggande teknologi som används för att garantera att informationen som lagra i databasen inte går att ändra i efterhand. (Detta är naturligtvis en mycket förenklad beskrivning av hur en distributed ledger fungerar i praktiken!)

Vi har fått tillgång till IBM Food Trust(IFT) för att bygga vår blockkedjedemonstration i samarbete med IBM och Atea som är en svensk IBM-partner. IFT är en distributed ledger baserad på open-source programvaran Hyperledger som implementerar en blockkedjebaserad databas. IFT tillhandahåller API:er för att lagra data i och hämta data från blockkedjan.

Systemet i stora drag

Data från vårt produktionsspårningssystem transformeras för att “passa” i IFT och skickas dit för lagring (XML Gen). Detta sker regelbundet med automatik så att data i IFT är synkroniserad med produktionsspårningssystemet. En andra del, Data display, hämtar information från IFT. Vi presenterar en lista över alla skördar som gjorts och man kan välja en skörd för att få en detaljerad beskrivning av alla stegen som just denna planta gått igenom på sin väg från frö till färdig produkt.

Data

Den data vi lagrar i IFT är baserad på kärnan av den data vi genererar i produktionsspårningssystemet. Detta innefattar varje steg i spårningen av en planta från groddning till skörd. All data som lagras i IFT får unika ID:n som vi sedan använder när vi hämtar information ur IFT i klientappen (Data display). På så sätt har vi kunna bygga klientappen så att den inte är beroende av någon del av den ursprungliga informationen från produktionsspårningssystemet utan all information kommer från IFT.

Implementation

Systemet består av två delar. Den första delen, XML Gen, hämtar data från produktionsspårningssystemet och efter att ha transformerat denna data till XML skickas den till IFT för lagring i blockkedjan. Den andra delen, Data display, hämtar data från IFT och presenterar den som webbsidor. Denna del hämtar informationen från IFT, där data levereras i formatet JSON, och efter transformation av denna data skapar vi vyer som webbsidor. Observera att Data display är helt oberoende av den ursprungliga informationen i produktionsspårningssystemet. Den köras som en helt oberoende tjänst eftersom den hämtar all nödvändig information från IFT.

XML Gen

Det visar sig att de händelser vi skapar i produktionsspårningssystemet låter sig översättas till liknande händelser i IFT. Den data som vi på så sätt lagrar i IFT är baserad på GS1 EPCIS Standard 17 . Vi har skapat en XML-mall för varje typ av händelse som vi sedan fyller i med aktuell data varefter den laddas upp till IFT. Utöver denna information registrerar vi varje kombination av frön och leverantörer vi använder som produkter i IFT, samt en plats, gården där vi driver akvaponin. Dessa dokument är baserade på GS1 GDSN Standard 18 och data i IFT skapas på liknande sätt från en kombination av XML-mallar och data från produktionsspårningssystemet. IBM har en wiki på GitHub med information om hur de använder dessa standarder, om API:erna mot IFT etc som vi haft mycket nytta av.

Commission-event XML template

IFT definierar ett antal olika händelser och vi har använt tre typer för att registrera vår data, Commission, Observation och Transformation. Dessa tre händelser är definierade i EPCIS. Commission används när en ny enhet av en viss produkt ska registreras. Vi använder denna händelse för att registrera Groddningshändelsen. Observation används för att registrera en förändring hos en existerande enhet. Denna typ av händelse använder vi för att registrera händelserna Stickling och Skörd från produktionssystemet. Slutligen använder vi en Transformation för att registrera våra händelser av typ Planta. En Transformation “gör om” en produkt till en annan. I vårt fall transformerar vi en stickling till en planta. Detta modellerar bra den praktiska förflyttningen av sticklingarna från odlingsbrickan till flottarna där de växer till färdiga plantor.

Data display
Data display

Data display hämtar data från IFT via ett flertal API-anrop (endpoints). Med hjälp av anropet “/products” får vi en lista på alla registrerade produkter. Utifrån denna lista kan vi sedan hämta detaljer om varje skörd. Sedan hämtar vi fullständig produktdata för varje skörd så att vi kan visa vilken typ av planta och leverantör den består av. Slutligen använder vi anropet “/trace” för att få “historiken” för varje skörd, dvs de fyra händelserna i plantans liv. På så sätt kan vi visa den fulla historiken för varje skördad planta.

Diskussion

Denna prototyp är mycket “minimalistisk”, men den innefattar ändå de fundamentala delarna i ett blockkedjebaserat spårningssystem. Vi skulle kunna leverera våra produkter med en märkning i form av en streck- eller QR-kod, som länkar till en webbsida där köparen kan få den fulla historiken av hur plantan kom till.

[track’n’trace image?]

I dagsläget saknas information om vad som hänt med produkten från det att den skördats till dess att kunden har den i sin hand, men om man spårar även denna del skulle kedjan kunna förlängas och hela förloppet kunna finnas dokumenterat i blockkedjan i IFT. Den delen av spårningen skulle kunna göras av ett speditionsföretag och/eller av butiken som säljer produkten. De olika parterna skulle lagra “sin del” av informationen var för sig i blockkedjan samtidigt som kunden kan se hela det resulterande händelseförloppet.

I nästa inlägg så tittar vi närmare på lärdomar från pilotsystemet som vi byggt.

Texten i detta inlägg är licensierad under Creative Commons BY-NC-SA International.

Build an aquaponic indoor farm – part 6 – Block chain integration

This is a description of how we at Johannas Stadsodlingar (urban farms) and Concinnity together have built Johanna’s aquaponic pilot facility. We want to share how we did it and our thinking behind it. There is quite a lot to think about, so there will be several posts to cover most things.

Cultivation Management Platform

The digital systems we have built are based around the vision we set out with at the start of the project. We call it the Cultivation Management Platform.

Cultivation Management Platform, Copyright 2019 Johannas Stadsodlingar AB. Some rights reserved. Creative Commons BY-SA-NC 3.0.

The CMP consists of four parts:

  • Water quality and nutrients tests
  • Water, air and automation sensors
  • Production management
  • Distributed ledger / block chain

In this part we will describe our work around integrating a distributed ledger/block chain system.

We have built a system that demonstrates how to use a distributed ledger. A distributed ledger is a database that can be shared between many different parties, where all parties jointly control the information and where all data stored is ”permanent”, i.e. it can in principle not be changed after having been recorded. This may sound very impractical, but instead of changing data you create a reference to the original information and add a change. In this way, all changes to the database become visible to all parties. The blockchain is the underlying technology used to ensure that the information stored in the database cannot be changed afterwards. (This is of course a very simplified description of how a distributed ledger works in practice!)

We have gained access to IBM Food Trust (IFT) to build our blockchain demonstration in collaboration with IBM and Atea, a Swedish IBM partner. IFT is a distributed ledger based on the open-source software Hyperledger that implements a blockchain-based database. IFT provides APIs for storing data in and retrieving data from the blockchain.

System overview

Data from our production tracking system is transformed to ”fit” in IFT and sent there for storage (XML Gen). This is done using automation so that data in IFT is continuously synchronized with the production tracking system. A second part, Data display, retrieves information from IFT. We present a list of all harvests that have been made and you can choose a harvest to get a detailed description of all the steps that this particular plant went through on its way from seed to finished product.

Data

The data we store in IFT is based on the core of the data we generate in the production management system. This includes every step in the tracing of a plant from germination to harvest. All data stored in IFT gets unique IDs which we then use when we retrieve information from IFT in the client app (Data display). In this way, we have been able to build the client so that it does not depend on any part of the original information from the production tracking system, but all information comes from IFT.

Implementation

The system consists of two parts. The first part, XML Gen, retrieves data from the production tracking system and, after transforming this data into XML, sends to IFT for storage on the blockchain. The second part, Data display, retrieves data from IFT and presents it as web pages. This part fetches the information from IFT, where data is delivered in the JSON format, and after transforming this data, we create views as web pages. Note that the Data display is completely independent of the original information stored in the production management system. Data display part can be run as a completely independent service since it retrieves all necessary information from IFT.

XML Gen

It turns out that the events we create in the production management system can be translated into similar events in IFT. The data we store in this way in IFT is based on GS1 EPCIS Standard 17. We have created an XML template for each type of event which is filled in with data for the current event and then uploaded to IFT. In addition to this information, we register every combination of seeds and suppliers we use as ”products” in IFT, as well as a ”location”, our aquaponics farm. These templates are based on GS1 GDSN Standard 18 and data in IFT is created in a similar way from a combination of XML templates and data from the production management system. IBM has a wiki on GitHub with information about how they use these standards, about the APIs of IFT etc that we have benefited a lot from.

Commission-event XML template

IFT defines a number of different events and we have used three types to register our data; Commission, Observation and Transformation. These three events are defined in EPCIS. The Commission event is used when a new unit of a particular product is to be registered. We use this event to register the production management system Plant event. Observation is used to register a change in an existing unit. We use this type of event to register the events Seedling and Harvesting from the production management system. Finally, we use a Transformation to record our Plant events. It transforms one product into another. In our case, we transform a seedling into a plant. This models well the practical transfer of the seedlings from the cultivation tray to the rafts where they grow into finished plants.

Data display
Data display

Data display retrieves data from IFT via several API calls (endpoints). With the help of the call “/ products” we get a list of all registered products. Based on this list, we can then retrieve details about each harvest. Then we retrieve complete product data for each harvest so that we can show what type of plant and supplier it consists of. Finally, we use the call “/ trace” to get the “history” for each harvest, ie the four events in the plant’s life. In this way we can show the full history of each harvested plant.

Discussion

This prototype is very minimalistic, but it still includes the fundamental parts of a blockchain-based tracking system. We could deliver our products with a label in the form of a bar or QR code, which would link to a website where the buyer can get the full history of how the plant came to be.

[track’n’trace image?]

At present, there is no information about what happened to the product from the time it was harvested until the customer has it in their hands, but if you also trace this part, the chain could be extended and the entire process could be documented on the blockchain in IFT. That part of the tracking could be done by a delivery company and/or by the store that sells the product. The various parties would store “their share” of the information separately in the blockchain at the same time as the customer can see the entire resulting sequence of events.

In the future we could also include more information like the environmental ”footprint” of the product and its nutritional value. This would of course require more thorough data gathering and analysis on our end than we are capable of at present, but it is definitely something we are discussing.

This concludes our series Build an aquaponic indoor farm. At least for now!

The text in this posted is licensed under Creative Commons BY-NC-SA International.

Podcast: Spårbarhet och transparens med blockkedja

Något som binder samman alla våra projekt är digitalisering av processerna. Nu kan vi berätta att vi har ett samarbete med IBM Accelerator Sweden och ATEA Sverige där vi jobbar med att bygga en integration av de data system som vi använder med IBM FoodTrust.

Lyssna på en podcast från Techradar om vårt samarbete med IBM Accelerator Sweden.

Techradar podcast: Från mikroekosystem till makrosamarbeten

Vi vill gärna välja ekologiskt och närproducerat – men hur kan vi veta vad det egentligen är vi har på tallriken, hur ska vi kunna följa varje råvara från producenten till affären och hur kan vi veta vad som har hänt på vägen?  Hör oss berätta om cirkulär odling, akvaponi, hållbarhet, miljö och om alla de utmaningar man kan ställas inför som en startup – och om hur IBM kan hjälpa till. Vi pratar också om hur en önskan att lämna planeten tillsammans med ett besök på en science fiction-mässa kan leda till att man börjar ägna sig åt kretsloppsbaserad odling.

Lyssna på podcasten från Techradar.

Projektrapport: Matsvinn som resurs… insekter som fiskfoder och blockchain

Projektrapport: Matsvinn som resurs i ett cirkulärt system med insekter som fiskfoder och blockchain för kvalitetssäkring

RAPPORT, STEG 1 VINNOVA 2019-02461, 2019-12-15

Här kan man ladda ner projektrapporten från detta projekt (PDF 2.6 Mbyte).

Sammanfattning

Vad blir viktigt för att nå de långsiktiga effektmålen?

  • Det finns mycket svinn / matavfall. Om vi använder en del av detta kan det räcka till mycket fiskfoder.
  • Det finns en osäkerhet om hur lagar och regler hänger ihop, gråzoner och ingen vägledning.
  • Dagens regelverk är inte avsedda för cirkulära system
  • Resultaten från SOAn visar att flertalet nyckelaktörer har identifierat följande kritiska punkter för implementering och uppskalning av innovationskonceptet:
    • Lagar & Regelverk för matsvinn och foder
    • Kvalitetssäkring genom spårbarhet i hela kedjan
    • Samverkan mellan nyckelaktörernas kompetenser

Enstaka nyckelaktörer identifierade även följande viktiga punkter

  • Lokal förankring
  • Samverkan med andra projekt
  • Pengar för investeringar

Digitalisering blir ett viktigt verktyg för att nå målen

  • Ett stortantal processer som ingår i ett cirkulärt matproduktionssystem och många av dessa behöver dokumenteras om man vill uppnå god spårning och transparens. Vi tror det är mycket svårt att producera ett säkert cirkulärt matproduktionssystem utan att spårning och transparens baseras på digitala lösningar.
  • Digitalisering av spårbarhet, transparens är ingen svår teknisk utmaning i sig. En av det främsta identifierade utmaningarna består av att uppnå ett brett upptag av ett digitaliserat system. Ett annan utmaning är hur man uppnår kvalitet på data och urval på vilken data som skall samlas in och vem data delas med. Datautvinning via indirekta metoder i ett större gemensamt system kan uppfattas som en risk för deltagarna och deras affärshemligheter runt deras försörjningskedja. Slutligen så är, baserat på tidigare erfarenhet, befintliga processer och deras förankring inom matproduktionsindustrin troligen en stor utmaning att ändra.