Domotica-01

 

Con questo progetto ho voluto implementare nella mia casa un piccolo sistema di domotica, senza tante pretese, senza voler assolutamente confrontarsi con sistemi professionali, che mi facilitasse quelle piccole attività della vita quotidiana, che in particolari occasioni possono diventare imprevedibilmente fastidiose o essere oltremodo comode.

sempre con lo spirito che contraddistingue questo portale condivido con chi lo ritenga utile e interessante sia il materiale che ho creato che la guida di installazione.

Se decidete di utilizzare il materiale, ma anche se volete proporre dei miglioramenti o delle correzioni vi chiedo di inviarmi una mail cliccando sul link seguente office mi farebbe molto piacere sapere chi usa questo materiale.

 Aggiornamento del 28/05/2016



OpenEnergyMonitor su RaspberryPi



MANUALE DI INSTALLAZIONE
PER
SU
RaspberryPi®

img oem

Rev. 00 del 08/09/13


 

Introduzione

OpenEnergyMonitor è un progetto open-source che si occupa di sviluppare strumenti di monitoraggio energetico per aiutarci a capire come usiamo l'energia e per dare un impulso alla sfida della sostenibilità energetica.
Il sistema
OpenEnergyMonitor è un sistema di monitoraggio open-source ArduinoIDE compatibile.

Questa guida ha lo scopo di aiutare chi, come me, ha trovato parecchie difficoltà ad installare e configurare il sistema.

Gran parte del materiale presente su questa guida proviene dal sito originale del progetto OpenEnergyMonitor che è stato preso come riferimento per la stesura e a cui si rimanda per approfondimenti “http://openenergymonitor.org/emon/

 


 

Materiali necessari

Nella tabella seguente propongo una lista di materiale che per me è il minimo indispensabile, poi vedete voi secondo le vostre esigenze.

Il numero di sensori amperometrici, pos.9, dipende da cosa volete fare, 1 è il minimo per poter monitorare i consumi di casa, poi se volete, o avete bisogno, di monitorare anche la produzione del fotovoltaico, magari perchè l'inverter non è compatibile con 123solar, potete prenderne 2 o 3. Attenzione che 3 è il massimo per ogni emonTx, se ve ne servono più di 3 dovete prendere anche una seconda emonTx.

Il Raspberry potrebbe non essere indispensabile in quanto se già ne avete uno per monitorare l'inverter dovrebbe essere possibile far funzionare tutto su un solo Raspberry. Io non ho ancora provato per vedere se le risorse sono sufficienti, ma in ogni caso se con le sperimentazioni future vediamo che ne basta uno solo, avere il secondo di scorta non fa male.

Pos Componente Q.tà
1 Raspberry Pi Type B 1
2 case x RaspberriPi 1
3 SanDisk Ultra SDHC 8 GB 30 MB/s Classe 10 1
4 RFM12Pi V2 Pre-Assembled Raspberry Pi Expansion board 1
5 emonTx 433Mhz kit 1
6 emonTx Case - un-milled 1
7 100A max clip-on current sensor CT 1
8 AC-AC Adapter - AC voltage sensor (Euro plug) 1
9 Programmer - USB to serial UART 1

 


 

Preparazione dell'hardware

RFM12Pi

Adesso questa secheda arriva già preassemblata e con il programma già precaricato quindi non rimane molto da fare se non connetterla alla GPIO del Raspberry, l'unica attenzione sta nell'allineamento del connettore che è più corto di quello del Raspberry, si deve prestare attenzione ad allineare i due connettori partendo dal pin 1 al pin 10 (vedi figura) in modo tale che la scheda RFM12Pi sia sopra al Raspberry e non sporga lateralmente.

GPIO-Layout


EmonTx

Qui la faccenda è più complessa in quanto la scheda arriva in kit e bisogna assemblarla saldando tutti i componenti, niente di impossibile ma bisogna avere un minimo di manualità. Io non lo avevo mai fatto e ci sono comunque riuscito, modestamente anche con un buon risultato, seguendo queste 3 videoguide (purtroppo in inglese) del sito OEM dove, un simpatico, Devid spiega chiaramente come fare. Consiglio anche a chi non conosce l'inglese di seguirle in quanto sono molto istruttive per i principianti:

Attenzione che non si possono usare i saldatori da supermercato, ci vuole una stazione saldante termoregolata e stagno di buona qualità come spiegato nella prima videoguida.

Passiamo ora alla saldatura dei componenti, anche qui ci viene in aiuto una guida del sito OEM dove viene spiegato passo passo come procedere e dove posizionare ogni componente con relative foto. Anche questa guida rigorosamente in inglese, ma con la traduzione di Google e le foto si capisce come procedere, se poi ci sono grossi problemi potremmo fare la traduzione della guida e riportarla all'interno della nostra. Il link alla guida è il seguente:

 accessories http://openenergymonitor.org/emon/emontx/make/assemble/buildguide22

Saldati tutti i componenti e testata la scheda come da guida non ci rimane che caricare il software che ci interessa. Il progetto, a questo link arrow blue, mette a disposizione alcuni programmi già pronti da caricare sulla scheda, lo sketch che ci interessa il "emonTx_CT123_Voltage". Per chi non è pratico della piattaforma Arduino, per poter caricare il software abbiamo bisogno di alcuni strumenti software da installare su un PC con Linux ( Linux per comodità e perchè oramai siamo esperti, ma va bene anche Win), ovvero di "Arduino IDE" che su Ubuntu si trova sul Software Center e di due librerie da caricare sull'apposita directory di Arduino IDE, il tutto è spiegato a questo link arrow blue , installato Arduino IDE scaricate le librerie:

OpenEnergyMonitor EmonLib

JeeLabs RFM12 wireless comms

