Differenze tra le versioni di "Gruppo Meteo/RemoteProcedure"

Da raspibo.
Jump to navigation Jump to search
Riga 1: Riga 1:
 
= r-map implementation overview =
 
= r-map implementation overview =
  
=== MQTT e Json-rpc ===
+
=== Remote procedure supportate ===
  
Un elemento fondamentale per il concentramento di osservazioni e campionamenti è il BUS MQTT http://en.wikipedia.org/wiki/MQ_Telemetry_Transport .
 
E' su questo che vengono convogliati tutti i dati dei sensori; r-map definisce uno standard per pubblicare i dati nel root path rmap.
 
 
I moduli propedeutici alla pubblicazione MQTT sono connessi tramite 3 differenti trasporti:
 
* porta seriale (USB)
 
* TCP/IP
 
* radiofrequenza con modulo RF24Network
 
 
Sopra questi trasporti transitano remote procedure call in formato Json, rpc-json versione 2.0  http://en.wikipedia.org/wiki/JSON-RPC.
 
Tutte le operazioni che vengono richieste ai moduli, o che i moduli richiedono ad altri moduli sono rpc-json.
 
 
Il trasporto RF24Network include crittografia AES, messaggi multipacchetto con topologia ad albero
 
(http://it.wikipedia.org/wiki/Topologia_di_rete#Topologia_ad_albero).
 
 
I moduli possono essere così caratterizzati dal trasporto supportato, se eseguono RPC, se richiedono RPC, se pubblicano su MQTT.
 
 
I tre moduli prototipati in r-map sono coì demoninati e caratterizzati:
 
 
{|class="wikitable"
 
|                  || att/pas        ||Seriale || TCP/IP || radio RF24Network || pubblish on MQTT ||funzioni server
 
|-
 
| Modulo Base      || attivo        || Si      || Si    || da sviluppare      || Si              || Si
 
|-
 
| Modulo master    || attivo/passivo || Si      || Si    || Si                || Si              || No
 
|-
 
| Modulo satellite  || passivo        || Si      || No    || Si                || No              || No
 
|}
 
 
=== procedure supportate ===
 
 
Ogni comando/risposta Jsonrpc sarebbe meglio rimanesse entro i 144 caratteri.
 
Ogni comando/risposta Jsonrpc sarebbe meglio rimanesse entro i 144 caratteri.
  
Riga 47: Riga 18:
 
* int[16] iv: AES CBC iv
 
* int[16] iv: AES CBC iv
 
* char ntpserver:  server MQTT
 
* char ntpserver:  server MQTT
* int[6] date: date and time [2014,2,10,18,45,18]
+
* int[6] date: set date and time [2014,2,10,18,45,18]
* bool save: salva le configurazioni permanentemente
 
 
* long int thisnode: RF24Network node address
 
* long int thisnode: RF24Network node address
 
* int channel: RF 24 channel
 
* int channel: RF 24 channel
 
* byte mac[6]= ethernet mac address; use (0,0,0,0,0,1) for master1, use (0,0,0,0,0,2) for master2
 
* byte mac[6]= ethernet mac address; use (0,0,0,0,0,1) for master1, use (0,0,0,0,0,2) for master2
 +
* bool reset: save configuration into EEPROM
  
relativi a un sensore:
+
relativi a un sensore (aggiunge un sensore):
 
* char mqttpath: seconda parte del path di pubblicazione su MQTT
 
* char mqttpath: seconda parte del path di pubblicazione su MQTT
 
* char driver: driver locale del sensore
 
* char driver: driver locale del sensore
Riga 60: Riga 31:
 
* int address: address I2C
 
* int address: address I2C
  
==== getvalues ====
+
 
 +
==== prepare ====
 +
prepare sensors for successive read
 +
return waittime in ms; the time to wait before read the data from sensor
 +
 
 +
parametri:
 +
* char driver: driver locale del sensore
 +
* int node: RF24Network node
 +
* char type: driver remoto
 +
* int address: address I2C
 +
 
 +
==== prepandget ====
 +
get the measure from sensor
 +
 
 +
parametri:
 +
* char driver: driver locale del sensore
 +
* int node: RF24Network node
 +
* char type: driver remoto
 +
* int address: address I2C
 +
 
 +
==== getjson ====
 +
return json with btable and values
 
torna i valori di una o più osservazione/campionamento.
 
torna i valori di una o più osservazione/campionamento.
  
Riga 76: Riga 68:
 
  "jsonrpc":"2.0","method":"configure","params":{"reset":true},"id":0},"id":0
 
  "jsonrpc":"2.0","method":"configure","params":{"reset":true},"id":0},"id":0
  
==== toggleled ====
+
==== togglepin ====
Attuatore che accende e spegne un led.
+
Attuatore che accende/spegne uno o più pin.
  
 
parametri:
 
parametri:

Versione delle 15:10, 16 ott 2014

