Bombshells saves the day, saves the fjord!

Virkeligheten er ikke helt slik vi ønsker at den skal være. Oslofjorden blir hver dag utsatt for ulike former for forurensning. I konteksten til ACDC illustrerer vi problematikken med at Ninja Turtles er naturens store beskyttere og skal finne måter å både å reagere på hendelser, og også å kartlegge tilstanden til fjorden ved å samle inn data over tid for at disse skal brukes i analyse. I fantasiverden oppstår det muterte skapninger som våre høye beskyttere skal verne oss for. I virkeligheten trenger vi systemer som varsler og kartlegger.

Oslofjorden

Oslofjorden er en fjord som går fra Skagerrak i omtrent rett nordlig retning inn til Oslo. Ytre Oslofjord går fra Færder fyr i sør til Hurumlandet, der fjorden deler seg i Drammensfjorden og Indre Oslofjord.

Ytre del av fjorden er 10–20 kilometer bred, og sør for Fulehuk fyr utenfor Nøtterøy er den nærmest et havstykke. I Indre Oslofjord, innenfor det rundt én kilometer brede sundet ved Drøbak, er fjorden bare tre-fem kilometer bred.

Visjon

Visjonen er både av miljøpolitisk art, men dekker også et forretningsbehov. For hvert tiltak i fjorden må aktører av ulike slag stille med sin ekspertise. Målene her kan både politisk og forretningsmessig sammenfattes slik.

  • Overvåke ved hjelp av sensorer Oslofjorden og kunne oppdage, lære og varsle om hendelser når de skjer samt predikere hva hendelser medfører.
  • Simulere og predikere hvordan tiltak påvirker Oslofjorden.

Gevinst

Gevinsten er primært av miljøpolitisk art, men har sekundære gevinster for både bedrifter som tilbyr utstyr og tjenester som må brukes for å nå målet.

  • En ren Oslofjord påvirker 1.6 millioner mennesker positivt
  • En ren Oslofjord sikrer artsmangfold for fremtidige generasjoner

Finansiering

Finansiering av tiltak for å drive miljøvern av det offentlige styres over statsbudsjettet. Samtidig finansierer staten innovasjons-tiltak som dette gjennom ulike former for tjenester gjennom Innovasjon Norge. I tillegg vil innovasjon og utvikling i det private markedet ha behov for private investorer.

Hackaton POC

Løsningen som Bombshells har skissert i løpet av ACDC har involvert bruk av sensorteknologi og innsamling av data fra disse. Dataene behandles og formes gjennom skytjenester og sendes videre til lagring før den brukes til varsling og analyse.

I modellen ovenfor kan man se sensoren som sender data til skyen og hvordan den går videre fra lagring til analyse og varsling.

Systemarkitektur og dataflyt

Diagrammet nedenfor generaliserer hvordan data fra ulike sensorer kontinuerlig sender data opp i skyen hvor den omformes til strukturerte data som kan lagres. I tillegg lagres de i en event hub som strømmer dataene rått videre til sanntid overvåkning.

De strukturerte dataene lagres i denne POC´en i Dataverse. I dette leddet brukes triggere til å plukke opp endringer i datatabellene og å plukke opp innholdet fra disse. Basert på innholdet brukes hele eller deler av endringen til å sende ut meldinger om hendelsen både til PowerApp, Teams og via SMS med støtte for eldre teknologi. Det lagrede innholdet oppdateres jevnlig inn i analysegrunnlaget for en rapport i PowerBI.

Sensor-teknologi

Lyd-sensor er en av typene sensorer som sender data opp i skyen. Spesifikt for lyd-sensoren sendes lydnivå som en del av datasettet. Sammen med dette sendes lys, temperatur, luftkvalitet, vannkvalitet, UV-stråling, tid og lokasjon til Azure. Recent data suggests a mega-mutant-monster has appeared!!! beskriver i mer detalj hvordan dette fungerer.

Registrerte hendelser

Hendelsene registereres fortløpende og formes om til strukturerte data i JSON-format som videresendes til en Dataverse-tabell.

{"eventType":"enviromental","latitude":"59.977874","longitude":"10.636827","soundlevel":"63","pirdirection":"e","soilhumidity":"37","temperature":"26","timestamp":"143449","sonardistance":"286","uvlevels":"73","dustlevels":"82","waterlevel":"1"}

