Archivi categoria: Vita e sopravvivenza

Ancora maltempo

Sono sempre più incuriosito e affascinato dalle condizioni meteo che ogni tanto si verificano in zona. Per il giorno 2 ottobre era stata ampiamente prevista una ondata di fresco, con calo della temperatura a 850hpa di circa 10 gradi.

Interessante notare cosa è successo al suolo, così come rilevato dalla mia stazione meteo. Vediamo qualche dato estratto dal databse, che riporta:
data ed orario (locali), temperatura, umidità, pressione, dewpoint

2019-10-02 13:16:14 | 28.39 | 41.88 | 986.71 | 14.2
2019-10-02 13:26:36 | 26.73 | 46.07 | 986.87 | 14.18
2019-10-02 13:36:59 | 26.26 | 46.73 | 986.71 | 13.97
2019-10-02 13:46:25 | 25.64 | 59.13 | 986.46 | 17.07
2019-10-02 13:56:48 | 21.7 | 64.08 | 988.06 | 14.61
2019-10-02 14:06:43 | 16.75 | 86.08 | 987.18 | 14.41
2019-10-02 14:16:38 | 16.01 | 90.71 | 987.11 | 14.49
2019-10-02 14:26:33 | 15.63 | 91 | 987.38 | 14.16

In pratica, in 70 minuti abbiamo perso 13 gradi di temperatura. Un bel fresco!

Maltempo!

La notizia è sui giornali e sui telegiornali nazionali: siamo stati colpiti da una feroce ondata di maltempo che, localmente, ha creato non pochi danni.
La stazione meteo ha registrato dei dati interessanti, che sono riassunti da questo grafico.

Stazione meteo di casa

Il buco è dovuto al maltempo di mercoledi 10 luglio, che ha mandato in tilt il sensore di temperatura ed umidità. I dati interessanti sono relativi al crollo della temperatura il giorno 9 (martedi pomeriggio) quando, a dispetto delle previsioni, si sono “scatenati gli elementi. Il vento ha raggiunto picchi molto elevati, anche se la mia stazione è piuttosto “protetta”.

Stazione meteo casa.

Passata la “bufera” le temperature sono rimaste “basse” per tutta la giornata di mercoledi 10 (si sono alternate piogge di modesta e bassa intensità), che hanno avuto il minimo la mattina del giorno 11 alle ore 5.20: 16.2 gradi.

La stazione installata presso l’università mostra un andamento simile. Il primo grafico è su 7 giorni e consente di apprezzare anche il caldo torrido che ci ha interessato fino a lunedi 8. Il secondo grafico è su base due giorni e mostra chiaramente il crollo delle temperature.

Università, 7 giorni.
Università: due giorni.

A noi è andata molto bene, ce la siamo cavata con qualche fiore spezzato e un po’ di apprensione per gli oggetti in giardino. Considerando quello che si vede in TV siamo stati “graziati”.

Arriva la tempesta!

Caldo!

Se ne è parlato per giorni della “ondata di calore”. Soprattutto nei gruppi “ragionevoli” e “ragionanti” su Telegram. E tutti con gli occhi sulle centraline meteo.


Puntuale è arrivato il grande caldo africano. Ieri in effetti è stata una giornata “dura”, fortunatamente allietata da un livello di umidità molto basso.
Il caldo ha picchiato duro nel versante occidentale dell’Italia, ma anche noi non siamo stati propriamente freschi. I grafici partono dalle ore 00:00 del giorno 27.

Come è andata da noi (fino al momento della compilazione della pagina)?
Università: valori del giorno 27 -> Max: 33.33 Min: 24.44
Valori del giorno 28 -> Max 31.66 Min: 27.77

Sensore Univpm, dati catturati con rtldavis

Casa: valori del giorno 27 -> Max: 35.72 Min: 22.08
Valori del giorno 28 -> Max 33.98 Min: 24.96

Stazione meteo autocostruita.
Sensori di altre centraline. Presi con rtl_433.

Considerazioni sul pentagramma