Scarichiamo anche lo sketch emonTx_CT123_Voltage e lo posizioniamo sulla directory "Sketchbook", e proseguiamo nel seguente modo:

  1. collegiamo il programmatore alla scheda emonTx (attenzione all'orientamento) e alla porta USB del PC
  2. avviamo IDE Arduino
  3. assicuriamoci di aver impostato in "Strumenti - Tipo di Arduino" la voce "Arduino Uno" attenzione che le altre non sono compatibili
  4. controlliamo che in "Strumenti - Programmatore" sia impostato "USBtinyISP"
  5. apriamo lo sketch da "File - Cartella degli sketch - libraries - emonTxFirmware" e clicchiamo su "emonTx_CT123_Voltage" viene caricato il programma
  6. scorriamo il codice, alla riga 30 troviamo "const int CT2 = 1;" serve per abilitare il secondo sensore amperometrico (1=abilitato 2=disabilitato)
  7. alla riga 31 troviamo "const int CT3 = 1;" che è il 3° sensore, il sensore n° 1 è sempre abilitato
  8. scorriamo ancora fino alla riga 33 troviamo "#define freq RF12_433MHZ", mettiamo la corretta frequenza se necessario (433 - 868 - 915)
  9. prendiamo nota dei valori alle rige 34 e 35 (nodeID = 10; e networkGroup = 210;) ci serviranno dopo
  10. salvate (quinta icona con freccia verso il basso)
  11. cliccate su verifica (prima icona rotnda con segno di spunta) attendere che finisca e non dia errori
  12. cliccate su carica (seconda icona rotonda con freccia verso destra)
  13. al termine del caricamento se tutto è andato a buon fine il led verde della scheda lampeggerà velocemente per circa 3 secondi

Anche questa e fatta.....


 

Installazione del software

Questa è la parte più semplice, si va sul sito di OpenEnergyMonitor si scarica l'immagine della SD  si copia su una SD da minimo 4 GB, seguendo una delle due procedure seguenti in funzione del SO in uso.

Windows:

  1. Si utilizza Win32diskimager
  2. L'immagine scaricata in precedenza, "emoncmspiv5avr_02_05_13.zip", è un file zip quindi è necessario estrarre il contenuto in una directory a vostra scelta
  3. Inserire la scheda SD nel lettore di schede del vostro PC e avviare il Win32disckimager
  4. Nella prima riga della finestra principale, “Image File”, scegliere l'icona con la cartella per selezionare il percorso dove avete salvato il file precedentemente estratto e cliccate sul file per selezionarlo
  5. Selezionare la lettera del drive dove avete inserito la SD in "Device" box (attenzione a selezionare il drive corretto, in caso contrario potreste danneggiare irreparabilmente i dati del drive dove anrdete a scrivere)
  6. Cliccare su “write” la barra di progressione darà la percentuale del lavoro di scrittura e al termine, un altro messaggio ci avvertirà dell'avvenuta scrittura.

Linux:

  1. Inserire la SD nel lettore del vostro PC
  2. Per prima cosa bisogna scoprire il nome del device della SD, a questo scopo digitare:
$ df -h

 

si dovrebbe vedere qualcosa di simile a questo


Filesystem Size Used Avail Use% Mounted on /dev/sda6 120G 90G 24G 79% / none 490M 700K 490M 1% /dev none 497M 1.7M 495M 1% /dev/shm none 497M 260K 497M 1% /var/run none 497M 0 497M 0% /var/lock /dev/sdb1 3.7G 4.0K 3.7G 1% /media/sandisk

ora è necessario "smontare" la SD card, prestare attenzione a modificare il valore di sdb con quello corrispondente alla vostra SD

$ umount /dev/sdb1 

se la vostra SD ha più di una partizione smontare anche quella

$ umount /dev/sdb2

aprite una finestra del terminale e spostatevi sulla directory dove avete scaricato l'immagine da copiare sulla SD e digitate il seguente comando

ATTENZIONE: a puntare al corretto device, se per errore puntate al vostro hard disk potete distruggere parte dei dati presenti rendendolo inutilizzabile

$ sudo dd bs=4M if=emoncmspiv5avr_19-05-13.img of=/dev/sdb

al termine della copia estrarre la SD e inserirla nel Raspberry, si avvia e si trova tutto pronto e configurato.

Come ultimo passo si deve configurare il Raspberry per la propria nazione con raspi-config:

  1. Impostare la lingua "set locale"
  2. Impostare il fuso orario "set timezone"
  3. Espandere la partizione, se necessario

per chi ha bisogno di aiuto per questa operazione si rimanda a

A questo punto è tutto installato e per raggiungere il server del vostro Raspberry basta digitare su un browser "http://emoncmspi"


 

Interconnessione dei moduli

Ora abbiamo l'EmonTx assemblato, programmato e connesso all'impianto, il Raspberry ha il webserver con Emoncms, però ancora non succede niente e questo è dovuto al fatto che OpenEnergyMonitor è un sistema modulare e scalabile, ovvero sono io che scelgo quanti e quali moduli utilizzare, secondo le mie esigenze, ma sopratutto come utilizzarli caricando e/o configurando appropriatamente il software.
Nel nostro caso abbiamo (ho) deciso di utilizzare 4 moduli:

  1. EmonTx con caricato il software per 3 sensori di corrente, 1 sensore per la tensione reale, 1 sensore per lettura impulsi e 1 sensore per la lettura della temperatura
  2. EmonBase Raspberry + RFM12Pi con il software per l'interfacciamento al Raspberry
  3. Emoncms il software per raccogliere e visualizzare i dati
  4. Emoncms.org il modulo che visualizza i dati in rete senza accedere al Raspberry

ogni modulo lavora autonomamente e deve avere un input e un output, ogni output di un modulo è l'input per il successivo, questa catena o interconnessione forma il sistema completo che in questo modo diventa facilmente integrabile e/o espandibile, mi spiego meglio così si comprende anche il funzionamento di OpenEnergyMonitor.

La EmonTx riceve come input i segnali dalle sonde, ad essa connesse, elabora tali segnali e li trasforma in dati reali (Volt, Watt, °C, ecc.) che sono l'output che verranno trasmessi via radio al modulo RFM12Pi il quale ha il compito di ricevere come input i dati da tutte le Emontx di sua competenza (possono anche essere più di una) e come output li invia ad Emoncms che riceve i dati in input, li archivia e come output li visualizza su richiesta dell'utente.

Emoncms, come tutti i cms, è un'interfaccia grafica costituita da una serie di moduli (quindi anche questa espandibile con appropriati moduli) che si appoggia ad un database MySql per archiviare i dati e le varie opzioni dell'interfaccia grafica stessa. L'interconnessione dei moduli si esegue a livello software all'interno di Emoncms.

 

Tornando a noi, quindi, per interconnettere i moduli entriamo in Emoncms, andiamo su un browser della rete e digitiamo sulla barra degli indirizzi "http://emoncmspi", se tutto è stato fatto correttamente veniamo indirizzati sul webserver del Raspberry e si apre la schermata per il login

EmonRegister

essendo la prima volta che ci autentichiamo dobbiamo registrarci quindi clicchiamo su "register", si aprirà una seconda finestra dove inserire le credenziali, alla fine cliccare sul pulsante "Register"

EmonRegister1

Attenzione a segnarvi le credenziali in quanto non c'è modo di recuperarle, effettuata la registrazione vi trovate, come nel caso del login sulla schermata principale

EmonMain

Per il momento lasciamo perdere "My account" e "My Profile", ce ne occuperemo con la configurazione di Emoncms, ma poniamo la nostra attenzione sul menù "Raspberry Pi", ci clicchiamo sopra e si apre la finestra di configurazione del Raspberry

RPiMain

La prima cosa da notare è la scritta in verde su fondo azzurrino "RFM12 to Pi interface script is up and running" significa che lo script di gestione del modulo radio è stato caricato dal sistema e funziona correttamente. Se così non fosse prima di procedere bisogna trovare la causa del non funzionamento e risolverla.

Visto che sicuramente funziona passiamo a impostare le opzioni della prima colonna di sinistra ovvero:

  • Frequenza del modulo radio che abbiamo acquistato
  • Network group (deve essere lo stesso che abbiamo messo nello sketch dell'EmonTx)
  • ID node (lasciamo 15, va variato solo se avete più di un modulo radio per distinguerli)
  • Broadcast time to synchronize emonGLCD, a noi non interessa serve per trasmettere i dati al modulo emonGLCD un monitor wirless programmabile su cui visualizzare i dati

Inseriti i dati clicchiamo sul pulsante "Save" per memorizzare le impostazioni.
Nella colonna di destra si devono inserire i parametri per inviare i dati ad Emoncms.org, se lo vogliamo utilizzare, altrimenti lasciamo tutto in bianco.
Se lo utilizzate inserite tutti i campi come in figura, per recuperare la stringa "Write Apikey" vi dovete creare un account su Emoncms.org, con la stessa procedura usata in precedenza per Emoncms sul Raspberry, ci ritroveremo sulla main page che è simile a quella del Raspberry tranne che, in questo caso, al posto del menù per il Raspberry troviamo il logo di Emoncms

EmonMainWeb

Clicchiamo sul menù "Input", si apre una nuova finestra

MainInputWeb

Lasciamo perdere se non c'è nessun input creato, li vedremo dopo, ma clicchiamo su "Input API helper", che farà aprire un ulteriore finestra

InputApiWeb

qui troviamo la Apikey di lettura e scrittura, facciamo un copia e incolla sulla schermata del Raspberry e clicchiamo nuovamente sul pulsante "Save", a questo punto se tutti i valori sono corretti la scritta sul riquadro azzurrino sotto alla colonna di destra cambia in "Authentication successful" e di colore verde. A questo punto tutto il sistema e connesso e comincia a monitorare, ma prima di iniziare a vedere qualcosa di concreto dobbiamo ancora configurare Emoncms.


 

Configurazione di Emoncms

Come già accennato in precedenza, Emoncms, come tutti i cms, è un sito web con un'interfaccia grafica costituita da una serie di moduli che si appoggia ad un database MySql per archiviare i dati e le varie opzioni dell'interfaccia grafica stessa. L'interfaccia grafica è totalmente personalizzabile, talmente personalizzabile che, quando si apre per la prima volta è completamente vuota, ovvero una pagina bianca.
Il software è disponibile in Inglese, spagnolo (traduzione parziale) Francese, sul Raspberry però, a differenza di Emoncms.org, non sono riuscito a far cambiare la lingua.
Dato che la configurazione è uguale sia per Emoncms sul Raspberry che per Emoncms su Emoncms.org, d'ora in poi mi riferirò solo a Emoncms.org, eventualmente la procedura dovrà essere ripetuta sul Raspberry, anche se non ne vedo la necessità, o si utilizza uno o l'altro. Eventualmente ci sarebbe la possibilità di esportare il database da Emoncms.org e ricaricarlo su altro webserver ma non ho ancora studiato la procedura (vederemo per il futuro se ne vale la pena).

Emoncms è composto dai seguenti moduli:

  1. Input
  2. Feeds
  3. Vis (Visualisations)
  4. Dashboard
  5. Extras

Le funzionalità specifiche dei vari moduli e come vengono impostati lo vedremo in seguito, per il momento basta sapere che ogni modulo è deputato ad una specifica operazione e anche in questo caso l'output di uno diventa l'input dell'altro, la stessa cosa succede all'interno dei moduli dove i vari passaggi seguono sempre il principio che l'output del primo è l'input del secondo, l'output del secondo è l'input del terzo e così via.

A grandi linee il funzionamento dei moduli è il seguente:

  1. Input
    questo modulo si occupa della manipolazione ed elaborazione vera e propria dei dati che possono essere memorizzati grezzi, ovvero come arrivano dalla EmonTx, o essere preconfezionati prima di memorizzarli
  2. Feeds
    questo modulo gestisce la memorizzazione dei dati degli input e si occupa di passarli al modulo successivo. Sempre all'interno di questo modulo si può visualizza l'attività di invio dei dati.
  3. Vis (Visualisations)
    con questo modulo si possono visualizzare al volo i dati con dei grafici temporanei, però, questo modulo è molto importante in quanto ha altre due funzionalità particolarmente interessanti, la prima è che attraverso di lui si impostano i grafici multilinea e la seconda è che possiede la funzione per modifcare eventuali dati errati nel database
  4. Dashboard
    lo dice la parola, è la lavagna dove andiamo a posizionare i vari grafici e i dati da visualizzare, ovviamente c'è la possibilità di ragruppare i dati per categorie omogenee dividendoli su più pagine
  5. Extras
    Con questo modulo abbiamo la possibilità di visualizzare in modo diverso i dati a livello globale e generare dei report

 

Input

Questo modulo raccoglie i dati che arrivano dal monitoraggio e li invia ai feed per l'archiviazione, così come sono "grezzi" o li formatta appropriatamente per poi inviarli. Qualsiasi elaborazione che si voglia fare con i dati deve essere fatta all'interno di questo modulo sfruttando gli "elaboratori di ingresso" o "Input processing". I dati cosi processati vengono archiviati dai Feed e resi disponibili per gli altri moduli.
Per far capire come funziona farò due esempi che sono quelli che poi dovremmo realizzare.
Esempio n° 1: dal monitoraggio ci arriva il valore della potenza assorbita in Watt, ma a noi interessa avere il valore in kWh e sapere quanti ne ho assorbiti nel giorno quindi i kWh/d, lo schema sarà quindi

==> W ==> kWh ==> kWh/d

Esempio n° 2: dal monitoraggio arriva la tensione, che però è moltiplicata per 100 per avere una definizione più alta (220V arrivano come 22000) ma il modo corretto di visualizzarlo è in Volt quindi dovremmo dividere il valore per 100, lo schema sarà

==> V(x100) ==> x0.01 ==> V

Vediamo ora come si ottiene questo risultato. Al primo invio di dati dal sistema, Emoncms sulla scheda Input visualizzerà il set di dati che sta ricevendo come da immagine, se non vedete nessun Input qualcosa non funziona e non si può proseguire, bisogna prima risolvere il problema.

Input01

Come si può notare ha ricevuto 4 tipi di dati dal nodo 10, il sistema non è in grado di sapere che tipo di dato ha ricevuto e quindi lo dobbiamo istruire inserendo una descrizione del tipo di dato (si clicca sulla matita) e poi inserendo degli Input processing per formattare i dati.
Per prima cosa bisogna sapere a cosa corrispondono i dati da 1 a 4, questo si vede nello sketch di gestione dei dati, nel nostro caso emonTx_CT123_Voltage, ovvero:

  1. CT1 - Sensore di corrente n°1 - [W]
  2. CT2 - Sensore di corrente n°2 - [W]
  3. CT3 - Sensore di corrente n°3 - [W]
  4. VAC - sensore di tensione reale - [Vx100]

andiamo quindi ad assegnare una descrizione ai dati 1 e 4, che usiamo in questo esempio, mentre il 2 e 3 non sono in uso quindi li lasciamo vuoti, per far questo si clicca sull'icona a forma di matita della riga da modificare

Input02

Come vedete si è attivata anche la casella "name" ma il valore non deve essere cambiato altrimenti quel dato cambierà identificativo, ma al successivo invio di dati il n° 1 che non esisterà più verrà ricreato e ripartirà da zero.
Inserite una descrizione a vostro piacimento su "Description" e poi clicchiamo sul simbolo di spunta che ha sostituito la matita per salvare.
Facciamo la stessa cosa per il 4 così da ottenere qualcosa di simile a questo

Input03

Ora passiamo a formattare i dati, clicchiamo sull'icona a forma di chiave inglese della riga del dato che ci interessa e si apre la finestra dei processi

Input04

Il sistema avverte che non ci sono processi definiti per quel dato (per intenderci senza definire un processo tutti i dati che arrivano vanno persi) quindi ne definiamo un, il primo processo è sempre la memorizzazione del dato grezzo che arriva, questo processo si chiama "Log to feed (TIMESTORE)" [il TIMESTORE è stato introdotto da inizio agoato 2013 per velocizzare la lettura del database e ridurre le dimensioni dello stesso] che è anche il processo presentato di default (pos.1), diamo un nome a questo processo es. Potenza (pos.2), selezioniamo un intervallo di tempo per la registrazione del dato (pos.3), il tempo deve essere maggiore o uguale alla frequenza con cui vengono inviati i dati, per esempio se i dati vengono inviati ogni 3 min si selezionerà 5 min, quindi clicchiamo su "add" (pos.4) per crearlo. Seguendo lo schema dell'esempio n°1 con lo stesso procedimento creiamo anche i due processi successivi così da ottenere un risultato come in figura

Input05

Noterete che sulla prima colonna ci sono delle frecce di direzione, servono per modificare la sequenza dei processi, bisogna fare attenzione quando si esegue questa tipo di modifiche in quanto, anche qui vige la regola che l'output del precedente è l'input del seguente, modificare la sequenza può portare a risultati indesiderati o bloccare il sistema (es. se invertiamo il processo 2 con il 3 il sistema non funzionerà in quanto i kWh/d devono avere come input kWh che il processo accumulerà per 24 ore mentre il processo kWh deve avere in ingresso Watt che medierà nell'arco temporale considerato.

Passiamo ora con lo stesso principio a impostare i processi per il dato della tensione, dopo aver inserito il primo processo, ovvero il Log to feed, dobbiamo inserire una operazione di moltiplicazione per 0.01 per dividere per 100 (il "/" e il "-" non sono stati implementati) come in figura

 

Input06

come vedete selezionando un processo con operatore si attiva la casella dove inserire il valore da assegnare a quel operatore, alla fine dovremmo trovare una finestra simile a

Input07

con il terzo processo andiamo a memorizzare il nuovo valore calcolato.
Tornando alla lista degli input vedremo gli input con i processi collegati come in figura

Input08

In blu vengono mostrati i processi utilizzabili dagli altri moduli, mentre in rosso o arancione quelli di supporto

Processi di input

I processi di input disponibili sono:

Input04 a

Log to feed

Descrizione: Questo processore registra l'ingresso dei dati direttamente in un feed. Ogni dato ricevuto viene registrato come un nuovo record dati.

Argomento: L'argomento è il nome del feed che si desidera scrivere. Se il feed non esiste ne verrà creato uno con il nome del dato.


x (moltiplicazione)

Descrizione: Moltiplica il valore in ingresso per il valore dato. Questo può essere utile per calibrare una particolare variabile sul web piuttosto che riprogrammare l'hardware. Il risultato viene passato per un'ulteriore elaborazione da parte del processo successivo nell'elenco di elaborazione dell'input.

Argomento: Il valore con cui moltiplicare.


+ (Offset)

Descrizione: Incrementa il valore in ingresso dal valore dato. Questo può essere utile per calibrare una particolare variabile sul web piuttosto che riprogrammare l'hardware. Il risultato viene passato per un'ulteriore elaborazione da parte del processo successivo nell'elenco di elaborazione dell'input.

Argomento: Il valore da compensare.


Power to kWh

Descrizione: converte il valore di potenza watt in kWh in modo cumulativo, crescente.

Argomento: L'argomento è il nome del feed che si desidera scrivere. Se il feed non esiste ancora, verrà creato con il nome del dato.


Power to kWh/d

Descrizione: Questo è un processo di ingresso particolarmente utile per il monitoraggio energetico, converte un valore di potenza in Watt da inviare ad un feed che contiene un valore di energia totale utilizzata ogni giorno (kWh/d).

Argomento: L'argomento è il nome del feed che si desidera scrivere. Se il feed non esiste ancora, verrà creato con il nome del dato.


x input

Descrizione: questo processo moltiplica il valore dell'Input selezionato con un altro input (Input1 x Input2).
Il risultato viene passato per un'ulteriore elaborazione da parte del processo successivo nell'elenco di elaborazione dell'input.

Argomento: Nome dell'Input da moltiplicare con


Input on-time

Descrizione: conta la quantità di tempo che un Input è attivo ogni giorno e lo registra in un feed. Creata per contare il numero di ore che una pompa di acqua calda solare è accesa ogni giorno, più in generale per quanto tempo l'Input riceve dati.

Argomento: L'argomento è il nome del feed che si desidera scrivere. Se il feed non esiste ancora, verrà creato con il nome del dato.


kWhinc to kWh/d

Descrizione: Converte l'incremento di kWh dall'ultimo invio di dati in un feed che contiene i kWh al giorno. Non chiaro da approfondire il funzionamento

Argomento: L'argomento è il nome del feed che si desidera scrivere. Se il feed non esiste ancora, verrà creato con il nome del dato.


kWh to kWh/d (old) deprecato

Descrizione: Alcune apparecchiature di registrazione dati possono fornire solo il dato di kWh totali utilizzati o generati, questo può essere usato per convertire i kWh accumulandoli in un feed contenente kWh/d al giorno.

Argomento: L'argomento è il nome del feed che si desidera scrivere. Se il feed non esiste ancora, verrà creato con il nome del dato.


update feed @ time

Descrizione: Aggiorna il record dati di un feed in un determinato momento.

Argomento: L'argomento è il nome del feed che si desidera scrivere. L'argomento tempo è passato via API, ad esempio:  &time=TIME&json={power:200}


+ input

Descrizione: questo processo aggiunge il valore dell'Input selezionato con un altro input (Input1 + Input2).
Il risultato viene passato per un'ulteriore elaborazione da parte del processo successivo nell'elenco di elaborazione dell'input.

Argomento: Nome dell'input da aggiungere


/ input

Descrizione: questo processo divide il valore dell'Input selezionato con un altro input (Input1 / Input2).
Il risultato viene passato per un'ulteriore elaborazione da parte del processo successivo nell'elenco di elaborazione dell'input.

Argomento: Nome dell'input da dividere


PhaseShift

Descrizione: ....to do....

Argomento:  ....to do....


accumulator

Descrizione: ....to do....

Argomento:  ....to do....


rate of change

Descrizione: Visualizza il tasso di variazione tra il dato corrente e l'ultimo archiviato

Argomento:


histogram

Descrizione: ....to do....

Argomento:  ....to do....


average

Descrizione: Calcola una media giornaliera di un valore

Argomento:


heat flux

Descrizione: ....to do....

Argomento:  ....to do....


power gained to kWh/d

Descrizione: ....to do....

Argomento:  ....to do....


pulse difference

Descrizione: Potrebbe essere la differenza di impulsi tra due invii di dati - verificare -

Argomento:


kWh to power

Descrizione: dovrebbe trasformare un valore di potenza da kWh in watt l'inverso di "power to kWh" - verificare-

Argomento:  ....to do....


- input

Descrizione: questo processo sottrae il valore dell'Input selezionato con un altro input (Input1 - Input2).
Il risultato viene passato per un'ulteriore elaborazione da parte del processo successivo nell'elenco di elaborazione dell'input.

Argomento: Nome dell'input da sottrarre


kWh to kWh/d

Descrizione: Questo è un processo di ingresso particolarmente utile per il monitoraggio energetico, converte un valore di potenza in kWh da inviare ad un feed che contiene un valore di energia totale utilizzata ogni giorno (kWh/d) simile a "power to kWh/d" ma con diversa unità di misura in ingresso.

Argomento: L'argomento è il nome del feed che si desidera scrivere. Se il feed non esiste ancora, verrà creato con il nome del dato.


allow positive (set arg=1)

Descrizione: Questo è un processo interessante sopratutto nel caso si voglia discriminare l'energia in ingresso o in uscita, o più in generale quando un valore è positivo o negativo. Questo processo prende in considerazione il valore in ingresso e immagazzina sul feed solo i valori positivi scartando i valori negativi. Un esempio, supponiamo di avere energia prodotta e energia consumata, fino a chè la prodotta è maggiore della consumata avrò un valore positivo (energia esportata) che verrà accumulato dal feed, nel momento che diventa negativo verrà scartato, così facendo sul feed avrò solo energia esportata.

Argomento: L'argomento va settato ad 1 che è l'unica opzione disponibile, probabilmente l'autore prevede altre opzioni future.


allow negative (set arg=1)

Descrizione: Questo è un processo interessante sopratutto nel caso si voglia discriminare l'energia in ingresso o in uscita, o più in generale quando un valore è positivo o negativo. Questo processo prende in considerazione il valore in ingresso e immagazzina sul feed solo i valori negativi scartando i valori positivi. Un esempio, supponiamo di avere energia prodotta e energia consumata, fino a chè la prodotta è minore della consumata avrò un valore negativo (energia importata) che verrà accumulato dal feed, nel momento che diventa positivo verrà scartato, così facendo sul feed avrò solo energia importata.

Argomento: L'argomento va settato ad 1 che è l'unica opzione disponibile, probabilmente l'autore prevede altre opzioni future.


 

Feed

 Come detto i feed sono i record dove salviamo i dati formattati. Andando a cliccare sul menu Feeds vedremo tutti i nostri feeds e se stiamo monitorando anche una serie di dati relativi all'aggiornamento dei dati

Feed02

Vediamo il contenuto di questa tabella:

  1. Id = identificativo del processo
  2. Name = nome assegnato al feed
  3. Tag =
  4. Datatype = tipo di dato contenuto può essere (Realtime, daily, histogram) impatta sul modo di visualizzare il dato
  5. Public = imposta se il dato può essere pubblico quindi visto da tutti sul front-end o privato quindi visibile solo sul back-end. Per modificare lo sato basta cliccare sull'icona che passa ciclicamente da privato (lucchetto) a pubblico (mondo)
  6. Size = visualizza la dimensione dei dati salvati su questo feed (cresce col tempo)
  7. Interval = intervallo di campionamento (feature in fase di sviluppo per diminuire i tempi di lettura del database
  8. updated = intervallo di tempo trascorso dall'ultimo aggiornamento
  9. Value = ultimo valore menorizzato
  10. Icone = ogni riga (feed) ha a disposizione 3 icone:
    - Matita = cliccando si entra in modifica, si può variare "Name", "Tag", "Datatype", l'icona cliccata si trasforma in segno di spunta e serve per salvare le modifiche
    - Cestino = serve a eliminare il feed, verranno persi anche i dati a lui riferiti
    - Occhio = serve a verificare al volo il contenuto del feed, praticamente si apre un grafico e visualizza il contenuto in funzione del Datatype

 

Visualisations (VIS)

Su questa sezione, come già detto in precedenza, abbiamo la possibilità di visualizzare al volo i dati dei Feed mediante dei grafici. Oltre a questo possiamo, impostare i grafici multilinea, correggere e/o inserire dei dati e recuperare il codice necessario per inserire il grafico visualizzato su una pagina web.
Passiamo ora a vedere le varie opzioni che abbiamo a disposizione.

CliccMenu grafici in visando sul menù a tendina del box 1) si apre un menù con tutti i grafici che abbiamo a disposizione, selezionando una voce del menù verranno aggiornate le opzioni del box 2) che variano in funzione del grafico scelto, impostate le varie opzioni cliccando su uno dei due bottoni del box 3) vedremo apparire il grafico, sulla parte destra se usiamo il pulsante "View" o a tutto schermo se usiamo "Full screen", sul box "Embed in your website" si è autocomposto del codice che possiamo copiare e inserire su una pagina web di un nostro sito.
Per ogni tipo di grafico verranno proposti i feed compatibili, per questo motivo possiamo non vedere tutti i feed che abbiamo inserito.
Passiamo ora a vedere uno per uno i vari grafici e le loro opzioni.


realtime

vis 01 realt 01
Su questo grafico, scegliendo uno dei feed disponibili, apparirà l'andamento del valore in continuo aggiornamento, attenzione che l'arco temporale è massimo di un'ora e quindi se non ci sono dati in questo periodo di tempo non apparirà niente.
Sull'angolo alto sinistro del grafico ci sono dei bottoni per modificare il periodo di tempo visualizzato 1 min, 15 min, 30 min e 1 ora.


rawdata

vis 02 rd 01
Come al solito selezioniamo il grafico sul primo box e il feed sul secondo, su questo box ci sono due opzioni:

  1. fill, serve per riempire l'area del grafico sotto la linea dell'andamento del valore 0=solo linea, 1=linea più area riempita
  2. units, imposta il tipo di unità da visualizzare sul grafico

Questo tipo di grafico è simile al precedente ma visualizza i dati su un arco temporale più ampio, si va dal più piccolo "D" (giorno), "W" (settimana), "M" (mese) e "Y" (anno). Sul grafico sono presenti altri 4 pulsanti, "+" e "-"che servono ad aumentare o diminuire la risoluzione del grafico, "<" e ">" che servono a far scorrere a destra e sinistra il grafico visualizzato.
Altre informazioni presenti sul grafico sono: valore medio e valore totale del dato per il periodo visualizzato.


bargraph

vis 03 bg 01
Selezionato il feed che ci interessa, questo grafico visualizzerà i dati in un formato a barre verticali con il valore giornaliero di quel dato. La visualizzazione dei dati avviene  su un arco temporale ampio, si va dal più piccolo "D" (giorno), "W" (settimana), "M" (mese) e "Y" (anno). Sul grafico sono presenti altri 4 pulsanti, "+" e "-"che servono ad aumentare o diminuire la risoluzione del grafico, "<" e ">" che servono a far scorrere a destra e sinistra il grafico visualizzato.
Passando il mouse sopra ad una barra verrà visualizzato il valore del dato per quel giorno e la data corrispondente.


 smoothie

Questo grafico dovrebbe visualizzare il dato con una linea ad andamento curvilineo tanto maggiore quanto più alto è il valore del parametro "ufac". Stranamente non riesco più a riprodurre il grafico, sembra non funzioni più?!?


histograph

Vis histograph
Questo grafico mostra la quantità di energia usata ad una determinata potenza nel periodo di monitoraggio. Nell'esempio, 71.83 kWh a 2500W.


zoom

Vis zoom
In questo grafico si devono selezionare due feed, la potenza istantanea e la potenza giornaliera, si può inoltre impostare la valuta in uso e il valore del kWh. Fatto ciò il grafico visualizzerà di default un bargraf con la produzione giornaliera degli ultimi 30gg, passando sopra alle barre in alto sul grafico vengono visualizzati i dati relativi alla produzione del giorno.
Il grafico, in alto a destra dispone di un pulsante che cambia la visualizzazione ciclicamente da "30gg" ad "Anno" puntando il cursore su una barra di un mese si vedranno i dati caratteristici, cliccando sulla barra del mese la visualizzazione cambia e si visualizzeranno le barre del mese, allo stesso modo passando il cursore su una barra si vedranno i dati caratteristici di quel giorno e cliccando sulla barra il grafico visualizzerà il grafico della produzione o consumo giornaliero.


stacked

 vis stacked
Questo grafico visualizza due feed ad accumulo giornaliero con le barre una sopra all'altra, inteso come finisce una barra e inizia l'altra (non sovrapposte), possiamo scegliere il valore da visualizzare sotto e quello sopra. La visualizzazione parte come annuale (una barra per mese), ma cliccando su una barra si passa alla visualizzazione mensile (una barra per ogni giorno.


stackedsolar

vis stackedsolar
Questo grafico inseriti i feed di produzione e consumo giornaliero, dovrebbe visualizzare un grafico a barre con i valori di produzione, energia esportata e importata.
ATTENZIONE che i valori riportati dal grafico non rispecchiano la realtà, non sono riuscito nemmeno a capirne il funzionamento e come possa fare i calcoli, tra l'altro non è nemmeno documentato dall'autore.
===sconsigliato===


threshold

vis threshold
Questo grafico crea una visualizzazione a soglia abilitata da un processore (input) a istogramma. Le barre di diverso colore corrispondono ad un diverso range di potenza permettendo in questo di vedere quale percentuale di energia elettrica è stata usata per il range selezionato. Nell'esempio, range basso potenza inferiore di 1000W, potenza media tra 1000W - 2000W e potenza alta sopra 2000W. Cliccando sulle barre si passa a visualizzare i dati in realtime.


simplezoom

vis simplezoom
Questa visualizzazione funziona come per lo zoom ma più semplificata, non dispone di una visualizzazione raggruppata per mese e anno e i dati che visualizza sono solo del valore registrato nel grafico, anche quì cliccando su una barra si aprirà il relativo grafico dei valori registrati in realtime.


orderbars

vis orderbars

Selezionato un feed ne visualizza un grafico a barre ordinate per grandezza dal più grande al più piccolo


orderthreshold

vis orderthreshold
Come "threshold" ma con barre ordinate per grandezza.


editrealtime

vis editrealtime
Questo tipo di visualizzazione, assieme al prossimo, sono due tipologie di visualizzazioni molto importanti in quanto ci permettono di interagire direttamente con i dati memorizzati nel database permettendoci di inserire dati mancanti o correggere i dati esistenti.
Con "editrealtime" come dice il nome possiamo agire sui dati in realtime, quindi tra i feed che troviamo sulla casella a discesa ci saranno solo questa tipologia di feed, per modificare o aggiungere dati basta inserire, sulla casella sottostante il grafico, l'ora di registrazione del dato (deve essere nel formato "timestamp" ovvero in tempo trascorso dal 01/01/1970) e quindi inserire il valore da registrare in accordo con i dati registrati, ovvero, volt, millivolt, ampere, W, kW ecc.
Come si vede dall'immagine oltre la casella per l'ora e il valore ci sono altri due pulsanti uno per salvare i dati inseriti e uno per resettare le caselle, se non vedete tutte le caselle e i pulsanti c'è un problema di compatibilità, comunque vi basterà spostarvi (cliccare) sul tasto tab e vi apparirà la parte mancante.


editdaily

vis editdaily
Come per il precedente anche con questa visualizzazione si possono variare i dati sul database, ma questa volta si lavora su feed ad accumulo giornaliero.
Abbiamo tre possibilità, modificare un dato esistente, inserire un giorno mancante o eliminare un giorno inserito erroneamente, magari perchè il sistema che invia i dati ha la data errata.
1) per modificare un dato: basta cliccare sulla barra del giorno interessato alla modifica, le caselle sottostanti vengono compilate con i dati presenti nel database, ora si modificano e si clicca sul pulsante salva, immediatamente il grafico viene aggiornato con i nuovi valori.
2) inserire un giorno: immettere nella casella time la data del giorno che si vuole inserire (io per non fare calcoli assurdi con il timestamp, clicco sulla barra del giorno prima di quello che voglio inserire e poi aggiungo al timestam 86400 che sono i secondi di un giorno) dopo di che si inserisce il valore del dato che si vuole registrare e si clicca su "OK", il dato viene registrato e sul grafico appare la nuova barra.
3) per eliminare un giorno: basta portare a 0 il suo valore utilizzando il metodo del punto 1)


