Forum GraphWeather

Forum d'aide GraphWeather
Nous sommes actuellement le Jeu Mars 28, 2024 1:38 pm

Le fuseau horaire est UTC+1 heure




Publier un nouveau sujet Répondre au sujet  [ 27 message(s) ]  Aller vers la page 1, 2  Suivant
Auteur Message
MessagePublié: Dim Mai 25, 2008 10:05 pm 
Hors-ligne
Site Admin
Avatar de l’utilisateur

Inscription : Lun Mars 20, 2006 11:16 am
Message(s) : 3356
Localisation : Montréal
Avant de commencer merci à Jean (jturlier) d'avoir rédigé ce manuel d'aide.


Ce sujet est destiné à traiter les questions et solutions concernant l'utilisation des bases de données relationnelles dans leur utilisation avec Graphweather.

Avant de commencer il faut définir un terme d'une façon trèèèèèèès synthétique :
SGDB : les SGDB (systèmes de gestion de bases de données) sont composés de deux ensembles
• Un moteur – qui est un ensemble de programmes qui permettent de lire, d'écrire des données
• un espace de stockage, la base de données qui contient des tables.
Les données y sont enregistrées dans des tables qui ne sont pas organisées d'une façon séquentielle comme les fichiers que nous connaissons habituellement : chaque donnée est repérée dans la table par un nom de champ et un index qui permettent d'y accéder. Quand on accède à une donnée, toutes celles qui concernent l'enregistrement correspondant sont aussi disponibles.

Pour interroger une base de données on envoie au moteur une requête (Query) écrite dans un langage avec une syntaxe, une orthographe et une grammaire, qui concerne une ou plusieurs tables. Le plus courant est SQL (Structured Query Language). Graphweather l'utilise en pure conformité depuis sa version 2.

La première question que l'on se pose en général est : quels sont les SGDB que l'on peut utiliser avec Graphweather ? En fait on peut dire que tous les SGDB relationnels (par opposition à orientés Objet) sont supportés par Graphweather.

Pour ne citer que quelques uns(gratuits), MySQL qui est l'un des plus populaires sur le marché, (mais pas conforme à 100% avec le langage SQL), DB2 (pas gratuit IBM), PosgreSQL, Access (pas gratuit Microsoft) , MS SQL 2005 express ( fait partie de Visual studio express ) ... et d'autres !

Un point très important, tous ces moteurs doivent avoir un pilote ODBC installé sur la machine, pour pouvoir communiquer avec Graphweather.

Nous allons maintenant nous intéresser à ce que nous devons paramétrer :
Nous avons une base de données sur notre machine, elle contient une table et que Graphweather va interroger.
Cette table a des champs, date et heure, température extérieure ... en face, nous avons Graphweather qui a des noms de sondes.

• Option
• Général
• Sources de données
• Base -Source de données

• Choisir le « Plugin MySQL.dll »
• Renseigner les paramètres de connection
• Serveur (en général « locahost » )
• Utlisateur
• Mot de passe
• Base de donnée (réceptacle de notre table)
• Date et heure des enregistrements : nous devons connaitre le type de champ que nous allons utiliser (Unix ou Date et heure formatée)
• Timestamp Unix : donner le nom du champ
• Date et heure formatée soit sous la forme d'un champ date + heure, sois sous la forme de 2 champs, un pour la date et un pour l'heure
• Correspondance sonde/champ SQL : en face du nom de chaque sonde qui nous concerne, inscrivons le nom du champ correspondant, de notre table.

Cette procédure est la plus simple, puisque c'est l'application de ce qui se fait pour tous les autres plugins de Graphweather.

