changement d'heure

Chargement d'une base de données depuis les fichiers wlk de Weatherlink.
Uniquement pour les station Vantages

Modérateurs : jturlier, Météo Villarzel

Avatar du membre
PascalWMR
Messages : 323
Enregistré le : 16 févr. 2014, 09:28
Localisation : CONFLANS EN JARNISY (F54800)
Contact :

Re: changement d'heure

Message par PascalWMR » 01 nov. 2018, 18:52

Re.

Si j'ai trouvé un bug à vp2sql. ;)
Celui ci se passe lors du passage de l'heure d'hiver vers l'heure d'été le dernier dimanche de mars.
Regardez cette page
https://www.monsite-meteo.eu/Page/Test% ... 0heure.php

En voici le code

Code : Tout sélectionner

<?php
// appel du script de connexion
require("../Scripts/mysqli_connect.php");                     
date_default_timezone_set('Europe/Paris');
//date_default_timezone_set('UTC');

echo("---------- Heure d'hiver vers Heure d'été ----------<br>");
$sql="SELECT tstamp, recdateUTC, recdateTZ FROM data WHERE recdateUTC>=201803250000 AND recdateUTC<=201803250300";
$query = mysqli_query($conn,$sql);                   
$list=mysqli_fetch_array($query);
$i=0;
while ($list = mysqli_fetch_assoc($query)) {      
	$tstamp[$i]=$list['tstamp']; 
	$DateUTC[$i]=$list['recdateUTC']; 
	$DateTZ_BD[$i]=$list['recdateTZ']; 
	$DecalageHoraire[$i]=date("I",$list['tstamp']);
	$DHRecalcule[$i]=date('d m Y H:i',$tstamp[$i]);
	echo("TsTamp: ".$tstamp[$i]." - Date UTC : ".$DateUTC[$i]." - Date TZ BDD : ".$DateTZ_BD[$i]." - Décalage : ".$DecalageHoraire[$i]." - Date Heure recalculée : ".$DHRecalcule[$i]."<br>");
	$i++;
};
mysqli_free_result($query);
echo("<br>---------- Heure d'été vers Heure d'hiver ----------<br><br>");

$sql="SELECT tstamp, recdateUTC, recdateTZ FROM data WHERE recdateUTC>=201810272355 AND recdateUTC<=201810280300";
$query = mysqli_query($conn,$sql);                   
$list=mysqli_fetch_array($query);
$i=0;
while ($list = mysqli_fetch_assoc($query)) {      
	$tstamp[$i]=$list['tstamp']; 
	$DateUTC[$i]=$list['recdateUTC']; 
	$DateTZ_BD[$i]=$list['recdateTZ']; 
	$DecalageHoraire[$i]=date("I",$list['tstamp']);
	$DHRecalcule[$i]=date('d m Y H:i',$tstamp[$i]);
	echo("TsTamp: ".$tstamp[$i]." - Date UTC : ".$DateUTC[$i]." - Date TZ BDD : ".$DateTZ_BD[$i]." - Décalage : ".$DecalageHoraire[$i]." - Date Heure recalculée : ".$DHRecalcule[$i]."<br>");
	$i++;
};
mysqli_free_result($query);
mysqli_close($conn);

?>
Après 00h55 UTC (donc 01h55 TZ) on passe directement à 02h00 UTC soit (04h00 TZ) au lieu de 01h00 UTC (donc 03h00 TZ)
Il manque donc une série de 12 données y compris dans la suite du tstamp (pour ce qui me concerne car j'ai un intervalle d'enregistrement de 5 minutes)
Après 01h55 TZ on devrait passer à 03h00 TZ et il ne devrait pas y avoir d'interruption dans les dates UTC.

Par contre il n'y a pas de problème lors du passage de l'heure d'été vers l'heure d'hiver

Les décalages que l'on trouvent sur les graphiques Highcharts sont bien dû à une mauvaise programmation PHP.
je cherche un moyen en prenant comme valeur pour les xAxis le tstamp non modifié et que les labels de l'axe et ceux du tooltip soit en heure locale.
Je suis en train de cogiter avec la fonction formatter: function du paramètre label de l'xAxis

Je pense qu'il faut se servir du tstamp comme valeur pour l'xAxis car il ne peut pas y avoir de doublon sur cet axe. Hors en recalculant ce tstamp en PHP comme on le fait, on créé des doublons lors du passage à l'heure d’hiver. Highchart shunte tout simplement la 1ère série de données lors de l'affichage.

A+
Pascal
Station VP2Plus, Windows 10 64 bits,WeatherLink 6.0.5, VP2SQL, Graphiques Dynamiques à partir d'une BDD MySQL
Météo Conflans-en-Jarnisy
Image

Avatar du membre
PascalWMR
Messages : 323
Enregistré le : 16 févr. 2014, 09:28
Localisation : CONFLANS EN JARNISY (F54800)
Contact :

Re: changement d'heure

Message par PascalWMR » 31 mars 2020, 16:39

Bonjours à tous

Tous les utilisateurs de VP2SQL savent qu'il y a un bug dans le programme, que Jean n'arrive pas à corriger sans mettre le brun partout.
Vu comment je me suis fait ch... pour écrire le script que je propose, je le comprend.

