Script:Lib VMC
Un article de MacodaWiki.
lib_vmc.vbs : Permet de piloter la VMC
'*-*-*-*-*-*-*-**-*-*-*-*-*-*-**-*-*-*-*-*-*-**-*-*-*-*-*-*-**-*-*-*-*-*-*-**-*-*-*-*-*-*-**-*-*-*-*-*-*-*
'* LIBRAIRIE *
'* *
'* Voir l'entete de lib_log !!! *
'* *
'* *
'* *
'* *
'* *
'* 2006/08/01 *
'* *
'*-*-*-*-*-*-*-**-*-*-*-*-*-*-**-*-*-*-*-*-*-**-*-*-*-*-*-*-**-*-*-*-*-*-*-**-*-*-*-*-*-*-**-*-*-*-*-*-*-*
'AAAATENTION
'On a un truc du style
' gVMC_Set_etat_status_eteind DEVICE_VMC_Action_ponctuel_gd
' gVMC_Arret_grande_vitesse
'Réfléchir à un truc du style
' gVMC_Arret_grande_vitesse (DEVICE_VMC_Action_ponctuel_gd)
Const ACTION_FORCE = 1
Const ACTION_NON_FORCE = 0
'------------------------------------------------------------------------
function gVMC_Get_etat_moteur_pt()
Dim dv
gVMC_Get_etat_moteur_pt = -1
set dv = hs.GetDeviceEx(DEVICE_VMC_PT)
If dv is nothing Then
gFct_Log_LIB LOG_SANS, "Get_etat_comparaison => Trouve pas "&DEVICE_VMC_PT
Else
gVMC_Get_etat_moteur_pt = hs.DeviceStatus(dv.hc&dv.dc)
End If
If gVMC_Get_etat_moteur_pt = DEVICE_OFF Then gFct_Log_LIB LOG_NORMAL, "gVMC_Get_etat_moteur_pt = OFF"
If gVMC_Get_etat_moteur_pt = DEVICE_ON Then gFct_Log_LIB LOG_NORMAL, "gVMC_Get_etat_moteur_pt = ON"
end function
'------------------------------------------------------------------------
function gVMC_Get_etat_moteur_gd()
Dim dv
gVMC_Get_etat_moteur_gd = -1
set dv = hs.GetDeviceEx(DEVICE_VMC_GD)
If dv is nothing Then
gFct_Log_LIB LOG_SANS, "Get_etat_comparaison => Trouve pas "&DEVICE_VMC_GD
Else
gVMC_Get_etat_moteur_gd = hs.DeviceStatus(dv.hc&dv.dc)
End If
If gVMC_Get_etat_moteur_gd = DEVICE_OFF Then gFct_Log_LIB LOG_NORMAL, "gVMC_Get_etat_moteur_gd = OFF"
If gVMC_Get_etat_moteur_gd = DEVICE_ON Then gFct_Log_LIB LOG_NORMAL, "gVMC_Get_etat_moteur_gd = ON"
end function
'------------------------------------------------------------------------
Sub gVMC_Demarrage_petite_vitesse()
Dim dv
giNiveau_Librairie = giNiveau_Librairie + 1
gFct_Log_LIB LOG_NORMAL,"Entrée gVMC_Demarrage_petite_vitesse"
gUTIL_SemaphorePose("VMC")
If (gVMC_Get_etat_moteur_pt = DEVICE_ON) Then
gFct_Log_LIB LOG_NORMAL, "VMC pt vitesse déjà allumé"
Else
set dv = hs.GetDeviceEx(DEVICE_VMC_PT)
If dv is nothing Then
gFct_Log_LIB LOG_SANS, "Trouve pas "&DEVICE_VMC_PT
Else
hs.ExecX10 dv.hc&dv.dc,"on",0,0
hs.RunEx "FCT_Chrono.vbs","Debut","vmc_petite;0"
gFct_Log_LIB LOG_BAVARD,"Mise en marche relais petite vitesse"
' hs.SendEmail "domotique@macoda.com","domotique@macoda.com","FCT_VMC : Mise en marche relais VMC petite vitesse","Rien"
gUTIL_Attente_secondes(2)
If (gVMC_Get_etat_moteur_pt = DEVICE_ON) Then
gFct_Log_LIB LOG_NORMAL, "OK la VMC pt vitesse est bien allumée"
Else
gFct_Log_LIB LOG_SANS, "** ERREUR ** : ****PB **** la VMC pt vitesse est éteinte"
hs.SendEmail "domotique@macoda.com","domotique@macoda.com","****PB **** la VMC pt vitesse est éteinte","Rien"
End If
End If
End If
gUTIL_SemaphoreLibere("VMC")
gFct_Log_LIB LOG_NORMAL,"Sortie gVMC_Demarrage_petite_vitesse"
giNiveau_Librairie = giNiveau_Librairie - 1
End Sub
'------------------------------------------------------------------------
Sub gVMC_Arret_petite_vitesse(sForce)
Dim bVMC_en_cours
Dim dv
giNiveau_Librairie = giNiveau_Librairie + 1
gFct_Log_LIB LOG_NORMAL,"Entrée gVMC_Arret_petitevitesse (sForce = "&sForce&")"
gUTIL_SemaphorePose("VMC")
If (gVMC_Get_etat_moteur_pt = DEVICE_OFF) Then
gFct_Log_LIB LOG_BAVARD,"VMC pt vitesse déjà éteint"
Else
' Si une action en cours fait que la petite vitesse marche, alors on n'arrete pas !
' Sauf si on passe de vitesse grande à petite ou inversement
' Si on doit l'arrêter alors
If sForce = ACTION_FORCE Then
' on force l'arrêt , sans regarder si elle tourne ou pas
bVMC_en_cours = False
Else
' Sinon, cela dépend de l'état de fonctionnement avant l'action.
bVMC_en_cours = gVMC_pt_marche
End If
If (bVMC_en_cours) Then
gFct_Log_LIB LOG_BAVARD,"On arrête pas la petite vitesse car il y a une action en cours !!!! [42434]"
' hs.SendEmail "domotique@macoda.com","domotique@macoda.com","FCT_VMC : Pas arrêt car VMC pt en marche","Rien"
Else
set dv = hs.GetDeviceEx(DEVICE_VMC_PT)
If dv is nothing Then
gFct_Log_LIB LOG_SANS, "Trouve pas "&DEVICE_VMC_PT
Else
hs.ExecX10 dv.hc&dv.dc,"off",0,0
hs.RunEx "FCT_Chrono.vbs","Fin","vmc_petite;0"
gFct_Log_LIB LOG_BAVARD,"Arrêt du relais petite vitesse"
' hs.SendEmail "domotique@macoda.com","domotique@macoda.com","FCT_VMC : Arrêt relais VMC petite vitesse","Rien"
gUTIL_Attente_secondes(3)
If (gVMC_Get_etat_moteur_pt = DEVICE_ON) Then
gFct_Log_LIB LOG_SANS, "** ERREUR ** : ****PB **** la VMC pt vitesse est PAS éteinte"
hs.SendEmail "domotique@macoda.com","domotique@macoda.com","****PB **** la VMC pt vitesse est PAS éteinte","Rien"
Else
gFct_Log_LIB LOG_NORMAL, "OK la VMC pt vitesse est bien éteinte"
End If
End If
End If
End If
gUTIL_SemaphoreLibere("VMC")
gFct_Log_LIB LOG_NORMAL,"Sortie gVMC_Arret_petite_vitesse"
giNiveau_Librairie = giNiveau_Librairie - 1
end Sub
'------------------------------------------------------------------------
Sub gVMC_Demarrage_grande_vitesse()
Dim dv
giNiveau_Librairie = giNiveau_Librairie + 1
gFct_Log_LIB LOG_BAVARD,"Entrée gVMC_Demarrage_grande_vitesse"
gUTIL_SemaphorePose("VMC")
If (gVMC_Get_etat_moteur_gd = DEVICE_ON) Then
gFct_Log_LIB LOG_BAVARD,"VMC gd vitesse déjà allumé"
Else
gVMC_Arret_petite_vitesse( ACTION_FORCE )
gUTIL_Attente_secondes(1)
set dv = hs.GetDeviceEx(DEVICE_VMC_GD)
If dv is nothing Then
gFct_Log_LIB LOG_SANS, "Trouve pas "&DEVICE_VMC_GD
Else
hs.ExecX10 dv.hc&dv.dc,"on",0,0
hs.RunEx "FCT_Chrono.vbs","Debut","vmc_grande;0"
gFct_Log_LIB LOG_BAVARD,"Mise en marche relais grande vitesse"
' hs.SendEmail "domotique@macoda.com","domotique@macoda.com","FCT_VMC : Mise en marche relais VMC grande vitesse","Rien"
gUTIL_Attente_secondes(2)
If (gVMC_Get_etat_moteur_gd = DEVICE_ON) Then
gFct_Log_LIB LOG_NORMAL, "OK la VMC gd vitesse est bien allumée"
Else
gFct_Log_LIB LOG_SANS, "** ERREUR ** : ****PB **** la VMC gd vitesse est éteinte"
hs.SendEmail "domotique@macoda.com","domotique@macoda.com","****PB **** la VMC gd vitesse est éteinte","Rien"
End If
End If
gUTIL_Attente_secondes(1)
gVMC_Demarrage_petite_vitesse
End If
gUTIL_SemaphoreLibere("VMC")
gFct_Log_LIB LOG_BAVARD,"Sortie gVMC_Demarrage_grande_vitesse"
giNiveau_Librairie = giNiveau_Librairie - 1
end Sub
'------------------------------------------------------------------------
Sub gVMC_Arret_grande_vitesse()
Dim dv
giNiveau_Librairie = giNiveau_Librairie + 1
gFct_Log_LIB LOG_BAVARD, "Entrée gVMC_Arret_grande_vitesse"
gUTIL_SemaphorePose("VMC")
If (gVMC_Get_etat_moteur_gd = DEVICE_OFF) Then
gFct_Log_LIB LOG_BAVARD,"VMC gd vitesse déjà éteint"
Else
' Si une des actions en cours est la marche en GD vitesse => On ne doit pas arrêter la grande vitesse !
If (gVMC_gd_marche) Then
gFct_Log_LIB LOG_BAVARD, "On arrête pas la grande vitesse car il y a une action en cours !!!! [12434]"
' hs.SendEmail "domotique@macoda.com","domotique@macoda.com","FCT_VMC : Pas arrêt car VMC gd en marche","Rien"
Else
' Afin d'éviter des arcs électrique sur le montage, il faut couper le courant avant de passer de grande à petite vitesse.
gVMC_Arret_petite_vitesse( ACTION_FORCE )
gUTIL_Attente_secondes(1)
set dv = hs.GetDeviceEx(DEVICE_VMC_GD)
If dv is nothing Then
gFct_Log_LIB LOG_SANS, "Trouve pas "&DEVICE_VMC_GD
Else
hs.ExecX10 dv.hc&dv.dc,"off",0,0
hs.RunEx "FCT_Chrono.vbs","Fin","vmc_grande;0"
gFct_Log_LIB LOG_BAVARD,"Arrêt du relais grande vitesse"
' hs.SendEmail "domotique@macoda.com","domotique@macoda.com","FCT_VMC : Arrêt relais VMC grande vitesse","Rien"
gUTIL_Attente_secondes(2)
If (gVMC_Get_etat_moteur_gd = DEVICE_ON) Then
gFct_Log_LIB LOG_SANS, "** ERREUR ** : ****PB **** la VMC gd vitesse est PAS éteinte"
hs.SendEmail "domotique@macoda.com","domotique@macoda.com","****PB **** la VMC gd vitesse est PASéteinte","Rien"
Else
gFct_Log_LIB LOG_NORMAL, "OK la VMC gd vitesse est bien éteinte"
End If
End If
gUTIL_Attente_secondes(1)
' Si une action en cours fait que la petite vitesse marche, alors on allume en petite vitesse
If (gVMC_pt_marche) Then
gVMC_Demarrage_petite_vitesse
End If
End If
End If
gUTIL_SemaphoreLibere("VMC")
gFct_Log_LIB LOG_BAVARD, "Sortie gVMC_Arret_grande_vitesse"
giNiveau_Librairie = giNiveau_Librairie - 1
end Sub
'#############################################################################################
function gVMC_pt_marche()
Dim iEtat
giNiveau_Librairie = giNiveau_Librairie + 1
gFct_Log_LIB LOG_NORMAL,"Entrée gVMC_pt_marche"
' Si la grande VMC marche, alors la petite doit marchée !!!!
gVMC_pt_marche = gVMC_gd_marche
iEtat = gDEVICE_Get_etat_Device(DEVICE_VMC_Action_temp_pt)
If (iEtat = DEVICE_ON) Then
gFct_Log_LIB LOG_BAVARD," "&DEVICE_VMC_Action_temp_pt&" => ** ON **"
gVMC_pt_marche= TRUE
Else
gFct_Log_LIB LOG_BAVARD," "&DEVICE_VMC_Action_temp_pt&" => OFF"
End If
iEtat = gDEVICE_Get_etat_Device(DEVICE_VMC_Action_regulier_pt)
If (iEtat = DEVICE_ON) Then
gFct_Log_LIB LOG_BAVARD," "&DEVICE_VMC_Action_regulier_pt&" => ** ON **"
gVMC_pt_marche = TRUE
Else
gFct_Log_LIB LOG_BAVARD," "&DEVICE_VMC_Action_regulier_pt&" => OFF"
End If
iEtat = gDEVICE_Get_etat_Device(DEVICE_VMC_Action_SB_pt)
If (iEtat = DEVICE_ON) Then
gFct_Log_LIB LOG_BAVARD," "&DEVICE_VMC_Action_SB_pt&" => ** ON **"
gVMC_pt_marche= TRUE
Else
gFct_Log_LIB LOG_BAVARD," "&DEVICE_VMC_Action_SB_pt&" => OFF"
End If
iEtat = gDEVICE_Get_etat_Device(DEVICE_VMC_Action_ponctuel_pt)
If (iEtat = DEVICE_ON) Then
gFct_Log_LIB LOG_BAVARD," "&DEVICE_VMC_Action_ponctuel_pt&" => ** ON **"
gVMC_pt_marche= TRUE
Else
gFct_Log_LIB LOG_BAVARD," "&DEVICE_VMC_Action_ponctuel_pt&" => OFF"
End If
'Bilan VMC pt
If (gVMC_pt_marche) Then
gFct_Log_LIB LOG_BAVARD,"VMC pt => ** ON **"
Else
gFct_Log_LIB LOG_BAVARD,"VMC pt => OFF"
End If
giNiveau_Librairie = giNiveau_Librairie - 1
end function
'#############################################################################################
function gVMC_gd_marche()
Dim iEtat
giNiveau_Librairie = giNiveau_Librairie + 1
gFct_Log_LIB LOG_NORMAL,"Entrée gVMC_gd_marche"
gVMC_gd_marche = False
iEtat = gDEVICE_Get_etat_Device(DEVICE_VMC_Action_temp_gd)
If (iEtat = DEVICE_ON) Then
gFct_Log_LIB LOG_BAVARD," "&DEVICE_VMC_Action_temp_gd&" => ** ON **"
gVMC_gd_marche= TRUE
Else
gFct_Log_LIB LOG_BAVARD," "&DEVICE_VMC_Action_temp_gd&" => OFF"
End If
iEtat = gDEVICE_Get_etat_Device(DEVICE_VMC_Action_regulier_gd)
If (iEtat = DEVICE_ON) Then
gFct_Log_LIB LOG_BAVARD," "&DEVICE_VMC_Action_regulier_gd&" => ** ON **"
gVMC_gd_marche = TRUE
Else
gFct_Log_LIB LOG_BAVARD," "&DEVICE_VMC_Action_regulier_gd&" => OFF"
End If
iEtat = gDEVICE_Get_etat_Device(DEVICE_VMC_Action_SB_gd)
If (iEtat = DEVICE_ON) Then
gFct_Log_LIB LOG_BAVARD," "&DEVICE_VMC_Action_SB_gd&" => ** ON **"
gVMC_gd_marche= TRUE
Else
gFct_Log_LIB LOG_BAVARD," "&DEVICE_VMC_Action_SB_gd&" => OFF"
End If
iEtat = gDEVICE_Get_etat_Device(DEVICE_VMC_Action_ponctuel_gd)
If (iEtat = DEVICE_ON) Then
gFct_Log_LIB LOG_BAVARD," "&DEVICE_VMC_Action_ponctuel_gd&" => ** ON **"
gVMC_gd_marche= TRUE
Else
gFct_Log_LIB LOG_BAVARD," "&DEVICE_VMC_Action_ponctuel_gd&" => OFF"
End If
'Bilan VMC gd
If (gVMC_gd_marche) Then
gFct_Log_LIB LOG_BAVARD,"VMC gd => ** ON **"
Else
gFct_Log_LIB LOG_BAVARD,"VMC gd => OFF"
End If
giNiveau_Librairie = giNiveau_Librairie - 1
end function
'----------------------------------------------------------------------
'Fonction utilisée par VMC_Regulier
Function gVMC_Set_etat_status_allume(sItem)
gDEVICE_Set_etat_Device sItem,DEVICE_ON
End function
'----------------------------------------------------------------------
'Fonction utilisée par VMC_Regulier
Function gVMC_Set_etat_status_eteind(sItem)
gDEVICE_Set_etat_Device sItem,DEVICE_OFF
End function
