Philosophie de ces scripts ...

Solution Ă  base d'un PC et du logiciel Homeseer. Vous trouverez ici les tutos, les discussions sur les plugs-in et les scripts Ă  base de VBasic, ASP, VBScript, etc

Philosophie de ces scripts ...

Messagede domotics » 21 Nov 2006, 19:03

Bonjour,

Mais pourquoi Domotic's écrit-il des scripts aussi compliqués ! Il ya bien une raison, il yen a même plusieurs :

1- Depuis 1999, je fais des scripts, et je trouve qu'au bout de 6 mois, quand on revient sur le script, on a du mal à se rappeler toutes les subtilités ! les contournements, etc Donc mes scripts ont tous la même structure. C'est plus facile à maintenir. Par Exemple:
Code: Tout sélectionner

Sub main
Dim astrDevices
...
WriteLog G_FOLDER_NAME, G_SCRIPT_EVT, G_TIV_INF, "Launching " & G_FOLDER_NAME & " script", G_LOG_FILE
If CheckDevices(G_FOLDER_NAME, G_FILE_INI, G_STATUS_EXIST) Then
   astrDevices       = hs.GetINISetting("COMMON","DEVICES","", G_FILE_INI)
   astrConfig        = hs.GetINISetting("COMMON","CONFIG","..\scripts\config\", G_FILE_INI)
   atabDv             = Split(astrDevices, G_SEP)
   astrNbDv          = UBound(atabDv)

   i=0
   While (i <= Cint(astrNbDv))
      astrDevice          = hs.GetINISetting("DEVICE", "HC", "", astrConfig & atabDv(i)) & _
                           hs.GetINISetting("DEVICE", "DC", "", astrConfig & atabDv(i))
      astrEveryBodySleeps   = hs.GetINISetting("DEVICE","PARAM1","",astrConfig & atabDv(i))
      astrAlarmStatus       = hs.GetINISetting("DEVICE","PARAM2","",astrConfig & atabDv(i))
      astrBLOCKINGTV       = hs.GetINISetting("DEVICE","PARAM3","",astrConfig & atabDv(i))
      
      astrStatus = ""
      If (astrAlarmStatus <> "") and (hs.DeviceStatus(astrAlarmStatus) = G_STATUS_ON) Then   ' Alarme On
            astrStatus = G_STATUS_OFF
            WriteLog G_FOLDER_NAME, G_SCRIPT_EVT, G_TIV_INF, "TV : " & astrDevice & " is switching off because the alarm is on", G_LOG_FILE

         ElseIf (astrEveryBodySleeps <> "") and (hs.DeviceStatus(astrEveryBodySleeps) = G_STATUS_ON) Then    ' Tout le monde dort
         astrStatus = G_STATUS_OFF
            WriteLog G_FOLDER_NAME, G_SCRIPT_EVT, G_TIV_INF, "TV : " & astrDevice & " is switching off because everybody is sleeping", G_LOG_FILE

         ElseIf isPeriod(astrBLOCKINGTV, "") Then
         astrStatus = G_STATUS_OFF
            WriteLog G_FOLDER_NAME, G_SCRIPT_EVT, G_TIV_INF, "TV : " & astrDevice & " is blocked", G_LOG_FILE
         
         Else
            astrStatus = G_STATUS_ON

      End if         
         
         If (astrStatus <> "") Then
         SetDevice astrDevice, "", astrStatus, ""      
            WriteLog G_FOLDER_NAME, G_SCRIPT_EVT, G_TIV_INF, "Sending " & astrStatus & " to TV " & astrDevice, G_LOG_FILE
         End if
         
      i=i+1
   Wend

Else
   WriteLog G_FOLDER_NAME, G_SCRIPT_EVT, G_TIV_SEV, "Expected Device is unknown !", G_LOG_FILE
End if

WriteLog G_FOLDER_NAME, G_SCRIPT_EVT, G_TIV_INF, "End of the script", G_LOG_FILE
End sub


2- Avant, je créais mes events et mes devices via l'IHM de Homeseer. Mais chaque fois qu'on fait une réinstallation, on se rappelle plus les devices, les codes et les events. Ce qui nous oblige à gérer des sauvegardes, de faire des docs, ... et dans la réalité, on a jamais le temps de faire tout ca ! Donc mon principe est de paramétrer mes scripts via des properties, et tout se créé tout seul. j'ai juste à mettre une ligne dans le fichier startup.txt. Par exemple, chez moi, j'ai :
Code: Tout sélectionner
Sub main
'----------------------------------------------------------------------------
'-- MODULES TO BE INSTALLED or UNINSTALL
'----------------------------------------------------------------------------
   hs.run "modules\MY.MACROS\scripts\install.vbs"
   
   hs.run "modules\RUN.ALARM\scripts\install.vbs"   
   hs.run "modules\GET.METEO.FROM.YAHOO\scripts\install.vbs"
   hs.run "modules\GET.TEMPO\scripts\install.vbs"   
   hs.run "modules\GET.NEWS\scripts\install.vbs"
   hs.run "modules\REBOOT\scripts\install.vbs"
   hs.run "modules\CHECK.MEMORY\scripts\install.vbs"   
   hs.run "modules\READ.1-WIRE\scripts\install.vbs"
   hs.run "modules\MANAGE.SHUTTERS\scripts\install.vbs"
   hs.run "modules\GET.MARKETPLACE\scripts\install.vbs"      
   hs.run "modules\MANAGE.LIGHTS\scripts\install.vbs"
   hs.run "modules\MANAGE.CHRISTMAS.LIGHTS\scripts\install.vbs"
   hs.run "modules\MANAGE.TV\scripts\install.vbs"
   hs.run "modules\MONITOR.NETWORK\scripts\install.vbs"   
   hs.run "modules\BACKUP.PC\scripts\install.vbs"   
   hs.run "modules\MANAGE.ELECTRICAL.MACHINES\scripts\install.vbs"
   hs.run "modules\MANAGE.CAMERAS\scripts\install.vbs"
   hs.run "modules\MANAGE.ELECTRICAL.RADIATORS\scripts\install.vbs"
   hs.run "modules\MANAGE.FIREBOX\scripts\install.vbs"   
   hs.run "modules\MANAGE.MEDIALINK\scripts\install.vbs"   
   hs.run "modules\MONITOR.SOFTWARE\scripts\install.vbs"      
   hs.run "modules\CONTROL.MEDIA\scripts\install.vbs"   
   
   hs.run "modules\MONITOR.LOG.FILES\scripts\install.vbs"   

'----------------------------------------------------------------------------
'-- MACRO TO ENSURE THE SAVE OF ALL DEVICE CHANGES
'----------------------------------------------------------------------------
   hs.RegisterStatusChangeCB "lib\framework_domotics.vbs","traceDeviceChanges"
End sub


3- On a tous des scripts, mais 80% des fonctionnalités sont les mêmes. En créant des modules, j'espère bien trouver des amateurs pour créer à leur tour des modules à publier ... Ainsi, la communauté avancera peut etre (D'accord, la je rève)

