Visualizzazione post con etichetta raspberry. Mostra tutti i post
Visualizzazione post con etichetta raspberry. Mostra tutti i post

martedì 18 gennaio 2022

comandi per connettersi in rete da bash

Aggiormnamento del Gennaio 2022

Diventa sempre più utile configurare la connessione ad una rete wifi in un headless Linux 
Specialmente con l'avvento del raspberry pi.

Per connettersi ad un Access Point

su raspbian basta editare il file (con sudo) e poi riavviare
/etc/wpa_supplicant/wpa_supplicant.conf
inserendo SSID e passphrase. Attenzione: se l'SSID è nascosto, bisogna inserire dopo l'SSID la frase "scan_ssid=1"

in breve di seguito un esenpio del file wpa_supplicant.conf:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=EU

network={
        ssid="Bodorfree"
        scan_ssid=1
        psk="kekka2013"
}

network={
        ssid="TIM-18100795"
        psk="=gr4zie=1000perfibradavide#"
        key_mgmt=WPA-PSK
}

scansione degli access point:

sudo iwlist scan | grep SSID

stato di connessione wifi:

iwconfig

16/10/2017

nmcli tools:


"nmcli g" lo stato della connessione
"nmcli d wifi list" ti dice le reti disponibili
"nmcli c" ti dice le connessioni memorizzate

Esempi:
se vuoi connetterti ad una di quelle memorizzate
"sudo nmcli c up <nome della connessione memorizzata>"
nmcli d disconnect <nome del device>

per apprfondire:
https://www.tecmint.com/configure-network-connections-using-nmcli-tool-in-linux/

lunedì 4 gennaio 2021

IOT con raspberry pi zero, enviro + e plantower

Con poco più di 100 euro si può assemblare un sistema sensore per l'analisi della qualità dell'aria completo di: sensori meteo come temperatura, pressione e umidità; sensore di particolato; triplo sensore di gas basato su tecnologia MOX; sensore di luce e prossimità; sensore acustico. Il tutto OPEN-SOURCE Che volete di più?

Secondo me è una piccola rivoluzione perché è il primo esempio di sistema sensore economico e da sviluppo per poter registrare "impronte" ripetibili dell'ambiente in cui si è immersi.  Gli scenari applicativi sono innumerevoli.

La centralina per la qualità dell'aria, basata sull'enviro+ della pimoroni. L'enviro+ è innestato sul raspberry pi zero W. la batteria (bianca) sotto fa da base di  ancoraggio su cui ho fissato con un po' di patafix i componenti. A sx in Blue il sensore di particolato Plantower 5003.

Il sistema è modulare quindi si può iniziare con un minimo di spesa e poi man mano che si ha voglia si aggiungono pezzi. E' un'ottima palestra per conoscere e addentrarsi in diversi campi quali i sensori a stato solido. la qualità dell'aria, la programmazione in python, l'IOT, l'analisi multivariata di sensori. Inoltre permette da subito di partecipare a progetti di "citizen science" come ad esempio quello di  Map Sensor.Community messo su dal CODE for Germany, un network di sviluppatori OPEN tedeschi.

acquistato da MELOPERO a nov 2020, l'enviro+ (56,19€ compresa la spedizione) ha la seguente dotazione di sensori e hardware:

