Script:Lib VMC

Un article de MacodaWiki.

Jump to: navigation, search

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
Récupérée de « http://www.macoda.com/index.php/Script:Lib_VMC »