Under hösten så har Johannas Stadsodlingar, Tebrito och Ecoloop arbetat tillsammans med flera myndigheter i ett projekt som heter One Stop Myndighetsshop. Livsmedelsverket har varit ledande myndighet och har arbetat tillsammans med konsultfirman Antrop.
One Stop Myndighetsshop har beskrivits som:
En myndighetsöverskridande samverkansmodell för att framtidssäkra en hållbar och attraktiv matsektor med innovationshöjd i toppklass.
Från slutpresentationen
Johannas och Tebrito valdes ut av myndigheterna för att det väl representerar många av de utmaningar som finns med gamla lagar, regler och praxis som skapades för ett linjärt matproduktionssystem, nu när vi ställer om till cirkulära metoder.
Slutpresentationen livesändes och kan hittas här på YouTube.
English
During the autumn, Johannas Stadsdodlingar, Tebrito and Ecoloop worked together with several authorities in a project called One Stop Myndighetsshop (One Stop shop for Laws and Permits). The Swedish Food Agency has been the leading authority and has worked together with the consulting firm Antrop.
One Stop Myndighetsshop has been described as:
A multi-agency collaboration model to future-proof a sustainable and attractive food sector with top-class innovation.
From the final presentation in the project.
Johannas and Tebrito were selected by the authorities because they represent well many of the challenges that exist with old laws, regulations and practices that were created for a linear food production system, now that we are switching to circular methods.
The final presentation was broadcast live and can be found above on YouTube.
Fungerar dagens lagar och regler väl ihop med matproduktion som är baserad på kretslopp och cirkuläritet? Vad är utmaningarna och vad kan vi göra för att komma runt dessa?
Thomas Bjelkeman-Pettersson, från Johannas, deltog i ett rundabordssamtal på Miljöbalksdagarna som arrangeras av Naturvårdsverket. Runt bordet fanns också representanter från Naturvårdsverket, Vinnova (Innovationsmyndigheten), samt en filosof. Samtalet blev en riktig djupdykning i ämnet.
Musselodling som ett sätt att lyfta näringsämnen från Östersjön tillbaka i kretsloppsbaserad matproduktion tror vi kommer att vara väldigt effektivt i framtiden. Vi är inte ensamma om den åsikten. Vi samarbetar i flera projekt med Anders Kiessling, Professor i akvakultur på SLU och med Aleksandar Vidakovic, forskare på SLU. Det var båda författare till en rapport 2019 som heter, ”Musselodling i Östersjön som miljöåtgärd – nya positiva data från tre pågående EU projekt”.
Data från testodlingar under flera år visar att det kan inte bara vara ett bra och ekonomiskt sätt att lyfta överskottsnäring från Östersjön, men det fungerar också bättre än man trodde tidigare.
Mats Emilsson som vi ser här på bilderna har jobbat i flera år med att design förbättrade metoder och redskap anpassade för odling av musslor i Östersjön. Mats jobbar med det på Vattenbrukscentrum Ost.
Johannas jobbar ihop med Anders Kiessling och Aleksandar Vidakovic för att testa nya recept för fiskfoder, delvis baserat på musslor, men också på insekter uppföda på plantbaserat matsvinn från matproduktion, som är dela av vårt projekt Matsvinn 2. Slutmålet är ett fiskfoder helt baserat på regionala resurser, som ingår i de kretsloppssystem som vi designar och bygger, med förbättrad Östersjö-havsmiljö, minskad import av soja, fiskmjöl och fiskolja som del av foder, bättre foder för fisken och mindre miljöpåverkan från vår produktion.
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.
Del 6 – integration med blockkedja (denna blogpost)
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).
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.
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 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.
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.
Part 6 – distributed ledger/block chain integration (this post)
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.
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.
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 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!
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.
Del 6 – integration med blockkedja (kommande blogpost)
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).
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 produktionsspårning.
Systemet i stora drag
Med digital spårning, eller produktionsspårning, samlar vi in data om hur själva odlingen framskrider. Huvuddelarna i detta system är en mobilapp och en molnbaserad service som appen kommunicerar med. Med mobilappen registrerar vi varje betydelsefull händelse under en plantas väg genom systemet, från frö till färdigt salladshuvud! All data lagras i molntjänsten och är tillgänglig både från appen och från ett administrativt gränssnitt i tjänsten.
Odlingsprocessen som data
Odlingsprocessen organiseras i vad vi kallar för omgångar, där en omgång är ett eller flera groddningstillfällen av samma frö gjorda vid samma tidpunkt. Under tiden en planta går från frö till skörd genererar och registrerar vi fyra händelser som vi kallar Groddning, Stickling, Planta och Skörd. Varje omgång består i sin tur av en eller flera “behållare” där plantorna växer. Vid groddningens början sätts fröna i substrat i brickor med mellan 77 och 150 plantor. Dessa brickor står på ett odlingsbord, en grund bassäng med några centimeter vatten. Brickan är täckt med en plasthuv för högre värme och luftfuktighet. Den första händelsen, Groddning, registreras när vi frösätter en bricka.
Anke flyttar sticklingar från en bricka till en flotte
Groddningsperioden är ca en vecka lång varefter brickan flyttas till ett annat odlingsbord där sticklingarna får fortsätta sin tillväxt under några veckor. När denna flytt görs registrerar vi en Stickling-händelse. Hur lång tid plantorna spenderar som stickling beror på typen av planta. När sticklingarna växt till rätt storlek på brickan är det dags att flytta ut dem till de stora odlingsbassängerna. Detta sker genom att varje enskild planta flyttas till en flotte. Flottarna är en knapp kvadratmeter stora, och rymmer 30 eller 32 plantor. De två olika typerna av flottar har olika stora hål där växten placeras och är därför lämpliga för olika typer av plantor. För varje flotte registrerar vi en Planta-händelse. Efter ett antal veckor på flottarna, återigen olika lång tid beroende på typ av växt, skördas de färdiga plantorna. Vanligen görs detta samma dag eller dagen innan de levereras till kund. För varje flotte som skördas skapar vi en Skörd-händelse.
En flotte tas ur bassängen för skörd
För varje händelse registrerar vi data om tidpunkt för händelsen, vem som gör registreringen, och antalet plantor som just då finns på brickan eller flotten. Exempelvis har några frön inte kommit igång och vi registrerar bortfallet när vi skapar sticklingshändelsen. Vid Groddning och Plantering registrerar vi det ID den odlingsbricka eller -flotte som används har. Man kan också göra en anteckning. Därutöver lagras följande för de olika händelserna:
Groddning: frösort, leverantör, ID på odlingsbricka, antal frön och ev. odlingtillbehör som används
Stickling: antal sticklingar
Plantering: ID på flotte och antal plantor
Skörd: antal skördade plantor
Implementation
Produktionsspårningssystemet består i huvudsak av två delar. En mobilapp och en server som appen kommunicerar med via HTTP och som lagrar den data som registreras via appen. Appen är byggd med ramverket Flutter. Flutter gör det möjligt att skapa appar som använder samma källkod men som kan användas på både Android- och iOS-baserade telefoner och surfplattor. Molntjänsten är byggd med ramverket Django, ett ramverk för alla typer av HTTP-baserade backendlösningar. Utöver Django använder vi också PostgreSQL som databas och Hasura som tillhandahåller ett GraphQL-API mot databasen.
I nästa inlägg tittar vi närmare på vår 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.
De digitala system vi byggt har grundats på den vision vi satte i början på projektet som vi kallar Cultivation Management Platform (CMP).
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 vattenkvalitets och näringstester samt vatten-, luft- och automationssensorer.
En akvaponi är ett ekosystem med många ”rörliga delar” och därför behöver man ha en noggrann och kontinuerlig övervakning av den med hjälp av både manuella och automatiska system. Därtill är det viktigt att vi lär oss så mycket som möjligt om hur akvaponin fungerar, vilka plantor som fungerar bäst att odla, hur lång tid det tar för olika växter att gå från frö till skörd, hur snabb tillväxt fisken har m.m. Vår CMP hjälper oss att nå dessa mål med hjälp av modern teknik och IT i kombination med vår kännedom om växt- och fiskodling.
Vattenkvalitet och näringstester
För att förstå en akvaponi och vara säker på att ”allt står rätt till” behöver man ta regelbundna prover på vattnet och på så vis både kunna upptäcka problem och analysera hur vattenkvaliteten påverkar systemet.
Under uppstarten av systemet, då bakteriekulturen för nitrifikationsprocessen odlas upp, mätte vi en gång om dagen för god kontroll och för att förstå tillväxtprocessen. När akvaponin nu är i drift och har varit det en längre tid behöver vi generellt inte mäta så ofta utan vi mäter de flesta indikatorerna en gång i veckan.
Från början hade vi tänkt använda ett system för datainsamling och analys av vattenkvalitet vi varit med och arbetat på tidigare: Akvo Flow, från Akvo Foundation. Akvo Flow består av: en app för Androidtelefoner för datainsamling med tillhörande webbaserade administrativa- och visualiseringsverktyg och en koppling till fotometriska- och andra vattensensorer som heter Akvo Caddisfly. Efter överväganden valde vi dock att använda andra verktyg. Anledningen var att det fotometriska sensorsystemet som Akvo Caddisfly är integrerat med, Lovibond 610 från Tintometer, använder större volymer reagenskemikalier än vad som var lämpligt att arbeta med på den plats där vi har i pilotanläggningen.
Vi valde istället att använda en kombination av fotometrar och andra sensorer från andra företag. Till skillnad från Akvo Caddisfly har dessa system dålig eller ingen digital integration, så data registreras manuellt i kalkylark under detta projekt. Följande indikatorer mäter vi manuellt:
Digital bevakning – Vatten-, luft- och automationssensorer
Systemet vi utvecklat för insamling, lagring och presentation av realtidsdata består av två huvuddelar som vi kallar för Aquasensor och Aquadata för insamling respektive lagring och presentation av data.
Kritiska indikatorer samt indikatorer som är förhållandevis lätta att mäta automatiskt mäts varje minut med vårt sensorsystem. Dessa sensorer är kopplade till Aquasensor som är ett skräddarsytt program skrivet i programmeringsspråket Python. Aquasensor kommunicerar med sensorerna och inhämtar rådata som omvandlas till mätvärden för att sedan, via ett buffertprogram, Grafsy, skicka denna data till lagringsdelen av systemet. Följande är de viktigaste indikatorerna vi mäter:
Indikator
Sensor
Kommentar/enhet
Elförbrukning
Elmätare med pulsutgång
1 puls/Wh (1000 pulser/kWh)
Ljus
TSL2561
Lux
Luft, temperatur
Sensirion SCD30
°C
Luft, fuktighet
Sensirion SCD30
%
Luft, koldioxid
Sensirion SCD30
ppm
Sensorhubb, CPU-last
Linux-operativsystemet
Sensorhubb, eltillgång
230-volts relä
på/av
Sensorhubb, nätverkspaket
Linux-operativsystemet
Sensorhubb, SMS signalstyrka
3G-modem, Huawei E303
% eller dBm
Vatten, elektrisk konduktivitet
Sensorex CS150TC
mS/cm
Vatten, flöde i systemet
XKC-Y25 induktiv detektor
på/av
Vatten, tillförsel av nytt vatten
Vattenmätare med pulsutgång
53 pulser/liter
Vatten, löst syre
Vernier Optical DO
mg/l
Vatten, nivå
Ultraljudsensor, JSN-SR04T och flottörbrytare i rostfritt
cm
Vatten, pH
Sensorex pH2000
Vatten, temperatur
Dallas DS18B20
°C
Trumfilter, spolning
230-volts relä
på/av
Väder, luftfuktighet
USB-ansluten väderstation
%
Väder, temperatur
USB-ansluten väderstation
°C
Väder, tryck
USB-ansluten väderstation
hPa
Indikatorer och utrustning för automatisk mätning
Lagringsdelen, Aquadata, är i huvudsak en kombination av mjukvarorna Graphite och Grafana.
Graphite är ursprungligen ett verktyg för övervakning av datorer. Det har en databas som är skräddarsydd för lagring av tidsserier och lämpar sig därför väl även för annan tidsorienterad data, såsom sensordata från vår akvaponi.
Grafana är ett verktyg för att visualisera data, med enorm flexibilitet vad gäller möjligheterna att kombinera information till större enheter, “dashboards”. Flera grafer kan på så sätt samsas på en skärm och varje graf kan innehålla flera olika typer av data, kombinerad på ett logiskt sätt.
Grafana dashboard med data från Johannas pilotanläggning.
Implementation – Aquasensor
Aquasensor körs på RaspberryPi-datorer , vi kallar dom “Pajerna” eller sensorhubbarna. För närvarande har vi två stycken som samlar in data från olika delar av odlingen. Varje hel minut samlas data in från sensorerna. Aquasensor använder ett hjälpsystem, Grafsy, för att temporärt lagra den insamlade informationen. I sin tur sänder Grafsy data till lagringssystemet Aquadata. Grafsy försäkrar sig om att all information kommer fram och data från flera timmars mätningar kan hållas lagrad om kommunikationen med Aquadata blir tillfälligt avbruten. En sensorhubb kan också ha en underhubb som är en Arduino-dator med sensorer. Vissa sensorer är enklare att kommunicera med från en Arduino. Eftersom strömavbrott kan förekomma har Pajerna reservström i form av batteripackar. De är av samma typ som man kan använda för att ladda sin mobiltelefon. På så sätt kan Aquasensor fortsätta att övervaka odlingen även om strömmen går. Om reservkraft finns till routern kan Aquasensor fortsätta att sända data även under strömavbrott, om routern inte fungerar buffras informationen i Grafsy tills kommunikation upprättats igen.
Aquasensor uppkopplat till en väderstation (som pratar trådlöst med givare på taket på anläggningen).
Implementation – Aquadata
Aquadata är ett system byggt kring open source-mjukvarorna Graphite och Grafana. Graphite lagrar all information från sensorerna och Grafana presenterar data i grafer som kan samlas i “dashboards”. Med dessa två system som bas har vi byggt en molntjänst som möjliggör lagring av sensordata över internet och åtkomst av informationen samma väg.
Data och tidsserier
Data som samlas in av Aquasensor skickas till Aquadata. Där lagras den i Graphite, en databas som är skräddarsydd för lagring av s.k. tidsserier, d.v.s. data som innehåller en tidsstämpel. När Aquasensor skickar data från en sensor, är det på formen: “namn tidsstämpel data“.
Konfigureringen av lagringen är automatisk, när ett mätvärde kommer in till Aquadata läggs det automatiskt till den namngivna serien. Om namnet inte finns, skapas det i databasen och informationen läggs där som en första post.
Exempel
Från Aquasensor skickas följande data: johannas.husby1.sensor.luft.co2.stickling 2020-12-14T02:16:00+02:00 348
Namnet på mätvärdet, johannas.husby1.sensor.luft.co2.stickling, innehåller en mängd information som preciserar vilken data det handlar om. Namnet är är uppbyggt av delnamn i en hierarkisk struktur. Till att börja med två delnamn för anläggningen vi skickar data ifrån, johannas.husby1 . Sedan följer vilken typ av data det är, sensor.luft.co2 , dvs. koldioxid, och till sist namnet, stickling , på den sensor som mätvärdet kommer ifrån, i det här fallet sensorn i sticklingrummet. Med denna automatik kan man bygga upp logiska strukturer för sin data. När sedan informationen ska presenteras i grafer är det enkelt att med hjälp av de hierarkiska namnen hitta rätt information.
Nästa data-del är tidsstämpeln, 2020-12-14T02:16:00+02:00. De flesta mätningarna görs varje hel minut, med undantag för EC (konduktivitet; mäts genom att köra en svag ström genom vattnet) som görs på halvminuten för att inte interferera med pH som lätt påverkas av det.
Den sista delen i mätningen är mätvärdet, själva datan, 348. Enheten anges när man skapar visualiseringarna, den är inte en del av värdet, men är i de flesta fall uppenbar. I fallet med koldioxidhalt är det ppm, parts per million.
Grafer och dashboards
Den insamlade datan presenteras av Grafana, en open-source programvara för visualisering av data. Med Grafana har vi byggt “dashboards”, informationspaneler där vi samlar information som “passar ihop”. För närvarande har vi tre huvudsakliga paneler, Vatten, Odlingsrum och “Tech infra”, teknisk infrastruktur. Vatten- panelen visar värdena för temperatur, syrehalt, pH och elektrisk konduktivitet. På Tech infra har vi mera “fysiska” mätvärden såsom elförbrukning (och att vi har el alls!), systemets vattennivå (för att kunna larma om vi får ett större läckage) och övervakning av trumfiltret vars aktivitet indirekt är en indikation på att systemet “mår bra”. Panelen Odlingsrum visar bl.a. luftförhållandena i sticklingrummet, såsom temperatur, luftfuktighet och koldioxidhalt.
Grafana dashboards visualiserat på TV skärmar i pilotanläggningen.
Larm
Aquasensor och Aquadata har två integrerade larmsystem. Ett SMS-baserat larm som skickar ett SMS till en lista av telefonnummer vid ett larmtillstånd. Det andra systemet är en integration med molntjänsten PagerDuty, som kan konfigureras att skicka larm via: epost, SMS och telefonsamtal.
Digital säkerhet
Vårt övervakningssystem är uttryckligen inte till för att styra akvaponin. Vi är av den bestämda åsikten att det i framtiden så kommer det vara mycket svårt att skydda sig från externa aktörer som vill störa och/eller förstöra våra datasystem, eller utöva digital utpressning genom att till exempel bryta sig in i vårt system, kryptera datadiskarna och begära pengar för att låsa upp data igen. I system som driver kritisk infrastruktur, som vår fiskuppfödning, så ska detta inte vara möjligt och våra styrsystem är air-gapped, d.v.s har ingen digital åtkomst från internet eller andra externa nätverk. Det innebär att dataflödet i våra bevakningssystem endast går i en riktning: från sensorerna till den lokala dataservern och vidare till molntjänsten.
I nästa inlägg så tittar vi närmare på nästa del av det digitala systemet: Produktionsspårning.
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.
Det är ganska många delar i arbetet att bygga vår pilotanläggning för akvaponi. När vi började så trodde vi att det kanske skulle ta 9 månader att göra jobbet. Vi hade fel. Det tog närmare två år. Vi jobbade mest på kvällar och helgerna under det första 9 månaderna. Efter det så började en av oss att jobba heltid i företaget och under det senaste året har vi också haft ytterligare hjälp på heltid. Vi spenderade inte hela tiden på att bygga, men en stor del av tiden gick åt till bygget.
Byggnaden som vi är i är en ladugård från mitten på 80-talet, på 900 kvadratmeter. Ungefär 55 meter lång och 16 meter bred invändigt.
Först så behövde vi ta bort gammal utrustning, som mjölktanken och traversen för fodervagnen. Nedan är det Micke som kapar I-balken för traversen där vi skulle bygga väggen.
Vi valde att inte använda hela byggnaden för pilotanläggningen, så behövde bygga en avskiljande vägg. Här ser vi när Thomas, Micke och William arbetar på det.
Byggnaden hade inte används (annat än temporärt som ett lager) på nästan 15 år, se vi behövde rengöra allt: väggar, tak, kabelstegar. Det var mycket jobb. Här rengör Anke Johanna taket.
Vi behövde inspektera avloppen för att vara säkra på att de inte hade några alvarliga läckor. Avloppen används till att föra ut avföring från fisken till en extern gödseltank. Här hjälper Rasmus oss med att inspektera rören.
I avloppet hittade vi en padda som bodde där under vintern.
Vi hade bestämt oss för att ha en extern sumptank. Vi behövde veta att den skulle kunna grävas på den platsen vi valt och att den inte skulle nå berggrunden, så vi tog hjälp från en granne som grävde ett testhål med en grävmaskin. ”Testhålet” blev stort nog att vi kunde förbättra det lite för hand (William gräver och Micke mäter in byggnaden) för att senare använda som hål för sumptanken. Hålet blev inte riktigt rakt, som man ser tydligt senare.
Arbete gick lite långsamt så innan vi han göra mer på sumptanken och byggnaden som kom att ligga över den så blev det vinter och hålet fylldes med grundvatten och frös.
Vi byggde en sumptank i trä, som Micke blev nöjd med, som vi senare klädde med en gummimatta.
Det rummet som tidigare hade haft båset för kalvarna skall inredas för att ha bord för sådd och sticklingar. Vi kallar det för sticklingrummet eller kalvrummet. Först behövde vi ett golv så vi kan dra nya avlopp.
Här bygger Micke bord för att ha sticklingar stående i vatten.
VI funderade ganska länge på hur vi skulle hänga upp LED-lamporna. Till slut blev den en ganska enkel konstruktion i trä som faktiskt fungerar riktigt bra. Micke kom fram till en bra design till slut.
Borden täcks med gummidukar.
Att bygga de stora trågen för plantorna var ganska mycket jobb, då golvet lutar ganska mycket. Vi har 10 cm skillnad mellan den högsta och lägsta punkten på trågen på ett avstånd av fem-sex meter. Varje bit måste sågas perfekt och mätas in med laser.
Vi köpte regnvattentankar med formskuren gummiduk som fisktankar. Två stycken som rymmer ungefär 9.5 kubikmeter. Vi rekommenderar inte det valet, men mer om det senare. Här kapar Micke ett hål för utloppet.
Rördragning med 110 mm PVC-U rör från fisktankarna till odlingstrågen. Där ser man också evakueringsbrunnen som vi anlade på lägsta punkten i händelse av översvämning. Den visade sig vara bra att ha framöver vid flera tillfällen.
Parallellt med detta arbete så pågick också arbetet med att bygga vårt sensorsystem. Här visar Stellan den första sensor hubben, som mäter lite olika saker i sticklingrummet: ljus, temperatur, luftfuktighet, koldioxid. Vi lade senare till en sensor till elmätaren. Den agerar ochså som hubb i larmsystemet och har bland annat ett SMS-modem.
Här ser Gabriel när de första datapaketen anländer till vårt datavisualiseringssystem som är baserat på Grafana och Graphite.
Nu behövde vi förbinda vattensystemet inne i byggnaden, fisktankar och odlingstrågen med utsidan där sumptanken kommer finnas. Micke borrar hål i väggen.
Här ser man att vår byggnad är väl isolerad. Vi har ungefär 15 cm cellplast mellan inner- och yttervägg.
Sen började vi bygga på själva byggnaden som sumptanken ligger i. Vi behövde gjuta pelare som grunden skall vila på. Det var riktigt skitväder när Micke och William gjorde hålen för dessa med jordborr.
Vi förbereder ett stabilt och isolerat underlag för sumptanken.
Sedan lägger vi gummiduken som skall vara på utsidan av sumptanken. (Den är i trä, so den behöver skyddas.) Vi fick bra hjälp av Stellan och Gabriel.
Sumptanken ställs dit, och sen lägger vi i den interna gummiduken.
Sumptanken isoleras. Vi täckte dessutom över den så att den inte skulle vattenfyllas av regn.
Påfyllning av grus och jord runt sumptanken. William kör sin stora backlastare från Volvo som vi är jätteglada att vi har haft tillgång till.
Sedan började vi bygga platformen, eller bryggan som vi kallar den, runt fisktankarna, som också filtertanken skall stå på. Vi ser William skruva fast brädor.
Betonggolvet som vi har i byggnaden ligger mer eller mindre i direkt kontakt med marken under, så vi ville isolera odlingstrågen. Dessutom så blir gummiduken mindre känslig om man måste gå på den om det inte ligger en hård yta under. Här har vi en timelapse av installation av isolering, gummimattan och luftstenarna i ett av trågen.
Vi har installerat luftstenar i trågen för att vara säkra på att vi inte får stillastående vatten och tillräckligt med syre för både bakterieodlingen och växternas rötter. Det är möjligt att det blev lite ”overkill”.
Vi behövde också byta alla dörrarna, som vi köpte begagnat.
Vi isolerade fisktankarna i botten, så att de kom i rätt höjd för utloppen och rören. När gummiduken var installerad i tankarna så blev de övertäckta, för att undvika att få byggdamm i dem, tills vi började fylla vatten.
För att dra ned luftfuktigheten i lokalen så valde vi att installera en luftavfuktare. Det blir dyrare i längden än att installera ordentlig ventilation, men tillsvidare så fick det bli en avfuktare.
Sen var det dags att bygga klar sumpboden. Det blev många sena kvällar.
Installation av luftpumparna. Det var bra att vi hade en välisolerad sumpbod att installera dem i. De för ett väldans oväsen.
Elnätverket där vår anläggning ligger är inte bra. Så en reservgenerator är nödvändig. Men, då vi jobbar med levande djur så måste vi ha reservkraft hur som helst. Här kommer en isolerad container för reservgeneratorn.
För att hålla rätt temperatur i vattnet så har vi en luft-vatten-värmepump. För nödfall så finns det också en värmepatron på den ledningen, som elverket klarar att driva.
När vädret blev bättre så kunde vi slutföra taket på sumpboden (Tomas lägger läkt) och måla den.
Vi installerade också ett plexiglaslock på sumptanken så det har lätt att se att luftpumparna fungerar och att vattennivån ligger där vi förväntar oss.
Detaljbild på vattenrör, luft, vattenmätare, eldragning mm.
När vi började fylla vatten i systemet så visade det sig att vi inte gjort rätt när vi limmade rören. Många utav rören behövdes limningen förbättras på innan vi blev av med alla läckorna. Det tog flera veckors arbete. Tips: När du limmar PVC-U rör, ha ymnigt med lim på båda rören. Genomföringar av gummiduk måste ha ordentligt med lämpligt lim.
Vårt första försök med att mata pumpen för trumfiltret använde en tunna och automatisk påfyllning med brunnsvatten. Vi hade problem med att trumfiltret spolade vid fel tillfälle eller för länge. Tunnan räckte inte till. Vi designade om detta helt. Först så bytte vi till att ta vatten från en IBC tank, men till slut så gjorde vi det vi skulle gjort från början: ta vatten från den rena sidan på trumfiltret.
Vi satte en maxnivåsensor som fick driva spolpumpen.
När vi var nöjda med att läckorna var fixade och att filterspolningen fungerade bra så tillsatte Lisa bakteriemedia i bakterietanken (Moving Bed Bio Reactor – MBBR).
Vi matade bakterieodlingen med lite malen fiskmat, men främst med salmiak (ammoniumklorid). Salmiaken tillsattes till en vattenhink dagen innan den skulle användas och sen bubblades den med en akvariepump i 24 timmar för att bli av med en del av kloret. När näringsnivåerna började komma upp (ammonium konverterat till nitrit och nitrit till nitrat) så började vi odla i trågen.
Även utan fisk i systemet och väldigt låga näringsnivåer fick vi igång förvånandsvärt bra tillväxt, som blev ännu bättre när fisken kom.
Men så småningom så kom fisken till vårt system med. Här pratar Tomas med Peter som leverar vår smolt. Vi använder regnbåge i vårt system från 50 gram till 1.2 kg.
Sensorsystemet mäter en rad olika parametrar varje minut. Här kan man se några.
Sensorsystemet levererar data lokalt till en liten dator, men även till vår molntjänst, så att vi kan komma åt den datan på våra mobiltelefoner dygnet runt, utan att öppna det interna systemet mot utsidan.
Sensorlådan i sumpboden pratar också med en väderstation som sitter på taket. (Även när det är nollgradigt ute så har vi 30 C i sumpboden, den kanske blev lite väl välisolerad…, värmen kommer från luftpumparna.)
Induktiv vattensensor på utloppsrören till fisktankarna. Det är ett av systemet som kan skicka larm direkt till våra mobiltelefoner om vattnet slutar att flöda i rören.
Automatisk vattenpåfyllning till sumptanken. Vi tar systemvatten att spola rent trumfiltret med. Det vattnet går till gödseltanken och fiskavföringen och det vattnet blir så småningom gödsel för åkrarna runt gården. Nu ligger vattenåtervinningen i vårt system på ungefär 99.5%, vilket vi tror vi kan förbättra till 99.9% eller bättre när vi börjar processa fiskavföringen för återanvändning i systemet istället för att göra gödsel för åkern av det.
En bild på vår produktion. Det växter fortare och bättre än vad vi hade förväntat oss!
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.
Vår pilotanläggning består av 290 m2 i en isolerad byggnad som tidigare var en lagård för kor. Gården byggdes i mitten på 80-talet och var då mycket modern. Vi har tagit en tredjedel av ytan tillgänglig i gårdsbyggnaden. Pilotanläggningen använder tre rum: stora odlingsrummet, på ungefär 220 m2, sticklingrummet 24 m2 och ”packrummet” 20m2. Resten är biytor.
I pilotanläggningen ska vi odla bladgrönsaker, kryddor och regnbåge (ja, nitrifikationsbakterier förstås).
Den första designen var baserad runt IBC tankar och tre odlingstråg med 60 x 120 cm flottar. Utanför byggnaden finns ett område reserverat för sumptanken. Fiskarna skulle vara i IBC tankar. Vi tänkte använda en radial flow separator för att ta bort de grövsta fasta partiklarna och en filterbox för de finare partiklarna. Precis som beskrivet i The Aquaponic Farmer (se del 1).
I planskissen ovan ser man att vi redan tänkt om med två odlingstråg istället för tre. Ett smalare tråg för flottar från Meteor Systems och ett med mer traditionella flottar från Royal Brinkman (120 x 60 cm). I Meteor flottarna använder vi en mindre substratplugg med betydligt mindre materialåtgång. I Brinkman flottarna använder vi plastkrukor. Vi var inte säkra vad som skulle fungera bäst på den svenska marknaden, så vi ville prova båda.
Då vi har ett betonggolv kan vi inte sänka ned utrustning på ett lätt sätt, så vi undersökte andra alternativ för filtrena. Vi valde att ha ett litet trumfilter istället. Samtidigt började vi fundera på om den fisk vi hade bestämt oss för, regnbåge, inte skulle må mycket bättre i runda tankar. Dessutom så insåg vi att sumptanken skulle behöva ordentligt skydd, så vi började planera en byggnad över tanken. Så småningom vart den byggnaden vårt maskinrum också. Det vart väldigt bra, men det var mycket jobb.
För att ha bättre tillgång till rummet där vi skeppar ut grönsaker så vände vi på designen så att fisktankarna är längst bort från packrummet, samtidigt som det gör att det blir mindre spring runt tankarna (dörrarna är inte där) vilket minskar stressen för fisken. De runda fisktankarna är dessutom mer volymeffektiva.
Den slutgiltiga designen (nedan) så kan man se att vi la till en ”brygga” runt fisktankarna. Tankarna var så höga att det vore bättre att kunna komma upp lite när man arbetar där, utan att behöva stå på en pall. Samtidigt ville vi få upp bakteriefiltertanken (Moving Bed Bio Reactor, MBBR) från golvet, då vattenhöjden i vår design bestäms av utloppet på filtertanken och få undan rören så man inte behöver kliva över dem hela tiden. Det blev trots allt funderande och tänkande lite fel. Vi har en högre vattennivå än vi tycker är optimalt och det vore ganska mycket arbete att bygga om det för att sänka nivån. Men, som sagt, målet med en pilotanläggning är att lära sig.
Anläggningen har 3782 växtplatser i de två trågen, ungefär 3200 växtplatser (beroende på vilka brickor man använder) i borden i sticklingrummet. Vi kan totalt ha ungefär 7000 plantor i systemet samtidigt.
Vattentankarna är på 9.5 m3 var. Vi har en IBC tank som MMBR (1m3). Sumptanken rymmer ungefär 4 m3, men vi använder normalt 2 m3 av utrymmet. Odlingstrågen rymmer tillsammans ungefär 23-25 m3 (beroende på hur hög vattennivå vi sätter). Tillsammans så använder det totala systemet ungefär 35 m3 vatten. Vi har också en IBC tank som kommer att användas som karantän för inkommande fisk och klargöringstank innan slakt.
På den bortre sidan av byggnaden kan man se sumptanksbyggnaden (bortanför de runda fisktankarna) och den blåa kuben är en tremeters container som innehåller ett reservelverk.
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.
För tre år sedan bestämde vi oss på Johannas för att starta ett företag som bedriver kretslopsbaserad odling av fisk och grönsaker i stor skala. Metoden vi skall använda kallas för akvaponi. Vi har erfarenhet från odling samt att starta och driva företag upp till 100 anställda. Vi har studerat kretsloppsbaserade odlingssystem under många år. Men, vi har inte drivit en akvaponi tidigare och vi vet att en av problemen folk stöter på när de börjar med akvaponi är att det ofta bygger en storskalig anläggning för tidigt. Man måste lära sig att driva en akvaponi, som innehåller ett mini-ekosystem med fisk, bakteriekulturer och grönsaker.
Vi bestämde oss för att bygga en pilotanläggning på Husby Gård i Vallentuna, norr om Stockholm. Husby Gård ägs av William, som är delägare i Johannas. Vi valde att använda en tredjedel (290 m2) av en före detta mjölkgård, som är på ungefär 900 m2.
Om man skall bygga en akvaponi, liten eller stor, så bör man studera först. Vi har tre källor av information och inspiration som vi kan rekommendera.
Ska man driva en akvaponi i en mindre skala, säg på 1000 m2 odlingsyta. Då kan man kanske klara sig med det man lär sig från böckerna. Men vi rekommenderar starkt att man går på ettåriga kursen Fisk- och skaldjursodling som går på distans i Lysekil. Fiskodlingen är den känsligaste delen i en akvaponi, och det kan vara mycket problematisk om fisken dör. Dessutom är det lagkrav i Sverige på att ha lämplig utbildning vid kommersiell djurhållning.
Vi har också lärt oss mycket från studiebesök, hos bland annat:
Det är många fler aspekter av att driva en akvaponi att ha kunskap om dock. Vi har byggt vår pilotanläggning helt själva (med några få undantag). Man lär sig väldigt mycket på det. Det är lärdom som är väl värt det i våra ögon, då vi ämnar skala upp det vi gör mycket större, och då behöver vi förstå varför saker och ting är designade som de är.
I sitt team så bör man ha minst grundläggande kunskap om det följande:
Fiskodling
Grönsaksodling
Vattenkemi
Ekosystem
Försäljning
Marknadsföring
Företagsekonomi, som bokföring mm.
Livsmedelssäkerhet
Tekniska system, som pumpar, syremätare, kylning, värme, mm