j'ai finalement eu un peu de temps pour développer un script Python qui permet de faire la passerelle entre le format de fichier retourné par l'AAG SOLO sur le réseau et le format reconnu par Prism.
Pour rappel, mon AAG cloudwatcher est raccordé à l'AAG Solo lui-même raccordé au réseau de la box. Sous Prism, il faut configurer le moniteur de nuage sur "Boltwood CloudSensor II ou Sentinel Shelyak" et cocher "Fichier de sortie" en pointant vers le fichier retourné par ce script.
Voici le script en question, à copier dans un fichier ".txt" en renommant l'extension en ".py":
Code : Tout sélectionner
#!/usr/bin/python
# -*- coding: utf8 -*-
# Version du 03/08/17
# Script Python permettant de faire la conversion de fichier entre le fichier fourni par l'aag_solo sur le reseau ("aag_sld.dat) et le format de fichier reconnu par Prism
# Requis: un AAG Cloudwatcher et un AAG Solo, l'AAG Solo est raccorde au reseau de la box
# Version 3 de Python necessaire
# Commande de lancement dans une console python: exec(open('moniteur_nuage.py').read())
# Commande de lancement dans un fichier bat: python moniteur_nuage.py
# Format de donnees gere par Prism: Date Time T V SkyT AmbT SenT Wind Hum DewPt Hea R W Since Now()Day's c w r d [Mag] [Windir]
# Configuration sous Prism: configurer le moniteur de nuage sur "Boltwood CloudSensor II ou Sentinel Shelyak" et cocher "Fichier de sortie" en pointant vers le fichier retourne par ce script ('prism_sld.dat')
# Importation des modules
import time
import os
# Variables d'environnement
dossier_aag=r'\\AAGSOLO\\AAGSolo' #Dossier de l'AAG SOLO sur le reseau Windows, ce dossier doit contenir le fichier: 'aag_sld.dat'
dossier_prism='E:\\Bureau\\python_prism\\repertoire_prism' #Dossier arbitraire sur le PC local, Prism devra pointer vers ce dossier pour la lecture du fichier de sortie: 'prism_sld.dat'
nom_fichier_aag='aag_sld.dat'
nom_fichier_prism='prism_sld.dat'
interval_maj=10 #toutes les 10s
# Fonctions
def lecture(nom,tableau):
"""
Lecture d'un fichier mono_ligne
"""
fichier=open(nom)
table=fichier.readlines() #str (chaine de caracteres)
fichier.close()
for config in table:
ligne=config.split() #liste de str, suppression des espaces et tabulations
tableau.extend(ligne)
tableau=tableau[:-1] #enlevement du dernier caracteres, acces au tableau: tableau[i][j]
del table, ligne
return
def ecriture(nom,tableau):
"""
Ecriture d'un tableau dans un fichier
"""
table=str()
fichier=open(nom,'w')
fichier.write(tableau)
fichier.close()
while True:
# Attente
time.sleep(interval_maj)
# Ouverture du fichier retourne par l'aag_solo
data_aag_brut=[]
lecture(os.path.join(dossier_aag, nom_fichier_aag),data_aag_brut)
# Correction du format des donnees
nb_donnees=len(data_aag_brut)
data_aag=[]
if nb_donnees!=21:
for donnee in enumerate(data_aag_brut):
if donnee[0]==0 or donnee[0]==1 or donnee[0]==2 or donnee[0]==3: #Pas de probleme avec les quatre premieres donnees (date et temps , T et V)
data_aag.extend([donnee[1]])
else:
try:
float(donnee[1])
data_aag.extend([donnee[1]])
except: #Correction si un signe - est accole
correction=donnee[1].split('-')
nb_problemes=donnee[1].count('-')
position_ini=donnee[1].index('-')
if position_ini==0:
localisation=[1]
correction=correction[1:]
else:
localisation=[0]
for i in range(1,len(correction)):
localisation.extend([1])
for i in range(0,len(correction)):
if localisation[i]==0:
data_aag.extend([correction[i]])
else:
data_aag.extend([str(-float(correction[i]))])
else:
data_aag=data_aag_brut
# Mise en forme des donnees de l'aag
Date=data_aag[0]
Time=data_aag[1]
T=data_aag[2]
V=data_aag[3]
SkyT=data_aag[4]
AmbT=data_aag[5]
SenT=data_aag[6]
Wind=data_aag[7]
Hum=data_aag[8]
DewPt=data_aag[9]
Hea=data_aag[10]
R=data_aag[11]
W=data_aag[12]
Since=data_aag[13]
Now_day=data_aag[14]
c=data_aag[15]
w=data_aag[16]
r=data_aag[17]
d=data_aag[18]
Mag=data_aag[19]
Windir=data_aag[20]
# Creation du format reconnu par Prism
data_prism=Date.ljust(11)+Time+T.rjust(2)+V.rjust(2)+SkyT.rjust(6)+AmbT.rjust(6)+SenT.rjust(6)+Wind.rjust(8)+Hum.rjust(5)
data_prism+=DewPt.rjust(6)+Hea.rjust(4)+R.rjust(4)+W.rjust(2)+Since.rjust(6)+Now_day.rjust(13)+c.rjust(2)
data_prism+=w.rjust(2)+r.rjust(2)+d.rjust(2)+Mag.rjust(7)+Windir.rjust(5)
# Exportation du fichier au format Prism
ecriture(os.path.join(dossier_prism, nom_fichier_prism),data_prism)
En espérant que cela puisse être utile à quelqu'un.
Cordialement,
David