Come contare le api con un Raspberry Pi

E no, questa volta non intendo le API nel termine informatico ma bensì gli insetti. Sì proprio gli insetti.

Se avete un allevamento di api oppure… no, niente oppure, solo se avete un allevamento di api questo progetto può fare per voi (e se riuscite a eseguire qualche script in Python).

Qua potete trovare l’intero progetto https://github.com/marcotini/bnn

L’autore è Mat Kelcey ed è lui che dovete ringraziare. Se avete delle domande, non esitate a contattarmi! Buon allevamento! Continua a leggere

Come installare Apache su Raspberry Pi

Apache penso (a quanto pare è usato dal 46% dei siti web) sia il web server più famoso al mondo, quindi è d’obbligo, dopo aver visto come installare nginx su Raspberry Pi (che tra l’altro quella guida va benissimo anche per qualsiasi altra distribuzione Debian/Ubuntu).

Comunque giusto per chiarire, Apache non è solo un web server ma anche e sopratutto un’organizzazione no-profit. Se volete approfondire leggete nel loro sito web.

Andiamo al dunque, aprite il terminale o collegatevi tramite SSH ed eseguite:

sudo apt install apache2

Aspettate e… fatto! Andate su:

cd /var/www/html

E modificate il file index.html oppure createne di nuovi! Buon divertimento!

Come rimuovere lo swap su Raspberry Pi

Dopo aver visto come aumentare lo swap su Raspberry Pi (cosa peraltro compatibile con tutte le distribuzioni Ubuntu, Debian ecc), vediamo ora come disattivarlo.