multigraph

vis multigraph 1

Questa visualizzazione ci permette di creare dei grafici con dati multipli da visualizzare contemporaneamente, ovviamente questi grafici li dobbiamo impostare noi selezionando le varie opzioni nella maschera di sinistra, una volta composto il grafico si salva e lo si potra richiamare in seguito per visualizzarlo o modificarlo, i vari grafici sono memorizzati con un ID che è un numero che si trova nella casella a discesa sotto a "Set options", ovviamente se ci accingiamo a creare il primo multigraph sulla casella non ci sarà nessun numero, per creare un multigraph si procede nel seguente modo:

  1. Cliccare sul pulsante "New multigraph"
  2. Aprire la casella a discesa e cliccare sul numero che è apparso per selezionarlo
  3. Dalla casella a discesa sottostante con i vari feed scegliere il dato che si vuol visualizzare e cliccare su "Add"
  4. Subito sopra alla casella con i feed ora si è creata una riga con il feed selezionato e di fianco ci sono tre caselle di spunta dove si può selezionare se urilizzare la scala graduata di sinistra(left) o di destra (right), la casella fill permette di selezionare se si vuole visualizzare il dato solo con la riga (blu dell'esempio) o con una riga e l'area sottostante riempita (marron nell'esempio), è obbligatorio selezionare una delle due caselle left o right altrimenti il grafico non sarà visualizzato.
  5. La "X" finale serve ad eliminare il feed se non ci interessa più
  6. Ripartire dal punto 3 per inserire altri dati fate attenzione che per la posizione della scala graduata ci sono solo due posizioni, destra e sinistra, la scala graduata sarà proporzionata ai valori dei primi due dati, dal terzo dato in poi sarete costretti a utilizzarne uno dei due già presenti ma se il dato ha una scala diversa o i valori sono notevolmente diversi il nuovo grafico si adeguerà alla scala selezionata e non viceversa come per i due primi feed. Questo porta in alcuni casi a risultati indesiderati, per questo motivo è meglio mettere pochi dati sullo stesso grafico a meno che non siano coerenti tra di loro.
  7. Terminato l'inserimento dei feed selezionare o meno la casella di spunta "floating time" se selezionato si vedrà il grafico scorrere sulla finestra al passare del tempo altrimenti sarà fermo al centro della finestra e si comporrà man mano che il tempo passa.
  8. Quando il risultato che appare sul grafico di destra ci soddisfa si clicca sul pulsante salva per memorizzare tutte le opzioni. D'ora in poi se vogliamo rivedere il grafico basterà richiamre l'ID sulla prima casella a discesa in alto
  9. Se il grafico non è più di nostro interesse si clicca sul pulsante "Delete multigraph" per eliminarlo. Attenzione che non è più possibile recuperarlo.

Fino ad ora abbiamo visto grafici con dati in realtime, ma una possibilità interessante è lavorare con dati di accumulo giornaliero, in quanto sempre con il procedimento visto prima si può ottenere un grafico "Stackedsolar" con energia prodotta,prelevata e immessa come si vede nella figura seguente:
vis multigraph 2
A questo punto con un po di fantasia e qualche tentativo si può fare quasi tutto

 


compare

vis compare
Questo grafico ci permette di comparare due feed


 

Dashboard

Introduzione

Fino ad ora ci siamo occupati del backend, ovvero di tutto ciò che serviva al programma per lavorare, recupero dei dati, immagazzinamento, trattamento, modifica, e visualizzazione, ma tutto a livello di gestione o al massimo che solo l'amministratore può vedere impostando o aprendo determinate sezioni del software.
Però, come su qualsiasi programma che si rispetti, è utile creare un'interfaccia grafica che faccia vedere, a chi lo utilizza, i dati che interessano magari organizzati per categorie o tipologia, questo viene fatto sul frontend mediante la "Dashboard". In spiccioli si tratta di impostare una o più pagina web che saranno visualizzate da chi entra nel nostro sito sul lato pubblico. Ci sono tre tipi, fondamentalmente, di pagine:

  1. Main page: è la pagina principale, quella che si vedrà quando si entra nel sito (P.S. per entrare nel sito da un qualsiasi browser è sufficente digitare "emoncms.org/UserName")
  2. Le pagine pubbliche: visualizzabili da chiunque ma non modificabili
  3. Le pagine private: possono essere visualizzate solo se si fa il login, ovviamente fatto il login ci si trova sul lato beckend e quindi è tutto visualizzabile e modificabile.

Prima di iniziare e bene spiegare qualche concetto su come è strutturata la Dashboard.
Innanzitutto la dashboard è una lavagna vuota (la nostra pagina) dove possiamo posizionare i vari oggetti, ogni cosa che si posiziona è un oggetto, quindi, anche il testo e i riquadri o contenitori, come i grafici o i visualizzatori di dati. La gestione della dashboard è orientata agli oggetti, quindi per qualsiasi oggetto si utilizzerà il seguente principio:

  1. Seleziono un oggetto
  2. Lo posiziono sulla dashboard
  3. Gli do le dimensioni volute
  4. Gli imposto le opzioni disponibili

Tutto qui, e così, per tutti gli oggetti.
Prima di partire a spron battuto a realizzare la prima pagina è bene progettarla con attenzione in quanto il posizionamento degli oggetti segue una regola molto rigida, ovvero, la regola dei layer sovrapposti, che significa che ciò che viene posizionato prima sta sotto e ciò che viene posizionato dopo sta sopra e così via, ad ogni posizionamento si crea uno strato sopra al precedente. Risulta evidente che con questo sistema se posiziono una scritta (oggetto testo) e poi voglio mettere uno sfondo grigio (oggetto container), in questa sequenza non riuscirò mai a spostare il testo sopra al riquadro in quanto sta sotto, avrei dovuto prima inserire l'oggetto container e poi quello testo.
Purtroppo uno alle prime armi, a questo punto, si trova nella situazione del cane che si morde la coda ovvero per progettare una pagina devo sapere come funzionano gli oggetti ma se metto gli oggetti senza prima progettare la pagina rischio di trovarmi a 3/4 del lavoro e dover ricominciare. Un mio consiglio è quello di non partire con il progetto definitivo ma con una pagina semplice dove tastare le varie opzioni sapendo già che alla fine sarà buttata.
Prima di partire a vedere i vari oggetti a disposizione vediamo come si impostano le pagine in quanto entrando nella sezione Dashboard, la prima volta, ci si trova di fronte ad una scritta desolante "Nessuna dashboard creata". Vediamo come si crea la prima pagina, che sarà la pagina principale o "Main page"


 Come creare una pagina o "Dashboard"

Entrati nella sezione Dashboard cliccare sul simbolo "+" in alto a destra
dash 01
a questo punto verrà generata l'intestazione della prima pagina, vediamo le varie voci:
dash 02

  1. Id: è il numero univoco con cui viene riconosciuta la pagina nel database.
  2. Name: nome della pagina, sarà quello visualizzato sulla linguetta dei menu in alto per la selezione delle pagine.
  3. Alias: nome della pagina gestito dal sistema, può essere lo stesso del nome ma non può contenere caratteri speciali e/o maiuscole.
  4. Main: identifica se la pagina è la Main o meno, per selezionarlo basta cliccare sull'icona che si commuta in piena. Può esserci una sola Main pertanto se selezionate una seconda pagina la precedente verrà automaticamente deselezionata.
  5. Public: identifica se la pagina è privata (lucchetto) o pubblica (mondo), cliccando sull'icona si passa ciclicamente da una all'altra.
  6. Published: indica se la pagina è stata pubblicata o meno, cliccando sull'icona passa da "X" non pubblicata a "√" pubblicata. Una pagina per essere visibile dall'esterno deve essere "pubblica e pubblicata" contemporaneamente, in caso contrario sarà visibile solo lato backend.
  7. Cliccando su questa icona si crea una copia della pagina, in questo momento non avrebbe senso, ma se avessi una pagina finita e volessi farne una con poche modifiche posso fare una copia e modificarla risparmiando parecchio tempo. Un altro utilizzo della funzione copia potrebbe essere quello di simulare gli stili delle pagine, ovvero, mi posso creare una pagina con gli elementi comuni a tutte le pagine, ad esempio, intestazione, logo, una colonna sinistra con dati comuni a tutte le pagine e altro, copiando poi questa pagina e inserendo altri oggetti, avrò una serie di pagine con un layout omogeneo e carino da vedere.
  8. Matita: cliccando su questa icona si entra in modalità modifica dell'intestazione della pagina corrente
  9. Cestino: elimina la pagina selezionata, attenzione che non si potrà recuperare in alcun modo.
  10. Con questa icona, cliccando, si entra in modalità modifica della pagina corrente.
  11. Cliccando su questa icona a forma di occhio si passa a visualizzare l'anteprima della pagina cliccata.

Passiamo ora a impostare l'intestazione della pagina appena creata, per far ciò clicchiamo sull'icona a forma di matita (8)
dash 03
come mostrato in figura compiliamo il campo Nome e Alias e quindi clicchiamo sull'icona a forma di spunta per confermare
dash 04
Clicchiamo ora sulla penultima icona (10) per entrare in modifica e cominciare a inserire i vari oggetti. Finite le modifiche o in qualsiasi altro momento possiamo impostare le opzioni "Main, Public e Published". Visto che siamo entrati in modalità modifica/inserimento andiamo a vedere i vari oggetti che abbiamo a disposizione.
Gli oggetti sono stati divisi per categorie omogenee che descriverò a seguire.


Containers

dash 06
Gli oggetti container sono di 4 tipi, 3 disegnano dei rettangoli a sfondo Bianco, Grigio e Nero, mentre il quarto disegna un rettangolo a bordo blu e sfondo trasparente.
Per posizionare un container si clicca sul tipo voluto e poi sulla dashboard, appare il rettangolo con 5 grip, cliccando e tenendo premuto, sul centrale si ha la possibilità di spostarlo mentre con i 4 laterali si ridimensionano i lati.
Questi oggetti non hanno opzioni impostabili.
Di seguito un esempio di una maschera ottenuta con un container grey, un container blueline e 3 container white
dash 07

Come si può notare dall'immagine in alto a sinistra c'è un pulsante arancione con la scritta "modificato, premere per salvare" ovviamente ci sono delle modifiche da salvare, meglio cliccare sul pulsante e salvare, il pulsante diventa di colore verde con la scritta "salvato". Meglio salvare spesso per non perdere il lavoro fatto, è più facile di quanto si possa pensare.


Text

Gli oggetti di tipo "Text" sono 3:

Paragraph:
Permette di inserire del testo multiriga

Opzioni: testo HTML da inserire, ma oltre al testo accetta qualsiasi istruzione html che rende questo container potentissimo in quanto mediante il codice html si può formattare il testo in modo avanzato ma si possono inserire immagini, link, o iFrame, ma più in generale qualsiasi cosa si possa fare con html.

Heading:
Inserisce un titolo allineato a sinistra

Opzioni: testo HTML da inserire (come precedente)

Heading-center:
Inserisce un titolo centrato

Opzioni: testo HTML da inserire (come precedente)
dash 08
Ecco come appare l'esempio precedente con l'uso dei 3 Text precedenti


Widgets

Cliccando sul label "Widgets" si apre una tendina con tutti i vari elementi grafici che abbiamo a disposizione.

Button
dash 10
Si tratta di un pulsante del tipo ON-OFF bistabile. Il pulsante viene legato ad un feed che deve contenere valori "0" o "1" (attenzione che valori diversi vengono accettati ma non funziona), il pulsante adegua il suo colore al valore del feed:
0 = Rosso
1 = Verde
cliccando sul pulsante si inverte ciclicamente il suo valore che viene registrato sul feed.
Questa caratteristica ci permette, mediante la lettura con una applicazione esterna, di avviare o spegnere utenze a distanza come elettrovalvole, pompe, resistenze ecc..

Opzioni:
1) FeedId a cui è legato
2) Valore di default per il pulsante [0-1]