Manuell rapportering

Det er også tatt høyde for manuell registrering og ikke bare automasjon, for å samle inn data. Ved å benytte en app kan brukere også rapportere hendelser manuelt inn i data til samme datalag som mottar data fra sensorene, og med de dataene som telefonen eller tableten kan tilby. Lokasjon er en naturlig ting å hente fra enheten som kjører appen, slik som beskrevet her – Natively saving the environment! (and thusly the world)

Integrasjon og utvikling

Dataene som sendes inn både manuelt og automatisk går gjennom et integrasjonslag som inkluderer event hub, et api gjennom Azure functions og Dataverse API. Utvikling en av dette kjøres gjennom pipelines i Devops (Shell is power!), og sørger for best practice deployment hvor infrastruktur og kode konfigureres, bygges og valideres før endringer rulles ut.

Dataverse

Hver hendelse registreres som en rad i tabellen. En PAF plukker opp hendelsen og trigger en varsling til PowerApps, Teams og SMS som beskrevet i tidligere blogpost – Flowbombing Dataverse

Datasett and PowerBI-rapport

For å bygge meningsfulle rapporter filterer vi ut data som ikke er relevante og endrer datatyper slik at de fremstilles riktig.

Kolonnene i datasettet bygger opp tabellen og brukes som filtreringsverdier inn mot de ulike diagrammene. Spesielt relevant i denne rapporten er fargekartet som viser temperaturene og lokasjon for hvor enkelthendelsene har skjedd. I Dashes and numbers demonstreres det nærmere hvordan dataene kan brukes for å fremheve viktig informasjon, også i ulike flater som krever responsive løsninger.

Bruk av AI

Som del av risikovurdering er arbeidet med å kartlegge hvilke elementer som er utsatt for risiko. Bombshells har trent opp en AI til å gjenkjenne bilder av tre ulike arter skillpadder, som beskrevet i denne posten – Bombshells face an eksistensial risk. Disse dataene er tenkt brukt til å bygge opp en base som kartlegger tilstedeværelsen av en art innenfor et geografisk område. Når man kombinerer dette med data om sårbarhet for typer forurensing vil man kunne beregne risikoen for en art ved en hendelse og velge tiltak i henhold med alvorlighetsgraden.

Varsling og reaksjon

Når en hendelse er registrert og kvalifiserer som en hendelse som må følges opp, skal systemet automatisk sende et varsel slik at tiltak kan iverksettes. Power User Love to the people! beskriver hvordan Power Automate henter ut informasjon om hendelsen som er registrert og basert på innholdet sender ut varsel gjennom PowerApps, Teams og SMS.

Viktigheten av å få riktig informasjon frem til riktig mottaker, og ikke minst at den presenteres på en brukervennlig og tilpasset måte er svært viktig. Satt i en kontekst hvor man må rykke ut for å håndtere et miljøproblem spiller tid en viktig rolle for å forhindre at ikke problemet blir større enn nødvendig. Viktigheten av at man fremhever nøkkelinformasjon riktig vil ha en direkte innvirkning på evnen til å begrense skaden.

Oppsummering

Et system som detekterer og sender ut varsel ved en hendelse er ikke noe revolusjonerende i seg selv. At en sensor trigger på en hendelse og sender en melding er ikke mer komplisert enn da vår venn Donatello monterte en snor fra godstolen foran TV og ut til kjøkkenet og monterte en bjelle i den andre enden slik at han kunne signalisere at han ville ha pizza uten å forlate rommet.

Det som derimot skiller systemet fra analogien er mengden data som samles inn, hvordan den rutes til riktig mottakere og hvordan ulik informasjon vises tilpasset mottaker og teknologien den formidles gjennom. Excellent user experience og Killer App løses ikke med glossy pixel perfect grensesnitt, men derimot gjennom hva du kan gjøre med informasjonen som vises i grensesnittet.