(https://learn.pimoroni.com/tutorial/sandyj/getting-started-with-enviro-plus)

BME280 temperature, pressure, and humidity sensor

LTR-559 light and proximity sensor

MICS6814 triplo sensore di gas con tecnologia MOX e ADS1015 analog to digital converter (ADC)

MEMS microphone (l'unico sensore che non so se funziona veramente)

0.96" colour LCD (160x80)

Conviene installarlo su di un Raspberry Pi zero W che ho acquistato in un secondo momento (34€ con case, heatsink e spedizione). Infatti avevo a disposizione un raspberry pi 3 ma il riscaldamento della board falsava troppo la lettura del sensore di temperatura. Come si vedrà più avanti il sensore di temperatura ha un algoritmo di correzione che compensa la temperatura della cpu per un Pi zero.

Chiaramente con il Pi zero le cose sono un pochino più complicate dall'hardware: non c'è una porta hdmi standard; le porte USB sono quelle micro. 

Io ho risparmiato tempo e soldi programmando il raspbian con il wifi di casa sul raspberry classico e poi ho montato la ssd sul Pi zero. In questo modo mi collego via SSH al raspberry (anche da remoto seguendo QUESTO TUTORIAL) con il PC o con App sul telefonino come JuiceSSH o RaspController.

Seguendo il tutorial minimal di Sandyj si installano nel raspbian le librerie python per far funzionare sensori e dysplay lcd ( a parte il sensore del microfono). La pimoroni offre diversi programmi di esempio in python, tutti utili e funzionanti per capire le potenzialità della scheda.

Osservazioni sul Funzionamento

In circa due mesi, nel poco tempo libero a disposizione durante le vacanze in lock-down, ho potuto divertirmi con l'enviro +, completando la sua dotazione con il sensore per particolato PLANTOWER 5003 (~30€) che si innesta sulla presa UART dell'enviro+.
 
Semplicemente utilizzando gli script in python di esempio si possono fare molte cose senza scrivere una linea di codice.
Il sensore di Temperatura e Umidità ha bisogno di essere compensato a causa del riscaldamento del raspberry. L'esempio "compensated-temperature.py" e "weather-and-light.py" illustrano come fare la compensazione.
Per la trasmissione e fruizione dei dati le possibilità sono varie:

Rapidamente si può provare la trasmissione dei dati con il protocollo MQTT (cinguettio degli IOT) in una rete locale seguendo i link sotto indicato e usando l'esempio "mqtt-all.py"

https://github.com/robmarkcole/rpi-enviro-mqtt

https://appcodelabs.com/introduction-to-iot-build-an-mqtt-server-using-raspberry-pi

https://desertbot.io/blog/headless-raspberry-pi-4-mqtt-setup

In questa modo è possibile già trasmettere ,visualizzare, e registrare dati in una rete locale.

Schermata sensori con mqqt explorer

Invece per Trasmettere su un server IOT, mi sono appoggiato ad Adafruit, utilizzando lo script python "adafruit_io.py" indicato al link 

https://github.com/dedSyn4ps3/enviroplus-python/blob/master/examples/adafruit_io.py

che trasmette feeds dei sensori "meteo" al server che possono essere raccolti in un dashboard. 

Le librerie sono solo per il sensore BLE280, quindi non posso trasmettere i sensori di gas e il valore di lux

FEEDS Adafruit Dashboard

Per funzionare ha bisogno di installare le librerie e i moduli adafruit seguendo il tutorial 

https://learn.adafruit.com/adafruit-io-basics-digital-output/python-setup  

e registrando un account free sul sito io.adafruit.com.

Per caratterizzare correttamente il sistema si potrebbe usare il protocollo MQTT per twittare i dati in formato json verso un MQTT server che li può visualizzare e storare in formato json. 

Il sistema così com'è è un ottima stazione meteo ed è piccolo abbastanza per monitorare piccoli volumi come frigoriferi.

TODO:

bypass crash python: riavvio ogni volta che sposto il sistema sensore (falso contatto alimentazione); crontab riavvio ogni 30min (problema riscaldamento sensori); crontab kill e riavvio python. ricerca sui forum per avvio servizio sentinella.

Iscrizione e trasmissione feeds a  luftdaten

formattazione json FEED adafruit IO

trasmissione ssh tunnelling al server 192.107.82.250

formattazione json MQTT

elaborazione json MQTT con R

script python per trasmissione MQTT solo del sensore di GAS per caratterizzazioni in laboratorio

FEED per il sensore di GAS e altri parametri del sistema sensore

compensazione temperatura

OSSERVAZIONI sui sensori di gas 

I sensori di Gas sono quelli più difficili da utilizzare perché non danno misurazioni "assolute" di grandezze fisiche ma indicano la presenza e la variazione di specie gassose ossidanti e riducenti o la variazione di VOC (composti chimici volatili) in aria. Quindi possono concorrere a fornire informazioni sulla qualità dell'aria che ci circonda ma hanno bisogno di una trattazione dei dati abbastanza "specialistica".  Per chi, come me, si occupa di sensori di gas per mestiere e passione sono affascinanti da studiare. Di seguito annoto qualche osservazione sui sensori.

23 nov 2020

dopo una prima notte di accensione ecco i valori all'equilibrio:

Temperatura 23°C +-1°C; valore vero 19.1 °C

umidità 32%+-1%; valore vero 70%

baseline sensori gas:misure outdoor alle 9 di mattina

oxisdses: 28+-1

reduced : 340

nh3: 98

24 nov

misure outdoor alle 9 di mattina

Temperatura 10°C +-1°C; valore vero 14 °C

umidità 54%+-2%; valore vero 70% (http://www.meteo.unina.it/davis/dati-in-tempo-reale)

pressione 101770 +- 10 valore vero 102440

baseline sensori gas:

oxisdses: 37+-1

reduced :600+-50

nh3: 750+-50

poi sposto il sensore in Bagno

il sensore NH3 vede bene i detersivi in aria come mostra il minimo corrispondente all'ingresso in aria di detersivo usato da mara per pulire vetri. Anche il reducing si accorge ma forse è a più largo spettro. L'oxidizing, insieme all'abbassamento di umidità da info sul ricambio d'aria

Il sensore rimane in bagno durante la pulizia da parte di mara. Pulizia effettuata a finestre aperte. Quando la pulizia viene completata e le finestre chiuse, L'aria si riempe di VOC derivanti dal lavaggio (semaforo giallo)


 

proviamo a dare delle condizioni di soglia giallo-verde:

oxides > 31

reduced > 275

nh3 > 200

contano in primis oxides ed nh3

In tarda mattinata ho visto l'oxides superare i 50

La sera l'aria ha meno componenti ossidanti con l'oxides che scende a 36, nh3 scende sotto i 200 anche se il sensore "reduced" si mantiene sopra i 300. 

alle 18.45 sposto il sensore nel salone

il "reduced" sente gli odori della cucina, scendendo sotto i 275

il sensore "nh3" sente bene le puzze del bagno

l'"oxides" è lento a stabilizarsi dopo l'accensione (30 minuti ancora deve stabilizzarsi)

in salone la sera solo l'oxides è sopra la zona verde

Odori di cucinato fortemente percepibili, apro la finestra

Enviroplus spostato in cucina. Foto prima di aprire la finestra e aumentare la velocità della cappa

venerdì 13 febbraio 2015

streaming su lan di output raspberry camera module

sul computer ricevente (ad esempio 192.168.1.68)
dovete abilitare la porta tcp 5001 sul firewall e poi dare il comando

$ nc -l -p 5001 | mplayer -vf-add flip -fps 31 -cache 1024 -

l'opzione flip l'ho messa perche' la telecamera e' capovolta 

sul raspberry (raspbian o raspbmc aggiornati) connettendosi in ssh

$ raspivid -t 999999 -o - | nc 192.168.1.68 5001

e inizia la trasmissione con un lag di
almeno 4 secondi alla massima risoluzione

testato con FEDORA 20
e raspbmc

link utile:
http://www.rs-online.com/designspark/electronics/knowledge-item/raspberry-pi-camera-setup

domenica 9 novembre 2014

torrent client su raspbian - piccole soddisfazioni!

PREMESSA:
il Raspberry PI oltre ad essere un un calcolatore implementato su una sola scheda elettronica (SBC) capace di pilotare 40 periferiche esterne (GPIO) e fare tante altre cose è un "cazzariello" che al massimo può assorbire 10W e costa sotto i 30 euro! se ci installi "Raspbian" è un sistema minimalista LINUX!, lo attacchi al cavo di rete ed ad una unità disco USB e tramite ssh ci fai quello che ti pare (web server, NAS, FTP, etc....)

Io lo uso come NAS e per scaricare i torrent senza avere l'incubo di dover lasciare il PC acceso.

aggiornamento dal LinuxDay2014: esiste in commercio un SBC chiamato "arietta g25" che costa uguale al raspberry ma e' open source e consuma almeno un terzo del raspberry

Mettiamoci all'Opera:
montiamo il disco esterno:
bisogna montarlo a mano e registrarlo nella fstab in modo che all'avvio sia montato automaticamente. Prima pero' bisogna installare i pacchetti "ntfs-3g" altrimenti il disco (se formattato ntfs) risulta read-only.
ecco il file fstab del mio raspbian:

proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
/dev/sda1       /mnt/passport       ntfs-3g defaults        0       2


a questo punto si seguono le istruzioni di archlinux su rtorrent
Io ho creato sul disco USB le folder:
torrents - dove vengono scaricati i file
.session - dove si memorizzano le info sulle sessioni iniziate
watch - dove mettere i file .torrent

e ho configurato cosi' il file .rtorrent.rc

min_peers = 40
max_peers = 52

min_peers_seed = 10
max_peers_seed = 52
max_uploads = 8
download_rate = 500
upload_rate = 28

check_hash = yes
directory = /mnt/passport/torrents/
session = /mnt/passport/.session/
schedule = watch_directory,5,5,load_start=/mnt/passport/watch/*.torrent
schedule = untied_directory,5,5,stop_untied=
schedule = tied_directory,5,5,start_tied=


in questo modo, quando avvio rtorrent, lui guarda nella folder /watch per i torrent recupera le sessioni lasciate aperte in /.session e scarica i file in /torrents

Il mio raspberry pero' non e' collegato ad un monitor e quindi uso lo smartphone e con fing recupero l'IP del raspberry e con juice-ssh apro una sessione ssh. C'e' anche un simpatico che ha anche un simpatico plugin che da in un colpo d'occhio le prestazioni del server ssh.

Altra questione da risolvere: se chiudo la sessione ssh spengo anche rtorrent. Per far in modo che rtorrent sia un servizio sul mio server faccio una cosa semplice che pero' non conoscevo, installo il comando "screen" che mi permette di "appendere" sessioni terminali e per accendere rtorrent digito il comando

screen -f -da -m rtorrent

poi per vedere rtorrent che sta combinando digito

screen -ls 

per vedere quali processi stanno appesi,
Ad esempio:

There is a screen on:
        2170..raspberrypi       (10/11/14 06:03:02) (Detached)
1 Socket in /var/run/screen/S-pi.

poi per vedere il nostro basta fare

screen -x "nome del processo"

infine per uscire e "riappendere" rtorrent uso la combinazione dei tasti

Ctrl+a e poi il tasto d

rimane da fare un autorun all'avvio di rtorrent:
editare un file con la stringa su scritta
dare al file i permessi di esecuzione con chmod a+x
posizionarlo in /etc/init.d
e poi eseguire update-rc.d nomefile defaults
pero' a questo punto mi accorgo che il comando viene eseguito all'avvio ma come root. Non va bene, deve essere eseguito come pi.
Alla prossima puntata...