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.

Att bygga en akvaponi – del 5 – 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.

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 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.

Mobilapp för produktionsspårning

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.

IMG_0337

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.

IMG_1937

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.

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

Att bygga en akvaponi – del 4 – vattenkvalitet och näringstester

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.

Also available in ENGLISH.

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 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:

IndikatorSensorKommentar
AlkaliniteteXact iDip, ITS
AmmoniumeXact iDip, ITS
FosfateXact iDip, ITS;
Checker, Hanna Instruments
eXact iDip kan bara användas
upp till 3 ppm
HårdheteXact iDip, ITS
JärnChecker, Hanna Instruments
KaliumFotometer Potassium, Hanna
Instruments
Löst syreHandy Polaris 2, OxyguardPortabel referensmätare
NitrateXact iDip, ITS
NitriteXact iDip, ITS
pHpH-Checker, Hanna
Instruments
Portabel referensmätare
Vattenkvalitets- och näringstester.

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.

En överblick över det digitala bevakningssystemet, Aquasensor och Aquadata

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:

IndikatorSensorKommentar/enhet
ElförbrukningElmätare med pulsutgång1 puls/Wh (1000 pulser/kWh)
LjusTSL2561Lux
Luft, temperaturSensirion SCD30°C
Luft, fuktighetSensirion SCD30%
Luft, koldioxidSensirion SCD30ppm
Sensorhubb, CPU-lastLinux-operativsystemet
Sensorhubb, eltillgång230-volts reläpå/av
Sensorhubb, nätverkspaketLinux-operativsystemet
Sensorhubb, SMS signalstyrka3G-modem, Huawei E303% eller dBm
Vatten, elektrisk
konduktivitet
Sensorex CS150TCmS/cm
Vatten, flöde i systemetXKC-Y25 induktiv detektorpå/av
Vatten, tillförsel av nytt
vatten
Vattenmätare med
pulsutgång
53 pulser/liter
Vatten, löst syreVernier Optical DOmg/l
Vatten, nivåUltraljudsensor, JSN-SR04T och flottörbrytare i rostfrittcm
Vatten, pHSensorex pH2000
Vatten, temperaturDallas DS18B20°C
Trumfilter, spolning230-volts reläpå/av
Väder, luftfuktighetUSB-ansluten väderstation%
Väder, temperaturUSB-ansluten väderstation°C
Väder, tryckUSB-ansluten väderstationhPa
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.

Systemarkitektur för Aquasensor och Aquadata.

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.

Screenshot 2021-01-10 at 15.36.20

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.

IMG_2481

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 @ Johannas

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.

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

Att bygga en akvaponi – del 3 – bygglogg

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.

Also available in ENGLISH.

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.

IMG_7869

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.

IMG_8650 IMG_7881

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.

IMG_8668 12 mikael thomas william wall building

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.

IMG_8684

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.

IMG_9374

I avloppet hittade vi en padda som bodde där under vintern.

IMG_E9376

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.

IMG_9051

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.

IMG_9557

Vi byggde en sumptank i trä, som Micke blev nöjd med, som vi senare klädde med en gummimatta.

IMG_9339

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.

image_from_ios

Här bygger Micke bord för att ha sticklingar stående i vatten.

IMG_9828

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.

IMG_9866 IMG_9954 IMG_9960

Borden täcks med gummidukar.

IMG_0034

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.

IMG_9898

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.

IMG_9924 IMG_9928

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.

IMG_0110

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.

IMG_0131

Här ser Gabriel när de första datapaketen anländer till vårt datavisualiseringssystem som är baserat på Grafana och Graphite.

IMG_0136

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.

IMG_0237

Här ser man att vår byggnad är väl isolerad. Vi har ungefär 15 cm cellplast mellan inner- och yttervägg.

IMG_0240

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.

03 wet wet wet sump work

Vi förbereder ett stabilt och isolerat underlag för sumptanken.

IMG_0257 IMG_0267

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.

IMG_0271

Sumptanken ställs dit, och sen lägger vi i den interna gummiduken.