4- Au fil du temps, nos scripts se mélangent pour gérer plusieurs fonctionnalités. Avec ma philosophie, je séparer les besoins, et j'ai plus de souplesse pour évoluer une fonction sans en casser une autre !

5- Enfin, toutes les fonctions avancées sont dans un framework (C'est une série de libraries). Ce framework évolue, et j'assure la compatibilité ascendante. Ce qui veut dire, que j'ajoute de nouvelles fonctions, mais je change jamais la signature des fonctions existantes. Donc vous pouvez sans cesse évoluer ... Actuellement, le framework en est à la version 4.10.0. La version 4.x car c'est la 4ieme fois que je refais tous mes scripts ...

Voilà, n'hésites pas à apporter vos réactions ...

A+
Dernière édition par domotics le 20 Nov 2007, 22:31, édité 1 fois.
Domotics
Mon Skype : mr.domotics - Contactez moi pour une démo, des réponses à vos questions, ...
Mon Installation : Eedomus, Zwave, Oregon, Sonos, EnOcean, Chacon, Raspberry Pi, IPX800, WES, RFXTRX, Nas Synology et Cams IP
Mon Conseil : La domotique doit toujours rester simple et demander un minimum de maintenance; Pensez aux autres utilisateurs de la maison ...
Ma Chaine Youtube : https://www.youtube.com/user/tteladomotique/?sub_confirmation=1

Domotics propose ses services via sa société de conseils http://www.id2domotique.com et sa boutique http://laboutiquededomotique.com
Avatar de l’utilisateur
domotics
Administrateur
 
Messages: 5072
Inscription: 15 AoĂ» 2003, 14:38
Localisation: Toulouse

Info du jour

Messagede domotics » 04 Avr 2007, 12:26

Salut Ă  tous,

En discutant à droite à gauche, je me suis apercu que mes fichiers dev*.ini et evt*.ini posaient des problèmes de compréhension car ce n'est pas facile de comprendre à quoi sert chaque variable...

En fait, c'est très simple, les dev*.ini sont basés sur la class device de homeseer. Donc vous avez les différentes valeurs possibles dans l'aide de homeseer : /webhelp/scripting/scripting_list_devices.htm

En fait, c'est très simple, les evts*.ini sont basés sur la class events de homeseer. Donc vous avez les différentes valeurs possibles dans l'aide de homeseer : /webhelp/scripting/events/scripting_events_eventclass.htm

J'espère que je vous aurais aidé un peu !

A+
Domotics
Mon Skype : mr.domotics - Contactez moi pour une démo, des réponses à vos questions, ...
Mon Installation : Eedomus, Zwave, Oregon, Sonos, EnOcean, Chacon, Raspberry Pi, IPX800, WES, RFXTRX, Nas Synology et Cams IP
Mon Conseil : La domotique doit toujours rester simple et demander un minimum de maintenance; Pensez aux autres utilisateurs de la maison ...
Ma Chaine Youtube : https://www.youtube.com/user/tteladomotique/?sub_confirmation=1

Domotics propose ses services via sa société de conseils http://www.id2domotique.com et sa boutique http://laboutiquededomotique.com
Avatar de l’utilisateur
domotics
Administrateur
 
Messages: 5072
Inscription: 15 AoĂ» 2003, 14:38
Localisation: Toulouse

Messagede cedriclocqueneux » 04 Juin 2008, 13:26

Salut !

Je continue un peu mes scripts (y'en a toujours à faire, décidément :D ), mais je pêche un peu sur les conditions dans les fichiers ini des events.

J'ai bien vu qu'il faut mettre

EVT_ABS_TIME=4

puis compléter

EVT_CONDITIONS=

mais là je ne sais pas comment le compléter.

Si par exemple je veux que l'event se lance:
SI il est 7h et que A1 est OFF OU SI il est 10h et A1 est ON.

Un idée de comment tu traduirais ca ?
Avatar de l’utilisateur
cedriclocqueneux
Dieu de domotique
 
Messages: 1516
Inscription: 02 Jan 2007, 21:18
Localisation: Chaon (Loire et Cher)

Messagede Laser. » 04 Juin 2008, 18:07

Dans l'aide d'homeseer dans scripting/event functions/ NewCondition ou GetEvent il y a quelques explications mais j'avoue que ce n'est pas très clair.
Laser.
Dieu de domotique
 
Messages: 673
Inscription: 28 Nov 2006, 23:33
Localisation: Loire Atlantique

Messagede cedriclocqueneux » 04 Juin 2008, 18:38

Oui, j'avais bien regardé l'aide (où j'ai trouvé les paramètres précédents à renseigner), mais pour le reste, c'est loin d'être clair...
Avatar de l’utilisateur
cedriclocqueneux
Dieu de domotique
 
Messages: 1516
Inscription: 02 Jan 2007, 21:18
Localisation: Chaon (Loire et Cher)

Hello

Messagede domotics » 04 Juin 2008, 19:23

EVT_CONDITIONS n'est pas implémenté dans le framework ... le workaround est de tester la condition dans votre script ...

A+
Domotics
Mon Skype : mr.domotics - Contactez moi pour une démo, des réponses à vos questions, ...
Mon Installation : Eedomus, Zwave, Oregon, Sonos, EnOcean, Chacon, Raspberry Pi, IPX800, WES, RFXTRX, Nas Synology et Cams IP
Mon Conseil : La domotique doit toujours rester simple et demander un minimum de maintenance; Pensez aux autres utilisateurs de la maison ...
Ma Chaine Youtube : https://www.youtube.com/user/tteladomotique/?sub_confirmation=1

Domotics propose ses services via sa société de conseils http://www.id2domotique.com et sa boutique http://laboutiquededomotique.com
Avatar de l’utilisateur
domotics
Administrateur
 
Messages: 5072
Inscription: 15 AoĂ» 2003, 14:38
Localisation: Toulouse

Messagede cedriclocqueneux » 04 Juin 2008, 19:52

Zut :cry:
C'est dommage, car ca alourdi un peu le système. J'aurai pu faire une condition globale, alors que là, au mieux, il faut que je fasse un script qui se lance à 7h, puis 10h, et qui vérifie si A1 est ON ou OFF.

Tant pis, je vais me débrouiller avec ca :wink:
Avatar de l’utilisateur
cedriclocqueneux
Dieu de domotique
 
Messages: 1516
Inscription: 02 Jan 2007, 21:18
Localisation: Chaon (Loire et Cher)

framework_x10.vbs

Messagede domotics » 04 Juin 2008, 20:30

en fait, regarde dans framework_x10.vbs, il ya du code entre commentaires. Je me souviens plus, mais surement que je n'avais pas de cas de tests ...

tu peux essayer de le debugger si le coeur t'en dit ....
A+
Domotics
Mon Skype : mr.domotics - Contactez moi pour une démo, des réponses à vos questions, ...
Mon Installation : Eedomus, Zwave, Oregon, Sonos, EnOcean, Chacon, Raspberry Pi, IPX800, WES, RFXTRX, Nas Synology et Cams IP
Mon Conseil : La domotique doit toujours rester simple et demander un minimum de maintenance; Pensez aux autres utilisateurs de la maison ...
Ma Chaine Youtube : https://www.youtube.com/user/tteladomotique/?sub_confirmation=1

Domotics propose ses services via sa société de conseils http://www.id2domotique.com et sa boutique http://laboutiquededomotique.com
Avatar de l’utilisateur
domotics
Administrateur
 
Messages: 5072
Inscription: 15 AoĂ» 2003, 14:38
Localisation: Toulouse


Retourner vers Homeseer

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités

Copyright © 2011 - Touteladomotique.com - Tous droits rĂ©servĂ©s
Les blogs partenaires : Abavala, Domo-Blog, Domotique34, Maison et Domotique