Je souhaiterai pouvoir visualiser les données de ma pompe à chaleur Hayward depuis Jeedom.
J'ai des connaissances en programmation .NET mais ça s'arrête là.
J'ai programmé une petite application en .NET qui se connecte au cloud de Hayward et récupère les données de la pompe à chaleur.
Il serait tout à fait possible de la paramétrer aussi car le cloud le permet ... mais dans l'exemple ci-dessous je n'ai pris que quelques informations basiques pour démontrer le fonctionnement.
Bref, est-ce que quelqu'un pourrait m'aider à développer un petit plugin Jeedom qui ferait la même chose que ces quelques lignes de code?
(Je ne donne que les morceaux de codes essentiels ...)
1) un timer qui va se connecter au cloud Hayward toutes les minutes.
Code : Tout sélectionner
Private Sub TimerCheck_Tick(sender As System.Object, e As System.EventArgs) Handles TimerCheck.Tick
TimerCheck.Interval = 60000
Try
LabelTime.Text = "Rafraichissement ..."
brwsConnect = New WebBrowser
brwsConnect.ScriptErrorsSuppressed = True
brwsConnect.Navigate("http://smartemp.hayward.fr:9000", False)
Catch ex As Exception
LabelTime.Text = "Erreur: " & ex.Message
End Try
End Sub
- si on est déjà logué alors on récupères les valeurs depuis les éléments HTML.
- sinon on se connecte au cloud avec le code barre (user) et le mot de passe de la PAC.
Code : Tout sélectionner
Private Sub brwsConnect_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles brwsConnect.DocumentCompleted
Try
Dim MyHTML As String = brwsConnect.DocumentText
If InStr(UCase(MyHTML), "NAVIGATION CANCELED") > 0 Then
LabelTime.Text = "Erreur de connexion ..."
Exit Sub
End If
Temp_Current = "..."
Temp_Target = "..."
Temp_Inlet = "..."
Temp_Outlet = "..."
Dim outputs As HtmlElementCollection = brwsConnect.Document.GetElementsByTagName("span")
For Each pElem As HtmlElement In outputs
If (pElem.GetAttribute("id") = "lbwd") Then
Temp_Target = pElem.GetAttribute("innerText")
End If
If (pElem.GetAttribute("id") = "lbwd1") Then
Temp_Current = pElem.GetAttribute("innerText")
End If
If (pElem.GetAttribute("id") = "lbwd2") Then
Temp_Outlet = pElem.GetAttribute("innerText")
End If
If (pElem.GetAttribute("id") = "lbwd3") Then
Temp_Inlet = pElem.GetAttribute("innerText")
End If
Next
If Temp_Current <> "..." And Temp_Target <> "..." And Temp_Inlet <> "..." And Temp_Outlet <> "..." And Table_Data.Rows.Count = 4 Then
Table_Data.Rows(0)("Value") = Temp_Current
Table_Data.Rows(1)("Value") = Temp_Target
Table_Data.Rows(2)("Value") = Temp_Inlet
Table_Data.Rows(3)("Value") = Temp_Outlet
Do While IsNumeric(Temp_Current) = False And Temp_Current.Length > 1
Temp_Current = Temp_Current.Substring(0, Temp_Current.Length - 1)
Loop
Thermometer_CurrentTarget.Value = Temp_Current
LabelTime.Text = Now
brwsConnect = Nothing
Exit Sub
End If
Dim inputs As HtmlElementCollection = brwsConnect.Document.GetElementsByTagName("input")
For Each pElem As HtmlElement In inputs
If (pElem.GetAttribute("name") = "barCode") Then
pElem.SetAttribute("value", Trim(TextBoxCodeBarre.Text))
End If
If (pElem.GetAttribute("name") = "pwd") Then
pElem.SetAttribute("value", Trim(TextBoxMotDePasse.Text))
End If
If (pElem.GetAttribute("name") = "ImageButton1") Then
pElem.InvokeMember("click")
Exit Sub
End If
Next
LabelTime.Text = "Erreur Reconnaissance"
Catch ex As Exception
LabelTime.Text = "Erreur: " & ex.Message
End Try
End Sub
Sébastien