Una riflessione che mi è balenata in mente oggi, mentre ero in sala ad ascoltare musica col “pupo”. La situazione è la seguente: pupo che gioca ed io che gli “propino” un po’ di musica con lo smartphone. Oggi l’oggetto di interesse era una volpe, pertanto ho messo “Foxy Lady” ed una serie di altri brani del buon Jimi. Ad un certo punto la riproduzione casuale mi propone “The Sultans of Swing” ed io mi perdo brevemente tra le dolci note della melodia. Con un certo fastidio: c’è qualche cosa che non suona.

Rifletto sulla cosa e provo a darmi una risposta. Ho in mente il modo in cui questo brano (e tanti altri a dire il vero…) suonano sul mio vecchio impianto (rimpianto) Hi-Fi. Nulla di particolare, tutti componenti che potevano stare nelle mie tasche, ma era un buon impianto, e vale la pena ricordarne la genesi.

Anni ’90, sono a Bolzano. Fino a quel momento per me la musica era quanto riusciva a produrre il mio vecchio stereo portatile anni ’80 (**). Un aggeggio plurimodificato e totalmente in plastica dura: doppio deck con equalizzatore a 7 bande, radio AM/FM e casse a due vie. Cavolo! Niente concessione al digitale: tutto puramente analogico. A Bolzano frequento alcuni colleghi di babbo ed entro in contatto con il mondo degli appassionati di Hi-Fi. Decido di passare al digitale e mi compero un lettore CD della Pioneer modello PD7700. Piatto centrale senza vibrazioni, caricamento rovesciato. Lo abbino all’amplificatore del mio vecchio stereo anni ’80. Malgrado tutto la differenza con le cassette è enorme: niente fruscio, molti più dettagli, molte note alte. Libidine.
Passa il tempo e decido di fare il grande salto: prendo un amplificatore e dei diffusori decenti. Su consiglio dei colleghi di babbo (*), mi oriento su un Harman Kardon HK6200 e dei diffusori Infinity Reference 40. Libidine pura. Adesso le cose iniziano a funzionare molto bene. MI informo, leggo “Audio Review”, “Suono”. Ogni tanto faccio una capatina nei “DUE” negozi di Hi-Fi del mio quartiere. Sogno i diffusori elettrostatici ed un amplificatore QUAD. Vorrei tanto un “giracd” con convertitore separato. Intanto mi godo anni di musica fantastica: Dire Straits, Nirvana, Pink Floyd, Stevie Ray Vaughan, Supertramp, Metallica, tanta classica. Arriva anche una doppia piastra di registrazione della TEAC, per fare le cassette per la macchina.

Arrivato ad Ancona lo spazio ed il tempo per l’impianto calano. i diffusori si rovinano e li regalo ad un amico. L’impianto rimane fermo per tanto tempo fino a che non prendo un paio di diffusori B&W bookshelf e mi rimetto ad ascoltare qualche cosa. Intanto è cambiato il mondo. Il PC è pieno di MP3, la sera mi calzo un paio di cuffie e posso ascoltare fiumi di musica mentre programmo o scrivo. E l’impianto rimane spento. Ed il mio orecchio inizia a dimenticare cosa significhi ascoltare “bene” della musica.

Ormai sono passati tanti anni. Il PD7700 e la doppia piastra sono andati in discarica. L’amplificatore ha ricevuto due diffusori bookshelf nuovi ed è associato ad un ricevitore FM analogico della Revox. Lo uso quando spolvero ed andrebbe manutenuto: recapping e sostituzione dei potenziometri. Giuro che appena finiti i 3 progetti che ho pending da tre anni lo faccio. Mi piacerebbe riascoltare “the sultans of swing” in modo decente.
Mi consola pensare che tra i miei conoscenti ci sono almeno 3 o 4 persone molto attente alla qualità di quello che ascoltano. C’è anche un audiofilo nel senso “puro” del termine. Andrebbero protetti, come le specie in via di estinzione.

