Information sur le pluviomètre

This commit is contained in:
Antoine Van Elstraete 2018-09-24 21:46:33 +02:00
parent 099ff11505
commit 31edc01c5e

View File

@ -8,6 +8,7 @@ d'un dongle DVB-T de type RTL-2838
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
from datetime import datetime from datetime import datetime
from time import sleep
import subprocess import subprocess
import urllib.request import urllib.request
import json import json
@ -18,7 +19,7 @@ logging.basicConfig(
format='[METEO] - %(asctime)s - %(message)s', format='[METEO] - %(asctime)s - %(message)s',
datefmt='[%d/%m/%Y %H:%M:%S]') datefmt='[%d/%m/%Y %H:%M:%S]')
API_URL = "http://127.0.0.1:8088/api/meteo" API_URL = "http://127.0.0.1/api/meteo"
RTL_SDR_FREQ = 868304625 RTL_SDR_FREQ = 868304625
''' '''
Il semble que l'état des piles modifié l'offset de la température Il semble que l'état des piles modifié l'offset de la température
@ -44,6 +45,10 @@ def getweather():
linéaire sur une vingtaine de mesure. linéaire sur une vingtaine de mesure.
Pour le pluviomètre, il s'agit d'un compteur relatif ; la valeur est Pour le pluviomètre, il s'agit d'un compteur relatif ; la valeur est
stockée pour pouvoir effectuer une différence avec la précédente. stockée pour pouvoir effectuer une différence avec la précédente.
Ensuite, pour afficher les mêmes valeurs que sur la station méto "officielle",
il faut utiliser la formule suivante :
0.3*(((np.sum(pluie)/2)*10)//3)
avec np.sum la somme des enregistrements sur une période donnée (1h, 24h, ...)
''' '''
timestamp = datetime.now().timestamp() timestamp = datetime.now().timestamp()
@ -106,14 +111,30 @@ def getweather():
logging.error("Aucune donnée reçu !") logging.error("Aucune donnée reçu !")
return None return None
elif "Signal caught" in line: elif "Signal caught" in line:
### Specifique à FreeBSD
### TODO : adapter à GNU/Linux
logging.error("Erreur de communication !") logging.error("Erreur de communication !")
# p = subprocess.Popen(
# ["sudo", "usbconfig"],
# stdout=subprocess.PIPE,stderr=subprocess.PIPE)
# stdout, stderr = p.communicate()
# ports = stdout.decode().splitlines()
## for port in ports:
# if "Realtek" in port:
# port_meteo = port.split()[0].split(':')[0]
# logging.info("Redémarrage de port USB... ({})".format(port_meteo))
# p = subprocess.Popen(
# ["sudo", "usbconfig", "-d", port_meteo, "reset"],
# stdout=subprocess.PIPE,stderr=subprocess.PIPE)
# stdout, stderr = p.communicate()
sleep(10)
return None return None
if frame: if frame:
with open("/home/antoine/station_meteo.log", "a") as logfile: with open("/home/antoine/station_meteo.log", "a") as logfile:
logfile.write(str(frame) + "\n") logfile.write(str(frame) + "\n")
if -20 <= t <= 60 and 0 <= h <= 100 and r <= 10: if -20 <= t <= 60 and 0 <= h <= 100 and r < 10:
donnees_meteo = { donnees_meteo = {
'date': float(timestamp), 'timestamp': float(timestamp),
'temp': float(t), 'temp': float(t),
'hum': int(h), 'hum': int(h),
'wind': float(w_median), 'wind': float(w_median),