Differenze tra le versioni di "Gruppo Meteo/ToDo"

Da raspibo.
Jump to navigation Jump to search
 
(44 versioni intermedie di 2 utenti non mostrate)
Riga 1: Riga 1:
 
= Cose da Fare =
 
= Cose da Fare =
  
== BUG list ==
+
== Modifiche all'immagine disco ==
 +
 
 +
=== immagine del 20141215 ===
 +
* modificare:
 +
NM_CONTROLLED=no
 +
in
 +
/etc/sysconfig/network-scripts/ifcfg-eth0
 +
 
 +
=== immagine del 20141031 ===
 +
 
 +
* ricreare la dashboard di default di graphite su base
 +
* commentare rmapweb in /etc/monit.d/rmap
 +
* modificare virtual host
 +
add
 +
graphite.base
 +
in /etc/hosts
 +
add
 +
ServerAlias graphite.base
 +
      WSGIDaemonProcess graphite.base user=rmap group=rmap processes=2 threads=10
 +
      WSGIProcessGroup graphite.base
 +
 
 +
in /etc/httpd/conf.d/graphite-web.conf
 +
 
 +
 
 +
* activate rmap site over apache:
  
* cambiare pin per relays (27,29,31,33) da vedere se uguali su microduino
+
add rmap.conf in /etc/httpd/conf.d
 +
 
 +
Alias /media /var/www/html/media
 +
Alias /download /var/www/html/download
 +
Alias /repo /var/www/html/repo
 +
Alias /showroom /var/www/html/showroom
 +
Alias /arkiweb  /var/www/html/arkiweb
 +
 +
Alias /static/admin /usr/lib/python2.7/site-packages/django/contrib/admin/static/admin
 +
<Directory "/usr/lib/python2.7/site-packages/django/contrib/admin/static/admin">
 +
  Require all granted
 +
</Directory>
 +
 +
Alias /static  /usr/share/rmap/static
 +
<Directory /usr/share/rmap/static>
 +
  Require all granted
 +
</Directory>
 +
 +
WSGIScriptAlias / /usr/bin/rmap.wsgi
 +
#WSGIImportScript /usr/bin/rmap.wsgi process-group=%{GLOBAL} application-group=%{GLOBAL}
 +
#WSGIPythonPath /path/to/mysite.com
 +
 +
WSGIDaemonProcess rmap user=rmap group=rmap processes=1 threads=10
 +
WSGIProcessGroup rmap
 +
WSGISocketPrefix /run/rmap/rmapwsgi
 +
 +
#WSGIDaemonProcess rmap processes=5 threads=5
 +
#WSGIDaemonProcess rmap
 +
#WSGIProcessGroup rmap
 +
 +
<Directory /usr/bin>
 +
<Files rmap.wsgi>
 +
Require all granted
 +
</Files>
 +
</Directory>
 +
 +
<Location /auth>
 +
    Order Deny,Allow
 +
    Deny from all
 +
    Allow from 127.0.0.1
 +
</Location>
 +
 
 +
create the file /etc/tmpfiles.d/rmap.conf with inside:
 +
d /run/rmap  710 root rmap
 +
 
 +
delete default index:
 +
rm /var/www/html/index.html
 +
 
 +
* create the following file:
 +
 
 +
/etc/polkit-1/rules.d/50-org.freedesktop.NetworkManager.rules
 +
 
 +
polkit.addRule(function(action, subject) {
 +
  if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("rmap")) {
 +
    return polkit.Result.YES;
 +
  }
 +
});
 +
e verificare con
 +
nmcli general permissions
 +
 
 +
* aggiungere le righe
 +
Defaults:rmap !requiretty
 +
rmap ALL= NOPASSWD: /sbin/rabbitmqctl
 +
al file /etc/sudoers.d/rmap per permettere l'esecuzione di rabbitmqctl
 +
* eliminare shovel rmap upload
 +
* da root:
 +
service monit stop
 +
yum upgrade --skip-broken -y
 +
 
 +
da utente rmap
 +
 
 +
rm /rmap/rmap/rmap.sqlite3
 +
rmapctrl --syncdb
 +
fornendo rmap rmap come user e password di amministrazione
 +
reboot
 +
 
 +
ricreare il link al log:
 +
 
 +
ln -sf /rmap/log /var/log/rmap
 +
 
 +
modificare il menu principale in /var/www/html/index.html
 +
  <li><a href="http://graphite.rmapv.rmap.cc/dashboard/#rmap default">Dashboard di esempio</a></li>
  
== Modifiche all'immagine disco ==
 
  
 
=== immagine del 20140922 ===
 
=== immagine del 20140922 ===
Riga 123: Riga 227:
 
  # ripuliamo tutti ifile in /rmap
 
  # ripuliamo tutti ifile in /rmap
  
