Ontwikkeling van mobiele apps: Een gebruikersverhaal
Ah, de lente! Vogels zingen, bloemen bloeien, en de zon komt eerder op en gaat later onder. Al dat extra daglicht geeft zonne-energie systemen meer uren om elektriciteit op te wekken. Naarmate de zomerzonnewende nadert, bereiken zonne-energiesystemen hun meest productieve periode van het jaar.
Eigenaars van zonnepanelen op hun dak kunnen erg enthousiast zijn over het volgen van de prestaties van hun systeem. De acteur en comedian John Hodgman heeft zelfs een discussie geleid over het obsessief monitoren van de energieproductie van zonnepanelen. Mijn vriendin Kasey is ook erg enthousiast over zonne-energie. Telkens als ik Kasey zie, vertelt ze me de laatste gegevens over de geproduceerde kilowattuur. Het huis van Kasey staat in een warm, zonnig klimaat, waar airconditioning haar grootste energieverbruiker is. Ze heeft eind juni zonnepanelen op het dak van haar huis geïnstalleerd, en haar systeem produceerde snel genoeg energie tijdens de lange zomerdagen om het energieverbruik van haar airconditioning te compenseren.
Na het ontvangen van de elektriciteitsrekening voor augustus, belde Kasey haar installateur van de zonnepanelen om te melden dat het goed ging – het elektriciteitsverbruik van haar huis voor die maand was nul. "Ik moet bekennen dat ik elke dag mijn meters controleer om te zien hoe het systeem functioneert," vertelde Kasey aan de installateur.
"Iedereen doet het," antwoordde de installateur. "Sommige gebruikers vertellen me zelfs dat ze de meters drie keer per dag controleren!"
Kasey vroeg me of een mobiele applicatie, ontwikkeld met MobileTogether, een goed hulpmiddel zou kunnen zijn voor het bijhouden van gegevens van haar zonne-energiesysteem. "Ik zou de meterstanden in mijn telefoon kunnen invoeren," zei ze. "Ik kan dat elke dag doen, wanneer ik de hond uitlaat voordat ik ontbijt."
Zo begon onze samenwerking op het gebied van mobiele app-ontwikkeling. Het resultaat is de mobiele app die we "Solar Power Tool" noemen.

Het zonnepanelensysteem van Kasey omvat software om de hoeveelheid opgewekte elektriciteit te registreren, maar dat is slechts een deel van het geheel. Net als bij veel andere zonnepanelensystemen voor woningen, is het huis van Kasey aangesloten op het elektriciteitsnet via een systeem van netmetering. De zonnepanelen leveren stroom aan het huis, maar alleen wanneer de zon schijnt. 's Nachts of wanneer de vraag naar elektriciteit groter is dan de productie, wordt de stroom van het elektriciteitsnet onttrokken. Wanneer de zonnepanelen meer elektriciteit produceren dan het huis verbruikt, wordt het overschot teruggeleverd aan het elektriciteitsnet om de capaciteit van de energieleverancier aan te vullen.
De maandelijkse energierekening geeft weer hoeveel energie het huis produceert en verbruikt in die maand. De rekeninghouder betaalt voor het overtollige verbruik, plus een kleine aansluitkosten. Eventuele overproductie wordt verrekend met de volgende maandelijkse rekening. Deze woningen hebben twee meters: de ene meter registreert de geproduceerde elektriciteit, en de andere registreert de verbruikte elektriciteit.
Kasey wilde een app die het saldo gedurende de maand in de gaten zou houden, in plaats van te wachten op de energierekening. We hebben een lijst opgesteld met vereisten voor de ontwikkeling van de mobiele app:
- Bied een zeer eenvoudig formulier aan voor het invoeren van gegevens, zodat aflezingen van meters geregistreerd kunnen worden
- bereken automatisch het saldo van de rekening op basis van de afleeswaarden
- toon de dagelijkse prestaties en de maandelijkse balans zowel in cijfers als in grafieken
- Volg de overschotten in de loop van de tijd om de veranderingen van maand tot maand weer te geven.
MobileTogether heeft alle functies die we nodig hadden om de app-eisen op een elegante manier te implementeren. We zijn begonnen met het definiëren van XML-datastructuren voor dagelijkse en maandelijkse gegevens. Hieronder is de maandelijkse data weergegeven in de XMLSpy-weergave:

