F1ZBV: Lola prête pour l’hiver

lola-neige-2Lola est maintenant prête pour l’hiver, cette nouvelle fonction permettra de diffuser sur demande (code DTMF) les hauteurs de neige dans les Vosges. J’ai travaillé avec Stéphane F4HDW dans la réalisation de cette fonction.

Principe de fonctionnement:
Une commande va charger la page :http://www.hauteurdeneige.com/hauteur-de-neige/la-bresse-hohneck.html

capture-hauteur-de-neigeDans cette page nous allons extraire les données qui nous intéresses. Dans notre cas, il s’agit de la date et l’heure des relevés, la hauteur de neige au sommet et au niveau des pistes, ainsi que les dernières chutes de neige.

capture-script-hauteur-de-neige

Voici ce que cela donne en retour du script lors des tests.

Voici maintenant à quoi ressemble le script et comment le mettre en place:

Dans Logic.tcl en début de fichier ajouter:

[sourcecode language=”bash”]
#

# Add http library

#

package require http
[/sourcecode]

Nous ajoutons la librairie web au code Tcl.

Toujours dans Logic.tcl, ajouter cette fonction:

[sourcecode language=”bash”]
#
#Function search snow data on webpage
#

proc trouveChaine { chaineAvant chaineApres chaineOrigine } {
set ptr [string first $chaineAvant $chaineOrigine]
set ptrDeb [ expr { $ptr + [ string length $chaineAvant ] } ]
set ptrFin [ expr { [string first $chaineApres $chaineOrigine $ptr] – 1 }]

return [string range $chaineOrigine $ptrDeb $ptrFin]
}

[/sourcecode]

Il s’agit d’une fonction de recherche qui permet d’extraire un texte entre 2 chaines.
exemple de recherche:

[sourcecode language=”bash”]
set resultat1 [ trouveChaine "

<div class=\"val-enneigement-haut\" "<" "cm/div>"" $zedata ]
[/sourcecode]

Trouver la chaine entre < et cm</div> on obtiendra bien la valeur de la hauteur.
Regardons le code source de la page web:
capture-web-hauteur
Vous pourrez donc adaptez ce code à votre besoin en indiquant dans votre recherche les chaînes qui encadrent la valeur que vous voulez extraire. Il suffira de visualiser le code source de la page.

[sourcecode language=”bash”]
#
#HAUTEUR DE NEIGE
#

if {$cmd == "99"} {

set url "http://www.hauteurdeneige.com/hauteur-de-neige/la-bresse-hohneck.html"
set r [http::geturl $url]
set zedata [http::data $r]
http::cleanup $r

puts "Hauteur de neige"
playMsg "SVXCard/Snow" "releveneige";

set resultat1 [ trouveChaine "

<div class=\"val-enneigement-haut\" ">" "cm/div>" $zedata ]
set resultat2 [ trouveChaine "

<div class=\"val-enneigement-bas\" ">" "cm/div>" $zedata ]
set resultat3 [ trouveChaine "

<div class="\"val-derniere-chute\" ">" " cm/div>" $zedata ]
set resultat4 [ trouveChaine "<span class=\"date-derniere-mise-a-jour\" ">" "</span>" $zedata ]
set jour [string range $resultat4 3 4]
set mois [string range $resultat4 6 7]

#Jour du relevé
playNumber $jour
playMonth $mois
playFourDigitNumber $annee
puts "+++++++++++++++++++++++++"
puts "+ Relevés en date du: +"
puts "+ $resultat4 +"
puts "+++++++++++++++++++++++++"
puts ""
puts "Neige à 1350M:$resultat1 cm"
puts "Neige à 900m:$resultat2 cm"
puts "Chute de neige:$resultat3 cm"
playMsg "SVXCard/Snow" "neigestation";
playNumber $resultat1;
playMsg "SVXCard/Snow" "cm";
playMsg "SVXCard/Snow" "neigehaut";
playNumber $resultat2;
playMsg "SVXCard/Snow" "cm";
playMsg "SVXCard/Snow" "chute";
playNumber $resultat3;
playMsg "SVXCard/Snow" "cm";
return 1 }
[/sourcecode]

Nous intégrons le code toujours dans Logic.tcl dans la partie des codes DTMF.
Et voila votre nouvelle fonction d’information des hauteurs de neige est intégrée à votre relais.

Vidéo de démonstration après mise en place sur F1ZBV.

Conclusion:
Nous aurons l’occasion d’en profiter en hiver, reste à voir la qualité des données entrées et la fréquences des mises à jour. Dans quelque mois nous le saurons….

Vous pouvez recevoir un email dès la parution d’un article sur le Blog F8ASB.COM, entrez votre mail sur la fenêtre à droite et cliquer sur abonnement. Tous les articles en 1 clic ICI
Ce contenu a été publié dans informatique, radioamateur, Relais F1ZBU /F1ZBV. Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Time limit is exhausted. Please reload CAPTCHA.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.