(*) I colleghi di babbo non erano audiofili. Erano dei semplici appassionati che cercavano di informarsi e spendere al meglio i soldi che avevano. Il primo amante di Harman Kardon e dei diffusori dinamici, il secondo amante delle cuffie: aveva delle Stax fantastiche. Con loro ho avuto il mio battesimo del “ben sentire”.
(**) A casa non è mai mancato “lo stereo”. Era un cubo che aveva radio, giradischi e cassetta. Due diffusori a due vie in legno. Per quello che doveva fare a casa era un ottimo impianto. Certo il giradischi era davvero economico, niente pesatura del braccio o antiskew ma aveva il vantaggio che potevo usarlo anche io. Cosa non da poco!

28 aprile e meteo

Giornata dal sapore primaverile oggi, sveglia presto con temperature piuttosto amabili. Alle 12.10 c’erano bn 21.92 gradi. Non male.
Durante il pranzo cambia la luce ed arriva un “po’” di pioggia, anzi, di grandine. Do una rapida occhiata ai sistemi meteo e noto un crollo “verticale” della temperatura, ben evidente dalle seguenti immagini (sono relative a due giorni):

Volendo analizzare nel dettaglio il trend della temperatura a Polverigi notiamo che:
alle ore 14:00 temperatura 20.32. La discesa inizia alle 14:23 -> 19.82 gradi che si mantengono quasi costanti fino alle 14.37. Dopo di che… il delirio:
ore 14.37 gradi 19.08
ore 14.38 gradi 18.40
ore 14.39 gradi 17.83
ore 14.40 gradi 16.92
ore 14.41 gradi 15.90
e così via fino alle 15.30 con 12.84 gradi. A causa del vento la temperatura è calata di 8 gradi in 90 minuti.
Presso Univpm le caratteristiche della stazione non consentono una analisi altrettanto dettagliata ma notiamo che:
ore 14:43 gradi 18.88
ore 14:44 gradi 15;
ore 14:47 gradi 13.88
alle 15:30 sono stati registrati 12.22 gradi.

I dati sono concordi, i tempi sono concordi. E’ proprio freddo!!!
E adesso? alle ore 22.16 ci sono:
8,37 gradi sul tetto di casa;
8.4 gradi dalla stazione commerciale;
8,88 gradi ad Univpm.
Domani giacca pesante e berretto di lana!

PS: una cosa simile era successa anche il 24 settembre 2018: se ne parla qui!

Davis Instruments ed rtl-sdr

Da qualche tempo è comparsa, sul tetto dell’Università, una stazione meteo piuttosto carina: Davis Vantage Pro 2. Il sensore è installato sul tetto della torre a quota 195, la stazione nel piano sottostante. Le due unità comunicano “wireless”. I dati della stazione mi interessano per diversi motivi:
– mi piace sapere quanto fa caldo/freddo al lavoro;
-mi interessa correlare questi dati con i dati AIS in modo da valutare la propagazione troposferica in funzione del tempo atmosferico.

I dati della stazione meteo è difficile ottenerli in modo “ufficiale”: la stazione è collegata ad un portatile che non è accessibile dalla rete. Inoltre non ho idea di chi la abbia installata. Pertanto c’è un solo modo: i dati “me li prendo”. Sfortunatamente il programma rtl_433 non riesce a demodulare queste informazioni:
– rtl_433 demodula ASK mentre le Davis usano FSK;
– rtl_433 non interpreta il protocollo Davis;

La soluzione è arrivata da rtldavis, un programma scritto in go lang, che effettua le seguenti operazioni:
– accesso alla chiavetta rtl-sdr;
– algoritmi DSP per la demodulazione del segnale;
– algoritmi per la decodifica del protocollo.
Peccato che l’autore abbia terminato lo sviluppo del codice senza terminarlo (la parte di di decodifica del protocollo non è terminata). Inoltre il codice è studiato per le stazioni americane e deve essere modificato per lavorare nella banda ISM italiana.

