logo

Questa guida mostra come raccogliere dati dal bridge WiFi GW1000 utilizzando il driver weewx-interceptor.

Il GW1000 è prodotto da Fine Offset. Riceve segnali radio a 915 MHz da un vasto assortimento di sensori Fine Offset, quindi invia i dati tramite Wi-Fi a vari servizi online. Il bridge stesso è piccolo, alimentato tramite USB e non ha altra interfaccia se non un singolo pulsante e due LED. Include un sensore di pressione, temperatura e umidità incorporato all'estremità di un cavo da 1 metro collegato.

Non è necessario registrare un account Ecowitt per utilizzare questo sistema. Infatti, la rete su cui si installa il GW1000+Weewx+interceptor non ha nemmeno bisogno di essere connessa a Internet.

 

OCCORRENTE

 

Per lo meno hai bisogno di un GW1000! Quindi puoi aggiungere un numero qualsiasi di sensori, tra cui pluviometro, anemometro/direzione del vento, umidità del suolo, temperatura/umidità esterna e particolato. Avrai anche bisogno di un computer su cui eseguire Weewx.

OCCORRENTE DESCRIZIONE
GW1000 WiFi bridge
WH5360B Pluviometro
WS68 Anemometro con Lux e UV
WH51 Igrometro per il suolo
WH31 Temperatura/umidità
WH0290 Monitoraggio della qualità dell'aria
HP3501 Stazione meteo
WS80 Ultrasuoni 6 in 1

Queste parti sono prodotte da Fine Offset. Ecowitt sembra rimarchiare più parti Fine Offset rispetto ad altri fornitori, ma alcune sono disponibili anche presso Ambient e altri rivenditori.

 

PASSI DA SEGUIRE

 

Installa Weewx

Quando installi Weewx, seleziona Simulator quando richiesto per il tipo di stazione. Lo cambierai più tardi con Interceptor quando eseguirai il comando wee_config --reconfigure.

# install Weewx
wget -qO - http://weewx.com/keys.html | sudo apt-key add -
wget -qO - http://weewx.com/apt/weewx.list | sudo tee /etc/apt/sources.list.d/weewx.list
sudo apt-get update
sudo apt-get install weewx

# shut down Weewx
sudo /etc/init.d/weewx stop

# install weewx-interceptor extension and enable the driver
git clone https://github.com/matthewwall/weewx-interceptor.git
sudo wee_extension --install weewx-interceptor
sudo wee_config --reconfigure

Verificare che l'interceptor possa ricevere dati

In una finestra di terminale, esegui direttamente l'interceptor. L'opzione --port 8000 fa in modo che ascolti le richieste HTTP sulla porta 8000. Se si utilizza la porta predefinita 80, è necessario utilizzare sudo poiché sono necessari i privilegi di root per l'ascolto su una qualsiasi porta inferiore alla 1000.

PYTHONPATH=/usr/share/weewx python /usr/share/weewx/user/interceptor.py --device=fineoffset-bridge --port 8000 --debug

Ora inserisci un URL in un browser. Copia l'URL qui sotto e incollalo nel campo della posizione del tuo browser. Sostituire l'indirizzo IP 192.168.76.18 con l'indirizzo IP del computer che esegue Weewx. Questo URL è tipico di quello emesso dal GW1000.

http://192.168.76.18:8000/data/report?PASSKEY=XXX&stationtype=GW1000B_V1.5.5&dateutc=2019-12-29+16:27:27&tempinf=67.1&humidityin=39&baromrelin=30.138&baromabsin=30.138&freq=915M&model=GW1000

Nella finestra del terminale in cui è in esecuzione l'interceptor, dovresti vedere una risposta simile a questa:

raw data: PASSKEY=XXX&stationtype=GW1000B_V1.5.5&dateutc=2019-12-29+16:27:27&tempinf=67.1&humidityin=39&baromrelin=30.138&baromabsin=30.138&freq=915M&model=GW1000
raw packet: {'humidity_in': 39.0, 'temperature_in': 67.1, 'barometer': 30.138, 'usUnits': 1, 'dateTime': 1577636847}
mapped packet: {'inHumidity': 39.0, 'barometer': 30.138, 'inTemp': 67.1, 'usUnits': 1, 'dateTime': 1577636847}

Lasciare in esecuzione l'interceptor mentre si configura il GW1000 nel passaggio successivo.

Configura il GW1000

Segui le istruzioni fornite con il GW1000. Che sostanzialmente si riducono a:

  1. • Collegare il GW1000 a una porta USB. Il GW1000 utilizza solo la porta USB per l'alimentazione.

  2. • Installare l'app WSView su uno smartphone.

  3. • Utilizzando l'app WSView, connettersi al GW1000 e configuralo per utilizzare la rete WiFi locale.

  4. • Utilizzando l'app WSView, aggiungere eventuali sensori aggiuntivi al GW1000.

Se questi passaggi hanno avuto successo, dovresti vedere almeno i dati in tempo reale di temperatura, umidità e pressione nella pagina "Live Data" dell'app WSView.

Configura il GW1000 per inviare i dati a Weewx

Utilizzando l'applicazione WSView, configurare il GW1000 per inviare i dati a Weewx. In WSView, vai alla pagina "Weather Services". Da lì, premi i pulsanti "Next'" fino a raggiungere la pagina "Customized".

Server: IP address of computer running Weewx+interceptor
Path: /
Port: 8000

Nella finestra del terminale in cui è in esecuzione l'interceptor, dovresti vedere i dati dal GW1000 ogni 60 secondi.

