CellMate er en Android-app som gjør beregninger for installasjon av solceller enkelt og intuitivt. Det eneste du som bruker trenger å gjøre, er å legge inn adresse, takstørrelse og forventet årlig strømforbruk – så tar vi oss av resten.
Denne appen er utviklet av seks studenter i forbindelse med emnet IN2000 ved Universitetet i Oslo.
- Beregne og vise estimert lønnsomhet, produksjonsverdi, strømproduksjon og solforhold for oppgitt adresse basert på værdata fra Frost.
- Viser addresse i et interaktivt kart (Mapbox).
- Lagrer en addresse-profil med brukeroppgitt boliginformasjon og relevante værdata.
- Integrerer ulike API-er for å kunne gi relevant brukerinformasjon og detaljert statistikk.
| Kart | Brukerinndata | Statistikk |
|---|---|---|
![]() |
![]() |
![]() |
| Investering | Verdi | Strøm |
|---|---|---|
![]() |
![]() |
![]() |
| Informasjon | Enova | Panelvalg |
|---|---|---|
![]() |
![]() |
![]() |
- Åpne terminalen på din PC eller Mac.
- Naviger til området der du ønsker at prosjektet skal ligge.
- Gå til GitHub-siden for prosjektet og trykk på "Code"-knappen for å kopiere URL-en.
- Skriv
git clone <URL>og lim inn den kopierte URL-en. For eksempel:
git clone https://github.uio.no/IN2000-V25/team-10.git - Trykk Enter og vent til prosjektet er ferdig nedlastet.
- Åpne Android Studio og velg
Openfra plasseringen til prosjektet. - Legg inn dine egne API-nøkler for Frost, Solar, OpenAI og Mapbox i settings.gradle for at appen skal fungere.
- Trykk på "Run" (grønn pil) for å starte appen på en emulator eller tilkoblet enhet.
For best mulig ytelse og kompatibilitet under testing anbefales det å bruke API level 34 (Android 14) på emulatoren. Applikasjonen fungerer også med API level 35, men enkelte visuelle elementer og systemoppførsel kan variere noe mellom versjonene.
For en stabil og forutsigbar opplevelse, anbefaler vi følgende: Pixel 8 med API level 34 ("UpsideDownCake")
Applikasjonen er utviklet med Android Studio Meerkat Feature Drop | 2024.3.2.
Vi benytter Android Gradle Plugin (AGP) versjon 8.10.0.
Dersom man får feilmeldinger ved Gradle-sync må man endre AGP nivå i gradle/libs.versions.toml filen til riktig for ditt system, dersom Android Studio ikke gjør det automatisk.
For å få riktig autolokasjon i appen (på emulator) må du manuelt sette en GPS-posisjon i emulatoren:
Slik gjør du det:
- Start emulatoren i Android Studio.
- Klikk på ⋮ (Extended controls) i sidepanelet / panelet over emulatoren.
- Gå til Location-fanen.
- I “Single points”-fanen:
- Zoom inn eller søk på ønsket sted på kartet (f.eks. Ole Johan Dahls hus).
- Koordinatene vil fylles ut automatisk.
- Klikk på Send for å simulere at enheten er på den lokasjonen.
Appen krever at du godkjenner tilgang til lokasjon første gang den starter. Sjekk at dette er tillatt i emulatorens systeminnstillinger hvis du ikke får posisjon.
For å kunne skrive æøå i emulatoren, må du legge til norsk tastatur manuelt:
- Trykk på "settings" ikonet på tastaturet.
- Trykk “Languages”, og "Add keyboard".
- Velg Norsk bokmål(Norge)
- Trykk pil tilbake til appen.
Du kan nå bytte til norsk tastatur med globe-ikonet (🌐) på tastaturet eller ved å holde inne mellomromstasten.
Coroutines er en del av Kotlin og brukes til å gjøre async-arbeid på en enkel og effektiv måte. De gjør at vi kan hente data i bakgrunnen uten å blokkere hovedtråden, noe som gir en mye bedre brukeropplevelse. Vi bruker coroutines både til API-kall og når vi lagrer data lokalt.
Dagger Hilt er et verktøy for dependency injection i Android. Det hjelper oss med å holde koden modulær og testbar, og lar oss slippe å manuelt opprette og sende rundt instanser av ulike klasser. Vi bruker Hilt blant annet til å injisere databasen og ulike UseCases i appen. Dette gjør det enklere å skalere etter hvert som prosjektet vokser.
Gson er et bibliotek som brukes til å konvertere JSON til Kotlin-objekter og omvendt. Det er nyttig når vi henter data fra API-er og trenger å parse svaret til brukbare datastrukturer. Vi bruker Gson sammen med Room og ved parsing av API-respons.
Ktor er et Kotlin-bibliotek som brukes for å bygge både server- og klientapplikasjoner. Vi bruker det i denne appen for å gjøre HTTP-kall på en ryddig og fleksibel måte. Det passer bra inn i Kotlin-økosystemet og gjør det enkelt å jobbe med async-operasjoner, som for eksempel når vi henter data fra API-er som Frost.
Mapbox brukes for å vise interaktive kart i appen. Vi bruker det til å vise brukerens adresse og nåværende posisjon. Det er også tilpasset Kotlin og Compose, og gir oss god kontroll over hvordan kartet ser ut og fungerer.
Room er Android sin anbefalte måte å jobbe med lokal lagring. Vi bruker det for å cache værdata, solinformasjon og husprofil, slik at vi fortsatt kan vise info selv om brukeren mister nett. Room lar oss definere entiteter og queries på en enkel og strukturert måte, og fungerer bra sammen med coroutines.
Appen lagrer enkelte data lokalt (værdata, adresseprofil) for å gi en bedre opplevelse. Ingen data deles med tredjeparter. Vi spør om tillatelse til å bruke din eksakte lokasjon.








