Come creare e firmare il proprio certificato SSL

Non sto a raccontarvi cos’è SSL o HTTPS perché se siete qua probabilmente già sapete di cosa sto parlando.

Andiamo dritti al sodo. Se volete autocertificarvi e quindi generare un certificato SSL per uso locale o di sperimentazione (dico questo perché ogni volta da browser dovrete confermare e accettare che volete installare il certificato, cliccando qualcosa come 3 volte conferma) aprite subito il terminale ed eseguite (vi chiederà una password, segnatevela ovviamente):

openssl genrsa -des3 -out myCA.key 2048

Ora generate un root certificate eseguendo:

openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem

Inserite tutti i dettagli e… voilà, già fatto!

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.

Quanto consumano le lampadine Yeelight

Dopo aver testato le lampadine della Phillips Hue ho provato a controllare anche le Yeelight, giusto per curiosità e capire quanto consumano se vengono utilizzate al 100%, a metà o in caso rimangano accese ma spente (quindi intendo connesse al Wi-Fi ma non luminose) e capire se va bene lasciarle sempre attaccate alla corrente.

E come potete verificare, dato che le Yeelight utilizzano il Wi-Fi e non Zigbee, consumano poco poco di più rispetto alle sorelle della Phillips.

0% 0.8W-1W
1% 1W
50% 4.3W-4.5W
100% 8.2W-8.3W

Io ho testato il modello Yeelight white che potete acquistare o da Amazon tramite questo link oppure su GearBest pagando con PayPal da qua.

Quanto consumano le lampadine Hue

Se vi state domandando quanto consumano le lampadine della Phillips con la tecnologia Zigbee (sono lampadine LED da 9W).

Le ho testate personalmente e posso dirvi che al 100% consumano realmente sui 9W e in idle meno di 1W, quindi non preoccupatevi se non staccate ogni volta la corrente, con 1000 ore (quindi circa 1 mese e mezzo) consumerete meno di 20 centesimi.

100% 8.9W
50% 3.3W
6% 1W
0% 0.3W-0.4W

Io ho preso d’esempio la lampadina Phillips Hue White ma anche quella colorata di pari wattaggio consuma uguale.

Cos’è la tecnologia Zigbee

È uno standard di comunicazione wireless a basso consumo, usata nell’ultimo periodo tecnologico per sensori e oggetti di domotica dato il suo basso costo.

Viene, ad esempio, implementata in tutte le lampadine della Phillips Hue (per questo richiedono un gateway per funzionare, hanno proprio bisogno di un’antenna nuova) e nei sensori di Xiaomi.

Sito web della Zigbee Alliance (link zigbee.org)

Come detto, se volete utilizzare dei sensori che utilizzano questa tecnologia, avrete quindi bisogno di un router aggiuntivo (detto a volte gateway) che sia in grado di fare da ponte tra i vostri sensori e la rete di casa (che sia cablata con il cavo ethernet o Wi-Fi).

Come cancellare tutti i post di revisione WordPress

Se state cercando un modo per alleggerire il vostro database in cui avete WordPress, che sia per motivi di spazio fisico o per ordine anche solo mentale, che ne dite di cancellare tutti i post di revisione?

Ovviamente questa cancellazione comporterà la perdita di tutti i post di revisione (detti anche inherit).

Solo 249.599 (1/4 di milione) righe risparmiate

Quindi prima di eseguire quella bellissima query, fate un backup al vostro db per evitare perdite non volute.

DELETE FROM wordpress WHERE wp_posts.post_status = "inherit"

Cosa fare se il backup su Time Machine fallisce

Niente. So che potreste pensare che fare il backup su Time Machine sia affidabile, utile e comodo. Ma fidatevi, non fate un solo backup ai vostri computer e hard disk o SSD (questa è una regola generale e non riferita solo a questo evento in particolare)..

Potrebbe capitarvi una schermata del genere (a me è apparsa giusto qualche mese fa):

To improve reliability, Time Machine must create a new backup for you

L’unica è cercare di spulciare file per file per trovare quello che vi serve ma comunque il vostro backup è da buttare e non ci sarà modo di ripararlo (l’indice a quanto pare si è sfalsato e dovrete ricrearlo). Anche se è magari un anno che andate avanti con lo stesso backup, non c’è storia, dovrete ripartire da zero.

Ancora un’altra volta: fate i backup!

E se volete creare la vostra Time Machine con un semplice Raspberry Pi, beh, seguite questo tutorial.

Come usare il Sonoff con HomeKit

Il Sonoff, dopo averlo acquistato, bisogna per forza riprogrammarlo se non volete utilizzare l’applicazione ufficiale (è qualcosa di particolarmente antiquato e non da neanche l’apparenza di essere granché sicura).