Le problème survient lors du passage de l'heure d'hiver vers l'heure d'été UNIQUEMENT le dernier dimanche de Mars
A 01h00 UTC inclus le jour du changement d'heure jusqu’à 00h00 inclus le lendemain, les tstamp ont un décalage de 3600 secondes en plus .
Par contre les données issues du fichier wlk sont bien les bonnes.
Mais pas toutes!!! En effet, VP2SQL comble le décalage le lendemain du changement d'heure à 00h05 en shuntant des séries de données.
Tout redeviens normal, les données correspondent bien au date et heures.
Il manque donc, pour ceux qui enregistrent les données avec un pas de 5 mn comme moi, 12 séries de données.

J'ai donc écrit un script PHP qui va corriger en partie, voir complètement pour les Puristes des données météo, ce décalage.
Ce script va corriger les champs tstamp faux et recalculer les recdateUTC, recdateTZ et AMJ de la table data.

Il va ensuite si vous le désirez, insérer, en fonction de votre pas d'enregistrement, le nombre de lignes shuntées par VP2SLQ en y mettant les champs tstamp, recdateUTC, recdateTZ et AMJ.
ATTENTION cependant, il n'insèrre que les champs énumérés ci-dessus.
Si vous optez pour cette option, il faudra compléter manuellement la table data avec les données du fichier wlk.
Si vous laissez les lignes vides, ça mettra caillons dans vos graphiques et dans les autres table (minimaxi NOAA_jour et NOAA_mois).

En ce qui me concerne, comme c'est un peu fastidieux à faire, j'ai corrigé le décalage sans insérer les lignes manquantes.

