Actualités | Audio/Vidéo | Evènements | DIY | Domotique | Informatique | Maison | Mobile | Sécurité

Tutorial pour sauver des données Homeseer dans une base de données Mysql

Envoyer Imprimer PDF
Note des utilisateurs: / 32
MauvaisTrès bien 
Index de l'article
Tutorial pour sauver des données Homeseer dans une base de données Mysql
Installation de Mysql
Création de la base de données
Test avec le framework Domotics
Création d'un script spécifique
En conclusion
Toutes les pages

Nous sommes nombreux à utiliser Homeseer et Mysql pour stocker les données de notre système de Domotique. Pour les informaticiens, ces 2 logiciels ne posent pas de problèmes, mais pour les autres, ce n'est pas toujours facile de mettre en oeuvre le premier script Homeseer qui va utiliser la base données Mysql.

Je vous propose ici un article qui illustre comment installer Mysql, comment créer sa première base SQL, puis comment insérer des données à l'aide du framework Domotic's ou d'un script spécifique ...

Téléchargement des logiciels à installer

Pour commencer, il s'agit de télécharger Mysql. Pour celà, rendez vous sur le site Mysql.com, allez dans la section téléchargement et prenez l'installer qui correspond à votre Windows:

Choisissez le serveur le plus proche de chez vous afin d'accélérer le téléchargement.

Ensuite, il vous faudra aussi télécharger le connecteur ODBC pour que votre base MySQL soit accessible depuis vos scripts Homeseer ou même depuis MS Excel.

Finalement, vous vous retrouverez avec deux logiciels à installer. Je ne parle pas de Homeseer, car je pars du principe que tout le monde est arrivé à l'installer ...

 


Installation de Mysql

Pour lancer l'installation de MySQL, il faut exécuter le fichier mysql-5.5.19-win32 (Double cliquez dessus). Puis confirmez l'éxecution.

L'assistant d'installation démarre et vous propose les différentes étapes

Choisissez une installation TYPICAL pour une installation de domotique.

Cochez la case pour que le configurateur démarre dès la fin de l'installation de MySQL.

Sélectionnez l'option "Developer Machine" pour une installation de domotique. Cet option met en place des paramètres suffisant pour une base de données accédées par peu de comptes utilisateurs.

Prenez l'option "Multifunctional Database".

L'écran suivant est important. Il vous permet d'ouvrir le pare-feu windows en cochant la case "Add firewall exception for this port".  L'ouverture du firewall vous permettra d'accéder la base de données depuis un autre PC de votre réseau local.

Maintenant, il vous faut choisir "Install as Windows Service" pour que Mysql soit installé comme un service Windows. Cochez également "Include Bin Directory ..." afin que votre client Mysql soit utilisable en ligne de commande, depuis n'importe quel répertoire de votre disque.

Sur l'écran suivant, il faut saisir le mot de passe de l'administrateur des futures bases données (utilisateur root). Indiquez également si vous autorisez à accéder la base de données depuis un autre PC de votre réseau. Pour autoriser l'accès, il faut cocher "Enable root access from remotes".

Pour finir, le configurateur termine l'installation. Cet écran peut durer quelques minutes.

Avant d'aller plus loin, je vous propose de faire un test de MySQL. Lancez le client MySQL qui se trouve maintenant dans votre menu démarrer.

Entrez le mot de passe administrateur des bases de données.

Entrez la commande "use mysql" pour sélectionner la base par défaut de MySQL. Cette base s'appelle "mysql". Puis entrez la commande "show tables;" pour que le client liste les tables SQL de la base mysql.

A ce stade, on confirme que Mysql est bien installé. Maintenant, il faut continuer en installant le connecteur ODBC. C'est un petit logiciel qui vous permettra d'accéder vos bases MySQL depuis n'importe quels logiciels : Homeseer, MS Excel, etc.

Lancez l'installation du second fichier mysql-connector-odbc-5.1.9-win32 et acceptez l'avertissement de sécurité.

Puis suivez les différentes étapes de l'installeur.

A ce stade, vous venez de finir les différentes installation. Maintenant, il n'y a plus qu'à passer à l'utilisation de MySQL ...


Création d'une base de données