IMG_0272 IMG_0277

Sumptanken isoleras. Vi täckte dessutom över den så att den inte skulle vattenfyllas av regn.

IMG_0296

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.

IMG_0302 IMG_0358

En timelaps av gjutningen av grunden till sumphuset. Hela vår gäng kom ut den dagen och hjälpte till.

Timelaps of pouring concrete for the sumptank building

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.

IMG_0332 IMG_0347 IMG_0400

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.

Johannas Husby Farm Aquaponics, liner installation

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”.

IMG_1277

Vi behövde också byta alla dörrarna, som vi köpte begagnat.

IMG_0775

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.

IMG_0766 IMG_0891

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.

IMG_1457

Sen var det dags att bygga klar sumpboden. Det blev många sena kvällar.

IMG_0825 IMG_0962 IMG_0977

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.

IMG_1141 IMG_1207

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.

IMG_1310 IMG_1565

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.

IMG_1496 IMG_1500

När vädret blev bättre så kunde vi slutföra taket på sumpboden (Tomas lägger läkt) och måla den.

IMG_1731 IMG_1586

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.

IMG_1665

Detaljbild på vattenrör, luft, vattenmätare, eldragning mm.

IMG_1620

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.

IMG_1701

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.

IMG_1657

Vi satte en maxnivåsensor som fick driva spolpumpen.

IMG_1743

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).

IMG_1837 IMG_1812

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.

IMG_1898

Ä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.

IMG_1937

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.

IMG_1928

Sensorsystemet mäter en rad olika parametrar varje minut. Här kan man se några.

Screenshot 2021-01-10 at 15.36.20

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.

IMG_2469 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.) IMG_2481

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.

IMG_2468

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.

IMG_2541

En bild på vår produktion. Det växter fortare och bättre än vad vi hade förväntat oss!

Growth at Johannas Stadsodlingar

I nästa inlägg så ska vi diskutera lite om våra sensor system i posten – Del 4 – vattenkvalitet och näringstester

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

Att bygga en akvaponi – del 2 – design

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.

Also available in ENGLISH.

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).

En av de första designerna av Johannas akvaponik pilotanläggning (version 3).
Planskiss på en av de första designerna. (version 4)

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.

Runda fisktankar och en omvänd design. (version 8).

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.

Slutgiltig design för pilotanläggningen (version 12).

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.

I nästa inlägg så tittar vi närmare på byggprocessen i vår bygglogg.

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

Att bygga en akvaponi – del 1 – att starta, förkunskaper

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.

Also available in ENGLISH.

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.

Micke och William in ladugården
William och Micke i ladugården på Husby Gård.

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.

”Grundkursen” i akvaponi får man från FNs jordbruksorgan FAO. Det är en bok i PDF format som man kan ladda ner: Small-scale aquaponic food production, FAO 2014.

FAO Small-scale aquaponic food production

Vår akvaponi är delvis baserad på en beskrivning av en akvaponi från boken The Aquaponics Farmer: A complete Guide to Building and Operating an Aquaponic System, av Adrian Southern och Whelm King.

The Aquaponics Farmer, Southern & King.

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.

YH Fisk- och skaldursodling på distans 210 YH poäng.

Vi har också lärt oss mycket från studiebesök, hos bland annat:

Ouroboros Farms, Half Moon Bay, California
Sundrop Farms, Port Augusta, Australien
Seawater Greenhouse, London, UK
Duurzame Kost, Eindhoven, Nederländerna
De Kruidenaer, Etten-Leu, Nederländerna
Rijk Zwaan, De Lier, Nederländerna
Dry Hydroponics, Schipluiden, Nederländerna
GrowUp Box, London, UK
Gårdsfisk, Skåne, Sverige
Ljusgårda, Tibro, Sverige
Svensk Aquaponik, Haninge, Sverige, och
Peckas Naturodlingar, Härnösand, Sverige.

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
  • Informations Teknologi (IT) system

I nästa blog så skall vi titta på den design som vi valde och de ändringar som vi gjorde i designen längs vägen.

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