Informatique:Script Homeseer

De MacodaWiki
Aller à : navigation, rechercher

Cette page recense l'ensemble des scripts Homeseer utilisés sur mon serveur. Ils sont développés en VB.NET depuis mon passage sous Homeseer 2.0. Les anciens scripts restent en ligne (voir bas de la page).

Librairie de scripts

Les librairies anciennement en vbs ont été traduites en VB.net sous la forme d'une bibliothèque de fonction compilée en .DLL et appelée directement depuis les scripts Homeseer.
Les avantages d'une librairie .DLL en VB.NET sont nombreux :

  • Un seul fichier pour toutes les librairies
  • Cela permet de passer en vrai .net avec objet et tout et tout
  • Cela prend moins de place dans la mémoire (vu que le code est chargé qu'une fois)
  • C'est plus rapide (même raison que plus haut).

Pour sa compilation, j'utilise l'environnement de développement GRATUIT de Microsoft VB Express qui permet une gestion de fichier, une complétion pour les fonctions .NET et celles de la librairie en cours de création (avec affichage des paramètres automatiquement, ...).


Installation / Compilation / Utilisation

Compilation

  • Télécharger et installer le produit Microsoft Visual Basic 2005 Express
http://www.microsoft.com/france/msdn/vstudio/express/vbasic/telechargez.mspx
  • Installer les drivers Onewire (voir installation pour Dev Onewire)
  • Recopier le fichier "OneWireAPI.NET.dll" dans le répertoire de Homeseer "c:\program files\homeseer
  • Installer le Connecteur MySql pour VB .NET(voir http://morpheus.developpez.com/mysqldotnet/)
  • Télécharger et installer Homeseer sur le poste de développement (demander une licence de développement à Homeseer)
  • Télécharger les sources de la libraire Classe_outils_Vxx.zip :
http://www.macoda.com/domotique/Classe_Outils_Homeseer/.
  • Décompacter le fichier .zip sur votre PC et double-cliquez sur le fichier "Classe_Outils.sln"
  • Rajouter les références
Dans le Menu Visual Basic : Projet, Ajouter des Référence, Parcourir ...)
HomeSeer2 - c:\Program Files\HomeSeer 2\HomeSeer2.dll
Scheduler - c:\Program Files\HomeSeer 2\Scheduler.dll
Onewire - c:\Program Files\HomeSeer 2\OneWireAPI.NET.dll
MySQLConnector - C:\Program Files\MySQL\MySQL Connector Net 1.0.9\Binaries\.NET 1.1
  • Générez la librairie (Générer -> Générer Lib_outils_DTR) ce qui a pour effet de créer un fichier "Lib_HS2_DTR.dll" dans "C:\Program Files\HomeSeer 2"
  • Bien vérifier que le fichier "Lib_HS2_DTR.dll" a bien été créé dans "C:\Program Files\HomeSeer 2"

Utilisation

Pour utiliser cette librairie dans Homeseer, il faut rajouter un lien référence.
Il faut éditer le fichier "C:\Program Files\HomeSeer 2\Config\settings.ini" pour rajouter dans la section [Settings] et sur la ligne ScriptingReferences :

Lib_HS2_DTR ;c:\Program Files\HomeSeer 2\Lib_HS2_DTR.dll (avec une virgule s'il y a déjà des éléments). 

Les scripts peuvent maintenant utiliser les fonctions contenues dans la librairie.

le fichier de configuration .ini

La librairie a été construite pour fonctionner avec un fichier INI qu'il faut placer dans le répertoire config de Homeseer. Le fichier Lib_HS2_DTR_Vxx.zip est disponible dans le répertoire http://www.macoda.com/domotique/Classe_Outils_Homeseer/.

Base de données à créer

La librairie est faite pour utiliser une base de données MYSQL (voir l'installation de Wamp qui contient plusieurs tables pour les traces, le stockage des températures, des durées, ....

Le schéma de la base de données au format DB Designer4 se trouve avec les sources de la librairie. DB Designer permet de créer automatiquement les différentes tables (il suffit de créer la base de données HOMESEER dans MySql).

Script utilisant la librairie

Il suffit d'utiliser tout simplement les fonctions en les préfixant par le nom de la librairie et de la classe les contenant (voir chapitre suivant) :

Public Sub Main(Optional ByVal pParms As String = "")
   With hs
    Lib_HS2_DTR.Trace_Log.Log_Deb_Prog(hs, pParms)
    Lib_HS2_DTR.Trace_Log.Log_Err("Paramètre inconnu >" + pParms.ToLower + "<")
   End With 'hs_app
End Sub


  • Lib_HS2_DTR.Trace_Log.Log_Deb_Prog(hs, pParms) : Log_Deb_Prog est une fonction contenue dans la classe Trace_Log qui permet d'indiquer à la librairie le début d'un script. Cela permet de tracer ce début mais également d'initialiser des variables si cela n'est pas fait.
  • Lib_HS2_DTR.Trace_Log.Log_Err("Paramètre inconnu >" + pParms.ToLower + "<"): Log_Err est une fonction contenue dans la classe Trace_Log qui réalise l'équivalent d'un HS.WriteLog("Error",<Message>).


La page utilisation de VB Express pour développer des script Homeseer décrit comment écrire un code VB.NET qui sera compilable sous VB Express, débuggable directement depuis VB Express et permettant ainsi d'(utiliser toutes les capacitées de développement de l'environnement VB Express.

les différentes classes

  • classe_onewire : Un ensemble de fonctions qui permettent de trouver les composants 1wire, de les interroger et de les piloter. Marche pour l'instant uniquement avec les DS18B20, DS1822, DS2423, DS2405
  • classe_chrono : Ensemble de fonctions permettant de mesurer des temps d'exécution
  • classe_trace : Ensemble de fonctions pour tracer l'exécution des scripts
  • classe_util : Ensemble de fonctions utilies
  • classe_BD_Data : Pour la gestion de la base de donnée MY-SQL
  • classe_camera : Pour la gestion de l'enregistrement des caméras
  • classe_comm : Pour la communication vers l'extérieur
  • classe_device : Pour la gestion des device HOMESSER (focntion de haut niveau)
  • classe_event : Pour la gestion des évènements HOMESEER
  • classe_fichier : Pour la gestion des fichiers et des répertoires
  • classe_init_arret : Pour l'initialisation de la librairie
  • classe_jour_speciaux : Pour déterminer les jours spéciaux (vacances, pas école, ...)
  • classe_temp : Pour gérer les indicateurs de températures
  • classe_vdr : Pour piloter VDR, l'éteindre, envoyer un message, ...
  • classe_vmc : Pour gérer la commande de la vmc
  • classe_volet : Pour gérer les ouvertures partielles des volets
  • classe_arrosage : Pour la gestion de l'arrosage intégré
  • classe_web : Pour récupérer des pages wbe en utiliser wget
  • classe_alerte : Pour gérer des niveaux d'escalade d'alerte (pas développé)


Ancienne librairies HS 1.7

Mes scripts pour Homeseer 1.7 étaient développés en vbs (vbscript) et pouvaient donc facilement contenir des include contenant un ensemble de fonctions. J'avis donc développé un ensemble de librairies directement utilisable dans mes scripts.

Divers scripts ou astuces

Skype

Petit expérience amusante : pilotage de Skype pour qu'Homeseer puisse envoyer des messages "Chat". Pour que ce codage puisse être réalisé sous Visual Basic Express, il est nécessaire de :

  1. télécharger l'API COM de Skype : https://developer.skype.com/Docs/Skype4COM
  2. copier le fichier skype4com.dll dans c:\windows\system32
  3. D'exécuter sous Dos (et dans le rep system32) "regsvr32 skype4com.dll"
  4. De rajouter une référence dans votre projet : Ajout référence = Type COM => "Skype4com"
Imports SKYPE4COMLib
Module Module1
   Private WithEvents objSkype As SKYPE4COMLib.Skype
   Sub Main()
       Try
           objSkype = New SKYPE4COMLib.SkypeClass()
           If objSkype.Client.IsRunning = False Then
               Console.Write("Skype ne marche pas" + System.Environment.NewLine)
               Console.Write("Tentative de lancement" + System.Environment.NewLine)
               objSkype.Client.Start(True, True)

               While Not objSkype.Client.IsRunning
                   Console.Write("Skype ne tourne pas encore !!!!" + System.Environment.NewLine)
                   System.Threading.Thread.Sleep(10000)
               End While
           Else
               Console.Write("Skype tourne déjà !!!!" + System.Environment.NewLine)
           End If

           ' Connect to Skype
           objSkype = New SKYPE4COMLib.Skype
           objSkype.Attach()

           Dim oChat As SKYPE4COMLib.Chat
           Dim oMsg As SKYPE4COMLib.ChatMessage
           oChat = objSkype.CreateChatWith("pseudo qui doit recevoir le message de chat")

           For index As Integer = 1 To 10
               oMsg = oChat.SendMessage("Tu vas bien cette fois Date : " + Now.ToString)
               System.Threading.Thread.Sleep(5000)
           Next

       Catch ex As Exception
           Console.Write("Erreur Exception : " + ex.ToString + System.Environment.NewLine.ToString)
       End Try
       Console.Write("Fin du programme." + System.Environment.NewLine)
   End Sub