Per riprogrammarlo (quindi si intende scriverci un nuovo firmware) dovrete seguire questa guida. So che può sembrar complicato, ma è un’operazione da effettuare una volta sola e poi siete a posto, perché avrete la possibilità di accedervi tramite interfaccia web ovunque voi siate.

Ora però, vediamo come utilizzarlo con HomeKit di Apple. Ci sono diversi plugin su GitHub ma molti di questi o non funzionano o sono molto pesanti per il Sonoff e poi andrebbero configurati uno ad uno sull’app Casa (considerate che è anche lungo e pesante ogni volta dover caricarli tutti).
Secondo me è molto meglio avere Domoticz come base di tutto e accedervi tramite il plugin Homebridge.

Quindi, presupponendo che abbiate Domoticz installato e il Sonoff con il firmware personalizzato sulla stessa rete locale, vi basterà creare uno script per accendere e spegnerlo.

Create prima di tutto uno switch virtuale su Domoticz seguendo questa guida. E come azione di ON e OFF lo configurate come in questa immagine:

Sonoff su Domoticz

I due script (che chiamerete come volete) dovranno semplicemente avere qualcosa del genere:

#!/bin/bash

curl 192.168.1.123/off

E /on per quello di accensione. Ovviamente l’indirizzo IP sarà quello del vostro Sonoff.
Non dimenticatevi ovviamente di dare i permessi di esecuzione agli script.

Semplice no? Se avete dei dubbi, lasciate pure un commento.

Come installare Homebridge

Installare Homebridge è semplicissimo, vi basterà prima di tutto installare qualche dipendenza. Iniziamo con Node:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo aptinstall nodejs -y

Poi nel caso non li abbiate installati, installate anche:

sudo aptinstall libavahi-compat-libdnssd-dev

E ora finalmente installiamo Homebridge con:

sudo npm install -g --unsafe-perm homebridge

Progetto di Homebridge su GitHub

Ora create un file .config con:

sudo nano ~/.homebridge/config.json

E incollate qualcosa tipo:

{
"bridge": {
        "name": "Homebridge",
        "username": "AB:12:CD:34:EA:12",
        "port": 1234,
        "pin": "123-12-123"
},

"description": "This is an example configuration file with one fake accessory and one fake platform.",

"platforms": [{
"platform": "eDomoticz",
"name": "eDomoticz",
"server": "127.0.0.1",
"port": "8080",
"ssl": 0,
"roomid": 0,
"mqtt": {

"host": "127.0.0.1",
"port": 1883,
"topic": "domoticz/out",
"username": "user",
"password": "pass"

}}]}

Che è la configurazione nel caso abbiate il plugin per Domoticz. Lo installate semplicemente eseguendo:

sudo npm install -g homebridge-edomoticz

Ora esrguite Homebridge eseguendo (nel caso usate sudo davanti):

homebridge

Se volete eseguire Homebridge come fosse un servizio seguite questa guida.
Mentre nel caso non vi appaia nell’app Casa (Home se avete l’iPhone o l’iPad in inglese) seguite questa.

Come riprogrammare il Sonoff

Se volete riprogrammare, quindi scrivere un nuovo firmware nel vostro Sonoff, dovrete prima di tutto acquistare un modulo FTDI (serve per dargli corrente giusta e far passare i dati per riprogrammarlo) e 4 cavetti, se possibile di colore diverso.

Il tutto vi servirà per avere un’interfaccia personalizzata e poter utilizzare il Sonoff come ho utilizzato in questo video con HomeKit. Ovviamente vi servirà il supporto di un browser o di un Raspberry Pi per fare automazioni e poterci accedere anche all’esterno della vostra abitazione.

Sappiate che una volta caricato il nuovo firmware non potrete più reinstallare quello base e ne accedere dall’app eWeLink. Dovrete anche fare attenzione a dargli corrente giusta (vedremo dopo come fare dall’Arduino IDE) altrimenti farete danni irreparabili.
Anche i collegamenti dovrete farli bene altrimenti rischiate di mandare corrente dove in realtà l’ESP866 (sì, il Sonoff ha al suo interno un ESP8266) si aspettava dei dati o viceversa.

Ecco lo schema di collegamento:

Come collegare Sonoff all’FTDI

Continua a leggere

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 controllare che le mail di PHP siano attive

E con controllare che le mail di PHP siano attive intendo tutti gli script necessari per inviare email con PHP (avete aggiornato almeno alla versione 7 di PHP, sì?). Sia se usate NGINX sia se usate Apache, aprite il terminale ed eseguite:

php -a

E incollate (cambiando ovviamente l’indirizzo di destinazione yourdomain.com):

