Creer un Plugin Homeseer : Page de configuration

20 fév Creer un Plugin Homeseer : Page de configuration

La page de configuration du plugin HomeSeer se trouve dans le fichier clsWebLink1.vb

clsWebLink1.vb utilise les fonctions du module HTMLPublic contenu dans le fichier HTMLPublic.vb

Contenu de la page de configuration du plugin homeseer

Le contenu HTML de la page de configuration du plugin homeseer est contenu dans élément de la classe StringBuilder

Dim p As New StringBuilder

L’ajout du contenu HTML dans ‘p’ s’effectue de la façon suivante :

p.Append(<Nom de la fonction>)

Nous allons pouvoir ainsi ouvrir et fermer un formulaire

p.Append(HTML_StartForm)   ' ouvre le formulaire
p.Append(HTML_EndForm)     ' ferme le formulaire

Ouvrir et fermer un tableau :

p.Append(HTML_StartTable(0, 0, 60))  ' ouvre un tableau
.Append(HTML_EndTable)                  ' ferme un tableau

Dans le tableau de la page de configuration du plugin HomeSeer, nous allons pouvoir définir le début et la fin d’une ligne

p.Append(HTML_StartRow)
p.Append(HTML_EndRow)

Et bien entendu insérer des cellules dans cette ligne en ajoutant du texte dans cette dernière

p.Append(HTML_StartCell("tableEntete", 1, , True))
p.Append("Page de configuration du Plugin Homeseer")
p.Append(HTML_EndCell)

L’ajout de bouton dans la page de configuration du plugin HomeSeer est également possible

p.Append(FormButton("LaunchButton", "HomeSeer Plugin", "Ouvrir la page de configuration du plugin homeseer."))

Créer un menu dans la page de configuration du plugin Homeseer

Pour créer un menu, il faut déclarer un tableau contenant les boutons servant de menu :

p.Append(HTML_StartTable(0, 0, 20))
 p.Append(HTML_StartRow)
 p.Append(HTML_StartCell("tableEntete", 1, , True))
 p.Append(FormButton("BpGeneral", "Général", "Clicquer pour voir la configuration général."))
 p.Append(HTML_EndCell)
 p.Append(HTML_StartCell("tableEntete", 1, , True))
 p.Append(FormButton("BpInterface", "Interfaces", "Clicquer pour voir la configuration interfaces."))
 p.Append(HTML_EndCell)
 p.Append(HTML_EndRow)
 p.Append(HTML_EndTable)

Nous obtenons ainsi deux boutons menu :
– Générale
– Interface

Créer des pages différentes dans la page de configuration du plugin Homeseer

La données lPairs permet de connaître le nombre d’élément transmis à la page. Et le tableau tPair le contenu de ces éléments.
Il est donc possible d’effectuer un select case afin de modifier l’affichage de la page de configuration du plugin homeSeer en fonction du bouton de menu

p.Append(HTML_StartTable(0, 0, 20))
        If lPairs > 0 Then
            For i = 0 To lPairs - 1
                Select Case tPair(i).Name
                    Case "BpGeneral"
                        p.Append(HTML_StartRow)
                        p.Append(HTML_StartCell("tableheader", 2, , True))
                        p.Append("Configuration Générale")
                        p.Append(HTML_EndCell)
                        p.Append(HTML_EndRow)
                        p.Append(HTML_StartRow)
                        p.Append(HTML_StartCell(RowClass(0), 1, , True))
                        p.Append("Debug level:")
                        p.Append(HTML_EndCell)
                        p.Append(HTML_StartCell(RowClass(0), 1, , True))
                        Dim options(1) As Pair
                        options(0).Name = "Off"
                        options(0).Value = "Off"
                        options(1).Name = "Niveau 1"
                        options(1).Value = "Niveau 1"
                        p.Append(FormDropDown("", "Debug", options, 2, 0))
                        p.Append(HTML_EndCell)
                        p.Append(HTML_StartRow)
                        p.Append(HTML_StartCell(RowClass(1), 1, , True))
                        p.Append("Language: ")
                        p.Append(HTML_EndCell)
                        p.Append(HTML_StartCell(RowClass(1), 1, , True))
                        p.Append("Français")
                        p.Append(HTML_EndCell)
                        p.Append(HTML_EndRow)

                    Case "BpInterface"
                        p.Append(HTML_StartRow)
                        p.Append(HTML_StartCell("tableheader", 2, , True))
                        p.Append("Configuration interfaces")
                        p.Append(HTML_EndCell)
                        p.Append(HTML_EndRow)
                End Select
            Next
        End If
        p.Append(HTML_EndTable)