Cylinder:
dash 11
Questo widget serve per monitorare la temperatura all'interno di un contenitore, mediante due sensori di temperatura posti uno sulla parte alta e uno sulla parte bassa. In funzione dei due valori passati il widget si colora da Blu (freddo) a Rosso (caldo). Se le due temperature sono molto diverse colora il cilindro con gradiente di colore dal blu al rosso. Per l'inserimento cliccare su Widget, selezionare cylinder, e poi fare clic sul punto di inserimento. Il quadrante può essere spostato e ridimensionato cliccando e trascinando i punti di controllo sui bordi.

Opzioni:
1) Feed per il valore alto "Top"
2) Feed per il valore basso "Bottom"

Dial:
dash 12
Si tratta di quadranti
dinamici in tempo reale che si adeguano al valore del feed. Il quadrante cambia da un valore al successivo partendo velocemente e rallentando all'avvicinarsi del valore finale. Per inserire un dial cliccare su Widget, selezionare Dial, e poi fare clic sul punto di inserimento. Il quadrante può essere spostato e ridimensionato cliccando e trascinando i punti di controllo sui bordi.
Esistono 9 tipi di Dial che si differenziano per colore e/o posizione dello zero, come si vede nell'immagine seguente:
dash 13
Il tipo 8 è stato pensato per visualizzare la temperatura infatti ha 1 settore negativo e 5 positivi. Bisogna fare attenzione all'uso dei Dial nel caso di valori negativi in quanto alcuni si comportano in modo indesiderato, di seguito riporto 3 immagini del comportamento dei vari Dial con valore positivo di 2kW e valore negativo di -0.4 e -2kW per valutare le differenze.
dash 14  dash 16 dash 15
Si noti che con alcuni Dial il valore negativo fa andare l'indicatore al contrario