r-map implementation overview

Remote procedure supportate

Ogni comando/risposta Jsonrpc sarebbe meglio rimanesse entro i 144 caratteri.

configure

configura il modulo.

parametri:

  • bool reset: riporta le configurazioni ai valori di default
  • char mqttrootpath: prima parte del path di pubblicazione su MQTT
  • int mqttsampletime: intervallo tra le minure in secondi
  • char mqttserver: server MQTT
  • char mqttuser: MQTT user
  • char mqttpassword: MQTT password
  • int[16] key: AES key
  • int[16] iv: AES CBC iv
  • char ntpserver: server MQTT
  • int[6] date: set date and time [2014,2,10,18,45,18]
  • long int thisnode: RF24Network node address
  • int channel: RF 24 channel
  • byte mac[6]= ethernet mac address; use (0,0,0,0,0,1) for master1, use (0,0,0,0,0,2) for master2
  • bool reset: save configuration into EEPROM

relativi a un sensore (aggiunge un sensore):

  • char mqttpath: seconda parte del path di pubblicazione su MQTT
  • char driver: driver locale del sensore
  • int node: RF24Network node
  • char type: driver remoto
  • int address: address I2C


prepare

prepare sensors for successive read return waittime in ms; the time to wait before read the data from sensor

parametri:

  • char driver: driver locale del sensore
  • int node: RF24Network node
  • char type: driver remoto
  • int address: address I2C

prepandget

get the measure from sensor

parametri:

  • char driver: driver locale del sensore
  • int node: RF24Network node
  • char type: driver remoto
  • int address: address I2C

getjson

return json with btable and values torna i valori di una o più osservazione/campionamento.

parametri:

  • char driver: driver locale del sensore
  • int node: RF24Network node
  • char type: driver remoto
  • int address: address I2C

rf24rpc

Esegue una procedura remota su un altro nodo tramite trasporto RF24Network. In pratica incapula una RPC in una RPC.

  • node": nodo su cui eseguire la remote call procedure
  • tutti parametri standard di una json-rpc del tipo
"jsonrpc":"2.0","method":"configure","params":{"reset":true},"id":0},"id":0

togglepin

Attuatore che accende/spegne uno o più pin.

parametri:

  • integer number: pin number (pins 4,5,6,7 are supported)
  • bool status: true=on; false=off
{"jsonrpc": "2.0", "method": "togglepin", "params": [{"number":4,"status":true},{"number":5,"status":false}], "id": 0}

Moduli prototipizzati

le opzioni sono 3, i prezzi solo indicativi:

  • modulo base
  • modulo base+master
  • modulo base+master+satellite
  • Il modulo base acquisisce dai sensori con un task temporizzato al fine di pubblicare dati sul bus MQTT , svolge funzioni di archiviazione, calcolo, composizione report e invio all'acentratore tramite AMQP e molt altre cose
  • Il modulo master acquisisce dai sensori con un task temporizzato al fine di pubblicare dati sul bus MQTT
  • Il modulo satellite è a bassissimo consumo e appartiene a una rete radio sui 2Ghz ad albero nRF24Network

Moduli

Modulo base

Il modulo A richiede alimentazione 220V con stabilizzatore a 9/12V o in alternativa power over ethernet e cavo ethernet.

Prenderemo in considerazione una realizzazione con Raspberry Pi che ha funzione di raccolta dati da sensori locali (sul gpio) e ricezione da sensori collegati via etheret o seriale.

Hardware

(approssimativamente 75 E):

  • raspberry B
  • sdcard
  • alimentatore
  • connettore gpio
  • breadboard
  • sensori
  • hub usb alimentato
  • chiavetta wifi
  • hard disk usb (opzionale, ma consigliato), con una partizione etx4 ed etichetta "rmap"

Modulo master

Il modulo B richiede cavo ethernet con power over ethernet.

E' costituito da un arduino mega con shield dedicato per la raccolta dati da sensori locali e remoti (dal modulo satellite). Puo' inviare i dati sum seriale ed ethernet e raccoglierli via radio da moduli satellite.

hardware

(approssimativamente 65 E)

  • arduino mega 2560
  • breadborad
  • modulo RTC
  • modulo mini ethernet ENC60
  • modulo radio RF24
  • cavo power over ethernet
  • stabilizzatore dcdc switched
  • sensori


Modulo satellite

Il modulo C richiede batterie con stabilizzatore (e pannellino solare con regolatore di corrente).

Si tratta di un Microduino che comunica i dati rilevati dai sensori con il modulo master via radio.

hardware

(approssimativamente 45 E)

  • moulo microduino core+ (ATmega644p@5V 16MHz)
  • modulo microduino RF24 con antenna
  • modulo microduino seriale USB FT232R
  • sensori


Visualizzazione dei dati in formato grafico

I grafici vengono visualizzati su graphite tramite un browser seguendo il menu a http://base