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.