mail ('you@yourdomain.com', "Test", "Test mail with PHP");

Caso in cui non andasse, installate:

sudo apt-get install mailutils postfix

E configurare postfix seguendo i passaggi. Una volta fatto, riprovate e tecnicamente dovrebbe andare (se avete tutto installato correttamente.

Come installare Carthage

Andate qui e scaricate l’ultima versione https://github.com/Carthage/Carthage/releases altrimenti compilatevelo da zero Installatelo normalmente e aprite il terminale.

Spostatevi nella cartella del vostro progetto ed eseguite:

nano Cartfile

E incollate (modificando il nome in base a quello che state creando):

github "Utente/Progetto"

Salvate ed eseguite:

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/
carthage update --platform iOS
open Carthage

Poi andate dentro la cartella /Carthage/Build/iOS, selezionate il file .framework e trascinatelo dentro il vostro progetto.

Run script

Ora andate su Build Phases, cliccate sul + in alto a sinistra e poi su Run Script. Dentro Shell mettete:

/usr/local/bin/carthage copy-frameworks

E su Input Files il percorso del framework che avete appena creato:

Linked frameworks and libraries

E voilà, ora andate e importatene tutti! Vi basterà importare le vostre dipendenze semplicemente con:

import Progetto

Cosa fare nel caso Xcode dia Clean failed

Se state progettando qualcosa con Xcode e nella compilazione del progetto diciamo che qualcosa non va come dovrebbe andare, provate a fare Clean (nel menu Product) di solito si risolve tutto, ma se anche in questo caso non succede niente… anzi, vi compare questo:

Clean failed su Xcode

Beh, chiudete perché sta per scoppiar… scherzo, chiudete Xcode e cancellate tutto il contenuto della cartella:

~/Library/Developer/Xcode/

Svuotate il cestino e riavviate. Ora ditemi se è andato, ma penso proprio di sì.

Come convertire un progetto in Swift

Xcode permette di fare conversione tra le versioni di Swift (dalle più vecchie, alle più nuove ovviamente) in modo del tutto automatico. Peccato che a volte come tutte le conversioni automatiche… potrebbe non andare a buon fine e incasinarvi il progetto rendendovi tutto illeggibile:

Conversione Swift… a caso

Cosa fare in questo caso? Beh, fare versione per versione. Quindi se state cercando di aggiornare un progetto da Swift 2 e volete portarlo al 4, scaricartevi le giuste versioni di Xcode e fatelo passo a passo per ogni versione, senza interferire tra le impostazioni dei progetti (di solito contenute nel file plist).

Come convertire un progetto da Swift 3 a 4

Come anche nella conversione da Swift versione 2 a 3, avrete bisogno di una versione specifica di Xcode (la 9.3 attualmente, scaricabile da App Store) per convertire da Swift 3 a 4, non vi sarà possibile passare direttamente dal 2 al 4 se non manualmente riscrivendo da zero la vostra app.

Potrebbe essere che appena aperto il vostro progetto alla versione 3, vi compaia automaticamente questa schermata:

Conversion to Swift 4 is avaliable

Se così non fosse, andate in questo menu:

Convert to current Swift syntax

Confermate Minimize Inference (raccomanded):

Minimize inference (raccomanded)

E nel caso apportate manualmente le modifiche effettuate:

Manual steps necessary

Mi raccomando anche in questo caso, fatevi prima un backup di tutto.

Come convertire un progetto da Swift 2 a 3

Prima di tutto dovete scaricarvi la vecchia versione di Xcode perché quella attuale (la 9.3) non permette di farlo. E per vecchia versione intendo più precisamente la 8.3.3 e non altre ancora più vecchie.

Una volta scaricato chiudete la versione nuova, qualunque essa sia e aprite solo la 8.3.3 e cliccate su:

Edit -> Convert -> To current Swift syntax

Poi confermate che volete convertire la sintassi del vostro progetto alla nuova versione di Swift:

Convert to current Swift syntax

E selezionate i target che volete convertire:

Select targets to convert

Tutto questo perché se avete un progetto con Swift 2, non vi sarà possibile passare direttamente alla versione 4 (o quella attuale in cui starete leggendo questo articolo).

Fate massima attenzione e fatevi un backup prima (meglio ancora se usate git).

Dove scaricare le vecchie versioni di Xcode

Se state cercando di scaricare una vecchia versione di Xcode perché avete bisogno di funzionalità che nella versione attuale sono state rimosse, ma non riuscite proprio a trovarlo… beh, è perché cercate nel posto sbagliato.

Andate qua e loggatevi con il vostro account da Developer (è necessario averne uno) https://developer.apple.com/download/more/ e scaricate la versione che preferite.

Xcode su App Store di macOS