Script HTML:Aff données eau froide

De MacodaWiki
Révision de 18 mars 2012 à 16:56 par Greyvador (discussion | contributions)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

Description

Ce script ASP est exécuté sur le serveur Web Homeseer et permet d'afficher les données stockées dans une base de données SQL par le script compteur_eau_froide.vbs, associé au montage compteur d'eau.

Attention, le script n'est pas tout à fait propre, mais il est opérationnel.

Résultat

Script Compteur eau tout.png - Script Compteur eau heure.png

Script

<%@ LANGUAGE=VBScript %>
<%


'###################################
' information générales sur les pages ou les tables à afficher
sDonnees = "eau_froide"
sZone_db = "nb_litre"
'###################################



'***************
'Champ calculés
sTable    = "tb_"&sDonnees
sNom_Page = sDonnees&"_Somme"



'***************
'Pour la gestion de la résolution (adaptation de la taille des graphiques à la taille du navigateur
res=Request.QueryString("res")


'***************************************************************************
'Détermine l'adresse de l'utilisateur
userID = request.servervariables("REMOTE_ADDR")
if (userID = "127.0.0.1") or (InStr(userID,"localhost")) then
	sAdrHttpSrv = "localhost"
	
elseif (instr(userID,"192.168.")) then
	sAdrHttpSrv = "192.168.0.1"
	
elseif (instr(userID,"192.51.560.102")) then
	sAdrHttpSrv = "www.macoda.com"
else
	sAdrHttpSrv = "www.macoda.com"
	hs.writelog "http-aff_donnees_"&sDonnees&".asp" , "Connexion de l'ordinateur sur aff_donnees_"&sDonnees&".asp => "&userID

	hs.writelog "http-aff_donnees_"&sDonnees&".asp" , "ATD => Faire une bibliothque de fonction HTML"
end if



'******************************************************************************************
'******************************************************************************************
'******************************************************************************************
'Construit_Graphique
'	sNomImg			=> Nom du fichier qui sera généré pour le graphique
'	sMode			=> "Détail", "Heure", "Jour", "Mois"
'					"Détail" => Toutes les valeurs sont affichées (dépend échantillonnage)
'					"Heure" => On affiche les données heure par heure
'					"Jour" => On affiche les données jour par jour
'					"Mois" => On affiche les données mois par mois
'	iiJour_aff,mois,an	=> Date d'affichage pour le graphique
'					Si on est en mode "Détail" => Toutes les valeurs du jour dit
'					Si on est en mode "Heure" => On fait un bilan par heure => Pour le jour dit
'					Si on est en mode "Jour" => On fait un bilan par jour => Pour le mois en cours
'					Si on est en mode "Mois" => Pour l'année en cours
'	iMin_heure, iMax_heure	=> Dans le mode "Détail" ou "Heure" => Permet de ne voir qu'une portion du jour
'	niv_debug		=> Avec NIV_DEBUG_PAS ou NIV_DEBUG_AVEC

'
Sub Construit_Graphique(sNomImg,sMode,iJour_aff,iMois_aff,iAnnee_aff,iMin_heure,iMax_heure,niv_debug)
	if (niv_debug = 1) then
response.write "
"
		response.write "sNomImg = "&sNomImg&"
