jmyg Posté(e) 15 octobre 2009 Partager Posté(e) 15 octobre 2009 Bonjour, j'ai fait un petit tcpdump sur ma ligne éthernet pour voir ce qui se passe lorsqu'on rapatrie les archives d'une station sur le site web http://www.weatherlink.com En fait c'est tout simple : cela fait appel à un script php sur le serveur de Davis. Exemple : (remplacez les ******* par les valeurs correspondant à votre station avec weatherlinkIP) [url=http://www.weatherlink.com/webdl.php?timestamp=323945700&user=********&pass=********&action=headers]http://www.weatherlink.com/webdl.php?timestamp=323945700&user=********&pass=********&action=headers[/url] pour avoir l'en-tête (qui donne le nombre de nouvelles données dispo) ou [url=http://www.weatherlink.com/webdl.php?timestamp=323945700&user=********&pass=*********&action=data]http://www.weatherlink.com/webdl.php?timestamp=323945700&user=********&pass=*********&action=data[/url] pour recevoir les données. Le codage pour le timestamp ainsi que le format des données doit correspondre à la norme définie pour tous les datalogger Davis. Je vais vérifier ça dans les jours à venir et écrire un petit script qui décodera tout ça que je posterai ici. Entre autres intérêts : pouvoir rapatrier les données pour StatIC facilement ;-) Lien à poster Partager sur d’autres sites More sharing options...
cigale26 Posté(e) 15 octobre 2009 Partager Posté(e) 15 octobre 2009 Bonjour, j'ai fait un petit tcpdump sur ma ligne éthernet pour voir ce qui se passe lorsqu'on rapatrie les archives d'une station sur le site web http://www.weatherlink.com En fait c'est tout simple : cela fait appel à un script php sur le serveur de Davis. Exemple : (remplacez les ******* par les valeurs correspondant à votre station avec weatherlinkIP) http://www.weatherlink.com//webdl.php?timestamp=323945700&user=********&pass=********&action=headers pour avoir l'en-tête (qui donne le nombre de nouvelles données dispo) ou http://www.weatherlink.com//webdl.php?timestamp=323945700&user=********&pass=*********&action=data pour recevoir les données. Le codage pour le timestamp ainsi que le format des données doit correspondre à la norme définie pour tous les datalogger Davis. Je vais vérifier ça dans les jours à venir et écrire un petit script qui décodera tout ça que je posterai ici. Entre autres intérêts : pouvoir rapatrier les données pour StatIC facilement ;-) excellente initiative, merci par avance. Lien à poster Partager sur d’autres sites More sharing options...
SauvianClim Posté(e) 15 octobre 2009 Partager Posté(e) 15 octobre 2009 excellente initiative, merci par avance. Bonsoir Jean-Marc et bonsoir à tous, Bravo pour cette excellente initiative. J'avais initié un sujet sur la possibilité de récupérer les données de Weatherlink par un moyen ou un autre de façon à les remonter sur StatIc. /index.php?showtopic=44570&st=0&p=976473'>http://forums.infocl...73entry976473 Cette discussion s'est terminée quand un adhérent vraisemblablement bien informé avait évoqué le fait que cette manip n'était pas possible pour un problème d'argent. Ce que j'ai pu constater c'est qu'aucun membre de StatIc n'est venu donner une version des faits : pourquoi ? Ce serait quand même interessant de connaitre la position de StatIc sur cette affaire Lien à poster Partager sur d’autres sites More sharing options...
Toulnono83 Posté(e) 16 octobre 2009 Toulon Partager Posté(e) 16 octobre 2009 Bonsoir, excellente initiative en effet "jmyg", je viens d'utiliser tes 2 scripts en y insérant les valeurs de ma station et ça marche. Reste à décrypter tout ça . Si tes essais aboutissaient ce serait super. Bon courage /emoticons/wink@2x.png 2x" width="20" height="20">. Lien à poster Partager sur d’autres sites More sharing options...
jpch84 Posté(e) 17 octobre 2009 Entrechaux Partager Posté(e) 17 octobre 2009 nous suivons ce post attentivement! Lien à poster Partager sur d’autres sites More sharing options...
jmyg Posté(e) 18 octobre 2009 Auteur Partager Posté(e) 18 octobre 2009 bonjour, comme je m'y attendais le codage des données suit la norme définie pour les archives des loggers Davis (pour les curieux, elle est disponible ici, page 28 : VantageSerialProtocolDocs_v230.pdf) En résumé, le timestamp se calcule de la façon suivante : timestamp = jour + mois*32 + (annee - 2000)*512;timestamp = timestamp * 65536;timestamp = timestamp + (100 * heure) + minute; Les données se présentent de la façon suivante (décrite page 28 du pdf ci dessus) : 00000000 4f 13 e5 04 07 02 07 02 06 02 00 00 00 00 0d 77 |O..............w|0000000 04943 01253 00519 00519 00518 00000 00000 3047700000010 18 02 11 00 7c 02 31 3f 04 06 05 05 ff 00 18 02 |....|.1?........|0000010 00536 00017 00636 16177 01540 01285 00255 0053600000020 ff 09 ff ff ff ff ff ff ff ff 00 ff ff ff ff ff |................|0000020 02559 65535 65535 65535 65535 65280 65535 6553500000030 ff ff ff ff 4f 13 e6 04 07 02 07 02 07 02 00 00 |....O...........|0000030 65535 65535 04943 01254 00519 00519 00519 0000000000040 00 00 0c 77 1d 02 17 00 7c 02 31 3e 04 06 05 05 |...w....|.1>....|0000040 00000 30476 00541 00023 00636 15921 01540 0128500000050 ff 00 1d 02 ff 09 ff ff ff ff ff ff ff ff 00 ff |................|0000050 00255 00541 02559 65535 65535 65535 65535 6528000000060 ff ff ff ff ff ff ff ff 4f 13 e7 04 06 02 07 02 |........O.......|0000060 65535 65535 65535 65535 04943 01255 00518 00519 On reconnait facilement la datestamp (04943), le timestamp (01253), l'outside temp (00519) , le high out temp (00519), le low out temp (00518), etc. Je n'ai plus qu'à adapter mon script qui tape directement sur le logger IP pour décoder ces pages. On note au passage que le logger IP envoie ces données d'archive une fois par heure au site weatherlink.com. Ca se confirme facilement sur la courbe de qualité du signal en voyant la chute régulière de signal associée à cet envoi. P.S. pour ceux qui veulent faire l'expérience par eux même, voici la procédure sous Unix : > wget "[url=http://www.weatherlink.com//webdl.php?timestamp=323945700&user=********&pass=*******&action=data]http://www.weatherlink.com//webdl.php?timestamp=323945700&user=********&pass=*******&action=data"[/url] -O webdl.data> hexdump -d webdl.data | more Lien à poster Partager sur d’autres sites More sharing options...
jpch84 Posté(e) 18 octobre 2009 Entrechaux Partager Posté(e) 18 octobre 2009 comme je m'y attendais le codage des données suit la norme définie pour les archives des loggers Davis (pour les curieux, elle est disponible ici, page 28 : VantageSerialProtocolDocs_v230.pdf) c'est plûtot ça le lien : http://www.davisnet.com/support/weather/download/VantageSerialProtocolDocs_v230.pdf Lien à poster Partager sur d’autres sites More sharing options...
jmyg Posté(e) 18 octobre 2009 Auteur Partager Posté(e) 18 octobre 2009 c'est plûtot ça le lien : http://www.davisnet.com/support/weather/download/VantageSerialProtocolDocs_v230.pdf oops oui, je corrige dans le poste Lien à poster Partager sur d’autres sites More sharing options...
giffre Posté(e) 18 octobre 2009 Partager Posté(e) 18 octobre 2009 timestamp = jour + mois*32 + (annee - 2000)*512;timestamp = timestamp * 65536;timestamp = timestamp + (100 * heure) + minute; Bonjour, Je ne suis pas d'accord avec ta formule au niveau du timestamp = timestamp * 65536, ça ne fonctionnera pas ! par contre tu a besoin de calculer le CRC 16 (avec permutation des 2 octets au passage) et de le passer pour que la console valide ton calcul et te réponde par un #ACK ou #NAK s'il y a un problème. Cela fonctionne ainsi dans mes programmes. pour le décodage du timestamp, voici un exemple en basic ProcedureDLL.w DecodeStamp(*DatetimeStamp, *Year1.w, *Month1.w, *Day1.w, *HeurePleine1.w, *minutes1.w) Variable.w = PeekW(*DateTimeStamp) & $FFFF *Year=(Variable >> 9)+2000 PokeW(*Year1,*Year) *Month=(Variable >> 5) & $F PokeW(*Month1, *Month) *Day=Variable & $1F PokeW(*Day1,*Day) *HeurePleine.w=(PeekW(*DateTimeStamp+2)) / 100 PokeW(*HeurePleine1,*HeurePleine) *minutes= (PeekW(*DateTimeStamp+2)) % 100 PokeW(*minutes1,*minutes) ProcedureReturn *YearEndProcedure Lien à poster Partager sur d’autres sites More sharing options...
jmyg Posté(e) 18 octobre 2009 Auteur Partager Posté(e) 18 octobre 2009 Bonjour, Je ne suis pas d'accord avec ta formule au niveau du timestamp = timestamp * 65536, ça ne fonctionnera pas ! Essaye tu seras surpris :-) C'est le simple décalage de 16 bits. Le timestamp que j'ai donné en exemple (323945700 ) correspond au 15 octobre 2009 à 12h52 timestamp = 15 + (10 * 32) + (2009 - 2000) * 512 = 4943 timestamp = timestamp * 65536 = 323944448 timestamp = timestamp + (100 * 12) + 52 = 323945700 Il y a confusion entre ce timestamp que l'on passe en paramètre du script php de Davis et les timestamps que tu trouves dans les paquets de données. par contre tu a besoin de calculer le CRC 16 (avec permutation des 2 octets au passage) et de le passer pour que la console valide ton calcul et te réponde par un #ACK ou #NAK s'il y a un problème. Cela fonctionne ainsi dans mes programmes. Il y a confusion entre ce qui est nécessaire lorsqu'on récupère directement les données sur le logger, où effectivement il y a un contrôle par CRC, et ce qu'on envoie et reçoit du site web weatherlink.com qui lui s'en passe (ce qui se comprend très bien, le contrôle se fait au niveau des trames IP). Par exemple, le site envoie les paquets de 52 octets les uns derrière les autres, tout simplement. Lien à poster Partager sur d’autres sites More sharing options...
jmyg Posté(e) 24 octobre 2009 Auteur Partager Posté(e) 24 octobre 2009 Voici le script en perl : ftp://www.meteo-avranchin.org/decodeWL.pl Quelques remarques : il est brut de décoffrage et se contente de convertir et d'afficher les données, mais il donne une idée de ce qu'il est possible de faire; il est sans commentaire mais se comprend de lui-même facilement, je pense, pour qui connait le langage; pour le tester, ne pas oubliez de mettre à jour les variables $user et $password correspondant à votre station, puis dans un terminal, et par exemple, tapez decodeWL.pl 2009 10 24 12 34 l'usage étant decodeWL.pl année mois jour heure minute (ATTENTION: il faut avoir Perl installé sur sa machine ainsi que quelques librairies CPAN, et wget: on trouve tout cela en général sur les distributions standard de linux) Lien à poster Partager sur d’autres sites More sharing options...
giffre Posté(e) 24 octobre 2009 Partager Posté(e) 24 octobre 2009 Voici le script en perl : ftp://www.meteo-avranchin.org/decodeWL.pl Quelques remarques : il est brut de décoffrage et se contente de convertir et d'afficher les données, mais il donne une idée de ce qu'il est possible de faire; il est sans commentaire mais se comprend de lui-même facilement, je pense, pour qui connait le langage; pour le tester, ne pas oubliez de mettre à jour les variables $user et $password correspondant à votre station, puis dans un terminal, et par exemple, tapez decodeWL.pl 2009 10 24 12 34 l'usage étant decodeWL.pl année mois jour heure minute (ATTENTION: il faut avoir Perl installé sur sa machine ainsi que quelques librairies CPAN, et wget: on trouve tout cela en général sur les distributions standard de linux) Bizarre ça ne fonctionne pas chez moi. J'ai pourtant vérifié CPAN et wget ! test@debian:~$ decodeWL.pl 2009 10 24 12 34 bash: decodeWL.pl: command not found Au préalable je rendu exécutable le script chmod +x decodeWL.pl Si tu as une idée ? Cordialement Lien à poster Partager sur d’autres sites More sharing options...
jmyg Posté(e) 24 octobre 2009 Auteur Partager Posté(e) 24 octobre 2009 Bizarre ça ne fonctionne pas chez moi. J'ai pourtant vérifié CPAN et wget ! test@debian:~$ decodeWL.pl 2009 10 24 12 34 bash: decodeWL.pl: command not found Au préalable je rendu exécutable le script chmod +x decodeWL.pl Si tu as une idée ? Cordialement tu n'as pas le répertoire courant dans ton PATH; essaye ./decodeWL.pl 2009 10 24 12 34 Lien à poster Partager sur d’autres sites More sharing options...
giffre Posté(e) 24 octobre 2009 Partager Posté(e) 24 octobre 2009 tu n'as pas le répertoire courant dans ton PATH; essaye ./decodeWL.pl 2009 10 24 12 34 oupss !effectivement j'avais déjà retesté avec "./" devant. C'est un bon début ! Je vais devoir me mettre à Perl pour comprendre ;-) Lien à poster Partager sur d’autres sites More sharing options...
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant