Serveur Hayward injoignable

Salut,

J’ai un peu etudie la facon dont l’application smartphone communique avec le serveur PHNIXSMART.
Pour cela j’ai fait un sniff des packets echanges lors de l’utilisation de l’application, juste en changeant la temperature de consigne.
J’ai mis 25 degC et j’ai releve ceci en retour:

POST /Phnix.WaterHeater.WebService/SmartDeviceService.asmx HTTP/1.1
Content-Type: text/xml;charset=utf-8
Content-Length: 466
Host: www.phnixsmart.com
Connection: Keep-Alive

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><SavePackageData xmlns="http://www.phnix.cn/"><company>PHNIX</company><barcode>MONLOGIN</barcode><pw>MONMOTDEPASSE</pw><requestPackData>qlqxgwEAL6gACEAAAQZybnR8THxafEw9PQACAAAAAAAAffA=
</requestPackData></SavePackageData></soap:Body></soap:Envelope>

On voit ici que c’est la fonction ‹ SavePackageData › qui est appelee.

J’ai alors fait un petit programme en VB.NET pour simuler la meme chose et TADA cela fonctionne :slight_smile:
J’appelle simplement le Web Service http://www.phnixsmart.com/Phnix.WaterHeater.WebService/SmartDeviceService.asmx et j’utilise la fonction ‹ SavePackageData ›

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            Dim Login As String = "MONLOGIN"
            Dim Password As String = "MONMOTDEPASSE"
            Dim Param As String = "qlqxgwEAL6gACEAAAQZybnR8THxafEw9PQACAAAAAAAAffA="
            Dim PackData As Byte() = Convert.FromBase64String(Param)
            Dim PhNixService As New PhNix.SmartDeviceServiceSoapClient("SmartDeviceServiceSoap")
            Dim Result = PhNixService.SavePackageData("PHNIX", Login, Password, PackData)
            Dim Message As String = ""
            If Result.Messages IsNot Nothing Then
                For Each Entry In Result.Messages
                    Message += Entry
                Next
                    MsgBox(Message)
            Else
                MsgBox("Success!")
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

Par contre, dans ce parametre ‹ requestPackData › tout est envoye en meme temps : mode, temp de consigne, ON ou OFF de la PAC, etc …
Tu vois aussi que je n’ai pas pu passer ce parametre ‹ requestPackData › tel quel… il a fallu que je le convertisse en Byte().
La est tout le mystere, comment comprendre cette chaine ‹ requestPackData › ???

Voici ce que j’obtiens en lisant ce ‹ requestPackData › converti en Byte Array lorsque je change les valeurs de temperatures de consigne de 25 a 32 DegC:
(la PAC est d’abord en OFF puis en ON … pas de timer en place …)

Si des matheux sont la, un peu d’aide serait la bienvenue.

Merci,

Sebastien