Sviluppo di applicazioni per dispositivi mobili: una storia d'uso
Ah, la primavera! Gli uccelli cantano, i fiori sbocciano e il sole sorge prima e tramonta più tardi. Tutte queste ore di luce in più consentono ai sistemi di produzione di energia solare di generare elettricità per un periodo più lungo. Man mano che si avvicina il solstizio d'estate, i sistemi di produzione di energia solare entrano nel periodo più produttivo dell'anno.
I proprietari di impianti solari sui tetti possono essere molto interessati a monitorare la loro efficienza. L'attore e comico John Hodgman, ad esempio, ha persino moderato una discussione riguardo al monitoraggio ossessivo della produzione di energia solare. Anche la mia amica Kasey è molto entusiasta dell'energia solare. Ogni volta che la vedo, mi racconta le ultime statistiche sulla produzione di kilowattora. La casa di Kasey si trova in una zona calda e soleggiata, dove l'aria condizionata rappresenta il suo principale consumo di energia elettrica. Ha installato dei pannelli solari sul tetto della sua casa alla fine di giugno e il suo impianto ha rapidamente iniziato a produrre energia sufficiente durante le lunghe giornate estive per compensare il consumo dell'aria condizionata.
Dopo aver ricevuto la bolletta elettrica di agosto, Kasey ha chiamato il suo installatore di pannelli solari per comunicargli un risultato positivo: il consumo di elettricità della sua casa per quel mese era stato zero. "Devo ammettere che controllo i miei contatori ogni giorno per vedere come sta funzionando l'impianto", ha detto Kasey all'installatore.
"Tutti lo fanno," rispose l'installatore. "Alcuni utenti mi dicono addirittura che controllano i contatori tre volte al giorno!"
Kasey mi ha chiesto se un'applicazione per smartphone sviluppata con MobileTogether potrebbe essere uno strumento utile per monitorare il suo impianto di energia solare. "Potrei inserire le letture del contatore direttamente sul mio telefono," ha detto. "Potrei farlo ogni giorno, quando porto fuori il cane prima di colazione."
È così che è iniziata la nostra collaborazione nello sviluppo di applicazioni per dispositivi mobili. Il risultato è l'applicazione MobileTogether che chiamiamo "Solar Power Tool".

Il sistema solare di Kasey include un software per monitorare la quantità di elettricità prodotta, ma questo è solo una parte del quadro. Come molti sistemi di produzione di energia solare per uso domestico, l'abitazione di Kasey è collegata alla rete elettrica nazionale tramite un sistema di compensazione netta. I pannelli solari forniscono energia all'abitazione solo quando c'è luce solare. L'elettricità proviene dalla rete durante la notte o quando la domanda supera la produzione. Quando i pannelli solari producono più elettricità di quella consumata dall'abitazione, l'eccesso viene reimmesso nella rete per integrare la capacità di produzione della compagnia elettrica.
La bolletta mensile della compagnia elettrica indica la quantità di energia prodotta e consumata dall'abitazione ogni mese. Il titolare del contratto paga il consumo eccedente, oltre a una piccola tariffa di connessione. L'energia prodotta in eccesso viene accreditata sulla bolletta del mese successivo. Queste abitazioni sono dotate di due contatori: uno registra l'energia elettrica prodotta, mentre l'altro registra l'energia elettrica consumata.
Kasey desiderava un'applicazione che monitorasse il consumo di energia durante il mese, invece di dover aspettare la bolletta della compagnia elettrica. Abbiamo quindi creato un elenco di requisiti per lo sviluppo dell'applicazione mobile:
- fornire un modulo di inserimento dati molto semplice per registrare le letture dei contatori
- calcolare automaticamente il saldo del conto a partire dalle rilevazioni
- mostra le prestazioni giornaliere e il saldo mensile in forma numerica e grafica
- Monitorare l'avanzo nel tempo per evidenziare le variazioni da un mese all'altro.
MobileTogether offre tutte le funzionalità di cui avevamo bisogno per implementare in modo efficace le specifiche dell'applicazione. Abbiamo iniziato definendo le strutture dati XML per i dati giornalieri e mensili. Qui è mostrata la visualizzazione dei dati mensili in formato griglia in XMLSpy:

Analizzando i dati relativi alle date e alle letture del contatore, le colonne dalla 4 alla 7, che riguardano i kilowatt prodotti e consumati, l'eccesso mensile e il bilancio totale, sono tutte semplici operazioni numeriche. Ad esempio, osservando la riga 5, i kilowatt prodotti (kWhGen) sono semplicemente la lettura del contatore solare di settembre meno la lettura di agosto. Il contatore solare funziona solo in avanti, mentre il contatore dei consumi può funzionare sia in avanti che indietro, a seconda della quantità di luce solare e del consumo di energia da un'ora all'altra.
Per la prossima fase dello sviluppo dell'applicazione mobile, abbiamo progettato la struttura generale dell'app. Abbiamo deciso di creare due pagine principali: una per le prestazioni giornaliere e una per la cronologia mensile. I moduli di inserimento dati sarebbero state sottosezioni accessibili da ciascuna delle pagine principali. Di seguito, la finestra di supporto di MobileTogether che mostra la struttura delle pagine:

I pulsanti presenti in ogni pagina consentono di utilizzare le funzionalità di MobileTogether per navigare tra le diverse schermate.
Successivamente, abbiamo pensato a come rappresentare graficamente i dati attraverso dei grafici. MobileTogether permette agli sviluppatori di creare grafici a più livelli, anche combinando diversi tipi di grafico. Abbiamo deciso di combinare grafici a linee e grafici a barre. Abbiamo scelto un grafico a linee come sfondo per rappresentare il consumo di elettricità, suddiviso per giorno e per mese, e un grafico a barre sovrapposto per mostrare la produzione di energia solare. La nostra logica è che la casa utilizza l'elettricità in modo continuo, anche durante la notte per il frigorifero, le sveglie elettriche, i caricabatterie per telefoni, ecc. La produzione di energia solare, invece, è intermittente, iniziando all'alba e terminando al tramonto.
Il Simulatore è una funzionalità di MobileTogether Designer che consente di eseguire immediatamente la soluzione durante lo sviluppo di applicazioni mobile, per testare la logica, visualizzare l'interfaccia utente così come apparirà su diversi dispositivi iOS, Android o Windows, e analizzare le modifiche nei dati del flusso di lavoro. Di seguito è riportata una visualizzazione della pagina principale del report giornaliero, come visualizzata nel Simulatore:

Questa pagina mostra i dati di produzione relativi a 14 giorni, a partire dal 18 aprile. La produzione solare varia notevolmente di giorno in giorno a seconda della copertura nuvolosa, come si può notare nel grafico superiore. Il grafico inferiore mostra il bilancio positivo o negativo di ogni giorno. Il 18 aprile, il consumo di energia è stato superiore alla produzione, mentre il 29 aprile il bilancio è stato pari a zero.
Il pulsante "Mostra" situato sotto il primo grafico apre una tabella numerica contenente i dati

Il pulsante "Mostra" modifica la proprietà di visibilità "MobileTogether" della tabella dati. La tabella stessa è scorrevole all'interno della pagina e contiene i dati relativi all'intero mese precedente. Il pulsante "Aggiungi nuova lettura" apre la sottopagina di inserimento dati per un nuovo set di misurazioni:

La definizione dell'azione di controllo per il pulsante ci permette di aprire la pagina come una finestra di dialogo modale, il che significa che la pagina originale rimane visibile in background.

MobileTogether ci permette di aggiungere un testo di suggerimento ai campi di input per l'inserimento delle letture del contatore. Abbiamo inoltre utilizzato la proprietà "Tastiera" di MobileTogether. Quando Kasey tocca il campo di modifica per inserire un nuovo valore, vengono visualizzati solo caratteri numerici.

Dopo aver inserito le letture di entrambi i contatori, il passo successivo per Kasey è quello di cliccare su "Calcola la produzione"

Questo componente esegue calcoli XQuery per generare i dati di produzione giornalieri, che vengono visualizzati in anteprima. Successivamente, Kasey potrà aggiungere i nuovi dati oppure annullare l'operazione. L'aggiunta del nuovo record giornaliero aggiorna automaticamente anche i grafici nella pagina del rapporto giornaliero

La pagina del rapporto mensile è strutturata in modo simile alla pagina del rapporto giornaliero. Di seguito sono mostrate due visualizzazioni della pagina mensile su un telefono Android, rispettivamente con tema scuro e tema chiaro:

