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
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