Citazione Originariamente Scritto da zoomx Visualizza Messaggio
Grazie alle richieste sul forum di @Danisira85, mentre andavo cercando delle soluzioni per poter registrare in locale i dati raccolti dal GW1000 (WeeWX e Cumulus) ho trovato questo script in python
GitHub - pjpeartree/rainmachine-ecowitt: Ecowitt direct connection parser for RainMachine smart sprinkler controller.
dove si vede che è il programma a chiedere i dati al GW1000 invece di mettere su un server tipo Wunderground e aspettare che il GW1000 li inserisca.
Il programma invia un pacchetto di 5 byte e riceve un pacchetto con tutti i dati.
Cercando lo stesso pacchetto in rete mi sono imbattuto daccapo in Cumulus MX, esattamente in questo file in C#
CumulusMX/GW1000Station.cs at master . cumulusmx/CumulusMX . GitHub
dove si vede che il pacchetto di cui parlavo prima è in realtà composto da una testata di 3 byte e un comando fra quelli elencati nell'array di byte Commands.

Il file in pyton mostra un ulteriore pacchetto di 5 byte che permette di scoprire l'IP del GW1000 da parte di un programma.
Il pacchetto è composto da questi byte FF FF 12 03 15 (in esadecimale!) e va mandato in broadcast, ciioè a tutti i dispositivi che si trovano su una LAN (di solito IP 255.255.255.255) sulla porta 46000. Il GW1000 dovrebbe rispondere con un pacchetto con il suo IP.


A questo punto se si manda il pacchetto di byte FF FF 27 03 2A il GW1000 risponde con un pacchetto di dati.
In questo pacchetto i primi 3 byte saranno daccapo FF FF 27 cui seguiranno 2 byte che indicano la lunghezza del pacchetto che comprende i dati veri e propri.

Questi vanno decodificati a gruppetti partendo dal primo byte, il quale indica di quale sensore sensore si tratta, seguono la misura presa dal sensore che può essere di 2 byte (tipo la temperatura, la pressione e altri) o di un solo byte (come l'umidità, la radiazione UV e altri). Pioggia mensile e pochi altri hanno invece la dimensione di 4 byte.

Alla fine c'è un identificativo che precede un gruppo di 16 byte che codificano per lo stato delle batterie dei sensori e un byte di controllo dell'integrità dei dati (chechsum).

Io non ne sono capace ma credo che con queste informazioni è possibile realizzare una App per Android in grado di chiedere i dati al GW100o e registrarli su Android, come proposto da Danisira85
beh, che dire, sei sempre una miniera di informazioni su questi aspetti
allora animo, un premio a chi riuscirà a realizzare un app con le caratteristiche richieste, un semplice display dati, possibilità di scegliere il tempo di campionamento, esportazione dati in csv con possibilità di scegliere l'intervallo (24 ore/48 ore/settimana/mese/anno o intervallo a scelta dell'utente)

Mauro