Oppgaven som brukeren av appen skal løse er å identifisere et rapportert problem, og handle i forhold til den informasjonen som formidles. Når et alvorlig utslipp i vann rapporteres er det relevant å se vannkvalitet, temperatur, fysisk lokasjon osv for å raskt gjøre en vurdering av risiko og alvorlighetsgrad. Når vi varsler om en hendelse og brukeren kan se PowerBI-visningen for mobil fremfor et helt dashbord som vil være naturlig på en operasjonssentral, hever vi kvaliteten og brukeropplevelsen. Most Extreme Business Value ligger først og fremst i dataene som samles inn, men selve gevinsten av dataene blir først tilgjengelig når visning i riktig kontekst er på plass.

Rock Solid Geeknes er i denne POC´en summen av alle komponentene som hver for seg har sin rolle, men som ikke gir gevinst før de kombineres i denne formen. Vi har koblet sammen ulike sensorer som samlet gir oss strukturerte data på et bredt område. Disse dataene spiller viktige roller hver for seg, men svært ofte spiller de en enda større rolle sett i sammenheng. Ved å kommunisere med skytjenester kan vi dekke et stort geografisk område og gi et situasjonskart som monitorerer og kartlegger data kostnadseffektivt og raskt.

Konklusjonen så langt er at det er mange faktorer som kan utgjøre trusler for miljøet og artene i Oslofjorden. Kunnskapen vi tilegner oss gjennom kontinuerlig overvåkning av hendelser og kartlegging av artsmangfoldet i gir oss verdifull informasjon som er svært viktig både for å reagere og å forutsi konsekvenser en fremtidig hendelse vil medføre.

Vi vet at en alvorlig hendelse med vannforurensing i Oslofjorden vil ha store konsekvenser for både miljø og arter. Paradoksalt nok vet vi også at et slikt utslipp ikke vil ha noen som helst konsekvenser for noen av skilpadde-artene. Det er nemlig ikke observert noen skilpadder i Oslofjorden. Og med det så claimer vi “Dooh”-badgen 😉

Skill Bombshells 2022

Blazin’ search

I order to facilitate a somewhat simpler searchexperience for our accountants, we needed to build a simple webinterface for them. We built a small and simple app in Blazor that features a simple search box and a response of all the costfacets found for that particular level of noise:

Behind the scenes we use a HTTPClient to perform calls to our azure search service in an async manner.

Splashpage

Below the result of the search is displayed on the page. You can see all the different cost values for events with the decibel trigger of 100

Datamining waterlevel

For å få et bedre bilde av hva som skjer i Oslofjorden sammler vi inn data fra sensorer og eksterne kilder.

Vi har i en tidligere blogg beskrevet innsamling av sensordata i datavers samt hvordan vi har presentert dette på en fin måte. Dette i seg selv burde kvalifisere til utmerkeslen Datamining.

This image has an empty alt attribute; its file name is image-365-1024x582.png

Det er mange relevante eksterne datakilder men en sentral er havnivå, eller tidevann. Vi har laget en logic app som går regelmessig for å samle inn data om havnivå til gitt sted og tid.

http://api.sehavniva.no/tideapi.php?lat=58.974339&lon=5.730121&fromtime=2022-02-10T00%3A00&totime=2022-02-11T00%3A00&datatype=all&refcode=cd&place=&file=&lang=nn&interval=10&dst=0&tzone=&tide_request=locationdata

Resultatet av api querien er json med alle havninvå endringer fordelt over tid. Som vist:

Vi generer deretter en CSV fil fra Json og har benyttet denne som datakilde til PowerBI

At havninvået på denne lokasjonen endret seg så drastiskt er en spennende observasjon. Vi har derfor sammenstilt resultatet med fotgrafi fra ett kamera med bevegelsessensor på samme sted og tidspunkt.

Vi har desverre ikke anledning til å følge opp denne observasjonen på hackaton men vi har allerede, i hackatonnet, helt klart bevist at innsamling og sammenstilling av data i vår prototyp gir høy forretnings- og forskningsverdi.

Med dette ønsker vi bagden dataminder

Bombshells face an eksistensial risk

Som del av prosjektet med å kartlegge trusler i Oslofjorden er det også viktig å kartlegge artsmangfoldet i fjorden for å vurdere hvilke arter som potensielt er truet og på den måten kartlegge risiko. I sensor-hubene har Bombshells satt inn kamera som trigges av sonarsensoren for å ta bilder av dyrelivet i området. Ved å bruke AI gjenkjenner vi ulike arter av skillpadder som potensielt vil være sårbare for vannforurensning og heve alvorlighetsgraden ved en hendelse.