La tabella dei dati in questa pagina mostra statistiche mensili. Le prime 12 righe si basano sulle letture del contatore presenti nelle bollette di Kasey, mentre i valori nelle colonne 4-7 sono calcolati dall'applicazione. La riga 13 si basa sull'ultima lettura giornaliera registrata. Ogni volta che Kasey aggiunge una nuova lettura giornaliera, l'applicazione aggiorna la tabella dei dati giornalieri e i grafici giornalieri, calcola automaticamente i totali mensili, sostituisce la riga 13 nella tabella mensile e aggiorna i grafici mensili.
Questo risolve il requisito principale per lo sviluppo di questa applicazione mobile: monitorare l'eccesso accumulato a partire dalla bolletta dei servizi più recente. L'eccesso accumulato viene indicato nella riga 13 della tabella dei dati mensili, nella didascalia sotto il primo grafico mensile e nelle celle più a destra di entrambi i grafici mensili.
L'icona a forma di ingranaggio, situata nell'angolo in alto a destra di ogni pagina, è un pulsante creato utilizzando l'immagine predefinita per le impostazioni, integrata in MobileTogether. Cliccando su questo pulsante, si apre una pagina delle impostazioni, come si può vedere in questo esempio su un iPhone:

I primi quattro pulsanti nella pagina delle impostazioni ci permettevano di manipolare e scambiare set di dati durante lo sviluppo o per l'analisi. L'ultima impostazione è una casella combinata che permetteva a Kasey di resettare i grafici nella pagina dei report giornalieri per visualizzare i dati relativi a 7, 14, 21 o 30 giorni.

Dopo lo sviluppo iniziale dell'applicazione mobile, Kasey è rimasta entusiasta dei risultati. Ogni giorno, portava il suo cane a fare una passeggiata mattutina e registrava le letture del contatore. Quando riceveva le bollette, aggiornava la tabella mensile con i valori rilevati dal tecnico.
Un giorno, mi ha chiamata. "Sai, sono stata chiusa in casa per quasi un anno, e ora sono pronta a viaggiare di nuovo," ha detto. "Cosa succederà all'applicazione se salterò qualche giorno di aggiornamenti?"
Ho dovuto rifletterci a lungo e ho creato un set di dati di prova per capire. In definitiva, ho concluso che il rapporto mensile sarebbe stato sufficiente. Che l'utente avesse dimenticato di inserire le letture del contatore per un giorno o per una settimana, l'app calcola sempre l'eccesso cumulativo a partire dall'ultima bolletta e dall'ultima lettura giornaliera.
Il rapporto giornaliero presentava alcuni piccoli problemi. Il campo per la data delle rilevazioni giornaliere era un controllo di selezione della data, che veniva caricato automaticamente con la data corrente, ma l'utente poteva selezionare un'altra data se erano disponibili i valori delle rilevazioni.
Tuttavia, se alcune rilevazioni giornaliere venivano perse, i dati di produzione giornalieri e i valori grafici relativi all'ultimo giorno risultavano inaccurati: tutta la produzione e tutto il consumo venivano attribuiti all'ultimo giorno.
La soluzione era semplice. Abbiamo deciso di aggiungere un po' di logica al calcolo delle statistiche giornaliere, utilizzando un test "se-allora" e un ciclo:
- se la data della nuova lettura era successiva di più di un giorno rispetto all'ultima lettura, allora calcolare il numero di giorni mancanti
- dividere la produzione totale e il consumo totale per il numero totale di giorni trascorsi tra le rilevazioni.
- Utilizzare un ciclo per assegnare la produzione media e il consumo medio a ciascun giorno in cui è stata rilevata un'anomalia nella lettura.
Ho implementato questa logica in un gruppo di azioni MobileTogether e ho aggiunto il nuovo gruppo di azioni alle operazioni eseguite quando Kasey cliccava sul pulsante "Aggiungi lettura giornaliera".
Il 2 maggio, Kasey è partita con entusiasmo per un viaggio di 3 giorni dedicato al campeggio e all'escursionismo. Il 6 maggio, la mattina dopo il suo ritorno, ha inserito le letture del contatore giornaliere come di consueto. Di seguito, sono riportate alcune sezioni del suo rapporto giornaliero e del rapporto mensile, con valori medi calcolati per le letture giornaliere mancanti, come visualizzate su un iPhone:

I valori nulli registrati dai contatori giornalieri nei giorni 3, 4 e 5 di maggio indicano valori medi.
Se state sviluppando applicazioni mobili multipiattaforma, avete bisogno di uno strumento con funzionalità complete di programmazione visuale e funzionalità di debug integrate! Scoprite MobileTogether dimostrazioni video, di più applicazioni di esempio, o addirittura il/la manuale online per un'analisi approfondita di tutte le informazioni. Quando sarete pronti a iniziare e a sviluppare le vostre applicazioni mobili multipiattaforma nel modo più rapido, Scaricate il software MobileTogether Designer per iniziare.