Gruppo Meteo/RemoteProcedure

Da raspibo.
Jump to navigation Jump to search

r-map implementation overview

MQTT e Json-rpc

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:

att/pas Seriale TCP/IP radio RF24Network pubblish on MQTT funzioni server
Modulo Base attivo Si Si da svilupare 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.

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: date and time [2014,2,10,18,45,18]
  • bool save: salva le configurazioni permanentemente
  • 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

relativi a 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

getvalues

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

toggleled

Attuatore che accende e spegne un led.

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

Modulo base

Il modulo A richiede alimentazione 220V (o in alternativa qui non prevista power over ethernet) e cavo ethernet

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.

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 master ver 2

Schema

R-map schema.png


Verifiche hardware

La prima verifica da fare ovviamente è di non aver fatto cortocircuiti sull'alimentazione.

Poi si può iniziare a controllare che tutto si accenda sia arduino che il led sulla scheda di rete che quello sul convertitore dc/dc.

Conviene verificare da subito se i sensori I2C vengono visti, questo è necessario per la configurazione del modulo.

C'è uno schech già pronto all'uso nel repository:

cd /home/rmap/svn/r-map-code/trunk/arduino/ino/i2cscanner
ino build -m mega2560
ino upload -m mega2560
ino serial


Perciò

[rmap@pidora i2cscanner]$ ino serial
Guessing serial port ... /dev/ttyACM0
picocom v1.7
port is        : /dev/ttyACM0
flowcontrol    : none
baudrate is    : 9600
parity is      : none
databits are   : 8
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
nolock is      : yes
send_cmd is    : sz -vv
receive_cmd is : rz -vv
imap is        : 
omap is        : 
emap is        : crcrlf,delbs,
Terminal ready
I2CScanner ready!
starting scanning of I2C bus from 1 to 7F...Hex
addr: 1       	addr: 2       	addr: 3       	addr: 4       
addr: 5       	addr: 6       	addr: 7       	addr: 8       
addr: 9       	addr: A       	addr: B       	addr: C       
addr: D       	addr: E       	addr: F       	addr: 10       
addr: 11       	addr: 12       	addr: 13       	addr: 14       
addr: 15       	addr: 16       	addr: 17       	addr: 18       
addr: 19       	addr: 1A       	addr: 1B       	addr: 1C       
addr: 1D       	addr: 1E       	addr: 1F       	addr: 20       
addr: 21       	addr: 22       	addr: 23       	addr: 24       
addr: 25       	addr: 26       	addr: 27       	addr: 28       
addr: 29       	addr: 2A       	addr: 2B       	addr: 2C       
addr: 2D       	addr: 2E       	addr: 2F       	addr: 30       
addr: 31       	addr: 32       	addr: 33       	addr: 34       
addr: 35       	addr: 36       	addr: 37       	addr: 38       
addr: 39       	addr: 3A       	addr: 3B       	addr: 3C       
addr: 3D       	addr: 3E       	addr: 3F       	addr: 40       
addr: 41       	addr: 42       	addr: 43       	addr: 44       
addr: 45       	addr: 46       	addr: 47       	addr: 48 found!      <<< questo è il sensore di temperatura TMP102 (può essere trovato anche all'indirizzo 40 a seconda di come è collegato il pin ADD0, va aggiornata anche la conf)
addr: 49       	addr: 4A       	addr: 4B       	addr: 4C       
addr: 4D       	addr: 4E       	addr: 4F       	addr: 50 found!      <<<< modulo RTC ci deve essere
addr: 51       	addr: 52       	addr: 53       	addr: 54       
addr: 55       	addr: 56       	addr: 57       	addr: 58       
addr: 59       	addr: 5A       	addr: 5B       	addr: 5C       
addr: 5D       	addr: 5E       	addr: 5F       	addr: 60       
addr: 61       	addr: 62       	addr: 63       	addr: 64       
addr: 65       	addr: 66       	addr: 67       	addr: 68       
addr: 69       	addr: 6A       	addr: 6B       	addr: 6C       
addr: 6D       	addr: 6E       	addr: 6F       	addr: 70       
addr: 71       	addr: 72       	addr: 73       	addr: 74       
addr: 75       	addr: 76       	addr: 77       	addr: 78       
addr: 79       	addr: 7A       	addr: 7B       	addr: 7C       
addr: 7D       	addr: 7E       	addr: 7F       	
                                                done

Per uscire: CTRL+A e CTRL+X

Thanks for using picocom

Lo scan dovrebbe durare pochi secondi se rimane piantato così:

starting scanning of I2C bus from 1 to 7F...Hex

c'è qualcosa che non va sul bus I2C

Configurazione

aggiornare le info sul file usando l'interfaccia web

cd /home/rmap/svn/r-map-code/trunk/python
python rmap-configure.py 

per forzare il caricamento della configurazione avviare arduino con il pin 8 collegato a massa

Modulo satellite

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

hardware

(approssimativamente 45 E)

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

Programmazione

E' simile a quella del modulo master si cambia solo il link al file di configurazione con un link simbolico ed il modello della scheda per compilazione ed upload

cd /home/rmap/svn/r-map-code/trunk
svn up
cd  arduino/ino/rmap
ino clean
ln -sf /home/rmap/svn/r-map-code/trunk/arduino/ino/rmap/src/rmap_satellite.h /home/rmap/svn/r-map-code/trunk/arduino/ino/rmap/src/rmap_config.h
ino build -m 644pa16m
ino upload -m 644pa16m
ino serial

Configurazione

aggiornare le info sul file usando l'interfaccia web, controllare che sia presente anche il modulo satellite

cd /home/rmap/svn/r-map-code/trunk/python
python rmap-configure.py 

per forzare il caricamento della configurazione avviare arduino con il pin 8 collegato a massa


Visualizzazione dei dati in formato grafico

I grafici vengono visualizzati su graphite seguire le istruzioni su questa pagina