Aller au contenu
Bloug

Curl en Lua

Recommended Posts

Ahh mais c'est pas pour Atlantic :D Mon petit QA Cozytouch marche bien ! là c'est pour ma chaudière Vaillant ! :D

 

@Lazer je supose que si le protocole est TLSv1.2 c'est bal engagé ?

Modifié par Bloug

Partager ce message


Lien à poster
Partager sur d’autres sites

Voila J'ai trouvé ! un truc de ouf !

bah en fait dans le header .... il faut tout tout virer et mettre juste :

 

Cmd POST

boiteacookies = cookie1..';'..cookie2

Et dans la Cmd GET 

 

[ 'Cookie' ] = boiteacookies,  
{
  "body": {
    "name": "PLANCHER ",
    "enabled": true,
    "active_function": "STANDBY",
    "inside_temperature": 24.9,
    "quick_veto": {
      "active": false,
      "setpoint_temperature": 23.0
    }

 

Modifié par Bloug

Partager ce message


Lien à poster
Partager sur d’autres sites

Oups tu es vraiment tordu pourquoi ne pas avoir pris tout chez atlantic ?



Envoyé de mon BLA-L29 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Bah la chaudière c'est du Vaillant car le truc vendu (depuis 4) ans avec une API qui n'est toujours pas public depuis ....

 

puis pour les sèche-serviettes c'est un truc électrique d'appoint .... plus  pour l'option bluetooth pour écouter la musique et la gestion du Fil pilote !

d'ailleurs j'ai un module QUBINO Fil Pilote rail DIN inutile

Partager ce message


Lien à poster
Partager sur d’autres sites

@Bloug

 

tu avais réussi à communiquer avec ta chaudière VAILLANT finalement ?

 

merci

Partager ce message


Lien à poster
Partager sur d’autres sites

oui , je récupère les infos.

 

Capture1.JPG.bd54843032b9c388aba034f63ef3eadf.JPG + Température du Couloir ( là ou il y a le multimatic )

 

Comme je suis sur Plancher chauffant je touche jamais les réglages du coup c'est juste pour les états et Domocharts/Grafana

Partager ce message


Lien à poster
Partager sur d’autres sites

Wow énorme.

Un tuto un tuto !!

Tu as quoi comme config ? Comment faire ?

Mon installation PAC VAILLANT AeroTherm PLus VWL 85/6, avec plusieurs circuits d’où un VR71. VRC700 et des commandes VR91 pour la 2eme et 3eme zone
Tu as aussi un VD920 ?

A+


Envoyé de mon iPhone en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

 

je me suis aidé du travail réalisé par Thomas Germain sur Home Assistant.

Voici deux liens : https://github.com/thomasgermain

et de mémoire j'ai bossé avec le script suivant https://github.com/thomasgermain/pymultiMATIC/blob/master/script/print_response.ps1

 

Après c'est surtout un question de compatibilité car vaillant migre les utilisateurs "semble t'il" avec une nouvelle application ?

 

Après pour simplifier c'est les étapes traditionnelles :


 N°1 - Récupération du Token
 N°2 - connexion avec le Token
 N°3 - Des commande Get pour récupérer des infos 

 

voici le début, Regardes si tu as qq retour ( positif de connexion ) et moi je fouille mes archives pour retrouver l'ensemble des cmd à tester 

 

 

3.JPG.a86c9e051fac8b6a8280688d4cb50fcc.JPG

 

UserName et Password : ceux utilisés pour te connecter avec l'app vaillant 

Serial  : Disponible dans ton app vaillant ( connexion reseau ) N° de Serie 

 

print("<font color=purple>____________________________________________________________")
    print('<font color=red> Connexion N°1 - Récupération du Token ....</font>')
    self.http:request("https://smart.vaillant.com/mobile/api/v4/account/authentication/v1/token/new", {
        options={
            method = "POST",
            data = '{ "smartphoneId": "pymultiMATIC", "username": "' .. log .. '", "password": "' .. pass .. '" }' ,
            headers = {
				[ 'content-type' ] = 'application/json;charset=UTF-8',
                [ 'Accept-Encoding' ] = 'gzip',
                [ 'Accept' ] = 'application/json',
                [ 'Vaillant-Mobile-App' ] = 'multiMATIC v2.1.45 b389 (Android)',
            }
        },     
        success = function(response)
            if response.status == 200 then
               self:debug('Connexion : Ok ')
               token = json.decode(response.data).body.authToken
               print('Get Token : ' .. token )
               self:login()
            else
                self:debug('Error : '  .. response.status .. response.data)
                self:updateProperty("deviceIcon", 1054)  -- Icone API Offline
            end
        end,
        error = function(error)
            self:debug('error: ' .. error)
        end
    })
end                                    -- N° 1  - Token 

function QuickApp:login()
    print('<font color=purple>____________________________________________________________')
    print('<font color=red> Connexion N°2 avec le Token : ' .. token  )
        self.http:request("https://smart.vaillant.com/mobile/api/v4/account/authentication/v1/authenticate", {
        options={
            method = "POST",
            data = '{ "smartphoneId": "pymultiMATIC", "username": "' .. log .. '", "authToken": "' .. token .. '" }' ,
            headers = {
				[ 'content-type' ] = 'application/json;charset=UTF-8',
                [ 'Accept' ] = 'application/json',
                [ 'Vaillant-Mobile-App' ] = 'multiMATIC v2.1.45 b389 (Android)',
            }
        },
        success = function(response)
            if response.status == 200 then
               self:debug('Authentification avec le Token : Ok')
               SetCookie = response.headers['Set-Cookie']
               cookie1,cookie2 = SetCookie:match("(.-);.-HttpOnly, (.-);")
               print( 'Récupération des Cookies : ')               
               boiteacookies = cookie1..';'..cookie2
               print(boiteacookies)
               self:GetConfig()                                  -- Commande GET 
            else
                self:debug('Error : '  .. response.status .. response.data)
            end
        end,
        error = function(error)
            self:debug('error: ' .. error)
        end
    })
end                                    -- N° 2  - Auth 

function QuickApp:GetConfig()

    print("<font color=purple>____________________________________________________________")
    print('<font color=red> Connexion N°3 - Commande GET pour Tmps Int - Consigne - Fonctionnement' )
        self.http:request('https://smart.vaillant.com/mobile/api/v4/facilities/'.. serial .. '/systemcontrol/v1/zones/Control_ZO1', {
        options={
            method = "GET",
            headers = {
                 [ 'content-type' ] = 'application/json',
                 [ 'Accept' ] = 'application/json',
                 [ 'Vaillant-Mobile-App' ] = 'multiMATIC v2.1.45 b389 (Android)',
                 [ 'Cookie' ] = boiteacookies,                 
                 },
        },
        success = function(response)
            if response.status == 200 then
               print('Connection Ok')
                      
               VNameofzone     = json.decode(response.data)["body"]["configuration"].name 
               VInsideTemp    = json.decode(response.data)["body"]["configuration"].inside_temperature
               VConsigne      = json.decode(response.data)["body"]["heating"]["configuration"].setpoint_temperature
               VFonction      = json.decode(response.data)["body"]["configuration"].active_function

         if VFonction == "STANDBY" then 
          VFonction = "En Attente" 
          self:updateProperty("deviceIcon", 1053)
         end

         if VFonction == "HEATING" then 
          VFonction = "En Chauffe" 
          self:updateProperty("deviceIcon", 1055)
         end


               local jsonResponse = json.decode(response.data)

         self:updateView("VNameofzone","text", " Nom de la Zone :  " .. VNameofzone .. " " )
         self:updateView("VConsigne","text", "   T° Consigne : " .. VConsigne .. " °c " )
         self:updateView("VInsideTemp","text", "   T° Intérieure : " .. VInsideTemp .. " °c " )
         self:updateView("VFonction","text", "  Etat de la Chaudière  : " .. VFonction  .. "  " )   
         self:GetConfig2()     
     --  self:debug(response.data)  

            else
                self:debug('Error : '  .. response.status .. response.data)
            end
        end,
        error = function(error)
            self:debug('error: ' .. error)
        end
    })
end                                    -- N° 3  - Tmps Int - Consigne - Fonctionnement

 

 

2.thumb.JPG.c18f45fb543f476dd9adabdeb2dc00c4.JPG

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Génial. Merci. Je n’ai pas encore la maison donc je peux pas tester.
Je dois installer un VR921 d après le mec qui a fait l installation déjà pour pour piloter à distance car en l état l ancien proprio n avait pas prévu.
Une fois toute installé je testerai.


Envoyé de mon iPhone en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, c'est le module qui permet de te connecter via rj45.

Donc prise RJ proche de la chaudière.

 

Bon courage et n'hésite pas !

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

@Bloug me voila connecté sur Myvaillant

 

comment s'appelle ta fonction au debut du code ? est ce qu'il ne manque pas une ligne ?

 

si tu peux extraire ta QA ca sera meme plus simple, je suis pas doué pour les QAs...

merci

Modifié par Sakkhho

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @Sakkhho ,

 

Désolé, j'ai réalisé dernière mise a jour sur MyVaillant (nouvelle App) et api  et du coup j'ai perdu la connexion avec mon QA. j'ai pas eu le temps de chercher et modifier :s

voic mon QA :

 

Vaillant.fqa

 

j'ai viré rapidos mes pass (je pense :D ) et j'ai sup mon numero de serie sur les lignes : 411, 447, 489,787

 

mois j'suis moins doué en QA :D donc surement pleins de chosessss pas bien faites :D

Courage 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello @Bloug

Ah oui je suis aussi sur MyVaillant donc ca ne va pas fonctionner comme toi

 

je vais tester quand meme et voir ce que cela dit

 

edit : bon j'ai remplacé le ***SERIAL*** mais comme la QA est pas bavarde je ne sais pas dire ce qui ne va pas

et le boulot etait tellement enorme que je suis incapable d'aider sauf pour faire les tests :-)

Modifié par Sakkhho

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 04/05/2024 à 11:39, Bloug a dit :

et j'ai sup mon numero de serie sur les lignes : 411, 447, 489,787

je n'ai pas regardé le code, mais une variable définie dans le onInit, ne serait pas plus simple 

  1. anonymiser le code
  2. pour éviter de reproduire (avec des fautes de frappe potentielles) la même info à plusieurs endroits

Partager ce message


Lien à poster
Partager sur d’autres sites

×