== TODO LIST fase 1 ==
 
 
=== a livello firmware r-map ===
 
* creare lo shovel in dinamico con user e password :
 
rabbitmqctl set_parameter shovel rmap '{"src-uri": "amqp://user:password@localhost", "src-queue": "rmap","dest-uri": "amqp://rmap:rmap@rmap.cc", "dest-exchange": "rmap", "prefetch-count":1, "reconnect-delay":60}'
 
* fare un Wizard per la configurazione
 
* testare driver sensore per pressione BMP; per ora il driver è disponibile in python
 
* aggiungere il driver ADT in python; per ora il driver è disponibile in C
 
* fare un serio restyling della libreria sensor driver
 
* verificare perchè togliendo un prin in loop tutto si blocca
 
* mettere nall'howto la saldatura del ponticello per modalità sleep del satellite
 
* mettere in howto la cormattazione etc. del disco USB su base
 
 
=== a livello server ===
 
 
* fitro dei messaggi basati su autenticazione amqp: l'utente deve coincidere con ident
 
* verificare l'esportazione geojson in arkiweb
 
* generazione automatica bouding box arkiweb
 
* alimentare graphite con amqp e non udp
 
* procedura di iscrizione e inserimento utenti in mosquitto e rabbitmq
 
 
== TODO LIST fase 2 ==
 
 
=== a livello firmware r-map ===
 
* finire board con GPS e GPRS e eventualmente memoria SD con protocollo httpd
 
* portare la board con GPS e GPRS e eventualmente memoria SD a protocollo mqtt
 
* creare board I2C client per misure pluviometro e anemometro
 
 
=== a livello server ===
 
* visualizzazione e monitoraggio web dello stato di funzionamento della stazione di misura (connessione attiva delle board; funzionamento sensori ... stato batterie)
 
* specializzazione di una dashboard meteo su graphite/emon-cms
 
 
=== altro ===
 
 
==== rmap per android (e ios) ====
 
Questa è una applicazione molto simile a quanto ci servirebbe per
 
integrare rmap con dati raccolti tramite smart phone e tablets
 
https://github.com/owntracks/android
 
poi c'è la versione per ios ...
 
http://owntracks.org/
 
  
 
==== Trasporto RF24 su raspberry ====
 
==== Trasporto RF24 su raspberry ====
Riga 197: Riga 261:
 
http://www.jonathongrigg.com/post/61252428623/python-rf24-library
 
http://www.jonathongrigg.com/post/61252428623/python-rf24-library
  
== TODO LIST prototipo hardware ==
+
== OBSOLETA TODO LIST prototipo hardware ==
  
 
* Alimentare scheda ENC28J60 e modulo RTC a 5V
 
* Alimentare scheda ENC28J60 e modulo RTC a 5V
Riga 203: Riga 267:
 
