- Sint Wind PI - Documentation
- Forum
- Volo Libero Monte Cucco
- Sint Wind PI
- Ricezione dati con chiavetta USB DVB rtl433
Postate qui domande o segnalate problemi / bug che riscontrate,
Ricezione dati con chiavetta USB DVB rtl433
Si prega Accedi a partecipare alla conversazione.
- modavionlus
- Offline
- Fresh Boarder
- Messaggi: 7
- Ringraziamenti ricevuti 0
Sto cercando di installare da ore la parte sw per la chiavetta rtl433.
Tutto ok fino alla compilazione del raspberry_rtl_wh1080. Lanciando il comando make ho questo messaggio di errore alla fine della compilazione:
Linking C executable rtl_433
CMakeFiles/rtl_433.dir/devices/fineoffset_wh1080.c.o: nella funzione "bmp085_i2c_Read_Int":
/home/pi/raspberry_rtl_wh1080/src/devices/fineoffset_wh1080.c:159: riferimento non definito a "i2c_smbus_read_word_data"
CMakeFiles/rtl_433.dir/devices/fineoffset_wh1080.c.o: nella funzione "bmp085_i2c_Write_Byte":
/home/pi/raspberry_rtl_wh1080/src/devices/fineoffset_wh1080.c:174: riferimento non definito a "i2c_smbus_write_byte_data"
CMakeFiles/rtl_433.dir/devices/fineoffset_wh1080.c.o: nella funzione "bmp085_i2c_Read_Block":
/home/pi/raspberry_rtl_wh1080/src/devices/fineoffset_wh1080.c:183: riferimento non definito a "i2c_smbus_read_i2c_block_data"
collect2: error: ld returned 1 exit status
src/CMakeFiles/rtl_433.dir/build.make:261: set di istruzioni per l'obiettivo "src/rtl_433" non riuscito
make[2]: *** [src/rtl_433] Errore 1
CMakeFiles/Makefile2:158: set di istruzioni per l'obiettivo "src/CMakeFiles/rtl_433.dir/all" non riuscito
make[1]: *** [src/CMakeFiles/rtl_433.dir/all] Errore 2
Makefile:117: set di istruzioni per l'obiettivo "all" non riuscito
make: *** [all] Errore 2
Ho provato a modificare il file in C, sostituendo il valore da 1 a 0, ma nulla.
Cosa posso fare?
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
raspberry_rtl_wh1080 è un "parente" del driver utilizzato in swpi, ma non è compatibile con swpi stesso. Può andare bene se hai uno script tuo per estrarre i dati che legge via json, altrimenti l'unica cosa che fa è presentarti i dati a video.
Il driver per swpi invece lo trovi nella repository GitHub di Tony (dentro la cartella 'rtl_433'):
https://github.com/ToninoTarsi/swpi
E' questo che devi compilare. Tieni presente che a seconda della tua versione di PCE/WH1080 potrebbe essere necessario modificare qualche riga del driver prima di compilarlo (vedi questo post e successivi).
Si prega Accedi a partecipare alla conversazione.
- modavionlus
- Offline
- Fresh Boarder
- Messaggi: 7
- Ringraziamenti ricevuti 0
Tecnicamente adesso potrei rimuovere il cavo usb che collega raspberry alla consolle?
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
Si prega Accedi a partecipare alla conversazione.
- modavionlus
- Offline
- Fresh Boarder
- Messaggi: 7
- Ringraziamenti ricevuti 0
Dopo i consigli di seven tutto sembra funzionare, tranne la pressione.
www.wunderground.com/personal-weather-st...=IABRUZZO125#history
www.pwsweather.com/obs/MODAVIPC.html#
Cosa potrebbe essere?
Il log di swpi è questo:
[27/01/2017-10:55:00] New data received from WH1080_RTL-SDR station 0093. Processing...
[27/01/2017-10:55:00] Calculating Meteo data and statistics
[27/01/2017-10:55:00] Log to Wunderground : success
[27/01/2017-10:55:03] Deleted file : /dev/shm/meteo.txt
[27/01/2017-10:55:03] Sending file to server : meteo.txt OK Deleted
[27/01/2017-10:55:04] Data sent to server : Wrong password
[27/01/2017-10:55:13] Logging data to Database
[27/01/2017-10:55:13] Dir: NW - Spd: 0.0 - Gst: 0.732 - Tout: 12.4 - Hout: 42.0 - Rtot: 192.6 - RDay: 0.0 - R1h: 0.0 - R24h: -1228.8 - CB: 1836 - Trend: 0.31
Si prega Accedi a partecipare alla conversazione.
quindi devi integrare il valore della pressione installando un sensore sulla GPIO del raspberry
qui e qui trovi info al riguardo
Stazione Meteo: Raspberry PI B, Sensori Vento PCE, BME280, Camera PI, Web Cam HD, Huawei K3765, Pannello Fotovoltaico 50W - 1 Batteria 12V-40Ah
Si prega Accedi a partecipare alla conversazione.
- modavionlus
- Offline
- Fresh Boarder
- Messaggi: 7
- Ringraziamenti ricevuti 0
Si prega Accedi a partecipare alla conversazione.
altrimenti monti bmp085, che legge pressione e temperatura, e lo puoi lasciare all'interno insieme al raspberry, l'umidità continuerà a leggerla dal sensore WH che hai all'esterno
Stazione Meteo: Raspberry PI B, Sensori Vento PCE, BME280, Camera PI, Web Cam HD, Huawei K3765, Pannello Fotovoltaico 50W - 1 Batteria 12V-40Ah
Si prega Accedi a partecipare alla conversazione.
- modavionlus
- Offline
- Fresh Boarder
- Messaggi: 7
- Ringraziamenti ricevuti 0
Forse sto chiedendo troppo, ma non sarebbe possibile in caso di utilizzo del bme280 prendere in considerazione solo la misura relativa alla pressione?
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
Riallacciandomi ai post precedenti: se ciò di cui hai bisogno è semplicemente integrare ai dati della PCE anche quello della pressione ti suggerisco un 'semplice' BMP085 o BMP180, sono davvero economici, vedrai (non fermarti al primo venditore).
Selezionando tale sensore dal pannello di controllo di SWPI arricchirai i dati provenienti dalla PCE con quelli di temperatura interna e pressione atmosferica. A riguardo di quest'ultimo aspetto: non è necessario montare il sensore all'aperto in quanto la pressione sarà pressoché identica sia dentro che fuori casa tua, non è come la temperatura o l'umidità dell'aria che cambiano a seconda di dove metti il sensore.
Non escludo che tutto quanto detto valga anche per il BME280, ma non ne ho esperienza diretta perché non l'ho ancora provato.
Ciaoo!
Si prega Accedi a partecipare alla conversazione.
Per quanto riguarda la chiavetta DVB, a me succede che ogni tanto si "disconnetta", o più verosimilmente vada in crash rtl_433, e SWPI smette di raccogliere dati finchè non lo riavvio...
Esaminando il file sensor_wh1080rtlsdr.py mi pare di aver capito che sia previsto in qualche modo che rtl_433 possa terminare ed essere riavviato, ma non sembra che accada.
Come workaround ho scritto un plugin che controlla l'età del file /dev/shm/rtl_433.txt e se è più vecchio di 5 minuti, esegue uno script che ammazza SWPI e lo riavvia, ma non è una soluzione elegante...
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
Ottimo anche il workaround, ma il crash della chiavetta non è normale e mi fa pensare ad un problema hardware, forse legato all'alimentatore (sottodimensionato o poco stabile)...
Si prega Accedi a partecipare alla conversazione.
Sto cercando di capire come funzioni il ciclo di lettura dei sensori per vedere se riesco a modificare qualcosa, ma mi sono perso quando sono arrivato a sensor.py...
EDIT: Ero nel posto giusto, con un po' di impegno sono riuscito nel mio intento!
Ho modificato il file sensor.py alla riga 210, dove c'era questo:
globalvars.meteo_data.hum_out = humidity
e l'ho fatto diventare così:
if ( self.cfg.sensor_type not in self.implementedStations):
globalvars.meteo_data.hum_out = humidity
else:
globalvars.meteo_data.hum_in = humidity
e adesso l'umidità letta dal BME280, al pari della temperatura, viene loggata come interna!
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
Si prega Accedi a partecipare alla conversazione.
Penso possa far comodo anche ad altri...
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
Non l'ho potuto testare non avendo il BME280, ma ritengo che la tua soluzione sia valida.
Tony scrive in Github che rientrerà per fine mese, periodo dal quale potrà esaminare le modifiche ed eventualmente fare il merge.
Si prega Accedi a partecipare alla conversazione.
Modificando il master originale di merbanan con le righe del repo di Tonino invece tutto funziona alla grande
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
Si prega Accedi a partecipare alla conversazione.
La tua versione di rtl_433 l'ho compilata pari pari come è venuta clonata da GIT, utilizzando il tuo script, la versione di Merbanan l'ho modificata aggiungendo le righe di Tonino (come dal tuo post famoso) e compilata con le stesse modalità.
L'hardware è esattamente lo stesso, un RPi3, chiavetta riconosciuta come "Rafael Micro R820T tuner".
Il sistema è Raspbian Jessie aggiornato.
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
Ho fatto un'analisi un po' veloce ma non riesco a capire dove si annidi la menta. Oltretutto QUELLA parte di struttura lì non l'ho neanche toccata per aggiornarla alla WH3080, l'ho copiata paro-paro e dovrebbe funzionare come prima, a meno che non siano state apportate modifiche relative a data/ora su altre parti di rtl_433 da Merbanan (ed almeno una l'avrei anche trovata, ma al momento non saprei quanto potrebbe influire).
Tornando a swpi il campo [time] (nel contesto dei due files in /dev/shm) è lì come riferimento per noi umani, in realtà non viene utilizzato in alcun modo da swpi: quest'ultimo infatti utilizza data ed ora di creazione del file per sincronizzare la lettura dei dati, mentre data ed ora estratti dal segnale WH1080/WH3080 vanno direttamente a settare il clock della Rasp (non 'passano' quindi per i due famosi files).
A parte quindi una magagna di tipo "estetico" (che tra l'altro io non riesco proprio a riprodurre qui da me) non dovrebbe esserci alcun problema sul funzionamento di swpi. Sicuramente approfondirò comunque l'argomento.
Grazie mille però per la segnalazione (e complimenti per l'occhio), ti chiedo anzi di continuare a vegliare sui miei smanettamenti perché se non c'è chi riporta le magagne è impossibile poi per me curarle
Si prega Accedi a partecipare alla conversazione.
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
A meno che il problema non si verifichi saltuariamente anche con altri campi, ma allora là c'è qualcos'altro che non va.
EDIT: Ho notato un commit dei sorgenti di rtl_433 fatto 4 giorni fa (quindi DOPO la mia versione di rtl_433).
Guardacaso coinvolge proprio local_time_str, che viene chiamato in causa per generare la stringa data-ora che ci affligge. Ho riportato la modifica anche sulla mia repo, vuoi provare a vedere se ora va?
Si prega Accedi a partecipare alla conversazione.
Ho provato a prendere il file "funzionante" fineoffset_wh1080.c e copiarlo al posto del fineoffset_wh1080_wh3080.c nel tuo repo, ma come c'era da aspettarsi ho ottenuto solo errori di compilazione
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
Continuo ad indagare.
Si prega Accedi a partecipare alla conversazione.
Quando invece swpi è avviato, mi rimane in "starting RF listening",non riceve nessun dato e poi va in sleeping.
Qualcuno ha avuto questi problemi?
Si prega Accedi a partecipare alla conversazione.
seven ha scritto: Noo, Valerio, infatti non lo contiene... Finora anzi mi pare non sia mai stata nemmeno considerata l'ipotesi di selezionare un singolo ID sensore, neanche all'interno del codice RFM01.
Ritengo si tratti di casi limite (per carità: sempre possibili, tuttavia remoti come probabilità...) avere la sfiga che il vicino si compri la stazione meteo identica alla propria
Per questo considero sia meno laborioso modificare da sè -in caso di necessità- il file sensor_wh1080rtlsdr.py così come esposto sopra anzichè sclerare per implementare la funzione direttamente nel pannello di controllo (le variazioni da eseguire in questo caso sarebbero moooolto numerose, credimi), anche se indubbiamente una volta fatto il lavoro renderebbe swpi ancora più fantastico.
Ciao Nicola,
per la ormai classica 'Legge di Murphy' in questi giorni abbiamo proprio questo problema con una delle nostre stazioni.......un vicino ha installato una stazione meteo WH1080 e adesso la chiavetta RTL riceve i dati da entrambe le stazioni e li invia a swpi che ci mostra delle situazioni a volte inconsuete nella direzione e nella intensità del vento oltre ai valori di umidità......
per risolvere come diresti di procedere?
modificare/inserire qualche riga di codice in questa parte del file sensor_wh1080rtlsdr.py?
def ReadData(self):
with file('/dev/shm/wh1080-rtl_433.txt') as f:
data_file = f.read()
try:
line = json.loads(data_file)
if str(line['msg_type']) == '0':
try:
station_id = str(line['station_id'])
if ( station_id == "None" ):
return "None",0,0,0,0,"",0,0
temp = float(round(line['temperature'],1))
hum = (line['humidity'])
Wind_speed = (line['wind_speed'])*self.cfg.windspeed_gain + self.cfg.windspeed_offset
Gust_Speed = (line['wind_gust'])*self.cfg.windspeed_gain + self.cfg.windspeed_offset
dir_code = str(line['wind_dir_str'])
dire = float(line['wind_dir_deg'])
rain = (round(line['total_rain'],2))
come avevi già proposto qui?
oppure integrare un nuovo parametro nella configurazione per indicare l'ID della stazione?
In attesa ti Auguro un Felice 2019
Stazione Meteo: Raspberry PI B, Sensori Vento PCE, BME280, Camera PI, Web Cam HD, Huawei K3765, Pannello Fotovoltaico 50W - 1 Batteria 12V-40Ah
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
Per la modifica bisognerebbe aggiungere il parametro nell'interfaccia di SWPI, ma ci vorrà un po' di tempo e soprattutto al momento non ho una raspberry disponibile per le prove. Al momento puoi modificare la funzione ReadData come segue, sperando che si mantenga la formattazione quando copierai questa parte in sensor_wh1080rtlsdr.py:
def ReadData(self):
with file('/dev/shm/wh1080-rtl_433.txt') as f:
data_file = f.read()
try:
line = json.loads(data_file)
if str(line['msg_type']) == '0':
try:
station_id = str(line['station_id'])
if ( station_id == "None" ):
return "None",0,0,0,0,"",0,0
elif ( station_id == "<id_stazione>" ):
temp = float(round(line['temperature'],1))
hum = (line['humidity'])
Wind_speed = (line['wind_speed'])*self.cfg.windspeed_gain + self.cfg.windspeed_offset
Gust_Speed = (line['wind_gust'])*self.cfg.windspeed_gain + self.cfg.windspeed_offset
dir_code = str(line['wind_dir_str'])
dire = float(line['wind_dir_deg'])
rain = (round(line['total_rain'],2))
Sostituisci <id_stazione> con l'id della tua stazione. Non ho potuto testarlo, ma dovrebbe funzionare. Fammi sapere!
Si prega Accedi a partecipare alla conversazione.
Si prega Accedi a partecipare alla conversazione.
- Sint Wind PI - Documentation
- Forum
- Volo Libero Monte Cucco
- Sint Wind PI
- Ricezione dati con chiavetta USB DVB rtl433