Nous allons maintenant nous intéresser à l'utilisation d'un autre SGDB. Prenons par exemple PosgreSQL (mon préféré ... mais c'est un choix personnel)

Au démarrage de Graphweather, nous n'allons pas pouvoir commencer à paramétrer notre plugin « mysql.dll », nous allons uniquement indiquer que c'est « mysql.dll » (cela va nous créer graphweather\plugins\MySQL_Base.cfg) puis fermer l'application.

Nous allons maintenant devoir éditer
1. graphweather\config.cfg

[PLUGIN_BASE]
Plugin=MySQL.dll
Source00=NomDeMaTable (SQL Ne tolère pas les espaces ou caractères spéciaux)

2. graphweather\plugins\MySQL_Base.cfg
[SQL]
Server=localhost
Base=MaBaseDeDonnées
Login=GW
Driver=PostgreSQL ANSI --> ici, nous devons connaître le nom du pilote ODBC
Password=CSecret

Maintenant nous pouvons démarrer Graphweather, et terminer le paramétrage : nom du champ « date et heure », correspondance Sonde / Champ SQL.


Utilisation d'autres SGDB : c'est identique à 100% à PosgreSQL à un détail près... le pilote ODBC.

Maintenant passons aux voeux pour de futurs améliorations :
Dans un premier temps : la possibilité du choix du pilote ODBC soit en listbox soit même en textbox, et permettre la sélection d'un port autre que le standard.
Dans un second temps la possibilité d'utiliser un DNS ce qui permettrait d'utiliser des moteurs internes à Windows spécifiques à certains types de tables. (au prix d'un paramétrage par l'utilisateur des ODBC dans les outils d'administration)
Mais comme disait Monsieur Kipling... ceci est une autre histoire !


Haut
 Profil  
Répondre en citant  
MessagePublié: Mar Mai 27, 2008 12:49 pm 
Hors-ligne
Membre

Inscription : Mer Mai 16, 2007 8:46 pm
Message(s) : 23
:oops:


Bonjour,
Tres tres bien, mais on ne dit pas ce que à quoi cela sert, et donc ce que l'on veut faire (des le debut du tuto par exemple )

Merci d'eclairer ma lanterne


Haut
 Profil  
Répondre en citant  
MessagePublié: Mar Mai 27, 2008 3:01 pm 
faure259 a écrit:
:oops:
Bonjour,
Tres tres bien, mais on ne dit pas ce que à quoi cela sert, et donc ce que l'on veut faire (des le debut du tuto par exemple )
Merci d'eclairer ma lanterne

Même question : que sont les bases de données relationnelles ?


Haut
  
Répondre en citant  
MessagePublié: Mer Mai 28, 2008 12:02 pm 
Hors-ligne
Membre
Avatar de l’utilisateur

Inscription : Mar Août 22, 2006 8:38 am
Message(s) : 3143
Localisation : 34410 Sérignan - Languedoc
rene a écrit:
faure259 a écrit:
:oops:
Bonjour,
Tres tres bien, mais on ne dit pas ce que à quoi cela sert, et donc ce que l'on veut faire (des le début du tuto par exemple )
Merci d'eclairer ma lanterne

Même question : que sont les bases de données relationnelles ?


Bonjour,
dans mon esprit, ce bref exposé était destiné aux personnes qui se posaient des questions sur l'utilisation de leur base de données dans leur environnement Graphweather existant : certains logiciels de support des stations utilisent en effet des bases de données et non pas des fichiers séquentiels.
Votre demande est légèrement différente, mais je vais donc tâcher de répondre à ces questions d'ordre général, d'autant que certains membres de la communauté pourraient souhaiter, moyennant des utilitaires extérieurs (par exemple GraphweatherPhp) , transférer leurs fichiers existants vers une table de base de données.

*********************************
Que sont les bases de données

Le seul moyen que la plupart des utilisateurs connaissent pour enregistrer des données ce sont les fichiers séquentiels : on écrit puis on lit chaque enregistrement ligne par ligne, et que quand on veut en lire un qui est au milieu du fichier, on doit lire toutes le lignes précédentes.

Il existe d'autres solutions, dont celle couverte par le sujet très général des bases de données relationnelles.

Une base de données est le lieu de stockage d'un certain nombre d'informations.
Ces informations sont organisées non pas en fichiers mais en tables. Dans chaque table on trouve plusieurs champs dont les noms généralement décrivent ce qu'on va trouver dedans : par exemple dans notre table météo on va avoir un champ qui concerne la date et l'heure, un autre pour la température extérieure, le point de rosée, ...
Du fait de leur organisation spatiale, chaque morceau d'un même enregistrement est accessible soit par son nom, soit par son contenu. Comment sait-on où se trouve tel ou tel nom ? grace à des pointeurs qui gardent trace de l'endroit ou chacune des valeurs est stockée.
J'essaie de m'expliquer : si on recherche toutes les données qui concernent une date et une heure le moteur va utiliser un index qui trouvera directement sur la date qui nous intéresse, et des pointeurs qui indiqueront où sont la température, le point de rosée... qui concernent cette date et heure (Très schématiquement !!!)
mais on peut aussi rechercher toutes les dates et heures pour lesquelles on a eu une température supérieure à 24°. Vous me direz qu'on peut aussi faire ça sur des fichiers séquentiels, c'est vrai, mais pas à la même vitesse, par exemple pour un fichier de 5 millions d'enregistrements, il faudra plusieurs heures, alors que sur une table quelques centièmes de secondes seront généralement suffisants.
Maintenant pourquoi "relationnel", tout simplement parce qu'une même table contient généralement des données de types homogènes, et il nous faudra plusieurs tables, une pour chaque type de données homogènes de notre application. Toutes ces tables auront des liens bivalents entre elles, certaines pouvant être reliées au travers d'une cascade de plusieurs autres.

Exemple les "fichiers" d'un services du personnel,
Dans une table on va avoir : le matricule, le nom, le numéro de service, l'age, le coefficient ... Ces données sont homogènes et concernent un seul individu.
Mais qu'en est-il des caractéristiques de son service ? On pourrait le mettre, bien sûr, mais au prix d'un manque d'homogénéité
Eh bien dans une autre table on va trouver les données concernant chacun des services : le Numéro de service, le matricule du manager, le lieu ou se trouve le service, son nom, le département auquel il appartient ...

Vous commencez à voir ?
si on demande : Quels sont les personnes nées en 1978 et qui sont à Montréal ? Facile direz vous on n'a pas besoin de tout ça. On sait qui c'est.
En langage SQL on va dire au moteur qui gère la base de données : SELECT Nom,lieu,coefficient from tabledesnoms, tabledesservices WHERE lieu="montreal" AND anneedenaissance=1978 AND tabledesnoms.numerodeservice=tabledesservices.numerodeservice
Ce mot "relationnel" prend ici sa signification : on utilise le champ numerodeservice de chacune des 2 tables pour créer une relation entre elles et faire notre recherche.

Si vous devez créer une base de données, la première et plus importante des tâches est de bien réfléchir à sa structure, car ce sera vital pour ses performances qui seront affectées de manière significative.
Il faut tout simplement garder en mémoire que c'est en fait un peu comme quand vous étiez en primaire et que vous appreniez le PPCD : on cherche le plus petit élément commun à plusieurs types de données pour les relier entre elles.

Précédemment, j'ai bien écrit "le moteur", parce que quel qu'il soit (MySQL, SQLServer, MSSQL, Oracle ...) c'est toujours la même syntaxe qui est utilisée.

Il faut voir que malgré tout, même s'ils utilisent le même langage, ils n'utilisent ni les mêmes structures de données, ni les mêmes algorithmes pour calculer où une donnée sera stockée, mais c'est pratiquement transparent pour l'utilisateur.

****************************************
Graphweather
Graphweather n'utilise qu'une seule table pour une question d'architecture (similarité avec les autres plugins), mais cela ne pose aucun problème parce que les données sont homogènes et donc rien ne justifie dans leur utilisation d'établir des relations avec d'autres types de données.

Alors pourquoi utiliser un SGDB ?
Pour la vitesse et surtout la flexibilité dans l'utilisation des données par d'autres programmes : votre site en PHP sait très bien utiliser ce type de données alors que vous aurez des difficultés énormes à programmer en utilisant des fichiers séquentiels.
Un exemple encore, le dernier : Cherchez la date et l'heure du maxi de la température pour un mois donné
- en séquentiel vous allez devoir lire tout votre fichier jusqu'au mois recherché, ensuite comparer chaque ligne avec le maxi trouvé précédement, garder en mémoire le contenu de la ligne si c'est le nouveau maxi, et ainsi de suite jusqu'à la fin du mois.
- en SQL vous allez dire je cherche la température maxi pour le mois de ... le moteur va utiliser les index pour pointer sur le mois et sur la température : opération quasi immédiate
Vous pourriez écrire : SELECT annee,mois,jour,heure,MAX(Temperature) FROM TableMeteo WHERE Annee=2007 and mois=12. N'est-ce pas trop simple ? !!!

Ce problème de vitesse et de charge du processeur est d'ailleurs la raison qui pousse les éditeurs de la plupart de nos logiciels, a créer des fichiers séquentiels mensuels ou autres, qu'il faut ensuite réassembler. Cela fonctionne, mais manque cruellement d'élégance quand on compare avec une base de données !

Les ODBC
Je vais aussi donner quelques précisions sur ce qu'est un ODBC. (Je n'ai pas eu encore la question, mais qui sait ...)
C'est tout simplement l'interface qui permet aux programmes extérieurs en PHP, VisualBasic, C++, Perl, Python et autres C# de communiquer avec le moteur, et ce, quel que soit le moteur, la syntaxe est toujours la même. Cela permet de rendre totalement indépendant un programme vis à vis des SGDB utilisés.

Je pense avoir répondu à vos questions. Bien que j'ai utilisé quelques mots du langage SQL le but n'était pas de vous faire un cours mais de montrer la simplicité et la flexibilité du langage.

Il existe de très nombreux sites, sur le sujet, certains répondront beaucoup mieux que moi sur des questions aussi bien générales que précises.
En voici quelques uns (en français) que je viens à l'instant de chercher pour vous (Merci G..gle et internet) :

http://sql.toutestfacile.com/

http://docs.postgresqlfr.org/

http://dev.mysql.com/doc/refman/5.0/fr/index.html

_________________
Jean

Station : VP2 Pro Console Vue + anémomètre à Ultra-sons
Logiciels : Cumulus 1.9.4 + Cumulus2SQL
Serveur local : Apache + MySQL +PHP
PC : W10
Support Audio : FR

http://meteoserignan.ddns.net
Image
"Aide-toi d'abord toi-même et les autres t'aideront ... peut-être"


Haut
 Profil  
Répondre en citant  
MessagePublié: Lun Juin 01, 2009 10:47 pm 
Hors-ligne
Nouveau membre

Inscription : Lun Juin 01, 2009 10:45 pm
Message(s) : 4
Bonjour,
auriez vous , une requete sql afin de creer la table graphweater dans une bdd ?
meme si elle n'est pas totalement compatible mysql, ca serait deja beaucoup !


Haut
 Profil  
Répondre en citant  
MessagePublié: Mar Juin 02, 2009 12:21 am 
Hors-ligne
Membre
Avatar de l’utilisateur

Inscription : Mar Août 22, 2006 8:38 am
Message(s) : 3143
Localisation : 34410 Sérignan - Languedoc
Johann,
j'ai ça, passe moi un MP

Jean


Haut
 Profil  
Répondre en citant  
MessagePublié: Jeu Juin 04, 2009 7:23 am 
Hors-ligne
Nouveau membre

Inscription : Lun Juin 01, 2009 10:45 pm
Message(s) : 4
est ce que tu as recu mes mp ? ?


Haut
 Profil  
Répondre en citant  
MessagePublié: Jeu Juin 04, 2009 9:51 am 
Hors-ligne
Membre
Avatar de l’utilisateur

Inscription : Mar Août 22, 2006 8:38 am
Message(s) : 3143
Localisation : 34410 Sérignan - Languedoc
Oui :
pb avec ton adresse mail. Répondu à nouveau en MP


Haut
 Profil  
Répondre en citant  
MessagePublié: Sam Juin 06, 2009 11:35 am 
Hors-ligne
Nouveau membre

Inscription : Lun Juin 01, 2009 10:45 pm
Message(s) : 4
je tiens a remercier jturlier pour sa disponibilité : j'ai rarement vu quelqu'un d'aussi disponible et rapide. Merci a lui !


Haut
 Profil  
Répondre en citant  
MessagePublié: Mer Juin 30, 2010 11:53 am 
Hors-ligne
Membre

Inscription : Mer Juin 30, 2010 11:44 am
Message(s) : 12
Localisation : Souprosse
Bonjour

J'ai mis en place il y a 1 an une station meteo et le serveur envoie les données sur mon serveur web avec WUHU et Graphweather. J'ai ajouté un automate industriel à mon installation pour la gestion de divers equipements de la maison, et j'ai également ajouté un capteur de luminosité. Le logiciel de supervision me permet d'effectuer des logs des différentes mesures et de les exporter dans une base de donnée ODBC.

Hors, je n'arrive pas a récupérer ces données dans graphweather car il me dit que la table est incorrecte ou alors que le format de la date est incorrect. Auriez vous un exemple de fichier mdb qui fonctionne avec graphweather afin que je puisse comprendre pourquoi ca veut pas !!

mon site:
meteo-souprosse.info

cordialement

_________________
WS-2350 + WUHU + Sauvegarde des historiques en table SQL, Generation des graphiques avec Graphweather 2.0 + Automate Allen Bradley SLC500 pour sonde radiation solaire (4-20mA) export des datas en table SQL et graphiques avec GW aussi ... le tout fonctionnant sur un Poweredge 2650 Bi-Xeon 2800 2Go DDR-ECC Reg


Haut
 Profil  
Répondre en citant  
MessagePublié: Jeu Août 19, 2010 7:43 pm 
Hors-ligne
Membre
Avatar de l’utilisateur

Inscription : Mar Juil 20, 2010 6:23 pm
Message(s) : 173
Localisation : Vers-sur-lot (46)
Bonsoir, juste une petite question qui va vous paraître idiote mais vu que la co.....rie ne tu pas je me lance :D
J'ai la version 2.0.312b de GW, et au début de ce post, il est écrit:
"Choisir le « Plugin MySQL.dll »"
le seul soucis c'est que dans la liste des plugin, je ne l'ai pas, j'ai le ODBC, mais je m'en sorts pas, j'aurais voulu essayer avec le sql, vu que je suis arrivé (grâce aux fichiers récupérés ici) à mettre les données du history dans une BDD. Donc la question est simple, est ce normal que je ne l'ai pas avec cette version, ou ai-je vraiment besoin de sommeil :cry:
Merci et bonne soirée à tous.
Patrick

_________________
Station: WS3650, HeavyWeather3600 1.1, GraphWeather 2.O.312b (essai v3 mais soucis), XP SP2, données stockées automatiquement en BDD MySQL en local et sur le site avec scripts PHP fabrication maison.
Image


Haut
 Profil  
Répondre en citant  
MessagePublié: Jeu Août 19, 2010 8:44 pm 
Hors-ligne
Membre
Avatar de l’utilisateur

Inscription : Mar Août 22, 2006 8:38 am
Message(s) : 3143
Localisation : 34410 Sérignan - Languedoc
Salut Patrick,
sans doute à cette heure-ci as-tu un peu sommeil, mais c'est normal. C'est aussi normal que tu ne trouves pas, car quand ce post a été écrit, il n'existait qu'un plugin : mysql. Depuis Antoine a utilisé le support ODBC, qui permet de travailler avec pratiquement n'importe quel type de DB et surtout a permis de travailler des noms de sources de données (Data Source Name DSN).
Maintenant pour les bases de données le plugin à utiliser est ODBC.dll.
Pour créer un DSN qui sera utilisé ds GW :

Panneau de configuration
-Outils d'administration
--Sources de données(ODBC)
---Onglet : sources de données utilisateur
----Ajouter
-----Sélectionner dans la liste un pilote qui correspond à ta DB (Mysql, postgresql, Paradox ...)
Ensuite chaque driver présente un écran différent, le remplir avec les caractéristiques d'accès à tes tables.

Pour configurer le plugin ODBC de GW, il suffit d'indiquer qu'on veut utiliser un DSN, de lui indiquer le nom de ce DSN, et ensuite à bien faire correspondre le nom des sondes et celui des champs de tes tables. Le point le plus sensible, c'est d'ailleurs le même pour tous les plugins, c'est le décodage des dates.

N'hésite pas si tu as d'autres questions

Jean


Haut
 Profil  
Répondre en citant  
MessagePublié: Jeu Août 19, 2010 9:53 pm 
Hors-ligne
Membre
Avatar de l’utilisateur

Inscription : Mar Juil 20, 2010 6:23 pm
Message(s) : 173
Localisation : Vers-sur-lot (46)
Salut Jean et merci pour ta réponse ultra rapide. Tu me rassures en me disant que le plugin MySQL n'est plus présent, je me posais de sérieuses questions, lol. Me manque plus qu'à me retrousser les manches et à faire avaler ma base dans OBDC, c'est pas gagné. J'ai configuré OBDC pour une base Paradox (pour un logiciel de gestion de camping) mais pour SQL je coince. Donc j'essaye comme tu m'as dit et si ça marche pas, je reviendrais user (et abuser) :) de ta patience.
Pat