" response.write "Mode = "&sMode&"
" response.write "iJour_aff = "&iJour_aff&"
" response.write "iMois_aff = "&iMois_aff&"
" response.write "iAnnee_aff = "&iAnnee_aff&"
" response.write "heure_aff_min = "&iMin_heure&"
" response.write "heure_aff_max = "&iMax_heure&"
" end if '----------------------------- 'titre du graphique sDate = DateSerial(iAnnee_aff, iMois_aff, iJour_aff) if ( (sMode = "Détail") or (sMode = "Heure")) then sTitre_Graph = sFctNom_Jour(sDate) & " " & sDate elseif (sMode = "Jour") then sTitre_Graph = sFctNom_Mois(sDate) & " " & cstr(iAnnee_aff) elseif (sMode = "Mois") then sTitre_Graph = cstr(iAnnee_aff) end if '---------------------------------------------------------------------------------- J1_1 = "#" & cstr(iMois_aff) & "/01/" & cstr(iAnnee_aff) & "#" J2_1 = "#" & iMois_aff & "/" & iJour_aff & "/" & iAnnee_aff & "#" 'format #7/16/2006# J3_1 = iAnnee_aff & "," & iMois_aff & "," & iJour_aff 'format 2004,05,25 if (iJour_aff+1>31) then J2_2 = "#" & iMois_aff+1 & "/01/" & iAnnee_aff & "#" 'format #7/16/2006# J3_2 = iAnnee_aff & "," & iMois_aff+1 & "," & 1 'format 2004,05,25 else J2_2 = "#" & iMois_aff & "/" & iJour_aff+1 & "/" & iAnnee_aff & "#" 'format #7/16/2006# J3_2 = iAnnee_aff & "," & iMois_aff & "," & iJour_aff+1 'format 2004,05,25 end if J1_2 = "#" & cstr(iMois_aff+1) & "/01/" & cstr(iAnnee_aff) & "#" '----------------------------- if (niv_debug = 1) then response.write "J1_1 = "&J1_1&" - J1_2 = "&J1_2&"
" response.write "J2_1 = "&J2_1&" - J2_2 = "&J2_2&"
" response.write "J3_1 = "&J3_1&" - J3_2 = "&J3_2&"
" end if '****************************************************************************************** 'appel de chartDirector api Set cd = CreateObject("ChartDirector.API") 'taille de l'image Set c = cd.XYChart(lg_graph, ht_graph) Call c.setBackground(&HFFFFC0, &HFFFFC0, 2) Call c.setPlotArea(40, 30, lg_graph-55, ht_graph-80, &HFFFFFF, &HFFFFFF, &HC0C0C0, &HC0C0C0) Call c.addTitle(sTitre_Graph & " - " & sZone_db&" "&sMode, "timesbi.ttf").setBackground(&HFFFF00) ' 8 => Taille de la police de caractere pour la lgende Call c.addLegend(55, 25, False, "", 8).setBackground(cd.Transparent) ' ouverture base de donnee systeme ou sont stockees les temperatures ' HomeSeer est cree avec odbcad32.exe : BdD systeme pointant sur un fichier ' xxxxx.mdb ' ' un champ NOM : contient les temperatures (string) ' LOCAT : nom du device 1 wire (tronqu 12 car) (string(12)) ' DATE : la date de la mesure ' Set Base = CreateObject("ADODB.Connection") Set rsT = CreateObject("ADODB.Recordset") Base.Open "HOMESEER" Set layer = c.addBarLayer2(cd.Side, 3) if (sMode = "Détail") then SQL = "Select "&sZone_db&", Date_op " SQL = SQL & "From "&sTable&" " SQL = SQL & "where Date_op >=DateSerial("&J3_1&") AND Date_op < DateSerial("&J3_2&") " SQL = SQL & "AND Hour([Date_op])>="&cstr(iMin_heure)&" " SQL = SQL & "AND Hour([Date_op])<"&cstr(iMax_heure)&" ORDER BY Date_op" else '------------------------------------- ' Mode Heure, Jour et Mois if (sMode = "Heure") then str_date="'dd/mm/yyyy h:""00""'" ' Pour les heures elseif (sMode = "Jour") then str_date="'dd/mm/yyyy'" ' Pour les jours elseif (sMode = "Mois") then str_date="'mm/yyyy'" ' Pour les Mois end if SQL = "SELECT Sum(["&sZone_db&"]) AS NBUNITE, " SQL = SQL & "CDate(Format([date_op],"&str_date&")) AS Date_reg " SQL = SQL & "FROM "&sTable&" " if (sMode = "Heure") then SQL = SQL & "WHERE Hour([Date_op])>="&cstr(iMin_heure)&" " SQL = SQL & "AND Hour([Date_op])<="&cstr(iMax_heure)&" " end if SQL = SQL & "GROUP BY CDate(Format([date_op],"&str_date&")) " if (sMode = "Heure") then SQL = SQL & "HAVING (((First(Date_op))>="&J2_1&" And (First(Date_op))< "&J2_2&")) " elseif (sMode = "Jour") then ' Mode Jour SQL = SQL & "HAVING (((First(Date_op))>="&J1_1&" And (First(Date_op))< "&J1_2&")) " elseif (sMode = "Mois") then ' Mode Mois SQL = SQL & "HAVING (((First(Date_op))>="&J1_1&" And (First(Date_op))< "&J1_2&")) " end if SQL = SQL & "ORDER BY CDate(Format([date_op],"&str_date&"))" end if if (niv_debug = 1) then response.write j&" : " &SQL &"
" end if Call rsT.Open(SQL, Base) hs.WaitEvents Set dbTableT = cd.DBTable(rsT) j = 1 Call c.xAxis().setLabels(dbTableT.getCol(1)) Call c.xAxis().setLabelFormat("{value|mm/dd}") ' 7 = Taille police - 45 = INclinaison Call c.xAxis().setLabelStyle("", 7, 0, 45) Call layer.addDataSet(dbTableT.getCol(0), &H33FF33, sZone_db) rsT.Close() Call c.xAxis().setWidth(2) Call c.yAxis().setWidth(2) Call c.yAxis().setLabelFormat("{value}") Call c.makeChart("\program files\HomeSeer\html\" & sNomImg) End Sub '****************************************************************************************** '****************************************************************************************** '****************************************************************************************** Function sFctNom_Jour(madate) Dim t, j t = "dimanche,lundi,mardi,mercredi,jeudi,vendredi,samedi" Tab_Jour = Split(t, ",", -1, 1) sFctNom_Jour = Tab_Jour(Weekday(madate) - 1) End Function '****************************************************************************************** '****************************************************************************************** '****************************************************************************************** Function sFctNom_Mois(Mois) Dim t, j t = "Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Aout,Septembre,Octobre,Novembre,Décembre" Tab_Mois = Split(t, ",", -1, 1) sFctNom_Mois = Tab_Mois(Month(madate) - 1) End Function '*********** '*********** '*********** '*********** '*********** %> <html> <head> <link rel="stylesheet" type="text/css" href="style.css"> <meta HTTP-EQUIV="EXPIRES" CONTENT="0"> <meta HTTP-EQUIV="Pragma" CONTENT="no-cache"> <% response.write "<title>"&sNom_Page&"</title>" %> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <script language="javascript"> if( typeof( window.innerWidth ) == 'number' ) { //Non-IE myWidth = window.innerWidth; myHeight = window.innerHeight; } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { //IE 6+ in 'standards compliant mode' myWidth = document.documentElement.clientWidth; myHeight = document.documentElement.clientHeight; } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { //IE 4 compatible myWidth = document.body.clientWidth; myHeight = document.body.clientHeight; } res = "res="+myWidth+"x"+myHeight </script> <% res=request.form("res") if res = "" then response.write "<script language='javascript'>" response.write "top.location.href='aff_donnees_"&sDonnees&".asp?'+res" response.write "</script>" end if jour=request.form("jour") mois=request.form("mois") annee=request.form("annee") iMin_heure=request.form("iMin_heure") iMax_heure=request.form("iMax_heure") if iMax_heure ="" then Dt = DateAdd("d", 0, Date) jour = Day(Dt) mois = month(Dt) annee = Year(Dt) iMin_heure = 00 iMax_heure = 24 temp_max = 6000 end if %> <% NIV_DEBUG_PAS = 0 NIV_DEBUG_AVEC = 1 iPosX=instr(1,res,"x") sLargeur = mid(res,1,iPosX-1) sHauteur = mid(res,iPosX+1,99) Nb_Graphique = 2 ht_graph = ( Cdbl(sHauteur) / Nb_Graphique)-50 lg_graph = Cdbl(sLargeur) - 50 if res <> "" then sNom_Graph = "hb_"&sNom_Page&"_tout.png" Construit_Graphique sNom_Graph,"Détail",jour,mois,annee,iMin_heure,iMax_heure,NIV_DEBUG_SANS response.write "<img src="&sNom_Graph&" >