Modifica al codice go lang: il file è “protocol.go“. Le informazioni sulla frequenza dei canali usate in Europa ho provato a ricavarle con una chiavetta SDR ma occorre essere piuttosto precisi. Fortunatamente ho trovato questo articolo in cui ci sono parecchie informazioni. In America si usano 51 canali, in Europa 5. Il codice è il seguente:

p.channels = []int{
868066711, 868181885, 868297119, 868412292, 868527466,
}

p.hopPattern = []int{
0, 2, 4, 1, 3,
}

Compilato il codice in “go”, l’output è piuttosto “criptico”:
600222FFC3004DD9
8002241FBB00C0B9

Ho provato a realizzare l’interprete del protocollo in go, ma ammetto che non ho ricavato nulla: non sono stato in grado, in tempi brevi, di trovare informazioni tali da permettermi di implementare delle funzioni facilmente. Ho deciso per un approccio alternativo: scrivere un interprete in Python che esegua queste funzioni:
– ricevere in input il protocollo raw;
– decodificare il protocollo;
– inserire i dati in mysql;
Le specifiche del protocollo sono perfettamente specificate in questo sito.
Nelle parti maggiormente criptiche mi sono fatto aiutare da questo codice, realizzato per arduino ma… sempre buono.

Output del programma:

Data 2019 02 17 Ora: 12 51
91030 500283FF710086F8

Input Lenght 2
Colonna
500283FF710086F8
Output Lenght 8
[’50’, ’02’, ’83’, ‘FF’, ’71’, ’00’, ’86’, ‘F8’]
Element 0 50
Element 1 02
Element 2 83
Element 3 FF
Element 4 71
Element 5 00
Element 6 86
Element 7 F8

Summary
Station id 0
Message Type 5
Message Type Rain Rate

Wind Velocity 3.21
Wind Direction 183.35
Wind Gust 0
Humidity 0
Rain 0.0
Rain Rate mm/h 0.0
Temperature C 0
Solar Radiation 1798.36
UV Index 0
SuperCap 0

Debug inserimento dati nel DB
Debug – anno: 2019
Closing down

Cosa scaricare:
– programma originale in “go” dell’autore Douglas Hall
– si compila e si mette in /usr/local/bin/
– Script in python:
– versione 2 — funziona da riga di comando: rtldavis 2>&1 | python weather_decoder_2.py
– versione 3 — Avvia automaticamente rtldavis come subprocess.
Il pacchetto completo si può scaricare da questo link.


rtl_433 parte seconda

Finalmente ho avuto un pochino di tempo per rivedere lo script python che prende i dati dal rtl_433 e li mette nel database.
Inoltre ho terminato la scrittura del codice PHP che, in maniera davvero triviale, genera una pagina web con i dati di tutti i sensori.

Il codice python è disponibile a questo link.
Il codice php si può scaricare con questo link.
Entrambi sono stati sviluppati con APTANA, strumento che trovo davvero delizioso per le mie (discutibili) doti di programmatore (anche se rognoso da fare funzionare).

Ogni scusa è buona!

Recentemente in casa sono comparsi dei simpatici oggettini che sono detti “baby monitor”. Si tratta di una coppia trasmettitore/ricevitore che dovrebbe dare ai neo-genitori, la sensazione di avere una vita normale, potendo ascoltare da remoto vagiti e gemiti dell’infante.
Non si tratta di una invenzione nuova: ricordo perfettamente che “tanti ani fa” lavoravano in FM a 29700kHz. Si potevano ascoltare molto facilmente con ricevitore, davano parecchio fastidio alle automobiline radiocomandate e li ricevevano anche i walkie-talkie giocattolo (che erano in AM).

I baby-monitor di adesso hanno dimensioni molto contenute, antenne interne e batterie ricaricabili. Per intenderci una cosa di questo tipo. Leggendo le specifiche si apprezza la frequenza di funzionamento compresa tra 1800MHz e 1900MHz, in piena banda DECT. In effetti leggendo il manuale:
– Trasmissione vocale tramite sistema basato su tecnologia digitale DECT.
– Range operativo in campo aperto senza ostacoli di circa 300 metri.
DECT è uno standard che nasce per la telefonia cordless che prevede l’uso di codec audio a 32kbps e 64kbps (G726,G722) su 10 canali nella banda 1800MHz, 1900MHz. Il layer fisico usa FDMA/TDMA con TDD. La modulazione usata è GFSK ma può implementare anche modulazioni più aggressive.