_________________
Station: WS3650, HeavyWeather3600 1.1, GraphWeather 2.O.312b (essai v3 mais soucis), XP SP2, données stockées automatiquement en BDD MySQL en local et sur le site avec scripts PHP fabrication maison.
Image


Haut
 Profil  
Répondre en citant  
MessagePublié: Ven Août 20, 2010 8:51 pm 
Hors-ligne
Membre
Avatar de l’utilisateur

Inscription : Mar Juil 20, 2010 6:23 pm
Message(s) : 173
Localisation : Vers-sur-lot (46)
Bon, ben j'ai essayé mais a marche po :cry: Me semble que j'ai suivi ton explication, dans le nom a donner j'ai mis meteo, et là où on demande à quel serveur SQL se connecter j'ai mis localhost vu que j'ai wampserveur qui tourne. et voilà ce que ça me dit:
Image
J'ai pas mis de mot de passe vu que je suis en local, pas besoin pour les essais j'essaye de faire simple.
Si quelqu'un a une idée, en langage simple :roll: pas la peine de vous dire que je suis pas un pro de SQL :?
Pat

_________________
Station: WS3650, HeavyWeather3600 1.1, GraphWeather 2.O.312b (essai v3 mais soucis), XP SP2, données stockées automatiquement en BDD MySQL en local et sur le site avec scripts PHP fabrication maison.
Image


Haut
 Profil  
Répondre en citant  
MessagePublié: Sam Août 21, 2010 9:32 am 
Hors-ligne
Membre
Avatar de l’utilisateur

Inscription : Mar Août 22, 2006 8:38 am
Message(s) : 3143
Localisation : 34410 Sérignan - Languedoc
Salut Patrick,
apparemment, les pilotes MySQL ne sont pas installés !
télécharge le driver 5.1 et installe le.
Voici le lien : http://dev.mysql.com/downloads/connector/odbc/
Tu ne peux pas faire parler MySQL avec le pilote de SQL Server !

Passe moi un MP si tu n'y arrives pas.

Jean


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 27 message(s) ]  Aller vers la page 1, 2  Suivant

Le fuseau horaire est UTC+1 heure


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Google [Bot] et 19 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Recherche de:
Aller vers :  
cron
POWERED_BY
Traduction et support en françaisHébergement de site