Vi har trent opp en AI model i Power Apps til og identifisere tre ulike typer skilpadder, landskilpadder, havskilpadder og sumpskilpadder. Vi har matet AI med bilder av tre typer skillpadder i sine respektive miljø.

Vi bruker bilder for og trene modellen minimum 256 x 256 piksler som er kravet for og trene modellen. Bildet nedenfor viser hvordan bildene med ulike typer markeres og kategoriseres.

Treningsgrensesnitt
Landskilpadde
Sumpskillpadde
Havskilpadde

Etter vi har markert alle bildene vi ønsker og bruke som treningsgrunnlag, trener vi modellen og får en ytelse score. Her er den publiserte modellen etter den er ferdig trent.

Til slutt for å teste systemet har vi bygget en PowerApp som holder på en enkel komponent som laster inn et bilde og sender det til AI for identifisering. Resulatet vises i form av at et gjenkjent objekt markeres og betegnes med riktig kategori i grensesnittet, sammen med en score på hvor sikker AI er på at resultatet er riktig.

Kilde til risikoanalyse

Med disse dataene knyttet opp mot lokasjonsdata vil man kunne hente inn og sammenstille beregninger som brukes i risikovurdering av en hendelse.

Those pesky accountants are at our throats

We have dumped historical events into a blobstorage for simple storage over time. The accountants at TMNT hq want to known what expenses each event incurred.

To facilitate them a simple search for cost by parameter we have built an azure search on top of the blobstorage. The blobs are indexed every hour so that any new events added to the search and the accountants can perform their accounting on the cost facet of the events.

The image below demonstrates how the backend search looks, the query in question returns the cost facet for every event where the triggering factor have been a loud sound (100dB).

If the search had returned two events for 100dB where the cost was equal, the count value would be 2.

Simple searching can also provide quick overviews over how a triggering event relates to the other data our sensors capture. Below we can see that all the events that triggered for 100dB triggered at a distance of 144cm from the sensorrig.

BombShells – right now or later

I Oslofjorden er det plassert ut sensorer for å detekere forurensing.

Sensorene er koblet til en pc og kommuniserer mot port COM3. Vi har derfor utviklet en tjeneste som kjører lokalt på pcen og lytter på COM3. Når sensorene detekterer en hendelse så sendes det en melding over port COM3 og servicen våkner, validerer input og sender informasjonen til Azure Event Hub.

Årsaken til at vi har valgt å benytte Azure Eventhub
1) Vi ser for oss at vi på sikt skal motta mye sensor data i realtime
2) Kommuniksajonen skal kun gå en vei, dvs fra sensorer til eventhub

Det utføres en validering om Turtels skal sendes ut og redde miljøet.

Når turtels er ute på oppdrag ønsker vi at de skal kunne kommunisere med hverandre. Derfor hatr vi tatt utgangspunkt i eksempel app og modifisert denne til å funger fort vårt case.

azure-signalr/v1.md at dev · Azure/azure-signalr · GitHub

og satt opp infrastrukt i azure

Med dette ønsker vi badges right Now

Natively saving the environment! (and thusly the world)

Given that we cannot deploy a sensor rig to every inch of the Oslofjord, much less the world, involving the local community is vital. We have achieved this through a simple app that lets the locals report any pollution/monster -event they encounter. We’ve built it on Xamarin to enable us to easily deliver it to both android and apple users. For ease of use the app will use the device’s built in sensors to construct the event payload before sending it through to the event hub.

Anyone can report an incident in this manner. The message is fed straight into our eventhub, from there we alert the necesary ninja turtles to their duty (if necesary).

A simple alert in eventhub

{​​”eventType":"environmental","latitude":"59.977874","longitude":"10.636827","soundlevel":"177","pirdirection":"e","soilhumidity":"4","temperature":"-39","timestamp":"2/12/2022 12:26:29 AM","sonardistance":"144","uvlevels":"8","dustlevels":"94","waterlevel":"1"}​​

The above payload illustrates how a community member report might look.

Cowabunga!