Ci sono diversi modi per disattivare la memoria di swap, la più semplice di tutte è rimuoverla proprio dai servizi all’avvio, quindi eseguendo (e poi riavviando con sudo reboot now:

sudo update-rc.d dphys-swapfile remove

Rimuoverete direttamente dal prossimo riavvio.

Molti hanno trovato beneficio disattivandola. Posso solo dire che dipende dai casi e da diversi fattori quali la velocità di scrittura e lettura della vostra microSD (considerando che il Raspberry Pi usa quella per salvare lo swap).

Per certe funzionalità invece conviene aumentarla il più possibile per evitare che la ram disponibile non basti e si rischia anche che i processi debbano sempre riscrivere e cancellare quello che viene salvato.

Quindi come al solito… dipende. Provate e sperimentate!

Eseguite free -m per visualizzare swap e ram

Quanto consuma un Raspberry Pi sempre acceso

Dipende. Com’è ovvio che sia, dipende da quello che gli fate fare 24 ore su 24.

I conti che potete farvi hanno un margine d’errore enorme ma comunque può farvi capire quanto sia interessante avere un piccolo tutto fare sempre acceso “che fa cose”.

Prima di tutto dipende dal modello di Raspberry Pi, dal tipo di alimentatore e se proprio vogliamo: anche dalla lunghezza del cavo (online si trovano personaggi discutibili che considerano anche quello come resistenza, ma direi che è un calcolo non troppo educativo).

Ti piace? Puoi acquistarlo sui 35-40 euro da qui

Il modello 3 e 3+ hanno bisogno di un alimentatore da 2.5A (ma anche 2.1 sembra andar bene) controllate qua https://www.raspberrypi.org/help/faqs/#powerReqs le richieste in base al vostro Pi. In ogni caso, a occhio e croce con un costo della corrente al kWh di circa 20 centesimi, se un Raspberry Pi in idle consuma dai 3W ai 5W la divisione è semplice:

3W circa 2 kW al mese, quindi 40 centesimi
5W circa 3.6 kW al mese, cioè 72 centesimi

Ovviamente più cose gli fate fare (può raggiungere picchi più alti ma conta in media come si comporta), più periferiche avete attaccato alla porta otg/usb, più il Raspberry consumerà, ma comunque è di molto lontano da un consumo di un computer con alimentatori sulle 50-100 volte più potenti (in termini di consumi).

Vi ricordo che il consumo in W viene calcolato dal voltaggio moltiplicato per l’amperaggio, quindi 1A*5V = 5W. E il consumo in kWh significa 1kW=1.000W ogni ora, quindi se una cosa consuma 10W e sta accesa per 1 ora intera, per fare 1 kWh dovrà star acceso 1.000Wh/10W=100 ore.

Come fare hotspot Wi-Fi da Pi Zero

Dopo aver visto come configurare il Pi Zero come accessorio e come condividergli internet tramite la porta OTG, vediamo come creare un hostpot Wi-Fi dal Pi Zero. Quindi con la possibilità di connettervi come fosse un router Wi-Fi.

Come potete vedere dalla foto qua sotto, avendo due antenne Wi-Fi (ne ha una integrata il Pi Zero W) posso connetterlo sia al router principale che fargli generare un hotspot Wi-Fi.

Raspberry Pi con due antenne Wi-Fi: una integrata e una esterna

Partiamo facendo gli aggiornamenti:

sudo apt update
sudo apt upgrade

Poi installiamo:

sudo apt install dnsmasq hostapd

E stoppiamo i servizi:

sudo service dnsmasq stop
sudo service hostapd stop

Assicuratevi d’aver l’interfaccia wlan0 configurata nell’interfaces (e che quindi sia utilizzabile).

Ora aggiungete al fondo di questo file:

sudo nano /etc/dhcpcd.conf

Queste due righe:

interface wlan0
static ip_address=192.168.4.1/24

Riavviate il servizio:

sudo service dhcpcd restart

E andiamo a modificare dnsmasq (che sta volta useremo per il Wi-Fi):

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf

Aggiungete queste due righe:

interface=wlan0
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h

E create la configurazione per il Wi-Fi:

sudo nano /etc/hostapd/hostapd.conf

Incollate (modificando il nome che preferite):

interface=wlan0
driver=nl80211
ssid=Pi
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Ora modificate questo file:

sudo nano /etc/default/hostapd

Con questa riga così:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Ora attiviamo tutto:

sudo service hostapd start
sudo service dnsmasq start

E siete finalmente pronti per connettervi con il vostro smartphone o con il vostro computer.

Fonte https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md

Come condividere la connessione internet ai Pi Zero via OTG

So che dal titolo potrebbe non comprendersi molto ma l’obiettivo è collegare i Pi Zero a internet, non tramite Wi-Fi ma bensì via USB, tramite un altro Raspberry che fa da router.

I Raspberry Pi Zero a differenza delle altre versioni (mi riferisco al 2 e al 3) è possibile configurarli come accessori quindi il loro funzionamento resta inalterato ma in più, il dispositivo a cui lo collegate, potrà riconoscerlo come un hub USB o come un adattatore ethernet.

Una volta configurato il Pi Zero da poter funzionare direttamente dalla porta OTG, collegatelo a un Pi 2 o 3 come nella foto:

Due Pi Zero e un Raspberry Pi: dove comprarli

Il Pi Zero non configurate nulla, farà tutto automaticamente. Mentre nel Raspberry 2 o 3, che sarà quello che gli offrirà la connessione a internet (quindi a lato pratico sarà come un router in quanto gli assegnerà un IP e creerà una connessione apposta per ogni Pi Zero collegato), dovrete installare dnsmasq:

sudo apt install dnsmasq

Ora configuriamolo modificando il file di configurazione:

sudo nano /etc/dnsmasq.conf

Se ad esempio volete collegarne due di Pi Zero, create due interfacce (cambiate i parametri che più preferite) usb0 e usb1:

interface=usb0
interface=usb1
listen-address=127.0.0.1
bind-interfaces
server=8.8.8.8
domain-needed
bogus-priv

dhcp-range=usb0,192.168.2.2,192.168.2.100,infinite
dhcp-range=usb1,192.168.3.2,192.168.3.100,infinite

Adesso attivate il forward dei pacchetti:

sudo nano /etc/sysctl.conf

E modificate la riga:

net.ipv4.ip_forward=1

Ora modificate il file:

sudo nano /etc/network/interfaces

E incollate (modificando i parametri che preferite e la x nell’IP del vostro Raspberry principale):

source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet static
    address 192.168.1.x
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1

allow-hotplug usb0
iface usb0 inet static
    address 192.168.2.1
    netmask 255.255.255.0
    network 192.168.2.0
    broadcast 192.168.2.255
    gateway 192.168.2.1

allow-hotplug usb1
iface usb1 inet static
    address 192.168.3.1
    netmask 255.255.255.0
    network 192.168.3.0
    broadcast 192.168.2.255
    gateway 192.168.3.1

Voilà, ora riavviate il servizio (immaginando che voi abbiate già attaccato il o i Pi Zero alle USB del vostro Raspberry) con:

sudo service dnsmasq restart

E il gioco è fatto, il vostro Raspberry che fa da router assegnerà gli IP e reindirizzerà i pacchetti ai Pi Zero.

Come usare il Raspberry Pi Zero come accessorio

Il Pi Zero è possibile utilizzarlo come un accessorio e non solo come un computer vero e proprio (ha la porta USB, HDMI ecc). Il tutto utilizzando la porta OTG, cioè quella accanto a quella di alimentazione.

Prima di tutto installate Raspbian, poi spegnete e collegate la microSD al vostro computer. Aprite la partizione boot e modificate questi due file:

config.txt

Aggiungete una riga e incollate:

dtoverlay=dwc2

Poi aprite il file:

cmdline.txt

E dopo rootwait aggiungete:

modules-load=dwc2,g_ether

Ora potete collegarlo al vostro computer (o un altro Raspberry volendo) e gli potete condividere internet (oppure diciamo… riceverlo) con un solo cavo. Invece di usare la porta di alimentazione, solo da quella accanto, come vedete in foto:

Pi Zero usato come accessorio tramite la porta OTG

Fonte di tutto questo:

https://gist.github.com/gbaman/50b6cca61dd1c3f88f41
https://gist.github.com/gbaman/975e2db164b3ca2b51ae11e45e8fd40a

Come connettersi SSH al Raspberry Pi

Anche questa semplice guida come quella per aggiornarlo potrà sembrar banale per molti, però probabilmente per altrettanti non è così tutto ovvio e nessuno nasce imparato.

Presupponendo che il vostro computer sia connesso alla stessa rete locale (Wi-Fi o ethernet che sia) e che il Raspberry abbia l’SSH server attivo, nel caso attivatelo in questo modo.
E presupponendo anche che non abbiate cambiato hostname (raspberrypi.local) ne username (pi in questo caso) lasciando quelli di default di Raspbian.

Ora dipende tutto dal sistema operativo dal quale vi volete connettere.

Se siete da macOS o da Linux, vi basterà aprire il terminale e digitare:

ssh pi@raspberrypi.local

Inserire la password (che di default sarà raspberry) e voilà, collegati! Ora potrete comandare a distanza il vostro Raspberry senza dover avere una tastiera collegata o un monitor.

Se invece siete da Windows dovrete installare un software per poterlo fare, ad esempio Putty. Seguite i passaggi e nei parametri mettete come sopra, raspberrypi.local come hostname e pi come user.

Mentre se non avete un computer ma uno smartphone, per iOS c’è Terminus mentre per Android JuiceSSH.

Come creare una VPN con Raspberry Pi

Oramai creare una VPN personale (cos’è una VPN?) è diventato un gioco da ragazzi, quello che vi servirà è un semplice Raspberry Pi e una connessione a internet (cosa che spero abbiate).

Prima di tutto collegatevi in SSH al vostro piccolo Pi, fate gli aggiornamenti ed eseguite:

curl -L https://marcotini.com/pivpn | bash

Seguite i passaggi (lasciate tutto come vi suggerisce lo script), idem lasciate la porta 1194 e andate nel vostro router a fare il redirect al vostro Pi.

Comandi utili per l’uso di PiVPN

Ora create un nuovo device facendo:

pivpn -a

Dategli il nome e andate nel percorso in cui vi ha salvato il certificato. Recuperatelo e mandatelo al dispositivo con il quale volete connettervi, quindi se è il vostro smartphone, mandatevelo in qualche modo sicuro (e non pubblicatelo da nessuna parte) e apritelo con l’app OpenVPN. Connettetevi e via!

Ecco a voi un tunnel dal vostro smartphone al vostro Raspberry Pi! Ora ovunque sarete, il vostro Pi farà le richieste e vi manderà le risposte in modo criptato. Semplicissimo no?!

Come aggiornare il Raspberry Pi

Molto probabilmente questo articolo sarà banale per tanti, però non fa mai male chiarire alcuni concetti base.

Per fare gli aggiornamenti al vostro Raspberry Pi ci sono diverse alternative. O volete installare i semplici aggiornamenti alle nuove versioni o volete andare più pesanti e aggiornare direttamente la distribuzione, con la possibilità che non vi funzioni più niente (purtroppo, anzi per fortuna spesso capita, ma imparerete a farvene una ragione).

Andiamo diretti alla pratica, aggiorniamo:

sudo apt update
sudo apt upgrade

Confermate con una Y + invio (o nel caso lo abbiate in italiano con la S).

Fatto! Sì, già fatto! È davvero così semplice (ringraziate tutti i programmatori Linux, Debian, Raspberry ecc).

Ora, potrebbe essere che abbiate da fare aggiornamenti più importanti ma come detto sopra… fate attenzione perché potrebbe non funzionare più nulla.

sudo apt dist-upgrade

Controllate che sia tutto ok e fate un backup prima di confermare e… via!


Ultima cosa: se avete installato Raspbian dovreste avere un software di gestione installato (anche questo va aggiornato) che dovrebbe aggiornarsi con la procedura update+upgrade. Nel caso così non fosse, fate anche:

sudo raspi-config

Andate nel punto 8 (dovrebbe essere ancora quello) e fate Update!

Come abilitare SSH su Raspberry Pi senza tastiera o mouse

Se state configurando il vostro Raspberry Pi nuovo di zecca e non avete voglia di collegarlo a un display con rispettivo mouse e tastiera, ho una soluzione facile e veloce per voi.

Semplicemente inserite la microSD nel vostro computer, andate nella partizione boot  e create un file chiamato ssh. Senza estensione o contenuto, solo e unicamente ssh.

Ora scollegate la memory, rimettetela nel Rasperry Pi e voilà. Eccovi con l’SSH attivo!

Come aumentare lo swap su Raspberry Pi

Come al solito vado dritto al dunque e vi mostro semplicemente come aumentare lo spazio swap dedicato. Modificate questo file:

sudo nano /etc/dphys-swapfile

E cambiate la riga CONF_SWAPFILE=100 in CONF_SWAPFILE=512 (se volete 512 MB, dipende dalla RAM del vostro Raspberry).

Ora semplicemente riavviate con sudo reboot now.

Normalmente dovreste avere 100 mega come nell’immagine qua sotto (potrete controllarlo semplicemente eseguendo swapon:

Swapon

Come fare il backup a CouchPotato

Se state pianificando di spostare il vostro server CouchPotato e non volete perdere tutte le impostazioni, preferenze, account… potrete salvarvi il file .conf situato probabilmente in:

/home/pi/.couchpotato/settings.conf

Semplicemente copiandolo nella nuova destinazione.

Tecnicamente vi basterà salvare quel file di testo e reincollarlo nel nuovo server, ma nel caso fate dei test prima di cancellare completamente tutto!

Ovviamente fate tutto con il servizio disattivato. Vi ricordo che si stoppa semplicemente con la chiamata:

sudo service couchpotato stop

Come installare Transmission su Raspberry Pi

Non sapete cos’è Transmission? Beh ve lo spiego subito: è un software per scaricare torrent tramite interfaccia web, quindi semplicemente da browser potrete collegarvi al vostro piccolo Raspberry Pi e scaricare facilmente dei torrent (anche tramite magnet link).

Aprite il terminale del Pi oppure collegatevi tramite SSH ed eseguite:

sudo apt install transmission-daemon

Vi installerà tutte le dipendenze e in pochi secondi potrete recarvi sul vostro browser con l’indirizzo IP oppure a

http://raspberrypi.local:9091

nel caso non abbiate cambiato hostname.

E voilà.

Se volete modificare le impostazioni dovrete seguire questi passaggi, altrimenti se volete rimuovere automaticamente i download dalla lista una volta che hanno terminato: installate questo script.

Come realizzare una Time Machine con un Raspberry Pi

Personalmente vi consiglio un Raspberry Pi Zero W, costa sui 10 euro e ha Wi-Fi integrato. Con l’aggiunta di un hard disk esterno (costo sui 40 euro per 1TB) potrete realizzare una Time Machine per il vostro Mac.

Allora iniziamo con l’aggiornare il Raspberry (qualunque esso sia, presupponendo che abbiate l’ultima versione di Raspian installata):

sudo apt update
sudo apt upgrade
sudo apt install netatalk hdparm

Ora identificate l’UUID del vostro hard disk (anche qua presupponendo che l’abbiate formattato in ext4) e copiatelo:

sudo blkid

Modifichiamo questo file:

sudo nano /etc/fstab

Aggiungendo in fondo (cambiando 0123456789abc con quello copiato prima):

UUID=0123456789abc /media/disk ext4 defaults 0 2

Poi create la cartella dove andrà montato e montiamo l’hard disk:

sudo mkdir /media/disk
sudo chmod 777 -R /media/disk
sudo mount -a

Ora modifichiamo il parametro di spinning dell’hard disk (per evitare di tenerlo sempre attivo anche quando non c’è nulla che scrive):

sudo nano /etc/hdparm.conf

E incollate al fondo questo:

/dev/sda {
spindown_time = 60
}

Poi modifichiamo l’ultima riga di questo file:

sudo nano /etc/netatalk/AppleVolumes.default

Incollando questo (ovviamente se non volete chiamarlo Tardis, dategli il nome che preferite):

/media/disk "Tardis" options:tm allow:pi

Ora aggiungete questo per avere un’icona nel Finder uguale a quella di una Time Capsule:

sudo nano /etc/avahi/services/afpd.service

Incollando questo:

<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">Tardis</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=TimeCapsule8,119</txt-record>
</service>
</service-group>

E riavviate i processi con:

sudo service avahi-daemon restart
sudo service netatalk restart

E voilà, ecco a voi una Time Machine Wi-Fi (o nel caso ethernet) con meno di 50 euro! Che ne pensate?

Dimenticavo, vi dovrete connettere con l’username pi e la password vostra (nel caso non l’abbiate ancora cambiata dovrebbe essere raspberry).

Come visualizzare spazio libero su Raspberry Pi

O su qualunque distribuzione tipo Ubuntu, Debian ecc vi basterà eseguire da terminale:

df -h

Vi visualizzerà sul terminale una schermata simile a questa:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1       9.9G  6.7G  2.8G  72% /
udev             10M     0   10M   0% /dev
tmpfs           393M   40M  353M  11% /run
tmpfs           982M     0  982M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           982M     0  982M   0% /sys/fs/cgroup
tmpfs           197M     0  197M   0% /run/user/0

E potrete valutare se e come liberare spazio, nel caso non ne abbiate più disponibile.

Come rimuovere automaticamente i torrent completati da Transmission

Se utilizzate Transmission sul vostro Raspberry Pi (o su qualunque altro tipo di computer/server) e volete automaticamente rimuovere dalla lista i torrent che hanno finito, dovete seguire questi semplici passaggi.

Prima di tutto stoppate il servizio di transmission con:

sudo service transmission stop

Poi cambiate due righe qua:

sudo nano /var/lib/transmission-daemon/info/settings.json

Con:

"script-torrent-done-enabled": true,
"script-torrent-done-filename": "/home/pi/transmissionpurge.sh",

Ora chiudete e salvate con CTRL+X ed eseguite:

sudo nano transmissionpurge.sh

E incollate:

#!/bin/sh

SERVER="9091 --auth transmission:transmission"

TORRENTLIST=`transmission-remote $SERVER --list | sed -e '1d;$d;s/^ *//' | cut --only-delimited --delimiter=" " --fields=1`

transmission-remote $SERVER --list

for TORRENTID in $TORRENTLIST

do

echo Processing : $TORRENTID

DL_COMPLETED=`transmission-remote $SERVER --torrent $TORRENTID --info | grep "Percent Done: 100%"`
STATE_STOPPED=`transmission-remote $SERVER --torrent $TORRENTID --info | grep "State: Seeding\|Stopped\|Finished\|Idle"`

if [ "$DL_COMPLETED" ] && [ "$STATE_STOPPED" ]; then

transmission-remote $SERVER --torrent $TORRENTID --remove

else

echo "Torrent #$TORRENTID is not completed. Ignoring."

fi

done

Ora dategli i permessi di esecuzione con:

sudo chmod 777 /home/pi/transmissionpurge.sh

E il gioco è fatto! ora ogni volta che ultimerete un torrent, esso verrà subito cancellato dalla lista.

Ah quasi dimenticavo, riavviate transmission con:

sudo service transmission start

Come installare nginx su Raspberry Pi

Prima di tutto dovete fare una cosa importantissima, rimuovete Apache:

sudo apt-get remove apache2

Ora che l’avete rimosso e potete iniziare a divertirvi seriamente, installate nginx:

sudo apt-get install nginx

Finito. Ecco sì, finito! Avrà già configurato la cartella che usavate in precedenza e tutto quanto dovrebbe funzionarvi alla perfezione (ovviamente meglio di prima).

Nel caso, configurate quel che vi manca da qua:

sudo nano /etc/nginx/sites-available/default

Posso garantirvi personalmente, che non sentirete la mancanza. E anzi, vi domanderete perché non l’avete fatto prima!

Come installare Headphones su Raspberry Pi

Penso che non abbia bisogno di presentazioni Headphones, allora iniziamo:

sudo git clone https://github.com/rembo10/headphones.git /opt/headphones

Ora create l’utente (nel caso vogliate tenere le cose separate):

sudo touch /etc/default/headphones
sudo adduser --system --no-create-home headphones
sudo chown headphones:nogroup -R /opt/headphones

Per avviare il processo a ogni riavvio del vostro Raspberry Pi:

sudo ln -s /opt/headphones/init-scripts/init.ubuntu /etc/init.d/headphones
sudo update-rc.d headphones defaults
sudo update-rc.d headphones enable

Avviatelo e aspettate che crei il file di configurazione (ci metterà qualche secondo):

sudo service headphones start

Poi stoppatelo con sudo service headphones stop e modificate questo file di configurazione:

sudo nano /opt/headphones/config.ini

Cambiano il campo http_host da localhost a 0.0.0.0 (serve per averlo visibile in tutta la vostra rete locale). Ora quindi andate su http://raspberrypi.local:8181 e voilà.