- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
Postate qui domande o segnalate problemi / bug che riscontrate,
Ricezione dati con chiavetta USB DVB rtl433
Il problema, come hai già notato, è che vengono trasmessi 87 bytes di dati (vedi questo valore anche nel tuo output) anziché gli 88 'classici' decodificati da rtl_433.
Visto che amo il brivido ho deciso di acquistare lo stesso sensore dallo stesso fornitore per approfondire la questione, ma ho collegato TUTTI i sensori di cui è composto prima di farlo partire. Risultato: il sensore funziona perfettamente a 88 bytes e i dati che trasmette li puoi vedere qua: http://video.wifi4all.it/cam13.jpg
A questo punto suppongo che il non collegare tutti i sensori possa avere un peso...
Purtroppo togliere e rimettere la batteria sembra non aver risolto il problema all'amico di cui ti parlavo all'inizio, ma mentre leggevo il tuo post mi è venuto in mente che da qualche parte sotto il pannello solare dovrebbe esserci un pulsante di reset...
Quindi collega tutti i sensori, premi (se serve tieni premuto per qualche secondo) il pulsante di reset e fammi sapere se cambia qualcosa.
Si prega Accedi a partecipare alla conversazione.
Ho però notato una cosa, ogni volta che tolgo e rimetto le batterie, ricevo i dati dalla stazione meteo! Peccato che li ricevo solamente la prima volta e poi più fino a quando non scollego e ricollego le batterie! Secondo te da cosa può dipendere questo comportamento?
grazie.
Si prega Accedi a partecipare alla conversazione.
1) come abbiamo già visto che la mia stazione invia 87 byte invece che 88
2) commentando il return del controllo dei byte trasmessi, l'altro errore è il crc mismatch
Si prega Accedi a partecipare alla conversazione.
questi sono i miei dati in output, ho dovuto modificare il file fineoffset_wh1080.c per poterli vedere, ma sono sballati rispetto ai dati che visualizza la consolle:
output dati rtl_433:
{"time" : "2016-08-01 17:28:41", "model" : "Fine Offset WH1080 weather station", "msg_type" : 0, "id" : 112, "temperature_C" : 94.800, "humidity" : 120, "direction_str" : "E", "direction_deg" : "90", "speed" : 31.824, "gust" : 39.168, "rain" : 0.000}
dati visualizzati sulla consolle:
temperatura 27,4
umidità 60%
velocità vento 15,8
direzione vento ne
pioggia 0
Ho visto che il file fineoffset_wh1080.c fa diversi calcoli (sui dati che riceve che non so in quale formato siano) per ottenere gli sessi dati visualizzati sulla consolle. Devo modificare i calcoli, Seven mi puoi aiutare a farlo? Oppure darmi qualche dritta?
grazie, ciao.
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
Per creare il 'modulo' WH1080 di rtl_433 (che è costituito proprio dal file fineoffset_wh1080.c) mi sono servito della 'mappatura' dei bytes che costituiscono ogni trasmissione della stazione. L'ho trovata qui:
www.sevenwatt.com/main/wh1080-protocol-v2-fsk/
Come vedi è descritta la maggior parte dei dati nascosti nei bytes/nibbles del messaggio radio.
Il messaggio, come già detto, è lungo 88 bit (nei miei precedenti posts parlavo di bytes, ma avendoli scritti a tarda sera era il sonno a parlare per me )
Tu invece ne hai 87 e questo rivoluziona per forza di cose tutto l'ordine dei byte/nibbles del messaggio...
Non basta quindi far riconoscere a rtl_433 il messaggio lungo 87 bit anziché 88, bisogna anche dirgli come sono organizzati gli 87 bit. Occorre dirgli che (ad esempio) il primo byte contiene il tipo di messaggio, il secondo contiene l'ID della stazione, e così via. Queste sono proprio le info che trovi nel link di cui sopra.
Per quanto riguarda il protocollo a 87 bit non ho ancora trovato, purtroppo, alcun link di riferimento.
Tuttavia sul gruppo di discussione di rtl_433 si è recentemente fatta avanti una persona che riferisce di avere una stazione meteo FineOffset WH5301 (o meglio una sua versione rebrandizzata). Il protocollo radio sembra differire dalla WH1080 ed è formato, guardacaso, da messaggi di 87 bit
Il tipo posta poi l'output raccolto da rtl_433 con anche i dati che lui leggeva sulla console durante ciascuna trasmissione. Il link è il seguente:
groups.google.com/forum/#!topic/rtl_433/-Foh026foBI
Riassumo di seguito la parte saliente:
TEMP(Temperature)
RN(Rain)
D(Wind Direction)
H(Humidity)
SP(Wind Speed)
===========================================================
TEMP RN D H SP
00 be dc 09 4f eb e5 fe 41 ee 74 - 10.8 1.5 s 88 10.1
00 be dc 09 4f e7 db fe 41 f2 36 - 13.0 1.5 se 88 10.1
00 be dc 09 4f f1 ed fe 41 ef 8c - 7.6 1.5 s 88 10.1
00 be dc 05 4d e9 e3 fe 41 ee 6c - 11.9 1.5 s 89 10.9
00 be dc 05 4d e9 e3 fe 41 ee 6c - 11.9 1.5 sw 89 10.9
00 be dc 05 4f eb db fe 3f f3 58 - 10.8 0.0 se 88 10.9
00 be dc 05 4d eb e3 fe 3f ef 9c - 10.8 0.0 s 89 10.9
00 be dc 05 4d dd d3 fe 3f f3 e6 - 18.4 0.0 se 89 10.9
Ecco qui, direi che questo è un buon punto di partenza se vuoi.
Noto, ad occhio, che si tratta di dati registrati in due giornate diverse: infatti fino alla 5a riga la pioggia è a 1.5 mm, mentre dalla 6a è a 0 mm.
Se guardi il 4° byte noterai che nelle prime 3 righe è 09, nelle altre è 05. Guarda ora la velocità del vento: nelle prime 3 righe è 10.1, nelle altre è 10.9. Vuoi vedere che il 4° byte ha a che fare con la velocità del vento?
Ecco, è solo uno spunto, se trovo un minuto ci darò un'occhiata anch'io ma sono sicuro che riuscirai a scoprire qualcosa di più partendo da qui.
Si prega Accedi a partecipare alla conversazione.
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
Per la WH1080 l'interpretazione dei bytes è stata fatta da diverse persone basandosi sui valori letti in console quando veniva ricevuto il messaggio radio. Non c'era un documento di riferimento. Tu stai facendo la stessa cosa e non ho trovato nessun altro in rete che lo stia facendo per il tuo modello di stazione. Grande!
L'unico modo quindi che abbiamo per sapere se hai trovato la formula esatta è continuare a monitorare console e rtl_433 per vedere se i valori continuano ad essere coerenti.
Per quanto riguarda il pluviometro: se progettando la tua stazione la FineOffset ha mantenuto la stessa caratteristica della WH1080 allora è tutto normale: il valore della pioggia viene accumulato continuamente, spetta alla console (o al software che legge i dati in uscita da rtl_433) calcolare giorno per giorno la differenza dei valori letti (in altre parole: se ieri il contatore era a 10 mm ed oggi è ad 11 mm allora oggi ha piovuto per 1 mm.).
Infine l'ID: non è visibile in console, potresti anche trascurarlo ma fa molto comodo per leggere i dati di una singola stazione, evitando quelli provenienti dalla stazione del vicino che ha un ID diverso...
A naso anche qui è stata mantenuta una struttura simile alla WH1080: il primo byte e mezzo (00 b) potrebbe essere il tipo di messaggio (messaggio contenente dati meteo), mentre il secondo nibble del secondo byte ed il primo del terzo potrebbero essere l'ID (te li metto in rosso: 00 be dc 09 4f eb e5 fe 41 ee 74).
Guardando al tuo post iniziale in cui hai incollato i dati della tua stazione il tuo ID sarebbe quindi EF (00 be fa 81 a5 fb f9 ff ff e6 b8).
E' anche possibile che i primi 2 byte (00 be) rappresentino il tipo di stazione, e che l'ID sia il byte successivo: dovrai fare delle prove. Nella WH1080 l'ID cambia ogni volta che togli e rimetti le batterie del sensore: questa operazione potrebbe darti la conferma, verifica quali sono i bytes che cambiano ad ogni reset!
Il valore dell'ID è in esadecimale, va convertito in decimale se vogliamo rispettare le convenzioni di rtl_433 (239 quindi, nel caso di EF).
Continua così, se nel lungo termine i dati rimangono validi direi che potresti contribuire con il tuo codice a rtl_433!
Si prega Accedi a partecipare alla conversazione.
temperature oltre i 200°
umidita oltre il 100%
precipitazioni di 200mm nel giro di un minuto
venti a 200km/h
ma ovviamente arrivano anche valori errati più "umani", esempio:
temperatura di 5° superiore alla lettura precedente, per poi tornare normale alla lettura successiva
precipitazioni di 3mm superiore alla lettura precedente, quando in realtà non è mai piovuto, per poi tornare normale alla lettura successiva
sono letture sporadiche, ma che ovviamente rovinano il mio database!
Come fa la consolle a filtrare questi errori? Possibile che siano errori letti errati dalla chiavetta usb? Oppure sono realmente errori di trasmissione da parte dal trasmettitore? Il trasmettitore possibile che non invii nessun controllo dati???
Altri di voi hanno notato queste anomalie? Se si come li filtrate?
grazie.
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
Parlando della WH1080: il sensore esterno contiene un ricevitore/decoder per l'ora esatta DCF77 che viene irradiata sui 77.5 Khz da Francoforte. Ad ogni 59° minuto delle ore dispari il sensore esterno smette di trasmettere dati meteo, se ne sta un po' zitto per circa 4 minuti, poi per alcuni minuti trasmette il segnale orario al posto dei dati meteo.
Questo mi ha dato qualche grattacapo, perché non avendo implementato alcun filtro per circa 5 minuti i dati meteo letti erano completamente sballati (per forza, erano data ed ora!).
Ho visto poi che i progettisti della stazione hanno inserito un byte diverso per tipo di messaggio all'inizio della trasmissione: se non ricordo male i messaggi meteo iniziano con la coppia FF Ax, ed i messaggi data-ora iniziano con FF Bx. Questo mi ha dato modo di implementare un filtro che "dirottasse" il tipo di messaggio verso l'opportuna sezione di decodifica a seconda del valore di questi bytes (in fineoffset_wh1080.c sono le righe 221-225).
Adesso non so se la tua stazione disponga dello stesso sistema di data/ora e che magari lo alterni ai dati meteo con tempistiche diverse dalle mie...
Fai quindi caso ai primi bytes (e segnateli) che compongono il messaggio durante le letture sballate, potresti distinguere e tentare di interpretare il messaggio particolare a cui appartengono (qualsiasi cosa siano i dati che contiene, non è detto siano data ed ora), oppure filtrare il messaggio ed ignorarlo in presenza di quei fatidici bytes.
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
Si prega Accedi a partecipare alla conversazione.
Potreste inviarmi qualche link dei siti in cui comprare la chiavetta?
Grazie
Pietro
Si prega Accedi a partecipare alla conversazione.
Scrivo per informarvi che visti i problemi riscontrati, ricezione di dati a volte fuori scala ex, ora questo problema, ho deciso di cambiare approccio, voglio collegare direttamente i sensori al raspberry, velocità e direzione e vento vanno interfacciati con un convertitore ad, mentre pluviometro essendo di fatto un contatto reed può essere collegato direttamente, sensori temperatura, umidità e pressione, sono digitali.
Appena terminato il progetto vi aggiorno sulla riuscita o meno, di certo ho maggiore controllo sulle letture, non devo attendere la ricezione del segnale, ma è il raspberry che interroga direttamente inse sensori ed in caso di letture sbagliate, posso rifarle immediatamente senza dover attendere la ricezione del segnale successivo.
Grazie per l'aiuto fornitomi.
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
Per Pietro: è ufficiale sì, trovi i sorgenti in GitHub (Tonino Tarsi --> SWPI). Se non ti vuoi compilare tutto da te scarica l'immagine 3 che contiene già tutto. La uso ininterrottamente da circa maggio (sensore WH1080 + chiavetta USB DVB-T) e non perde un colpo.
La chiavetta DEVE essere basata sul chipset RTL2832U della Realtek ed avere a bordo il tuner R820T o meglio ancora il R820T2, che è più recente e sensibile.
Cerca quindi su Ebay "rtl2832u r820t" e ne trovi uno sterminio anche a meno di 10 euro. Come sempre quelle di venditori italiani costano un po' di più ma arrivano prima, mentre quelle dei venditori cinesi costano davvero molto poco ma ci mettono una quarantina di giorni ad arrivare a casa. Sono sempre le stesse comunque.
Ti suggerisco quelle azzurre, di solito contengono il tuner R820T2, il più recente (comunque leggi bene la descrizione del prodotto in vendita per sicurezza).
Ciao!
Nik
Si prega Accedi a partecipare alla conversazione.
Quello che mi manca sono le competenze per scrivere una "driver" analogo a sensor_wh1080rtlsdr.py
Non è che qualche volenteroso del settore magari ha voglia di scriverlo al posto mio? Io sarei a disposizione per eventuali prove e test...
Allego un po' di output del comando rtl_433:
pi@swpi(rw):~/swpi$ rtl_433 -R 34 -F json
Registering protocol "LaCrosse WS-2310 Weather Station"
Found 1 device(s):
0: Generic, RTL2832U, SN: 77771111153705700
Using device 0: Generic RTL2832U
Detached kernel driver
Found Rafael Micro R820T tuner
Exact sample rate is: 250000.000414 Hz
[R82XX] PLL not locked!
Sample rate set to 250000.
Bit detection level set to 8000.
Tuner gain set to Auto.
Reading samples in async mode...
Tuned to 433920000 Hz.
{"time" : "2016-09-30 20:28:23", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.300}
{"time" : "2016-09-30 20:28:23", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:28:23", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 22.500}
{"time" : "2016-09-30 20:28:23", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.300}
{"time" : "2016-09-30 20:28:24", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:28:24", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 22.500}
{"time" : "2016-09-30 20:30:31", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.300}
{"time" : "2016-09-30 20:30:32", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:30:32", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "rainfall_mm" : 103.600}
{"time" : "2016-09-30 20:30:32", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 45.000}
{"time" : "2016-09-30 20:30:32", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.300}
{"time" : "2016-09-30 20:30:33", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:30:33", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "rainfall_mm" : 103.600}
{"time" : "2016-09-30 20:30:33", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 45.000}
{"time" : "2016-09-30 20:32:40", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.300}
{"time" : "2016-09-30 20:32:40", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:32:40", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 45.000}
{"time" : "2016-09-30 20:32:41", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.300}
{"time" : "2016-09-30 20:32:41", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:32:41", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 45.000}
{"time" : "2016-09-30 20:34:48", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.300}
{"time" : "2016-09-30 20:34:49", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:34:49", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 45.000}
{"time" : "2016-09-30 20:34:49", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.300}
{"time" : "2016-09-30 20:34:49", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:34:50", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 45.000}
{"time" : "2016-09-30 20:36:56", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.300}
{"time" : "2016-09-30 20:36:57", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:36:57", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 45.000}
{"time" : "2016-09-30 20:36:57", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.300}
{"time" : "2016-09-30 20:36:58", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:36:58", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 45.000}
{"time" : "2016-09-30 20:39:05", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.300}
{"time" : "2016-09-30 20:39:05", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:39:05", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "rainfall_mm" : 103.600}
{"time" : "2016-09-30 20:39:06", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 22.500}
{"time" : "2016-09-30 20:39:06", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.300}
{"time" : "2016-09-30 20:39:06", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:39:06", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "rainfall_mm" : 103.600}
{"time" : "2016-09-30 20:39:07", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 22.500}
{"time" : "2016-09-30 20:41:14", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.200}
{"time" : "2016-09-30 20:41:14", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:41:14", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 45.000}
{"time" : "2016-09-30 20:41:14", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.200}
{"time" : "2016-09-30 20:41:15", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:41:15", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 45.000}
{"time" : "2016-09-30 20:43:22", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.100}
{"time" : "2016-09-30 20:43:22", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:43:23", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 45.000}
{"time" : "2016-09-30 20:43:23", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.100}
{"time" : "2016-09-30 20:43:23", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:43:23", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 45.000}
{"time" : "2016-09-30 20:45:31", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.100}
{"time" : "2016-09-30 20:45:31", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:45:31", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 45.000}
{"time" : "2016-09-30 20:45:31", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.100}
{"time" : "2016-09-30 20:45:32", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:45:32", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 45.000}
{"time" : "2016-09-30 20:47:39", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.000}
{"time" : "2016-09-30 20:47:39", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:47:40", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "rainfall_mm" : 103.600}
{"time" : "2016-09-30 20:47:40", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 22.500}
{"time" : "2016-09-30 20:47:40", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.000}
{"time" : "2016-09-30 20:47:40", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:47:41", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "rainfall_mm" : 103.600}
{"time" : "2016-09-30 20:47:41", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 22.500}
{"time" : "2016-09-30 20:49:48", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.000}
{"time" : "2016-09-30 20:49:48", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:49:48", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 22.500}
{"time" : "2016-09-30 20:49:48", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "temperature_C" : 17.000}
{"time" : "2016-09-30 20:49:49", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "humidity" : 77}
{"time" : "2016-09-30 20:49:49", "model" : "LaCrosse WS", "ws_id" : 9, "id" : 150, "wind_speed_ms" : 0.000, "wind_direction" : 22.500}
^CSignal caught, exiting!
User cancel, exiting...
Reattached kernel driver
Si prega Accedi a partecipare alla conversazione.
- Messaggi: 286
- Karma: 3
- Ringraziamenti ricevuti 63
Sfortunatamente non sono in possesso di una Lacrosse, se nel frattempo non si fa avanti nessun altro con qualche idea vedremo come si può fare...
Si prega Accedi a partecipare alla conversazione.
Vedo che viene letto un file di testo, "wh1080-rtl_433.txt", ma non ho idea nè di chi lo scriva e nè di cosa debba esserci dentro...
In extremis potrei anche attacharti(?) un raspi via Hamachi, così ci lavori da remoto
Si prega Accedi a partecipare alla conversazione.
Sensori PCE-FWS20, DVB-T 820T2 SDR, BMP085, Raspberry Pi mod. B www.meteoportocervo.it (Abbiadori Porto Cervo - Arzachena - OT) 108 m s.l.m.)
Si prega Accedi a partecipare alla conversazione.
seven ha scritto: Intanto qualcosa si muove sul fronte rtl_433: sembra che sia sufficiente aggiungere fittiziamente un bit ai famosi 87 per far quadrare il cerchio. In altre parole anche questa stazione dovrebbe essere supportata! Dovrò fare alcune prove, poi in caso di esito positivo sottoporrò l'update della repository Git a Tony.
Ciao Seven,
montando una nuova stazione ho anch'io il problema degli 87 bit.....
ci sono novità in merito??
EDIT:
la stazione è la PCE-FWS20 ed è acquistata direttamente dalla PCE.
probabilmente le ultime hanno questa nuova configurazione
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.
ho fatto alcune prove con la chiavetta e due sensori, uno da 88 bit e uno da 87bit, le ho fatte su un pc portatile con linux installato dove avevo già fatto le prime prove qualche mese fa...
all'inizio riuscivo a ricevere entrambi i sensori ma solo il sensore a 88 bit veniva decodificato e leggevo i dati mentre quello a 87 bit vinva ricevuto ma non era decodificato nessun dato.
Allora mi sono controllato il file fineoffset_wh1080.c sul github rtl_433 di merbanan e ho visto che avevano implementato la docodifica a 87 bit....
A questo punto ho reinstallato tutto sul pc portatile seguendo le solite procedure indicate da Nicola e.......
sul pc portatile adesso legge e decodifica entrambi i sensori
sia a 88 bit
Detected OOK package
2016-10-26 13:01:26 : Fine Offset WH1080 weather station
Msg type: 0
StationID: 0004
Temperature: 25.4 C
Humidity: 73 %
Wind string: N
Wind degrees: 0
Wind avg speed: 0.00
Wind gust: 0.00
Total rainfall: 0.0
Analyzing pulses...
Total count: 88, width: 48950 (195.8 ms)
Pulse width distribution:
[ 0] count: 24, width: 133 [132;135] ( 532 us)
[ 1] count: 64, width: 377 [376;380] (1508 us)
Gap width distribution:
[ 0] count: 87, width: 247 [245;250] ( 988 us)
Pulse period distribution:
[ 0] count: 23, width: 381 [380;383] (1524 us)
[ 1] count: 64, width: 625 [623;628] (2500 us)
Level estimates [high, low]: 1081, 3
Frequency offsets [F1, F2]: -22730, 0 (-86.7 kHz, +0.0 kHz)
Guessing modulation: Pulse Width Modulation with fixed gap
Attempting demodulation... short_limit: 255, long_limit: 251, reset_limit: 251, demod_arg: 0
pulse_demod_pwm(): Analyzer Device
bitbuffer:: Number of rows: 1
[00] {88} ff a0 42 8e 49 00 00 00 00 80 65
2016-10-26 16:34:06 : Fine Offset WH1080 weather station
Msg type: 0
StationID: 0008
Temperature: 25.9 C
Humidity: 75 %
Wind string: N
Wind degrees: 0
Wind avg speed: 0.00
Wind gust: 0.00
Total rainfall: 0.0
Battery: OK
2016-10-26 16:34:06 : Fine Offset WH1080 weather station
Msg type: 0
StationID: 0008
Temperature: 25.9 C
Humidity: 75 %
Wind string: N
Wind degrees: 0
Wind avg speed: 0.00
Wind gust: 0.00
Total rainfall: 0.0
Battery: OK
che 87 bit....
Detected OOK package
Analyzing pulses...
Total count: 87, width: 45786 (183.1 ms)
Pulse width distribution:
[ 0] count: 29, width: 124 [124;129] ( 496 us)
[ 1] count: 58, width: 368 [367;370] (1472 us)
Gap width distribution:
[ 0] count: 86, width: 241 [240;243] ( 964 us)
Pulse period distribution:
[ 0] count: 28, width: 366 [365;371] (1464 us)
[ 1] count: 58, width: 610 [608;612] (2440 us)
Level estimates [high, low]: 15883, 5
Frequency offsets [F1, F2]: 22473, 0 (+85.7 kHz, +0.0 kHz)
Guessing modulation: Pulse Width Modulation with fixed gap
Attempting demodulation... short_limit: 246, long_limit: 244, reset_limit: 244, demod_arg: 0
pulse_demod_pwm(): Analyzer Device
bitbuffer:: Number of rows: 1
[00] {87} ff 59 64 f4 92 00 00 00 01 20 4e
2016-10-26 16:28:26 : Fine Offset WH1080 weather station
Msg type: 0
StationID: 0073
Temperature: 24.1 C
Humidity: 71 %
Wind string: N
Wind degrees: 0
Wind avg speed: 0.00
Wind gust: 0.00
Total rainfall: 0.0
Battery: OK
2016-10-26 16:28:26 : Fine Offset WH1080 weather station
Msg type: 0
StationID: 0073
Temperature: 24.1 C
Humidity: 71 %
Wind string: N
Wind degrees: 0
Wind avg speed: 0.00
Wind gust: 0.00
Total rainfall: 0.0
Battery: OK
E' FATTA!!! ho pensato....
ho reinstallato tutto anche sul raspberry ma il sensore a 87 bit non ne vuole sapere.....
ho anche provato a smanettare un pò (per quel che no so) nei file di rtl_433 ma senza risultato....
Nicola mettici le mani perché mi pare che i nuovi sensori arrivano tutti a 87 bit......
Io intanto continuo a provare.....
EDIT:
ho provato sia la versione 2 su rpi-zero e rpi-b (1b)
e la versione 3 solo rpi-zero
per ora niente.....
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.
pi@swpi ~ $ /usr/local/bin/rtl_eeprom
Found 1 device(s):
0: Generic RTL2832U OEM
Using device 0: Generic RTL2832U OEM
Detached kernel driver
Found Rafael Micro R820T tuner
Current configuration:
__________________________________________
Vendor ID: 0x0bda
Product ID: 0x2838
Manufacturer: Realtek
Product: RTL2838UHIDIR
Serial number: 00000001
Serial number enabled: yes
IR endpoint enabled: yes
Remote wakeup enabled: no
__________________________________________
Reattached kernel driver
pi@swpi ~ $ rtl_433 -f 868300000 -l 0 -A
Registering protocol "Silvercrest Remote Control"
Registering protocol "Rubicson Temperature Sensor"
Registering protocol "Prologue Temperature Sensor"
Registering protocol "Waveman Switch Transmitter"
Registering protocol "Steffen Switch Transmitter"
Registering protocol "ELV EM 1000"
Registering protocol "ELV WS 2000"
Registering protocol "LaCrosse TX Temperature / Humidity Sensor"
Registering protocol "Acurite 5n1 Weather Station"
Registering protocol "Acurite 896 Rain Gauge"
Registering protocol "Acurite Temperature and Humidity Sensor"
Registering protocol "Oregon Scientific Weather Sensor"
Registering protocol "Mebus 433"
Registering protocol "Intertechno 433"
Registering protocol "KlikAanKlikUit Wireless Switch"
Registering protocol "AlectoV1 Weather Sensor (Alecto WS3500 WS4500 Ventus W155/W044 Oregon)"
Registering protocol "Cardin S466-TX2"
Registering protocol "Fine Offset Electronics, WH-2 Sensor"
Registering protocol "Nexus Temperature & Humidity Sensor"
Registering protocol "Ambient Weather Temperature Sensor"
Registering protocol "Calibeur RF-104 Sensor"
Registering protocol "X10 RF"
Registering protocol "DSC Security Contact"
Registering protocol "Brennstuhl RCS 2044"
Registering protocol "GT-WT-02 Sensor"
Registering protocol "Danfoss CFR Thermostat"
Registering protocol "Energy Count 3000 (868.3 MHz)"
Registering protocol "Valeo Car Key"
Registering protocol "Chuango Security Technology"
Registering protocol "Generic Remote SC226x EV1527"
Registering protocol "TFA-Twin-Plus-30.3049 and Ea2 BL999"
Registering protocol "Fine Offset WH1080 Weather Station"
Registering protocol "WT450"
Registering protocol "LaCrosse WS-2310 Weather Station"
Registering protocol "Esperanza EWS"
Registering protocol "Efergy e2 classic"
Registering protocol "Inovalley kw9015b rain and Temperature weather station"
Registering protocol "Generic temperature sensor 1"
Registering protocol "Acurite 592TXR Temperature/Humidity Sensor and 5n1 Weather Station"
Registering protocol "Acurite 986 Refrigerator / Freezer Thermometer"
Registering protocol "HIDEKI TS04 Temperature and Humidity Sensor"
Registering protocol "Watchman Sonic / Apollo Ultrasonic / Beckett Rocket oil tank monitor"
Registering protocol "CurrentCost Current Sensor"
Registering protocol "emonTx OpenEnergyMonitor"
Registering protocol "HT680 Remote control"
Registering protocol "S3318P Temperature & Humidity Sensor"
Registering protocol "Akhan 100F14 remote keyless entry"
Registering protocol "Quhwa"
Registering protocol "OSv1 Temperature Sensor"
Registering protocol "Proove"
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001
Using device 0: Generic RTL2832U OEM
Detached kernel driver
Found Rafael Micro R820T tuner
Exact sample rate is: 250000.000414 Hz
[R82XX] PLL not locked!
Sample rate set to 250000.
Bit detection level set to 0.
Tuner gain set to Auto.
Reading samples in async mode...
Tuned to 868300000 Hz.
Detected OOK package
Analyzing pulses...
Total count: 87, width: 45779 (183.1 ms)
Pulse width distribution:
[ 0] count: 29, width: 120 [118;125] ( 480 us)
[ 1] count: 58, width: 363 [362;365] (1452 us)
Gap width distribution:
[ 0] count: 86, width: 246 [245;248] ( 984 us)
Pulse period distribution:
[ 0] count: 28, width: 366 [365;370] (1464 us)
[ 1] count: 58, width: 610 [608;612] (2440 us)
Level estimates [high, low]: 4249, 17
Frequency offsets [F1, F2]: -1263, 0 (-4.8 kHz, +0.0 kHz)
Guessing modulation: Pulse Width Modulation with fixed gap
Attempting demodulation... short_limit: 241, long_limit: 249, reset_limit: 249, demod_arg: 0
pulse_demod_pwm(): Analyzer Device
bitbuffer:: Number of rows: 1
[00] {87} ff 54 04 fe 44 00 00 00 01 1b 16
da terminale sembra che anche il raspberry (sto provando con uno zero)
riesca a ricevere il sensore a 87 bit.....
ma swpi non lo decodifica.....
devo continuare a 'smanettare'....
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
GRANDE Asy!!
Mi serve che tu faccia questa cosa qua: facendo partire rtl_433 con dei parametri particolari genererai alcuni files che utilizzerò (io e chiunque avrà voglia di provare, naturalmente) per "ricostruire" l'output a 87 bits della tua stazione. A quel punto potrò (potremo) vedere dove si inceppa l'ambaradan.
Crea una cartella in /home/pi , portatici dentro in consolle e da lì digita:
sudo /usr/local/bin/rtl_433 -f 868250000 -l 0 -a -t
Lascialo andare per una decina di minuti, intercetterà i segnali provenienti dalla/e WH1080. Alla fine la cartella conterrà diversi files dal nome tipo gfile001.data, gfile002.data....
Posta qua uno zip dei files che poi vediamo.
Si prega Accedi a partecipare alla conversazione.
ecco le prove richieste
spero siano sufficienti....
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
Si prega Accedi a partecipare alla conversazione.
se ti può essere utile questo è il risultato con il sensore a 88 bit
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
La soluzione è molto più semplice di quanto ci si potesse aspettare: basta mettere in rw il sistema, scaricare i sorgenti di rtl_433 e ricompilarlo, MA PRIMA: ....
...Poichè SWPI utilizza una versione di rtl_433 modificata ed adattata alla bisogna, devi editare il file sorgente
/src/devices/fineoffset_wh1080.c
prima di compilarlo, aggiungendo la parte che ad ogni lettura dati sovrascrive il file
/dev/shm/wh1080-rtl_433.txt
Le righe da aggiungere sono quelle che nei sorgenti di SWPI (in GitHub) attualmente si trovano nel file github.com/ToninoTarsi/swpi/blob/master/.../fineoffset_wh1080.c
dalla 270 alla 295 comprese.
Per comodità lo allego già modificato, ho solo voluto spiegare il perchè la ricezione dati non poteva funzionare con la semplice ricompilazione di rtl_433... Può essere utile ad altri smanettoni
Quindi ricapitoliamo: scàricati i nuovi sorgenti di rtl_433 da qui (cosa che hai già fatto);
Con il sistema in rw scompattali in una cartella vuota;
Sovrascrivi il file
(rtl_433)/src/devices/fineoffset_wh1080.c
Nella cartella principale dei sorgenti crea la cartella
/build
Dopo averla creata, l'albero delle cartelle si presenterà così:
Entra nella cartella /build con il comando
cd build
Dai in sequenza i comandi
cmake ../
make
sudo make install
Dovresti essere a posto. Facci sapere!
P.S.: Ulisse, non mi sono dimenticato di te. Se mi mandi i files, analogamente a quanto ho chiesto a Asy nel post #7367 ci posso dare un occhio.
La tua linea di comando però è diversa perchè diversa è la frequenza operativa della tua stazione (433 Mhz).
Prova con il comando:
sudo /usr/local/bin/rtl_433 -R 34 -l 0 -a -t
Aspetto i files, ciaoo!
Si prega Accedi a partecipare alla conversazione.
devo dire che mi ero accorto della modifica per swpi sul vecchio sorgente ed avevo già editato il nuovo con la tua modifica per swpi....
mi mancava solo di compilarlo......
la mia (pochissima) esperienza non mi ci aveva (ancora) portato.....
e ora però una curiosità.....
facendo molte prove in questi giorni mi è venuto un dubbio per via dell'id del trasmettitore PCE/WH1080 che sono diversi per ogni trasmettitore (ovviamente), ma che cambiano anche dopo la sostituzione o stacco/riattacco delle batterie
se per esempio nel raggio di ricezione della chiavetta ci sono due o più trasmettitori PCE/WH1080 come possiamo essere sicuri, visto che la chiavetta riceve contemporaneamente tutti i sensori accesi, che swpi selezioni solo quello che ci interessa??
è vero che l'id del sensore non dovrebbe cambiare fino alla sostituzione delle batterie, però swpi in molte stazioni, specie quelle isolate alimentate da pannelli solari, la notte si spegne per riaccendersi la mattina....
facendo delle prove, senza spengere il raspberry, quando faccio il cambio sensore (spengo uno accendo l'altro) swpi continua il suo lavoro con il sensore che in quel momento è acceso.....
insomma non c'è una vera selezione......
che ne pensi Nicola??
ah....grazie
Valerio
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
Appena possibile chiederò il merge a Tony in GitHub.
Per quanto riguarda l'ID del sensore della WH1080, come hai già sottolineato tu varia automaticamente ad ogni reset/cambio batteria e di volta in volta non sembra -che io sappia- che il nuovo ID possa essere in qualche modo prevedibile.
Ne consegue che l'unico modo per averlo fisso, riconoscibile e "selezionabile" da SWPI, è che il sensore non si fermi mai...
Perciò se anche il sensore, così come la Raspberry, viene alimentato da un sistema solare che di notte cessa di produrre energia elettrica, occorrerà dotarlo di un sistema di batterie tampone ricaricabili che lo faccia funzionare indipendentemente dal resto del sistema.
A onor del vero c'è da dire che i più recenti sensori WH1080 incorporano un piccolo pannellino solare che alimenta il sensore stesso e tiene in carica le sue batterie interne ricaricabili, e devo dire per esperienza personale che nemmeno nelle corte e nebbiose giornate invernali avute lo scorso anno qui a Padova ho mai riscontrato problemi di carica batterie: la poca luce era comunque sufficiente a mantenerle ben funzionanti (ed il sensore ha sempre lo stesso ID oramai da tre anni e passa).
Se io dovessi modificare il codice di SWPI per 'fixare' l'attenzione su un solo ID di sensore WH1080 proverei a fare così:
andrei innanzitutto ad aprire il file /dev/shm/wh1080-rtl_433.txt per vedere l'ID del sensore che mi interessa (nel mio caso: "station_id" : "0005" ).
Poi modificherei il file /swpi/sensor_wh1080rtlsdr.py e cambierei la riga
if ( station_id == "None" ):
in
if ( station_id == "None" or station_id != "0005" ):
Questa riga scarta infatti eventuali dati pervenuti da sensori privi di station_id; l'aggiunta fa sì che anche dati provenienti da station_id diversi da "0005" vengano scartati, ed il gioco è bello che fatto.
Infine commenterei le linee 258-259 da così
if ( station_id == "None"):
log("Bad data received from WH1080_RTL-SDR")
a così
#if ( station_id == "None"):
# log("Bad data received from WH1080_RTL-SDR")
per evitare che ad ogni ricezione dati da stazione diversa da quella che desidero (e pertanto scartata) mi appaia un messaggio di errore o che venga scritto nei log.
Naturalmente ti sto parlando a braccio, non ho testato il codice ma secondo me funziona
Si prega Accedi a partecipare alla conversazione.
è solo una curiosità perché credo che sia altamente difficile trovare due stazioni/sensori PCE/WH1080 nel raggio di qualche decina di metri...
però potrebbe anche essere che il tuo vicino di casa voglia montare una stazione meteo, magari uguale alla tua, per gestire i dati in privato solo sul suo pc....
anche nelle stazioni isolate di solito il sensore è montato come il tuo, con le sue batterie e il suo pannellino solare, però il raspberry, e tutto quello che è collegato via cavo ad esso si spegne...
quando la mattina si riaccende come fa a riconoscere il sensore della tua stazione?
credo che le modifiche che hai segnalato funzionino (io non ho provato ma sembrano abbastanza chiare e semplici) bisognerà vedere se in futuro si presenterà un caso del genere, a quel punto bisognerà lavorarci e rendere semplice l'identificazione dell'ID e la sua configurazione su SWPI.
Valerio.
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
asy961 ha scritto: OK ... però il raspberry, e tutto quello che è collegato via cavo ad esso si spegne...
quando la mattina si riaccende come fa a riconoscere il sensore della tua stazione?
l'ID del sensore non viene assegnato arbitrariamente dalla Raspberry, ma viene trasmesso dal sensore stesso ad ogni invio di dati meteo. E' anzi -nell'ordine- il primo dato che viene inviato all'interno del pacchetto che costituisce l'intera trasmissione da parte del sensore. Seguono poi temperatura ecc. ecc.
E' come se il sensore firmasse con il suo nome ogni pacchetto di dati che trasmette.
Per averne un'idea guarda il file /dev/shm/wh1080-rtl_433.txt: contiene l'intera stringa di dati ricevuta direttamente dal sensore.
SWPI lo riconosce quindi perchè il sensore, che è rimasto acceso, avrà lo stesso codice di ieri e la Rasp conterrà il codice modificato come da post più sopra
Per questo è importante che il sensore non si spenga mai: in questo modo non cambierà codice e la Rasp alla riaccensione tornerà a seguire solo quello che è programmata ad ascoltare (nel mio caso quello con ID "0005").
Se questa cosa risulterà essere importante potrebbe sì valer la pena di inserire un'apposita voce nel menu di configurazione del sensore RTL-SDR
Si prega Accedi a partecipare alla conversazione.
seven ha scritto: l'ID del sensore non viene assegnato arbitrariamente dalla Raspberry, ma viene trasmesso dal sensore stesso ad ogni invio di dati meteo.....
quello era chiaro
la Rasp conterrà il codice modificato come da post più sopra
se intendi questo
if ( station_id == "None" or station_id != "0005" ):
ok
ma la versione attuale non contiene questa modifica
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.