Het aflezen van de datum en de meterstanden, evenals de kolommen 4 tot en met 7 voor de opgewekte en verbruikte kilowattuur, het maandelijkse overschot en de totale balans, zijn allemaal eenvoudige numerieke berekeningen. Kijk bijvoorbeeld naar rij 5: de opgewekte kilowattuur (kWhGen) is simpelweg de meterstand van de zonnepanelen voor september, minus de meterstand van augustus. De meter van de zonnepanelen loopt alleen vooruit, terwijl de verbruiksmeter vooruit of achteruit kan lopen, afhankelijk van de hoeveelheid zonlicht en het energieverbruik per uur.
Voor de volgende stap in de ontwikkeling van onze mobiele app hebben we de algemene structuur van de app ontworpen. We hebben besloten om twee hoofdpagina's te creëren: één voor de dagelijkse prestaties en één voor het maandelijkse overzicht. De formulieren voor het invoeren van gegevens zouden subpagina's zijn die toegankelijk zijn vanaf elke hoofdpagina. Hieronder ziet u het hulpmiddelvenster "MobileTogether Pages" dat de paginastructuur weergeeft:

De knoppen op elke pagina maken gebruik van MobileTogether-functies om tussen verschillende weergaven te navigeren.
Vervolgens hebben we nagedacht over hoe we de data grafisch konden weergeven in diagrammen. MobileTogether stelt ontwikkelaars in staat om diagrammen in meerdere lagen op te bouwen, zelfs door verschillende soorten diagrammen te combineren. We hebben besloten om een staafdiagram en een oppervlakte-diagram te combineren. We hebben gekozen voor een oppervlakte-diagram als achtergrond om het elektriciteitsverbruik weer te geven, per dag en per maand, en een staafdiagram erboven om de zonne-energieproductie weer te geven. Onze gedachte is dat een woning continu elektriciteit verbruikt, zelfs midden in de nacht voor bijvoorbeeld koelkasten, elektrische klokken, telefoonladers, enzovoort. De productie van zonne-energie is daarentegen onderbroken, beginnend bij zonsopgang en eindigend bij zonsondergang.
De Simulator is een functie van MobileTogether Designer die de oplossing direct uitvoert tijdens de ontwikkeling van mobiele apps, zodat u de logica kunt testen, de gebruikersinterface kunt bekijken zoals deze eruit zal zien op verschillende iOS-, Android- of Windows-apparaten, en wijzigingen in de workflowdata kunt bekijken. Hieronder een weergave van de hoofdpagina van het dagelijkse rapport, zoals deze eruitziet in de Simulator:

Deze pagina toont de productiegegevens van 14 dagen, beginnend op 18 april. De zonne-energieproductie varieert sterk van dag tot dag, afhankelijk van de hoeveelheid bewolking, zoals te zien is in het bovenste diagram. Het onderste diagram toont het dagelijkse saldo, dat positief of negatief kan zijn. Op 18 april werd er meer energie verbruikt dan er werd opgewekt, terwijl het saldo op 29 april nul was.
De knop "Bekijken" onder het eerste diagram opent een numerieke tabel met de gegevens:

De knop "Bekijken" beïnvloedt de zichtbaarheidseigenschap "MobileTogether" van de datatabel. De tabel zelf is binnen de pagina scrollbaar en bevat gegevens voor de volledige voorgaande maand. De knop "Nieuwe meting toevoegen" opent de subpagina voor het invoeren van gegevens voor een nieuwe set metingen:

De instelling voor de actie die aan de knop is gekoppeld, stelt ons in staat om de pagina te openen als een modale dialoogvenster, wat betekent dat de oorspronkelijke pagina nog steeds zichtbaar is op de achtergrond.

MobileTogether stelt ons in staat om hulptekst toe te voegen aan de invoervelden voor de meterstanden. We hebben ook de eigenschap "Toetsenbord" van MobileTogether gebruikt. Wanneer Kasey op het bewerkingsveld tikt om een nieuwe waarde in te voeren, worden alleen numerieke tekens weergegeven.

Nadat Kasey de afleeswaarden van beide meters heeft ingevoerd, is de volgende stap om op "Bereken productie" te klikken

Deze functie voert XQuery-berekeningen uit om de dagelijkse productiedata te genereren voor de preview. Vervolgens kan Kasey de nieuwe data toevoegen of de invoer annuleren. Het toevoegen van de nieuwe dagelijkse gegevens zorgt er automatisch voor dat de grafieken op de pagina met het dagelijkse rapport worden bijgewerkt

De pagina voor het maandelijkse rapport is op dezelfde manier opgebouwd als de pagina voor het dagelijkse rapport. Hieronder zijn twee weergaven van de maandelijkse pagina op een Android-telefoon, in [mobile-apps-that-automatically-support-dark-theme|donker thema en [licht thema]] weergegeven:

