Radiateur Muller intuitiv

Bonjour,
J’ai réussi à intégrer mes modules Intuitiv Muller dans jeedom, pour faire à peu près tout ce qu’on peut faire via l’appli android (définition température, passage hg, récupération des données comme la température actuelle, le capteur de présence, le capteur fenêtre ouverte, le flag « chauffage anticipé », le mode hg/manuel/programmé…).
Par contre, mon installation jeedom est assez complexe (comme je suis nul en php, j’ai déporté l’essentiel du code dans un proxy externe à jeedom écrit en java), et je ne peux pas facilement en faire un module indépendant php pour le publier sur le marketplace jeedom. Je vais donc partager la manière dont je m’y suis pris, en espérant qu’un expert php pourra en faire un module utilisable pour la communauté.
Principe:
J’ai sniffé les requêtes https de l’appli en l’installant sur l’émulateur android intégré à Android Studio. L’ensemble de la manip est très bien documentée ici (crédits à l’auteur): https://httptoolkit.tech/blog/inspect-any-android-apps-http/. Il n’est nécessaire d’aller que jusqu’au § « Inspecting Android HTTP traffic », le reste n’est pas utile pour notre usecase. Penser aussi à installer l’appli sur une image Android ancienne (API 23 par exemple), ca facilitera l’installation du certificat SSL HTTP traffic sur l’image android.

Une fois l’installation faite, j’ai pu naviguer dans l’appli émulée, regarder les requêtes https produites, puis les ré-encapsuler dans mon propre code.

L’api intuitiv est très bien faite, et les payloads sont assez simples. Quelques exemples:

Authentification: wget --post-data="password={motdepasse personnel}&app_version=1108100&grant_type=password&scope=read_muller%20write_muller&client_secret={client secret}&user_prefix=muller&client_id={client id}&username={email personnel}"  "https://app.muller-intuitiv.net/oauth2/token"

Forcer une température manuelle:

wget --header="authorization: Bearer {token récupéré à l'authent}" \
--header="content-type: application/json; charset=utf-8" \
--post-data="{\"app_type\":\"app_muller\",\"app_version\":\"1108100\",\"home\":{\"rooms\":[{\"therm_setpoint_end_time\":1638731065,\"therm_setpoint_temperature\":20.0,\"therm_setpoint_mode\":\"manual\",\"id\":\"{id pièce}\"}],\"timezone\":\"GMT\",\"id\":\"{id maison}\"}}" \
"https://app.muller-intuitiv.net/syncapi/v1/setstate"

En espérant que ca aide.

1 « J'aime »