Exemple de la page de configuration du plugin homeseer

Voici un exemple complet d’une page de configuration du plugin d’exemple de HomeSeer :

Imports System.Text
Imports VB = Microsoft.VisualBasic

Public Class clsWebLink1

Public link As String       ' Actual link string, such as:    my_page
Public linktext As String   ' Display text for link, such as: "Security Status"  &lt;-- Text of the HS generated link button.
Public page_title As String ' Title of the web page, such as: "Acme Security Panel Status"
Public lPairs As Long       ' Number of name/value pairs after GetFormData
Public tPair() As Pair      ' Name/Value pairs array, populated by GetFormData

Public Function GenPage(ByRef lnk As String) As String
Dim p As New StringBuilderDim Row As Short = 0
Dim RowClass(1) As String
Dim i As Short

RowClass(0) = "tableroweven"
RowClass(1) = "tablerowodd"

p.Append(HTML_StartForm)
p.Append(HTML_StartTable(0, 0, 60))

p.Append(HTML_StartRow)
p.Append(HTML_StartCell("tableheader", 6, , True))
p.Append("ZigBee Sample Table Inside A Web Form")
p.Append(HTML_EndCell)
p.Append(HTML_EndRow)

p.Append(HTML_StartRow)
p.Append(HTML_StartCell("tablecolumn", 3, , True))
p.Append("This Covers 3 Columns In My Table")
p.Append(HTML_EndCell)
p.Append(HTML_StartCell("tablecolumn", 3, , True))
p.Append("And this covers the OTHER 3")
p.Append(HTML_EndCell)
p.Append(HTML_EndRow)

' An HTML form field having a name and a value all makes sense until you get to a form button.
' In the case of a button, the VALUE is what is displayed on the button, so keep that in mind
'   that a button is backwards from what logic would dictate!

p.Append(HTML_StartRow)
p.Append(HTML_StartCell("", 6, ALIGN_CENTER))
p.Append(FormButton("LaunchButton", "HomeSeer New Window", "Go to the HomeSeer site in a new browser."))
p.Append(HTML_EndCell)
p.Append(HTML_EndRow)
Row = Row Xor 1

p.Append(HTML_StartRow)
p.Append(HTML_StartCell("", 6, ALIGN_LEFT))
p.Append(FormButton("This button has this string as a value.", "DummyButton", "Click me to see my value in the log."))
p.Append(HTML_EndCell)
p.Append(HTML_EndRow)
Row = Row Xor 1

For i = 0 To 5
p.Append(HTML_StartRow)
p.Append(HTML_StartCell(RowClass(Row), i + 1, ALIGN_RIGHT))
p.Append("This is row " &amp; (i + 1).ToString)
p.Append(HTML_EndCell)
If i &lt; 5 Then
p.Append(HTML_StartCell(RowClass(Row Xor 1), 5 - i, ALIGN_CENTER))
p.Append("Hello")
p.Append(HTML_EndCell)
End If
p.Append(HTML_EndRow)
Row = Row Xor 1
Next

p.Append(HTML_EndTable)

p.Append(AddHidden("ref_page", Me.link))

p.Append(HTML_EndForm)

Return p.ToString

End Function

' put requests call here
Public Function PagePut(ByRef data As String) As String
Dim i As Short
Dim bDoIt As Boolean = False
GetFormData(data, Me.lPairs, Me.tPair)

If lPairs &gt; 0 Then
For i = 0 To lPairs - 1
If tPair(i).Name = "LaunchButton" Then
bDoIt = True
ElseIf tPair(i).Value.Trim.ToLower = "dummybutton" Then ' Names &amp; Values are case sensitive - good to lcase or ucase when testing.
hs.WriteLog(IFACE_NAME, "The value of the Dummy Button is " &amp; tPair(i).Name)
End If
Next
End If

If bDoIt Then
LaunchApp("http://domotique.benchi.fr")
End If

Return ""

End Function

End Class
Be Sociable, Share!
3 Comments
  • Beats by dre For Cheaper online
    Posted at 09:51h, 24 avril Répondre

    Excellent post. Je vérifiais sans cesse ce blog et je suis impressionné! Informations extrêmement utiles spécialement la dernière partie :) je me soucie d’une telle information beaucoup. Je cherchais cette info pour certain un temps très long. Merci et bonne chance

  • GENTILINI
    Posted at 10:35h, 05 juillet Répondre

    Bonjour,

    Je ne sais comment vous joindre car je voudrais savoir comment modifier votre script FREESMS HS3 pour HS2 (si possible)

    Cdt

    Bruno

Post A Comment