In rete ho trovato un interessante articolo con questo titolo: “RE-DECTED: AN RTL-SDR DECT DECODER”. Nell’articolo si fa riferimento ad un codice contenuto su git-hub: re-DECTED. Il sistema è costruito attorno a Gnuradio e richiede un hardware in grado di sintonizzare i 1900MHz. Per questo è consigliato l’uso di un SDR basato su E4000, il compianto tuner della Elonics o di un ricevitore generico in grado di lavorare a 2.4Ms/s. Anche AIRSPY mini è tagliato fuori: arriva fino a 1700MHz. Pertanto ho deciso di modificare il codice per farlo lavorare con ADALM PLUTO.
Il codice elaborato da “znuh” prevede l’uso di diversi elementi:
– un eseguibile C dectrcv.c che riceve i dati dalla interfaccia localhost, visualizza i frames ricevuti e li redirige alla interfaccia dummy0;
– il codice python che avvia una configurazione su GNURADIO che esegue la ricezione del segnale RF;
– il codice GNURAIO è nel file dectrx.grc che può essere aperto anche con GNURADIO.

Il primo step è modificare il codice grc per introdurre il nuovo “sdr source” adalm pluto. Il primo problema è che il PLUTO non campiona a 2.4Ms/s, ma a 3Ms/s. Il blocco di ricezione invece vuole proprio questo valore. Pertanto è necessario modificare il “rational resampler”. Nella formulazione originale il flusso a 2.4Ms/s viene interpolato per 24 e decimato per 25, ottenendo 2304000. Per avere 2.4Ms/s a partire da 3Ms/s occorre moltiplicare per 0.8, ovvero interpolare per 4 e decimare per 5.

Schema a blocchi originale, credit a znuh
Schema a blocchi modificato per Adalm Pluto

Una volta effettuata la modifica non resta che avviare nella sequenza giusta i software e godersi l’output con “wireshark”. Per creare l’interfaccia dummy in un sistema Ubuntu è meglio seguire questo tutorial.

Output per programma in C, credi znuh
Output del programma GRC, modificato per vedere anche la banda base.
Output di Wireshark, con i pacchetti DECT.

Si potrebbe decodificare anche l’audio ma, sinceramente, non ne ho la minima voglia!
Il nuovo GRC si può scaricare da qui.

rtl_433

RTL_433 è un progetto che ho scoperto per caso, navigando senza rotta in giro per la rete. Il sito di riferimento è su github. Si tratta di un simpatico programmino che rileva la presenza di una chiavetta SDR lo sintonizza a 433,920 MHz e si mette in ascolto su una finestra di 250kS/s. In questa fetta di spettro sono allocati sensori e telecomandi a bassa potenza. In particolare le stazioni meteo che hanno sensori wireless usano la modulazione ASK per trasmettere i dati al concentratore.

Universal Radio Hacker alle prese con il segnale in banda base.

Il programma rtl_433 riesce a demodulare i segnali dei sensori ed a interpretare il protocollo ed i dati da esso trasmessi. La cosa è molto interessante soprattutto considerando che i sensori sono dispositivi di debole potenza ed il loro raggio di azione è molto limitato. Pertanto, a meno di installazioni piuttosto bizzare, i dati ricevuti rispecchiano le condizioni meteo della zona in cui sono posizionati.
Il programma si presta bene a “sostituire” una stazione meteo, sfruttando quella di qualche ignaro vicino o consente di confrontare la propria stazione con quelle commerciali.

L’installazione del sistema è banalissima, basta compilare il sorgente scaricato da github ed eseguire il binario rtl_433. Nella mia installazione ho dovuto aumentare la frequenza di campionamento in quanto mi sono reso conto che c’erano diversi sensori “lontani”. Pertanto adesso il sistema lavora a 1024kS/s.