" sNom_Graph = "hb_"&sNom_Page&"_heure.png" Construit_Graphique sNom_Graph,"Heure",jour,mois,annee,iMin_heure,iMax_heure,NIV_DEBUG_SANS response.write "<img src="&sNom_Graph&" >

" sNom_Graph = "hb_"&sNom_Page&"_jour.png" Construit_Graphique sNom_Graph,"Jour",jour,mois,annee,iMin_heure,iMax_heure,NIV_DEBUG_SANS response.write "<img src="&sNom_Graph&" >

" sNom_Graph = "hb_"&sNom_Page&"_mois.png" Construit_Graphique sNom_Graph,"Mois",jour,mois,annee,iMin_heure,iMax_heure,NIV_DEBUG_SANS response.write "<img src="&sNom_Graph&" >

" end if sText ="<form method='post' name='formulaire' action='aff_donnees_"&sDonnees&".asp?res="&res&"'>" response.write sText %>

Date <input type="text" name="jour" value="<%=jour%>" size = 2> / <input type="text" name="mois" value="<%=mois%>" size = 2> / <input type="text" name="annee" value="<%=annee%>" size = 4> Heure minimum <input type="text" name="iMin_heure" value="<%=iMin_heure%>" > - Heure maximum <input type="text" name="iMax_heure" value="<%=iMax_heure%>" >
<% response.write "<input type='hidden' name='res' value='"&res'>" %> <input type="submit"> </form> </body> </html>