De tabel op deze pagina toont maandelijkse statistieken. De eerste 12 rijen zijn gebaseerd op meterstanden van de energierekeningen van Kasey, waarbij de waarden in kolommen 4-7 door de app zijn berekend. De 13e rij is gebaseerd op de laatste dagelijkse meterstand. Elke keer dat Kasey een nieuwe dagelijkse meterstand toevoegt, wordt de dagelijkse datatabel en de dagelijkse grafieken bijgewerkt, en berekent de app automatisch de maandelijkse totalen, vervangt de 13e rij in de maandelijkse tabel en werkt de maandelijkse grafieken bij.
Dit lost het belangrijkste vereiste op voor deze mobiele app-ontwikkeling: het monitoren van het totale overschot sinds de meest recente energierekening. Het totale overschot wordt vermeld in rij 13 van de maandelijkse datatabel, in de bijschrifttekst onder het eerste maandelijkse grafiek, en in de meest rechtse waarden in beide maandelijkse grafieken.
Het tandwielicoon rechtsboven op elke pagina is een knop die is gemaakt met behulp van de standaardafbeelding van MobileTogether voor de instellingen. Deze knop opent een pagina met instellingen, zoals hier te zien op een iPhone:

De eerste vier knoppen op de pagina "Instellingen" stelden ons in staat om tijdens de ontwikkeling of voor analyses gegevenssets te manipuleren en uit te wisselen. De laatste instelling is een keuzelijst waarmee Kasey de grafieken op de pagina "Dagelijkse rapporten" kon resetten, zodat deze gegevens weergegeven voor 7, 14, 21 of 30 dagen toonden.

Na de eerste ontwikkeling van de mobiele app was Kasey erg blij met de resultaten. Elke dag ging ze met haar hond een ochtendwandeling maken en noteerde ze de aflezing van haar meter. Wanneer de energierekeningen per post aankwamen, vulde ze de maandelijkse tabel aan met de waarden die door de meterlezer waren genoteerd.
Toen belde ze me eens. "Je weet dat ik bijna een jaar thuis ben geweest, en nu ben ik er klaar voor om weer te gaan reizen," zei ze. "Wat gebeurt er met de app als ik een paar dagen geen updates meer plaats?"
Ik moest er even over nadenken en heb een testdataset gemaakt om het uit te zoeken. Het bleek dat het maandelijkse rapport prima zou werken. Of de gebruiker nu een dag of een week lang geen meterstanden invoert, de app berekent altijd het totale overschot op basis van de meest recente factuur en de laatste ingevoerde dagelijkse stand.
Het dagelijkse rapport bevatte een paar kleine problemen. Het veld voor de datum van de dagelijkse metingen was een datumkiezer, die automatisch werd ingevuld met de huidige datum, maar de gebruiker kon een andere datum selecteren als er meetwaarden voor die datum beschikbaar waren.
Maar als er een paar dagen metingen ontbraken, waren de dagelijkse productiegegevens en de waarden op de grafiek voor de laatste dag onjuist. Alle productie en al het verbruik werden dan toegerekend aan die laatste dag.
De oplossing was eenvoudig. We besloten om wat logica toe te voegen aan de berekening van de dagelijkse statistieken, met behulp van een "als-dan"-test en een lus:
- Als de datum van de nieuwe meting meer dan één dag na de datum van de vorige meting lag, dan moeten het aantal dagen dat ontbraken worden geteld
- De totale productie en de totale consumptie delen door het totale aantal dagen tussen de metingen.
- Gebruik een lus om het gemiddelde van de productie en het gemiddelde van het verbruik toe te wijzen aan elke dag waarop een meting ontbrak.
Ik heb deze logica geïmplementeerd in een MobileTogether Actiegroep en deze nieuwe actiegroep toegevoegd aan de stappen die worden uitgevoerd wanneer Kasey op de knop "Dagelijkse lezing toevoegen" klikt.
Kasey vertrok op 2 mei met veel plezier voor een 3-daagse kampeer- en wandeltrip. Op 6 mei, de ochtend nadat ze terug was, noteerde ze, zoals gewoonlijk, de dagelijkse meterstanden. Hieronder staan gedeeltelijke weergaven van haar dagelijkse rapport en haar maandelijkse rapport, met gemiddelde waarden voor de ontbrekende dagelijkse metingen, zoals te zien op een iPhone:

Waarden van nul voor de dagelijkse meterstanden op 3, 4 en 5 mei duiden op gemiddelde waarden.
Als u mobiele apps ontwikkelt voor verschillende platforms, heeft u een tool nodig met uitgebreide visuele programmeerfunctionaliteit en geïntegreerde debugmogelijkheden! Bekijk onze MobileTogether videodemonstraties, bekijk meer voorbeeldtoepassingen, of raadpleeg zelfs de online handleiding voor een diepgaand overzicht van alle informatie. Wanneer u klaar bent om aan de slag te gaan en uw eigen mobiele apps voor verschillende platforms te ontwikkelen, download de MobileTogether Designer om te beginnen.