Opzioni: I Dial hanno parecchie opzioni come riportato in tabella
dash 17
1) Feed: feed da cui prendere i dati
2) Max value: massimo valore visualizzabile a fondo scala, per i Dial a "0" centrale il valore di fondo scala è quella totale, da + a -, quindi se volessi avere una valore di fondo scala da -3000 a +3000 il valore massimo di fondo scala sarà 6000. Per il tipo 8 se volessi avere un range da -20° a +100° (1 negativo e 5 positivi) il valore di massimo di fondo scala sarà 120. Attenzione che se il massimo valore di fondo scala è inferiore al valore passato dal feed il Dial si blocca al valore massimo.
3) Scale: scala con cui sarà visualizzato il valore, utile se per esempio il feed è in W e si vuole visualizzare in kW si inposta la scala a 0.001
4) Units: unità di misura del dato visualizzato [w,kW,°,V,A,ecc..]
5) Tipe: tipo di Dial da utilizzare

Feedvalue:
dash 19
Questo vidget è utilizzato per visualizzare il valore di un feed

Opzioni:
1) Feed: feed da cui prendere i dati
2) units: unità di misura del dato visualizzato [w,kW,°,V,A,ecc..]

di seguito il primo esempio con inseriti 3 Feedvalue all'interno dei container bianchi che simulano una maschera per visualizzare i dati:
dash 18