Pour ce faire voici la procédure.
  1. Stopper VP2SQL, c'est pas obligatoire mais ça mange pas de pain.
  2. Stopper impérativement NOAATableNews et CopieDB pour ceux qui l'utilise
  3. Dans mon script, renseigner SANS SE TROMPER les variables
    • Modifier le chemin d'accès au fichier d'accès aux bases de données (le mien s'appelle mysqli_connect.php )
    • $JourAjax = 29; --> jour du changement d'heure : Cette année le 29
    • $MoisAjax = 3; ---> mois du changement d'heure : Laisser comme ça car de toute façon c'est toujours au mois de mars.
    • $AnAjax = 2020; --> année concernée par la correction
    • $PED = 300; --> Ce nombre indique en secondes, le pas d'enregistrement de vos données 60 pour 1 mn 300 pour 5 mn
    Pour l'instant, vous pouvez faire un test à blanc. Vous pouvez exécuter le script pour voir le résultat, il ne modifie pas encore les données.
    • Décommenter les lignes $sql="UPDATE ... et $correction = mysqli_query($conn,$sql); en supprimant les 2 // en début de ligne
    Maintenant vous pouvez exécuter le script tel quel, il corrigera les tstamp faux.
    Mais si vous êtes un Puriste ou pointilleux :D des données météo,
    • Décommenter les lignes $sql="INSERT INTO ... et $ajout = mysqli_query($conn,$sql); en supprimant les 2 // en début de ligne
    Maintenant, exécutez le script. Il corrigera les tstamp faux ainsi que les autres champs en dépendant et ajoutera les lignes manquantes si vous avez choisi cette option
  4. Exécuter phpMyAdmin pour accéder à votre base de données.
  5. Supprimer des tables minimaxi, NOAA_jour, NOAA_mois et alldata toutes les lignes de données postérieures ou égales à la date de changement d'heure.
    Pour cette année (2020) toutes les lignes depuis le 29 03 inclus .
    Si vous avez pris l'OPTION PURISTES DE LA METEO c'est maintenant qu'il faut entrer manuellement toutes les données manquantes en les prenant du fichier wlk
  6. Lancer NOAATableNews et laissez-le finir sa mise à jour.
Voila les tables ont été corrigées.
Si vous utiliser CopieDB, bien sûr, sur les tables distantes, il faut supprimer toutes les lignes de données postérieure ou égale à la date de changement d'heure avant de relancer CopieDB.

Pour ce qui me concerne, j'ai corrigé tous les changements d'heure des derniers dimanche de mars depuis 2015 sans ajouter les lignes qui manquaient.

Pour ceux qui sont intéressé par ce scripts, contactez moi en MP je vous enverrai un lien de téléchargement.

A+
Pascal
Modifié en dernier par PascalWMR le 01 avr. 2020, 10:51, modifié 1 fois.
Station VP2Plus, Windows 10 64 bits,WeatherLink 6.0.5, VP2SQL, Graphiques Dynamiques à partir d'une BDD MySQL
Météo Conflans-en-Jarnisy
Image

Avatar du membre
jturlier
Administrateur du site
Messages : 393
Enregistré le : 10 déc. 2014, 10:20
Localisation : Sérignan 34410
Contact :

Re: changement d'heure

Message par jturlier » 31 mars 2020, 20:31

Bonsoir Pascal,
comme je l'ai déjà dit, malgré de multiples tentatives ayant créé d'autres problèmes, j'avais décidé de stopper mon effort.
Merci encore de ton implication, j'espère que tout le monde (ayant VP2SQL) appréciera ta solution, même si ça doit être manuel au moins elle existe.
Bonne soirée à tous et prenez soin de vous et de vos proches !
Amicalement
Jean

muchistic
Messages : 142
Enregistré le : 17 févr. 2014, 20:20
Localisation : Canejan (33)
Contact :

Re: changement d'heure

Message par muchistic » 31 mars 2020, 20:55

bonsoir à tous les deux

comme à chaque fois maintenant, il y a eu ce bug, mais sachant que ça aller revenir dans l'ordre le lendemain je ne me suis pas trop inquiété.
Je vais contacter Pascal afin de récupérer ce script et merci à lui pour son boulot.
Prenez tous soin de vous et de vos proches, un de mes proches en Italie est passer tout prés de la mort à cause de cette m....e.

Dominique
https://www.meteo-canejan.fr/

ma config : VP2sql , Weaterlink 6.03 , NOAAtable, minimaxibis (sonde agricole), Windows 10 .

Avatar du membre
PascalWMR
Messages : 323
Enregistré le : 16 févr. 2014, 09:28
Localisation : CONFLANS EN JARNISY (F54800)
Contact :

Re: changement d'heure

Message par PascalWMR » 11 avr. 2022, 14:04

Bonjour à tous

Comme chaque année, lors du changement d'heure, et pour le passage de l'heure d'hiver à l'heure d'été UNIQUEMENT, reviens le bug de VP2SQL.
Le jour du passage à l'heure d'été, c'est à dire le dernier dimanche du mois de mars, le tstamp, recdateUTC, recdateTZ et AMJ sont faux.
Le tstamp, le recdateUTC et le recdateTZ sont décalés de +1 heure (3600 secondes).
Le retour à la normale se produit le lendemain du jour de changement d'heure à 00h00. Cependant, lors de ce retour à la normale, une série correspondant à 1 heure de données est supprimée par VP2SQL.

J'ai par le passé partagé un script qui corrige ce décalage et permet de recréer partiellement les enregistrement supprimés. Mais ils fallait directement bidouiller les variables dans le script et une erreur n'était pas exclue.
J'ai donc réécrit ce script.

Pour l'exécuter, il suffit d’appeler la page Correction_BUG_VP2Sql.php
Elle se présente ainsi https://www.monsite-meteo.eu/Scripts/Co ... VP2Sql.php (clic droit, Ouvrir le lien dans un nouvel onglet)

Vous pouvez tenter de l'exécuter sur mon site, il ne se passera rien. Je m'explique.
Le script comporte des routines qui empêchent entre autre
  • De corriger la table data trop tôt (avant le lendemain du jour de passage à l'heure d'été).
  • De corriger plusieurs fois la table data.
  • De saisir une mauvaise date de changement d'heure.
Pour s'en servir, il suffit de renseigner correctement les champs
  • Jour et Année de la Date du passage à l'heure d'été (Mois est désactivé vu que c'est toujours le mois de Mars)
  • Le Pas d'enregistrement des données
  • De cocher ou Oui ou Non pour Reconstituer les enregistrements supprimés
Enfin, vous pouvez simuler la correction avant le l'exécuter pour de bon grâce à
l'option Oui de Voulez-vous simuler la requête avant d'exécuter la correction.
Pour exécuter la correction, il faut cocher Non dans Voulez-vous simuler la requête avant d'exécuter la correction.

Un tableau s'affichera vous montrant les données qui seront corrigées et ajoutées

Le mode d'emploi (si je peut dire) est affiché en haut de la page.
Je n'ai mis que 2 pas d'enregistrement des données; 1 et 5 minutes.
Si d'autres pas sont nécessaire, faite moi le savoir, je les ajouterai.

Je rappelle que ce script ne concerne que les utilisateurs de VP2SQL. Les autres softs de chargement de la table data de Jean n'ont à pas à priori ce bug.
Également, ce bug ne se produit que lors du passage à l'heure d'été au mois de mars.
Lors du passage à l'heure d'hiver, le dernier dimanche d'octobre, il n'y a pas de bug.
Vous pouvez corriger rétroactivement tous les changement d'heure d'été des années antérieures. Le script détecte s'il y a erreur ou non dans les données.

Dernier point, vous devrez entrer les paramètres de connexion à votre BDD dans le fichier mysqli_connect.php

Vous pouvez télécharger ce script ici https://www.monsite-meteo.eu/Download/CorrBugVP2Sql.zip

A+
Pascal

PS si vous utilisez ce script, faites moi le savoir. Merci
Station VP2Plus, Windows 10 64 bits,WeatherLink 6.0.5, VP2SQL, Graphiques Dynamiques à partir d'une BDD MySQL
Météo Conflans-en-Jarnisy
Image

JP54
Messages : 331
Enregistré le : 15 févr. 2014, 06:44
Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
Contact :

Re: changement d'heure

Message par JP54 » 11 avr. 2022, 17:52

Merci Pascal pour le script, je m'en occupe de week-end
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/

Répondre