Interceptor Wifi sur la Froggit – WH6000 : de la théorie …. à la pratique

janvier 11, 2021

Dans le dernier article publié, je vous ai expliqué comment on pouvait utiliser une extension (Interceptor téléchargeable ici https://github.com/matthewwall/weewx-interceptor ) pour “détourner” les datas de la station.

Oui mais voilà , de la théorie à la pratique ce n’est pas si simple.

J’avais échangé avec Patrick , une personne qui a la même station (la FROGGIT WH-6000) et qui,  pareil voulait être indépendant des services Weather Undeground  et qui m’avait contacté à travers  mon formulaire (puis par téléphone).

Il avait bien étudié le système et m’avait fourni un fichier docx  pour l’installation du système.

De la théorie à la  pratique  , première partie

Dans un premier temps, j’ai testé l’extension sur un rpi de test , un weewx + l’extension Interceptor , avec quelques difficultés pour installer le package libpcap , ca a fonctionné et 2 3 lignes de commandes plus tard le systeme etait fonctionnel.

Oui  mais  il faut transposer depuis mon raspberry de test sur  le rpi2 de production.

De la théorie à la  pratique  , deuxième partie

J’ai  donc décidé de préparer mon raspberry Pi de “production” pour passer dans ce mode de fonctionnement.

1er problème :  j’avais désactivé la partie WIFI (dongle USB)  : impossible de réactiver le wifi sur le raspberry : le dongle est bien détecté mais le driver est introuvable.

La solution  : 

#rpi-update

et un reboot de la bête.

2ème problème  :  Paramétrer le wifi ( on trouve ca facilement sur le net , prendre le bon SSID / le bon mot de passe Wifi et générer la clef wpa-psk, pour l’instant la carte est en DHCP mais je pense que  je vais fixer l’ip de la carte reseau Wifi , à suivre donc ….

3ème problème :  Installer le pre-requis pour que l’installation de Interceptor fonctionne :   python-libpcap

C’est cette partie qui ma donné du fil a retordre , impossible de faire un apt-get etc  …  , je me suis donc lancer dans la recherche de  la librairie au format .deb

Après de nombreuses recherches et de tentatives , j’ai enfin trouvé LA solution  :  

il faut aller ici  : https://packages.debian.org/jessie/python-pypcap

puis trouver la bonne architecture  armhf

et enfin trouver le “bon” dépôt  :  http://ftp.fr.debian.org/debian/pool/main/p/python-pypcap/python-pypcap_1.1.2+debian-2.2_armhf.deb

 wget  http://ftp.fr.debian.org/debian/pool/main/p/python-pypcap/python-pypcap_1.1.2+debian-2.2_armhf.deb

Pour l’installation , il suffira de passer par l’outil dpkg pour l’installer.
 

dpkg -i python-pypcap_1.1.2+debian-2.2_armhf.deb

 

L’installation de Interceptor  

j’ai 2 stations Météo  une Oregon  Scientifics WMR200 ( qui donne des signes de faiblesse) et la station FROGGIT, on peut tout à  fait faire cohabiter 2 voir 3 stations sur le même weewx, (j’ai fait un article la dessus).

L’installation de l’extension Interceptor doit se faire en indiquant dans quel fichier de configuration il doit s’installer, puisque je ne vais intercepter que les données de la FROGGIT.

1ere étape  :  Téléchargement et installation

wget -O weewx-interceptor.zip https://github.com/matthewwall/weewx-interceptor/archive/master.zip
/home/pi/weewx-4.2.0/bin/wee_extension –install weewx-interceptor.zip

2ème étape : Paramétrage de l’extension dans le fichier de configuration

/home/pi/weewx-4.2.0/bin/wee_config --reconfigure --driver=user.interceptor --no-prompt --config=/home/weewx/FROGGIT.conf

 

3ème étape

le contenu  du fichier de configuration de FROGGIT.conf :

##############################################################################
[Interceptor]
# This section is for the network traffic interceptor driver.
# The driver to use:
driver = user.interceptor
# Specify the hardware device to capture. Options include:
# wu-client - any hardware that uses the weather underground protocol
device_type = wu-client
mode = listen
iface = wlan0
pcap_filter = src 192.168.0.36 and dst port 80
##############################################################################

le driver c’est wu-client et le mode sniff ne fonctionne pas chez  moi il a fallu que  je mette en mode listen , je vais “écouter” sur le port 80 (port classique du http) et l’adresse (192.168.0.36) de la station FROGGIT (il suffit d’utiliser un logiciel gratuit du type https://www.advanced-ip-scanner.com/fr/)

Les tests !  

j’ai réintégré la station FROGGIT  dans mes 2 instances ( fichier weewx-multi sous /etc/default/ , rajout de la valeur “FROGGIT”.)

root@raspberrypi:/home/pi# cat /etc/default/weewx-multi
WEEWX_INSTANCES="WMR200 FROGGIT"
root@raspberrypi:/home/pi#


J’ai passé également la station FROGGIT en mode debug en modifiant la ligne debug= 0 ( zero)  à debug = 1  tout au début du fichier de configuration de FROGGIT.conf 

Puis on stoppe et et on exécute weewx à nouveau  :

# service weewx stop
# service weewx start
# service weewx status

 

Vous pouvez exécuter également l’extension de façon autonome  :

PYTHONPATH=/usr/share/weewx python2 /home/pi/weewx-4.2.0/bin/user/interceptor.py --device=wu-client --mode=listen  --iface=wlan0 --filter="src 192.168.0.36 and dst port 80"

et voici les logs (dans  /var/log/syslog)  :

Jan 10 21:06:22 raspberrypi interceptor.py: interceptor: MainThread: mode is sniff
Jan 10 21:06:22 raspberrypi interceptor.py: interceptor: MainThread: sniff iface=wlan0 promiscuous=0
Jan 10 21:06:22 raspberrypi interceptor.py: interceptor: MainThread: sniff filter 'src 192.168.0.36 and dst port 80'
Jan 10 21:06:22 raspberrypi interceptor.py: interceptor: MainThread: pypcap (1.1)
Jan 10 21:06:22 raspberrypi interceptor.py: interceptor: ServerThread: start sniff server
Jan 10 21:09:13 raspberrypi interceptor.py: interceptor: MainThread: mode is listen
Jan 10 21:09:13 raspberrypi interceptor.py: interceptor: MainThread: listen on :80
Jan 10 21:09:13 raspberrypi interceptor.py: interceptor: ServerThread: start tcp server
Jan 10 21:09:21 raspberrypi interceptor.py: interceptor: ServerThread: GET: ID=Station&PASSWORD=XXXX&action=updateraww&realtime=1&rtfreq=5&dateutc=now&baromin=30.95&tempf=32.0&humidity=95&windspeedmph=0&windgustmph=0&winddir=34&dewptf=30.7&rainin=0&dailyrainin=0&UV=0&indoortempf=68.0&indoorhumidity=52
Jan 10 21:09:21 raspberrypi interceptor.py: interceptor: MainThread: using rain_total 0.0 from dailyrainin

Conclusion

 Ca fonctionne donc avec un peu de recherches ( surtout pour la libraire pytohon-libcap) 

J’avais posté une aide dans le groupee Google de Weewx  :

https://groups.google.com/g/weewx-user/c/U0I3vP5AZlo/m/GskZKLS-BwAJ

 

La prochaine étape : la mise en réelle production ( suppression de Weather Undeground comme source fiable et utilisation du sniffer Wifi )