Jgauge:
dash 20
E' un quadrante come i Dial ma con una grafica più accattivante, ne esiste un solo tipo e non è utilizzabile per i valori negativi. L'inserimento è uguale ai Dial.

opzioni:
1) Feed: feed da cui prendere i dati
2) Max value: massimo valore visualizzabile a fondo scala. Attenzione che se il massimo valore di fondo scala è inferiore al valore passato dal feed verrà visualizzato il valore corretto ma la lancetta si blocca al valore massimo.
3) Units: unità di misura del dato visualizzato [w,kW,°,V,A,ecc..]

Led:
dash 21
Questo widget funziona proprio come un led multicolore (mette a disposizione 7 colori) tali colori cambiano in funzione del valore passato dal feed a cui sono legati. Il widget gestisce i dati da "0" a "6" a cui assegna un differente colore pur accettando qualsiasi valore, i valori esterni al range gestito vengono visualizzati color "Nero".
L'abbinamento numero colore è riportato nella tabella seguente:

Valore 0 1 2 3 4 5 6
Colore Rosso Verde Grigio Ciano Magenta Giallo Nero

Opzioni: Feed: feed da cui ricevere i dati

 Stack:
dash 22
Questo oggetto è legato al menu "energy" della sezione Extras, per visualizzare dei dati al suo interno è necessario creare una serie di Items nella pagina "Extras/energy".
Attenzione che la pagina di default no è funzionante, se volete usarla dovete eliminare gli item presenti e crearne di nuovi.