Maintenant que MySQL est installé, vous devez créer une base de données. Il s'agit d'un classeur dans lequel vous allez ranger toutes vos données. Chaque donnée est rangée dans un fichier tabulaire que l'on appelera une table SQL. Toutes ces données seront accessibles par un compte utilisateur SQL que nous allons créer pour notre besoin.

Lancez le client MySQL.

Entrez le mot de passe administrateur. Puis lancez la commande "create database domotics". Dans cet exemple, le nom de la base de données s'appelle domotics. Vous pouvez renommer cette base selon votre besoin.

Maintenant, il faut sélectionner la base de données afin d'y créer les tables. Lancez la commande "use domotics;". domotics est le nom de la base de données que vous souhaitez sélectionner.

Vient ensuite la création des tables SQL. Dans cet exemple, je créé les deux tables que mon framework Domotic's utilise. Une table appelée EVENTS. Elle stocke l'historique des états de chaque module. Et une table appelée LOGS, elle stocke tous les logs Homeseer.

Les commandes SQL utilisées pour créer ces tables sont livrées dans le zip du framework Domotic's. Vous pouvez bien sur créer vos propres tables SQL : Une table par besoin, etc. Reportez aux sites web sur le langage SQL afin de comprendre la syntaxe.

Pour finir, vous devez créer un utilisateur SQL pour accéder les données avec moins de droits que le compte administrateur. Ce n'est pas obligatoire, mais il est conseillé de minimiser l'utilisation du compte administrateur pour des raisons de sécurité. Lancez les 3 commandes ci-dessous pour créer l'utilisateur domotics sur la base domotics. Cet utilisateur aura le mot de passe domotics.

A ce stade, vous avez maintenant créé une base de données. Vous pouvez maintenant l'utiliser depuis vos logiciels ou scripts préférés.


Test avec le framework Domotic's

Le framework Domotic's est en fait une série de librairies vbscripts qui permettent d'écrire plus vite des scripts Homeseer. Ce n'est pas obligatoire de l'utiliser. Mais comme c'est plus pratique, je vous montre donc le premier exemple avec ce framework.

Pour l'utiliser, il faut le télécharger ici et l'installer en utilisant cette procédure. Vous avez également visualiser cette vidéo qui peut vous aider.

Au final, vous devez arriver à une arborescence de ce style.

Par défaut, le framework loggue tous les changements d'état dans la base de données. Pour celà, il faut éditer le fichier startup.txt de Homeseer, et vérifier que la dernière ligne n'est pas commenté (il faut vérifier qu'il n'y ait plus de quote en face de la ligne "hs.RegisterStatusChangeCB "lib\framework_domotics.vbs", "traceDeviceChanges"").

Grâce à cette commande, Homeseer va appeler la fonction "traceDeviceChanges" à chaque changement d'état.

Ensuite, il faut vérifier que le framework possède les bons paramètres pour se connecter à votre base de données (fichier HOMESEER/scripts/lib/framework_domotics.inc):

  • G_SERVER = Serveur de base de données = localhost ? ou le nom de votre PC ?
  • G_DB_NAME = Nom de la base de données à utiliser = domotics dans notre exemple
  • G_DB_USER = Nom du compte SQL à utiliser = domotics dans notre exemple
  • G_DB_PASSWD = Mot de passe à utiliser = domotics dans notre exemple.

Il vous faudra aussi vérifier la ligne G_CONNECTION_STRING. Parfois, il faut changer la version du driver ODBC. Dans l'exemple ci-dessous, j'ai mis 5.1, qui est celui que nous avons installé en début de cet article.

Enfin, il faut aussi spécifier dans la variable G_DEV_WHICH_MUST_BE_LOGGED, la liste des modules que vous voulez sauver dans la base de données. Exemple, si vous mettez LM12, tous les modules de types LM12 seront sauvés en base à chacun de leurs changements d'état. Si vous souhaitez traiter plusieurs types de modules, il faut séparer les différents types par un ; Ce n'est pas la peine de mettre tout le nom du type, le début de la chaine de caractères suffit (ex : ACRF2 permet de traiter ACRF2 Device Monitor, ACRF2 ...).

Dans l'image ci-dessous, vous pouvez voir la colonne Type dont je parle.

Voilà c'est prêt. Démarrez Homeseer, et ouvrez votre client MySQL. Lancez des commandes SQL "select device, date from events;" et vous verrez les changements d'état qui se sauvent régulièrement en base ! C'est magique ...