* Alimentare bus I2C a 3.3 V (http://www.element14.com/community/thread/19665/l/is-level-shifting-really-needed-for-i2c)
 
* Alimentare bus I2C a 3.3 V (http://www.element14.com/community/thread/19665/l/is-level-shifting-really-needed-for-i2c)
 
* Aggiungere un condensatore da 100nF per il modulo radio e verificare se possibile aggiungerne uno da 470 uF il piu' vicino possibile
 
* Aggiungere un condensatore da 100nF per il modulo radio e verificare se possibile aggiungerne uno da 470 uF il piu' vicino possibile
* Proteggere i sensori con un diodo ESD http://www.acronet.cc/item/esd-suppressor-5-5v-sot-363-smd/
+
* Proteggere i sensori con un diodo ESD http://www.acronet.cc/item/esd-suppressor-5-5v-sot-363-smd/ - valutare anche questi per le dimansioni del case http://it.farnell.com/texas-instruments/tpd3e001drlr/ic-esd-protection-array-3ch-5sot/dp/1603422
 
* Spostare il modulo RTC al di fuori dell'ingombro della scheda di rete
 
* Spostare il modulo RTC al di fuori dell'ingombro della scheda di rete
 
* Aggiungere un jumper o pulsante per portare a massa il pin 8 e forzare la modalita' configurazione, verificare se vale la pena di poter collegare pulsanti saldati ad una carcassa
 
* Aggiungere un jumper o pulsante per portare a massa il pin 8 e forzare la modalita' configurazione, verificare se vale la pena di poter collegare pulsanti saldati ad una carcassa

Versione attuale delle 14:09, 15 ott 2015

Cose da Fare

Modifiche all'immagine disco

immagine del 20141215

  • modificare:
NM_CONTROLLED=no

in

/etc/sysconfig/network-scripts/ifcfg-eth0

immagine del 20141031

  • ricreare la dashboard di default di graphite su base
  • commentare rmapweb in /etc/monit.d/rmap
  • modificare virtual host

add

graphite.base

in /etc/hosts add

ServerAlias graphite.base
     WSGIDaemonProcess graphite.base user=rmap group=rmap processes=2 threads=10
     WSGIProcessGroup graphite.base

in /etc/httpd/conf.d/graphite-web.conf


  • activate rmap site over apache:

add rmap.conf in /etc/httpd/conf.d

Alias /media /var/www/html/media
Alias /download /var/www/html/download
Alias /repo /var/www/html/repo
Alias /showroom /var/www/html/showroom
Alias /arkiweb  /var/www/html/arkiweb

Alias /static/admin /usr/lib/python2.7/site-packages/django/contrib/admin/static/admin
<Directory "/usr/lib/python2.7/site-packages/django/contrib/admin/static/admin">
	   Require all granted
</Directory>

Alias /static   /usr/share/rmap/static
<Directory /usr/share/rmap/static>
	   Require all granted
</Directory>

WSGIScriptAlias / /usr/bin/rmap.wsgi
#WSGIImportScript /usr/bin/rmap.wsgi process-group=%{GLOBAL} application-group=%{GLOBAL}
#WSGIPythonPath /path/to/mysite.com

WSGIDaemonProcess rmap user=rmap group=rmap processes=1 threads=10
WSGIProcessGroup rmap
WSGISocketPrefix /run/rmap/rmapwsgi

#WSGIDaemonProcess rmap processes=5 threads=5
#WSGIDaemonProcess rmap
#WSGIProcessGroup rmap

<Directory /usr/bin>
<Files rmap.wsgi>
Require all granted
</Files>
</Directory>

<Location /auth>
   Order Deny,Allow
   Deny from all
   Allow from 127.0.0.1
</Location>

create the file /etc/tmpfiles.d/rmap.conf with inside:

d /run/rmap   710 root rmap

delete default index:

rm /var/www/html/index.html
  • create the following file:
/etc/polkit-1/rules.d/50-org.freedesktop.NetworkManager.rules
polkit.addRule(function(action, subject) {
 if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("rmap")) {
   return polkit.Result.YES;
 }
});

e verificare con

nmcli general permissions
  • aggiungere le righe
Defaults:rmap !requiretty
rmap ALL= NOPASSWD: /sbin/rabbitmqctl

al file /etc/sudoers.d/rmap per permettere l'esecuzione di rabbitmqctl

  • eliminare shovel rmap upload
  • da root:
service monit stop
yum upgrade --skip-broken -y

da utente rmap

rm /rmap/rmap/rmap.sqlite3
rmapctrl --syncdb
fornendo rmap rmap come user e password di amministrazione
reboot

ricreare il link al log:

ln -sf /rmap/log /var/log/rmap

modificare il menu principale in /var/www/html/index.html

  • <a href="http://graphite.rmapv.rmap.cc/dashboard/#rmap default">Dashboard di esempio</a>
  • immagine del 20140922

    in /etc/monit.d/rmap aggiungere:

     check process amqp2mqttd with pidfile /var/run/rmap/amqp2mqttd.lock
       start program = "/usr/bin/amqp2mqttd restart"
       stop program  = "/usr/bin/amqp2mqttd stop"
    

    in /etc/yum.repos.d/rmap.repo

     sostituire rmapv.bisognodipace.org con rmap.cc
    


    in /etc/rc.d/rc.local

    #!/bin/bash
    #needed for i2c ds1307 RTC
    modprobe rtc-ds1307
    sleep 3
    # iterate over every i2c bus as we're supporting Raspberry Pi rev. 1 and 2
    # (different I2C busses on GPIO header!)
    for bus in $(ls -d /sys/bus/i2c/devices/i2c-*);
     do
       echo ds1307 0x68 >> $bus/new_device;
       if [ -e /dev/rtc0 ];
       then
         echo "RTC found on bus `cat $bus/name`";
         break; # RTC found, bail out of the loop
       else
         echo 0x68 >> $bus/delete_device
       fi
    done
    hwclock -s
    

    poi:

    chmod +x /etc/rc.d/rc.local
    

    immagine precedente

    Con l'immagine downlodabile bisogna fare un po' di pulizia e aggiornare un po di roba quindi su raspberry:

    #aggiorniamo il repo svn
    ssh rmap@base
    cd svn/r-map-code/trunk
    svn up
    exit
    
    #facciamo pulizia delle cose installate senza pacchetto
    ssh root@base
    rm -r /var/www/html/borinud
    rm /usr/local/bin/*
    rm -r /usr/local/lib/python2.7/site-packages/borinud
    
    #editiamo:
    /var/www/html/index.html
    #e facciamo diventare cosi' queste due righe:
    

    <li><a href="http://base:5925">punti stazione su mappa e grafici</a></li>

    <li><a href="http://rmapv.bisognodipace.org:5925">punti stazione su mappa e grafici</a></li>

    # aggiungiamo il repo rmap
    cd /etc/yum.repos.d/
    wget http://rmapv.bisognodipace.org/repo/rmap/rmap.repo
    


    # e installiamo/aggiorniamo quello che c'è da aggiornare:
    yum clean all
    yum groupinstall -y rmap
    yum upgrade --skip-broken -y
    
    # combio privilegi a db graphite
    chown -R rmap:rmap /var/lib/graphite-web
    #poi si potrà entrare su graphite con user root password cambiami
    
    # ottimizzazione scritture carbon cache
    #modificare in
    /etc/carbon/carbon.conf
    MAX_UPDATES_PER_SECOND=5
    
    #modificare in
    /etc/carbon/storage-schemas.conf
    
    [carbon]
    pattern = ^carbon\.
    retentions = 60:7d
    
    [rmap_10sec_for_10day]
    #pattern = .*
    pattern = ^rmap\.
    retentions = 10s:10d
    
    [report_60sec_for_60day]
    #pattern = .*
    pattern = ^report\.
    retentions = 60s:30d
    
    [default_1min_13months]
    pattern = .*
    retentions = 1m:395d
    


    #aggiornare il file repo di rmap
    cd /etc/yum.repos.d
    wget http://rmapv.bisognodipace.org/repo/rmap/rmap.repo -O rmap.repo
    
    #aggiorniamo
    yum clean all
    yum upgrade --skip-broken
    
    # ripuliamo tutti ifile in /rmap
    


    Trasporto RF24 su raspberry

    Questa la proposta di lavoro per uno studente: obiettivo: far comunicare un raspberry e un arduino tramite due moduli RF nRF24 a 2 GHz

    La libreria arduino è questa (a livello network) https://github.com/pat1/RF24Network

    Bisognerebbe selezionare/compilare/testare la libreria e scrivere un howto/report riferimento principale questo: https://github.com/TMRh20/RF24Network/tree/master/RPi

    In aggiunta si potrebbe verificare anche l'utilizzo delle API python e l'inserimento del "trasporto" RF nel modulo python http://sourceforge.net/p/r-map/code/HEAD/tree/trunk/python/jsonrpc.py per eseguire json-rpc http://en.wikipedia.org/wiki/JSON-RPC da raspberry a arduino su trasporto RF

    L'integrazione con R-MAP avviene in quanto il firmware rmap su arduino già risponde a json-rpc con alcune procedure tra cui il rilevamento di sensori. Dall'altra parte utilizza raspberry sia per interrogare sensori che pubblicarli sul broker MQTT dove vengono raccolti tutti i dati della sensoristica. Il lavoro dello studente permetterebbe di eliminare un modulo (arduino mega2560) di traduzione da trasporto ethernet a trasporto RF

    altri link: https://github.com/jonathongrigg/rf24 https://github.com/royi1000/RF24-rpi-py https://github.com/jpbarraca/pynrf24 http://www.jonathongrigg.com/post/61252428623/python-rf24-library

    OBSOLETA TODO LIST prototipo hardware

    • Alimentare scheda ENC28J60 e modulo RTC a 5V
    • Aggiungere una seconda fila di pin per il modulo rtc per evitare che si pieghi
    • Alimentare bus I2C a 3.3 V (http://www.element14.com/community/thread/19665/l/is-level-shifting-really-needed-for-i2c)
    • Aggiungere un condensatore da 100nF per il modulo radio e verificare se possibile aggiungerne uno da 470 uF il piu' vicino possibile
    • Proteggere i sensori con un diodo ESD http://www.acronet.cc/item/esd-suppressor-5-5v-sot-363-smd/ - valutare anche questi per le dimansioni del case http://it.farnell.com/texas-instruments/tpd3e001drlr/ic-esd-protection-array-3ch-5sot/dp/1603422
    • Spostare il modulo RTC al di fuori dell'ingombro della scheda di rete
    • Aggiungere un jumper o pulsante per portare a massa il pin 8 e forzare la modalita' configurazione, verificare se vale la pena di poter collegare pulsanti saldati ad una carcassa
    • Eliminare il piu' possibile le saldature sulla faccia superiore della scheda
    • Verificare se tutti i moduli possono essere saldati direttamente sulla scheda senza connettori aggiuntivi
    • Valutare se portare l'ingresso dell'alimentazione a fianco del modulo enc e/o saldare sui pin del connettore rj45 i fili da portare al dc/dc
    • Se possibile prevedere fori per il fissaggio del modulo display
    • Aggiungere alcuni pin in uscita per evetuali utilizzatori
    • Predisporre piazzole per convertitore DC/DC di altro fornitore/formato
    • Agiungere alimentazione 5V per modulo rele' e display