Visualisations

Cliccando sul menu "Visualisations" della dashboard si apre un menu a tendina dove vedremo tutti gli elemti che il programma ci mette a disposizione.
Gli elementi sono gli stessi che abbiamo visto nella sezione "Vis" (Visualisations) sul paragrafo precedente, anche tutte le opzioni sono le stesse quindi non mi dilungo a ripeterle. L'unica differenza la troviamo nei "Multigraph" che qui hanno una sola opzione, ovvero, Mid che altro non è che il numero di identificazione con cui vengono memorizzati i multigraph in Vis. Cliccando sul menù a tendina verranno visualizzati tutti i multigraph impostati nel sistema e che quindi possono essere utilizzati nelle dashboard.
Per l'inserimento degli oggetti si segue sempre la stessa procedura vista in precedenza.


Extras

Energy

Può essere usato per confrontare il contributo di consumo per i diversi usi di energia nella vita quotidiana come: uso di energia elettrica, energia per riscaldamento, energia per i mezzi di trasporto ecc. La visualizzazione di questi dati contribuisce a mettere questi diversi usi di energia nel contesto quotidiano evidenziandone la proporzione rispetto agli altri.
Nella pagina di presentazione ci sono una serie di dati esplicativi che in caso di utilizzo devono essere eliminati e sostituiti con i propri.
Il grafico a barra verticale può essere visualizzato su una dashboard mediante il widget "Stack".