Metti le impostazioni dell'interceptor nella configurazione di Weewx

Nel file di configurazione di Weewx /etc/weewx/weewx.conf modificare la sezione [Interceptor]. La porta deve corrispondere alla porta specificata nell'app WSView.

[Interceptor]
    driver = user.interceptor
    device_type = fineoffset-bridge
    port = 8000

Avvia Weewx

Per prima cosa esegui Weewx direttamente per assicurarti che la raccolta dei dati funzioni correttamente e che i dati vengano registrati nel database e nei report. Un minuto o due dopo, dovresti vedere i pacchetti LOOP che contengono i dati dai sensori, associati ai nomi dei campi del database come definiti nel tuo file sensor_map. Ogni 5 minuti dovresti vedere un archivio RECORD segnalato.

# run weewx directly to verify the data collection (ctrl-c to stop)
weewxd /etc/weewx/weewx.conf

Dopo aver verificato che funzioni correttamente, terminare weewxd. Ora puoi eseguirlo come demone in modo che continui a funzionare, anche dopo che ti sei disconnesso.

# run weewx as a daemon and forget about it!
sudo /etc/init.d/weewx start

Visualizzazione dei dati e personalizzazione dei report

Weewx salva i dati in un database SQLite in formato /var/lib/weewx.sdb. Puoi sfogliare i dati direttamente invocando lo strumento da riga di comando sqlite3:

sqlite3 /var/lib/weewx.sdb

Nella sua configurazione predefinita, Weewx inserirà i dati in una pagina situata in /var/www/html. Se hai una tastiera e un monitor collegati al computer Weewx, puoi visualizzare il rapporto direttamente in qualsiasi browser.

È possibile visualizzare il report in remoto installando un server web, come nginx, lighttpd o apache.

sudo apt-get install nginx

Quindi puoi visualizzare i report utilizzando un browser su qualsiasi computer/tablet/smartphone che può vedere il computer Weewx:

http://<name-or-addr>/weewx

Per personalizzare il report o aggiungerne altri, consultare la guida alla personalizzazione di Weewx.

 

RISOLUZIONE DEI PROBLEMI

 

Impossibile connettersi al GW1000 per configurarlo

Quando utilizzi l'app WSView per configurare il GW1000, potresti sperimentare timeout e messaggi relativi a "impossibile connettersi" o "connessione non riuscita". Prova a disattivare la rete dati sullo smartphone. Su alcuni ciò significa metterlo in modalità "aereo", ma lasciando il WiFi attivo.

Frequenza di aggiornamento

Nella sua configurazione predefinita, il GW1000 invia i dati ogni 60 secondi. Puoi regolare questo intervallo utilizzando l'app WSView.

Invio dati a ecowitt.net

Non appena si connette alla tua rete WiFi, il GW1000 tenta di inviare dati a un server su ecowitt.net. Se la rete WiFi è connessa a Internet, e a meno che tu non abbia già registrato un account su Ecowitt, il server di ecowitt.net rifiuterà la richiesta con una risposta come questa:

{"errcode":"40001","errmsg":"invalid passkey"}

Affinché i dati vengano accettati, è necessario registrarsi su ecowitt.net, quindi aggiungere l'identificatore hardware del proprio GW1000 al sistema. La registrazione non è necessaria per utilizzare il GW1000 con Weewx.

Sensori non segnalati

L'interceptor ha una LABEL_MAP che associa i nomi nella richiesta HTTP GET con i nomi di osservazione mappati ai campi del database. Se i tuoi sensori non segnalano, pubblica nel gruppo weewx-user in modo che possiamo aggiungere supporto per ogni tipo di sensore.

Versioni firmware

Se ti capita di avere un vecchio GW1000, l'app WSView potrebbe richiedere immediatamente di aggiornare il firmware sul GW1000. Probabilmente almeno il firmware v1.5.5, poiché a quel punto era stato aggiunto il supporto per un'ampia varietà di sensori. Il firmware 1.4 era piuttosto scarno.

Server temporali

Il GW1000 interroga i server NTP su 0.cn.pool.ntp.org, 1.cn.pool.ntp.org, ecc. Se vuoi evitare che il GW1000 venga tracciato al di fuori della tua rete, prendi in considerazione l'aggiunta di voci DNS nel tuo router per quegli host e reindirizza le query ai tuoi server NTP.

Impossibile collegarsi alla porta 80

Se c'è già un web server in esecuzione sul computer su cui verrà eseguito Weewx+interceptor, allora non sarai in grado di eseguire l'interceptor direttamente sulla porta 80.

Opzione 1: ascolta su un'altra porta

Configura il GW1000 per inviare i dati su una porta diversa da 80, diciamo 8000, quindi specifica quella porta nella stanza [Interceptor] nella configurazione di Weewx:

[Interceptor]
    ...
    port = 8000

Opzione 2: proxy inverso

È possibile aggiungere una configurazione proxy inverso al server Web, in modo che quando riceve una richiesta HTTP GET dal GW1000, inoltri tale richiesta a Weewx+interceptor. In questo caso, eseguirai l'interceptor su una porta diversa, ad esempio localhost:8000, quindi eseguirai il proxy inverso del server Web per qualsiasi /dato/report/richiesta di URL a quella porta.

Ad esempio, una configurazione del proxy inverso per nginx sarebbe simile a questa:

location /data/report/ {
  proxy_set_header X-Forwarded-Host $host;
  proxy_set_header X-Forwarded-Server $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://localhost:8000;
}
Autore: Matthew Wall