Posizione dei sensori nella banda 433MHz.

Collegata la chiavetta ad una antenna diskona, è iniziata la festa. I segnali dei sensori sono decodificati facilmente ed il programma restituisce un sacco di informazioni utili, anche dal punto di vista comunicazionisitico: SNR – RSSI – NOISE.

A questo punto l’appetito viene mangiando: come fare per immagazzinare i dati ricevuti in un database (MariaDB) in modo da potere rendere in forma grafica alcuni parametri?
In rete ho trovato questo interessante progetto in Python. Ho quindi preso spunto da questo script per cercare di combinare qualche cosa in Python. Ne è venuto fuori uno script che immagazzina tutti i dati nel database e registra i dati grezzi in formato JSON su un file. A corollario di questo ho anche scritto una serie di script php che consentono di accedere ai dati in forma tabulare e di rappresentare l’andamento dei parametri fisici (temperatura, umidità) e radioelettrici (rssi,snr,noise) in funzione del tempo.

Sensori ricevuti e parametri, in forma tabulare.

Grafico dei parametri fisici e radioelettrici:

Andamento della temperatura.

Questa immagine è molto interessante. Mostra l’andamento della temperatura nel tempo. Il fatto è che… le minime sono coerenti con quanto misurato anche da altri sensori. Le massime sono completamente sballate (a gennaio è improbabile raggiungere i 36 gradi). Morale della favola? Il sensore è probabilmente installato al sole, in un contenitore di plastica.

RSSI nel tempo.

Da casa riesco a ricevere una stazione “dignitosa” marca Fine Offset. Penso sia una cosa di questo tipo. Posso confrontare la temperatura rilevata dalla stazione commerciale e la mia: c’è un ottimo accordo di notte. Di giorno c’è qualche discrepanza: 11.7 mia contro 8.8 commerciale ma non conosco l’esatta ubicazione della stazione. Sicuramente il mio schermo solare deve essere perfezionato: apertura sul fondo in primis, ventilazione forzata in secundis.
Chissà cosa viene fuori ad installare il sistema sulla torre di ingegneria?

Nuovo server, considerazioni.

Alcuni giorni addietro, ho scritto un posto sul “nuovo” serve domestico, ricavato da un portatile Dell XPS 1340. A distanza di due giorni, ho analizzato i dati raccolti dall’ottimo LibreNMS.

La macchina ha in esecuzione un web server (utilizzato prevalentemente in locale), un database MariaDB (immagazzina tutti i dati meteo e dei sensori che raccolgo in casa), LibreNMS (chi non ha un sistema di network management system in casa?) e, da poco, una istanza di rtl_433.

I dati di utilizzo delle CPU non sono molto incoraggianti. Il sistema è piuttosto “carico”, soprattutto a causa di rtl_433 che, lavorando con un sample rate di 1024k, fa sudare un po’ la cpu.

Carico delle CPU (core 1 e core 2).

Nulla di preoccupante, visto che non prevedo di installare altri servizi molto impegnativi (farci girare uno spyserver sarebbe follia), solo che “speravo in migliori performances”. Ciò che mi preoccupa è la temperatura di lavoro della CPU: un portatile rispetto ad un server ha una circolazione di aria meno efficiente, in quanto non è previsto che sia accesso 24×7. Pertanto le temperature sono elevate:

Andamento della temperatura per Core, nel tempo.

Questo dato mi preoccupa, soprattutto in vista dell’estate. Il server sarà posizionato in soffitta, dove l’aria è molto calda in estate. Rischio la frittura, ma correrò il rischio, dotando il portatile di una importante supporto alla dissipazione di calore: una bella ventola a 220V. Il flusso di aria investirà il portatile completamente in modo da rimuovere calore da ogni parte. Se poi le cose andranno male, valuterò la possibilità di dotarmi di un calcolatore tipo HP8300elite, magari con 16GB di ram. Intanto… run baby run!