Notify

Extra 01
Tramite questo menù sarà possibile monitorare le interruzioni di invio dati verso emoncms, il controllo viene fatto ogni 2 ore e se non arrivano dati ad un qualsiasi feed viene inviata una mail all'indirizzo inserito nella casella. I feed che non vengono aggiornati da molto tempo non verranno considerati.
Questa funzione è molto utile per sapere se il sistema che invia dati si blocca, ma non è possibile utilizzarlo nei casi in cui non ci sia invio di dati in periodi maggiori di 2 ore, esempio il fotovoltaico di notte, a meno di voler inviare continuamente dei valori a zero

Report

Mediante questo menù è possibile impostare dei report con i dati che ci interessano e poi stamparli tramite la funzione stampa del browser

Sap

extra 02
Questa è una implementazione open source del foglio di lavoro SAP2012 per il calcolo del rendimento energetico e la valutazione della richiesta di energia per il riscaldamento degli edifici.
Il programma molto interessante è dotato di tutorial in inglese e di tabelle per ricavare i dati necessari


Collegamento con 123solar

Trasferimento dati

Su questa sezione vedremo come far passare dei dati da 123Solar a OEM.

Per comodità prenderemo in considerazione il trasferimento verso Emoncms.org, in locale sarebbe la stessa cosa.

Per prima cosa dobbiamo avere un account valido in Emoncms.org, ci registriamo e una volta entrati, ci procuriamo alcuni dati che ci serviranno per poter accedere in scrittura da remoto senza aprire il software, l'unica cosa che ci interessa e l' API key di scrittura e lettura, per recuperarla clicchiamo sulla linguetta “Imput” e poi sul link in alto a destra “Imput API Helper”

Sempre su “Imput API Helper” si trovano le istruzioni per inviare dati agli input in vari modi.
Al seguente link si può scaricare un programma completo di istruzioni con il quale è possibile inviare a Emoncms tutti i dati di monitoraggio di 123solar. A differenza della soluzione adottata in un primo momento, dove si andava a modificare il codice di "worker.php" di 123solar questo programma lavora autonomamente e quindi in caso di futuri aggiornamenti di 123solar non sarà necessario fare nessuna modifica.


Guida in PDF

Se preferite la versione in PDF la potete scaricare download blue

 

 


Su questa guida viene spiegato come trasformare un Raspberry Pi in un "Solarlogger" mediante l'integrazione di 123Solar sul web server locale.
Grazie a questa integrazione si trasforma il Raspberry in un datalogger per monitorare un impianto fotovoltaico (il mio) con inverter Power-One o SMA, il tutto con un costo particolarmente contenuto e un consumo irrisorio.
Oltre ad eseguire un monitoraggio particolarmente accurato e dettagliato il sistema è in grado di inviare messaggi sullo stato dell'impianto, come allarmi e/o produzione giornaliera e di integrarsi con altri sistemi in rete come PVoutput.



 
Dopo aver iniziato a studiare il Raspberry e aver pubblicato la mia prima guida sul forum "Energeticambiente" alcuni utenti, che come me iniziavano l'avventura dell'implementazione di 123Solar, incontravano qualche difficoltà nel configurare le opzioni di base del nostro mini PC, e alcuni mi chiedevano consigli su come fare.
Un po per facilitare la spiegazione dei passaggi e un po per aiutare i meno esperti, ho pensato di fare questa guida passo passo.
Con questa guida spiego come impostare i parametri principali per tastiera, timezone, lingua, espandere la partizione e overcoloccare il sistema (da farsi con estrema prudenza e a vostro rischio e pericolo).
Cliccando sul pulsante sottostante si può scaricare il pdf.

 


Guida configurazione RPi  - rev.00