En conclusion, le framework Domotic's suffit à lui tout seul pour sauver tous vos changements d'état en base de données. Il suffit de bien faire attention au paramétrage afin de bien filtrer les modules à écouter.

Mais on peut aussi sauver spécifiquement des données. C'est l'objet du paragraphe suivant.


Création d'un script spécifique

Pour sauver spécifiquement des données d'un module, il suffit de créer un script de ce style. Le script fait juste une requête SQL de type INSERT. Cette commande va ajouter la valeur du device A1 dans la table events de la base de données que nous venons de créer. Vous pouvez bien sur modifier ce script pour traiter vos codes de module...

Créez le script test.vbs dans le répertoire HOMESEER/scripts/modules/

#include ..\lib\framework_domotics.vbs

Sub main
'Sub saveDeviceChangeWithAuthor(astrDevice,astrAuthor) Dim aobjConn                ' Connection to the database Dim astrConnectionString        ' Connection String Dim astrDatabase            ' Path + File to find the database Dim astrSQL                ' Query to be executed Dim aevtLast                ' Last event trigered Dim acodeLast                ' Last code changed Dim aDateTime                ' Current Date and Time Dim astrDevice
astrDevice="A1"
Set aobjConn = CreateObject("ADODB.Connection") aobjConn.Open(G_CONNECTION_STRING) aDateTime = Now()
astrSQL = "INSERT INTO EVENTS (STRING, DEVICE, STATUS, VALUE, DATE, NOTES) VALUES (" astrSQL = astrSQL & "'" & replace(hs.DeviceString(aStrDevice),"'","''") & "'," astrSQL = astrSQL & "'" & astrDevice & "'," astrSQL = astrSQL & "'" & hs.DeviceStatus(astrDevice) & "',"       astrSQL = astrSQL &  hs.DeviceValue(astrDevice) & "," astrSQL = astrSQL & "'" & Year(aDateTime) &"/"& Month(aDateTime) &"/"& Day(aDateTime) astrSQL = astrSQL & " " & Hour(aDateTime) &":"& Minute(aDateTime) &":"& Second(aDateTime) & "'," astrSQL = astrSQL & "'" & replace(astrAuthor,"'","''") & "')"
aobjConn.Execute astrSQL aobjConn.Close Set aobjConn = Nothing
End Sub

 

Créez ensuite un évènement Homeseer. Et utilisez le fichier test.vbs.

Enfin, ouvrez votre client MySQL et vérifiez que les données sont bien sauvées dans la table EVENTS. Utilisez pour celà la commande SQL " select device, date from events;"

 


En conclusion

J'espère que cet article vous aura intéressé. Si ca vous dit, je pourrais écrire la suite qui consiste à générer un graphe avec différentes méthodes (Google Graphs, Thingspeak, etc). Si vous avez besoin de précisions sur un passage de cet article, n'hésitez pas à poser vos questions dans les commentaires.

A l'heure des box Vera, Eedomus, Zibase, on peut se demander si écrire ses propres scripts est encore une bonne solution. Personnellement, je m'oriente plus vers des solutions toutes prêtes pour passer moins de temps à maintenir mon installation. Mais je vois à travers le forum que beaucoup de membres sont encore en train de personnaliser leur système. Il en faut pour tous les gouts ...

D'autres photos sont disponibles sur l'album Picasa de cet article.

 

Cet article vous est proposé par Domotics: Domotics habite dans la région Toulousaine. Il est ingénieur en informatique et électronicien amateur. La domotique est pour lui une passion qu'il pratique depuis 1999. En 2003, il décide de partager ses expériences sur le magazine et le forum de touteladomotique.com.

En 2014, il crée sa société de conseils en Domotique ID2domotique.com et sa boutique en ligne laboutiquededomotique.com. Profitez de l'expérience et l'expertise de Domotics en faisant appel à ses services. Les conseils sont gratuits ...

 

Ils en parlent aussi

 

Mise à jour le Mercredi, 15 Août 2012 20:03  

Ajouter un Commentaire


Code de sécurité
Rafraîchir

Recherche

Newsletter ?

Instagram

Publicité

Espaces publicitaires à louer
Contactez-nous

Connexion