Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. JSON aus diesem Link - Ist das machbar ? MELCLOUD

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.4k

JSON aus diesem Link - Ist das machbar ? MELCLOUD

Scheduled Pinned Locked Moved JavaScript
17 Posts 3 Posters 983 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    meicker
    wrote on last edited by
    #1

    Hallo zusammen,

    ich würde gerne ein Javascript haben was mir Geräte aus Melcloud anzeigt und ich würde dann gerne die geräte ansprechen. Es gibt zwar einen Adapter für Homebridge der auch funktioniert, aber ich denke es wäre schöner wenn ich direkt Objekte hätte die ich ansprechen kann ...

    Ich habe noch nicht viel zu dem Thema aber es ist ein Anfang. Die Frage ist jetzt ob es überhaupt so machbar ist. Ich habe diese französische Dokument gefunden:

    http://mgeek.fr/blog/un-peu-de-reverse-engineering-sur-melcloud

    So wie es aussieht muss es da was geben. z.B für den Login:
    URL : https://app.melcloud.com/Mitsubishi.Wifi.Client/Login/ClientLogin
    Méthode : POST
    Retour : JSON

    Paramètres :
    AppVersion: 1.7.1.0,
    Language: 7,
    CaptchaChallenge: null,
    CaptchaResponse: null,
    Persist: true,
    Email: votrelogin@email.com,
    Password: monmotdepasseenclair

    Wenn man aber den Login Link einfach nur so aufruft kommt man normal im web raus und bekommt eine Fehlermeldung das es die Seite nicht gibt.

    Interessanter sieht das hier aus, es handelt sich um die Abfrage der Geräte, warscheinlich nach dem Login:

    URL : https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices
    Méthode : GET
    Retour : JSON

    En-tête : X-MitsContextKey: XXXXXXXXXXXXXX

    Rufe ich die URL auf kommt reine Rückmeldung:
    { Success: false, ErrorMessage: ""}

    Da klappt schon mal was, aber es gibt kein JSON zurück.

    Wenn es möglich ist ein Java Script zu schreiben was die entsprechende JSON zurückliefert, wer kann dabei helfen ? Ich habe leider keine Ahnung ... :-(

    Kann jemand helfen ? Ich würde das gerne machen, hab keinen Plan, will aber was dadurch lernen ... :-) Also wer Lust und Zeit hat ... :-) Bitte - gerne :-)

    Viele Grüße,
    Marc

    1 Reply Last reply
    0
    • M Offline
      M Offline
      meicker
      wrote on last edited by
      #2

      Ich habe folgendes noch gefunden - Aber das kann ich ja auch nicht auf dem IOBroker laufen lassen. Aber vielleicht hilft es weiter ?

      email = 'test@test.com'
      password = '123456'
      
      https = require('ssl.https')
      json = require('json')
      ltn12 = require('ltn12')
      
      function encodepost(t)
        local res = {}
        local esc = require('socket.url').escape
      
        for k, v in pairs(t) do
          res[ #res + 1 ] = esc(k) .. '=' .. esc(v)
        end
      
        return table.concat(res, '&')
      end
      
      function login(email, password)
        local url = 'https://app.melcloud.com/Mitsubishi.Wifi.Client/Login/ClientLogin'
        local data = encodepost({
          AppVersion = '1.9.3.0',
          Language = '7',
          CaptchaChallenge = '',
          CaptchaResponse = '',
          Persist = 'true',
          Email = email,
          Password = password,
        })
      
        local res, code = https.request(url, data)
      
        if res then
          resp = json.pdecode(res)
      
          if type(resp) ~= 'table' then
            return nil, 'failed to decode reply data'
          elseif resp.ErrorId ~= json.null then
            return nil, 'cloud login failed'
          else
            return resp.LoginData.ContextKey
          end
        else
          return nil, 'login request failed'
        end
      end
      
      function getdevices(key)
        local url = 'https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices'
        local tbl = {}
      
        local res, code = https.request({
          url = url,
          headers = {
            ['X-MitsContextKey'] = key
          },
          sink = ltn12.sink.table(tbl),
        })
      
        if res then
          local data = table.concat(tbl)
          return json.pdecode(data)
        else
          return nil, 'get devices request failed'
        end
      end
      
      key, err = login(email, password)
      if key then
        items, err = getdevices(key)
      
        if items then
          for _, item in ipairs(items) do
            local devs = item.Structure.Devices
            for _, dev in ipairs(devs) do
              log(dev)
            end
          end
        else
          log(err)
        end
      else
        log(err)
      end
      
      1 Reply Last reply
      0
      • M Offline
        M Offline
        meicker
        wrote on last edited by
        #3

        Hallo zusammen,

        hat wirklich niemand eine Idee ? :-(

        @paul53 - Hey Paul, Du weißt doch so gut wie alles :-)

        Viele Grüße,
        Marc

        paul53P 1 Reply Last reply
        0
        • M meicker

          Hallo zusammen,

          hat wirklich niemand eine Idee ? :-(

          @paul53 - Hey Paul, Du weißt doch so gut wie alles :-)

          Viele Grüße,
          Marc

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by paul53
          #4

          @meicker sagte:

          Paul, Du weißt doch so gut wie alles

          Danke für die Lorbeeren, aber so ist es leider nicht (französisch verstehe ich auch nicht). Ich kann Dich nur auf das bereits im Javascript-Adapter enthaltene Modul request verweisen. Du findest dazu auch einige Beispiele im Forum.

          P.S. Ich verwende grundsätzlich keine Lösungen auf Cloud-Basis, folglich kenne ich mich damit nicht aus.

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          M 1 Reply Last reply
          0
          • paul53P paul53

            @meicker sagte:

            Paul, Du weißt doch so gut wie alles

            Danke für die Lorbeeren, aber so ist es leider nicht (französisch verstehe ich auch nicht). Ich kann Dich nur auf das bereits im Javascript-Adapter enthaltene Modul request verweisen. Du findest dazu auch einige Beispiele im Forum.

            P.S. Ich verwende grundsätzlich keine Lösungen auf Cloud-Basis, folglich kenne ich mich damit nicht aus.

            M Offline
            M Offline
            meicker
            wrote on last edited by
            #5

            @paul53
            :-) Du bekommst gerne die Lorbeeren :-) Du hast mir bisher immer den richtigen Weg zeigen können :-) Request schaue ich mir mal an. Vielleicht hilft es ja. Danke :-)

            Viele grüße,
            Marc

            M 1 Reply Last reply
            0
            • M meicker

              @paul53
              :-) Du bekommst gerne die Lorbeeren :-) Du hast mir bisher immer den richtigen Weg zeigen können :-) Request schaue ich mir mal an. Vielleicht hilft es ja. Danke :-)

              Viele grüße,
              Marc

              M Offline
              M Offline
              meicker
              wrote on last edited by
              #6

              @paul53
              Warum funktioniert eigentlich das script nicht was ich da oben gepostet habe ? Das wirft einen Fehler aus ... ist das nicht schon irgendwie ein Anfang der für iobroker umgestrickt werden müsste ?

              vg
              Marc

              paul53P 1 Reply Last reply
              0
              • M meicker

                @paul53
                Warum funktioniert eigentlich das script nicht was ich da oben gepostet habe ? Das wirft einen Fehler aus ... ist das nicht schon irgendwie ein Anfang der für iobroker umgestrickt werden müsste ?

                vg
                Marc

                paul53P Offline
                paul53P Offline
                paul53
                wrote on last edited by
                #7

                @meicker sagte:

                Warum funktioniert eigentlich das script nicht was ich da oben gepostet habe ?

                Weil das kein Javascript ist.

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                M 1 Reply Last reply
                0
                • paul53P paul53

                  @meicker sagte:

                  Warum funktioniert eigentlich das script nicht was ich da oben gepostet habe ?

                  Weil das kein Javascript ist.

                  M Offline
                  M Offline
                  meicker
                  wrote on last edited by
                  #8

                  @paul53
                  Argument :-)

                  paul53P 1 Reply Last reply
                  0
                  • M meicker

                    @paul53
                    Argument :-)

                    paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by paul53
                    #9

                    @meicker
                    Hier gibt es Javascript für Melcloud-Zugriff, allerdings nicht für ioBroker, sondern für Homebridge.

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    Lenny.CBL 1 Reply Last reply
                    0
                    • paul53P paul53

                      @meicker
                      Hier gibt es Javascript für Melcloud-Zugriff, allerdings nicht für ioBroker, sondern für Homebridge.

                      Lenny.CBL Offline
                      Lenny.CBL Offline
                      Lenny.CB
                      Most Active
                      wrote on last edited by Lenny.CB
                      #10

                      @meicker kannste damit vielleicht was anfangen? response.body bleibt leer, da ich keine Geräte habe die in der App registriert werden können.

                      @paul53 siehst du auf Anhieb was, wie man das "Script" besser schreiben könnte? Bin ja auch noch am lernen.

                      LogIn();
                      
                      
                      function LogIn () {
                          var url = "https://app.melcloud.com/Mitsubishi.Wifi.Client/Login/ClientLogin";
                      	var form = {
                      			AppVersion: "1.9.3.0",
                      			CaptchaChallenge: "",
                      			CaptchaResponse: "",
                      			Email: "hier deine email aus der Registrierung",
                      			Language: "4",  //hier kann man Zahlen für verschiedene Sprachen eingeben eingeben --> keine Übersicht gefunden
                      			Password: "hier dein Passwort",
                      			Persist: "true"
                      	};
                          var method = "post";
                          request({  
                              url: url,
                              form: form,
                              method: method
                          },
                              function (error, response) {
                                  if (!error && response.statusCode == 200) {
                                      log('Device_statusCode: ' + response.statusCode);
                                      let obj = JSON.parse(response.body);
                                      log('ContextKey: ' + obj.LoginData.ContextKey);
                                      let ContextKey = obj.LoginData.ContextKey;
                                      getDevices (ContextKey);
                                  } else {
                                      log('Geräteabfrage fehlgeschlagen ==> StatusCode: ' + response.statusCode);
                                      log('Geräteabfrage fehlgeschlagen ==> Error: ' + error);
                                  }
                              });    
                      }
                      
                      function getDevices(ContextKey) {
                          var url = "https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices";
                       	var method = "get";
                              request({
                                  url: url,
                                  method: method,
                                  headers: {"X-MitsContextKey" : ContextKey}
                              },
                              function(error, response) {
                       	        if (!error && response.statusCode == 200) {
                                      log('Device_statusCode: ' + response.statusCode);
                                      log('response: ' + JSON.stringify(response));
                       	        } else {
                                      log('Geräteabfrage fehlgeschlagen ==> StatusCode: ' + response.statusCode);
                                      log('Geräteabfrage fehlgeschlagen ==> Error: ' + error);
                       	        }
                       	    });
                      }
                      
                      paul53P 2 Replies Last reply
                      0
                      • Lenny.CBL Lenny.CB

                        @meicker kannste damit vielleicht was anfangen? response.body bleibt leer, da ich keine Geräte habe die in der App registriert werden können.

                        @paul53 siehst du auf Anhieb was, wie man das "Script" besser schreiben könnte? Bin ja auch noch am lernen.

                        LogIn();
                        
                        
                        function LogIn () {
                            var url = "https://app.melcloud.com/Mitsubishi.Wifi.Client/Login/ClientLogin";
                        	var form = {
                        			AppVersion: "1.9.3.0",
                        			CaptchaChallenge: "",
                        			CaptchaResponse: "",
                        			Email: "hier deine email aus der Registrierung",
                        			Language: "4",  //hier kann man Zahlen für verschiedene Sprachen eingeben eingeben --> keine Übersicht gefunden
                        			Password: "hier dein Passwort",
                        			Persist: "true"
                        	};
                            var method = "post";
                            request({  
                                url: url,
                                form: form,
                                method: method
                            },
                                function (error, response) {
                                    if (!error && response.statusCode == 200) {
                                        log('Device_statusCode: ' + response.statusCode);
                                        let obj = JSON.parse(response.body);
                                        log('ContextKey: ' + obj.LoginData.ContextKey);
                                        let ContextKey = obj.LoginData.ContextKey;
                                        getDevices (ContextKey);
                                    } else {
                                        log('Geräteabfrage fehlgeschlagen ==> StatusCode: ' + response.statusCode);
                                        log('Geräteabfrage fehlgeschlagen ==> Error: ' + error);
                                    }
                                });    
                        }
                        
                        function getDevices(ContextKey) {
                            var url = "https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices";
                         	var method = "get";
                                request({
                                    url: url,
                                    method: method,
                                    headers: {"X-MitsContextKey" : ContextKey}
                                },
                                function(error, response) {
                         	        if (!error && response.statusCode == 200) {
                                        log('Device_statusCode: ' + response.statusCode);
                                        log('response: ' + JSON.stringify(response));
                         	        } else {
                                        log('Geräteabfrage fehlgeschlagen ==> StatusCode: ' + response.statusCode);
                                        log('Geräteabfrage fehlgeschlagen ==> Error: ' + error);
                         	        }
                         	    });
                        }
                        
                        paul53P Offline
                        paul53P Offline
                        paul53
                        wrote on last edited by
                        #11

                        @Lenny-CB sagte:

                        keine Übersicht gefunden

                        Übersicht

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                        Lenny.CBL 1 Reply Last reply
                        0
                        • paul53P paul53

                          @Lenny-CB sagte:

                          keine Übersicht gefunden

                          Übersicht

                          Lenny.CBL Offline
                          Lenny.CBL Offline
                          Lenny.CB
                          Most Active
                          wrote on last edited by
                          #12

                          @paul53 sagte in JSON aus diesem Link - Ist das machbar ? MELCLOUD:

                          @Lenny-CB sagte:

                          keine Übersicht gefunden

                          Übersicht

                          :+1:
                          man man man, du hast deine Augen auch überall oder kannst einfach Google besser bedienen als ich. :joy:

                          1 Reply Last reply
                          0
                          • Lenny.CBL Lenny.CB

                            @meicker kannste damit vielleicht was anfangen? response.body bleibt leer, da ich keine Geräte habe die in der App registriert werden können.

                            @paul53 siehst du auf Anhieb was, wie man das "Script" besser schreiben könnte? Bin ja auch noch am lernen.

                            LogIn();
                            
                            
                            function LogIn () {
                                var url = "https://app.melcloud.com/Mitsubishi.Wifi.Client/Login/ClientLogin";
                            	var form = {
                            			AppVersion: "1.9.3.0",
                            			CaptchaChallenge: "",
                            			CaptchaResponse: "",
                            			Email: "hier deine email aus der Registrierung",
                            			Language: "4",  //hier kann man Zahlen für verschiedene Sprachen eingeben eingeben --> keine Übersicht gefunden
                            			Password: "hier dein Passwort",
                            			Persist: "true"
                            	};
                                var method = "post";
                                request({  
                                    url: url,
                                    form: form,
                                    method: method
                                },
                                    function (error, response) {
                                        if (!error && response.statusCode == 200) {
                                            log('Device_statusCode: ' + response.statusCode);
                                            let obj = JSON.parse(response.body);
                                            log('ContextKey: ' + obj.LoginData.ContextKey);
                                            let ContextKey = obj.LoginData.ContextKey;
                                            getDevices (ContextKey);
                                        } else {
                                            log('Geräteabfrage fehlgeschlagen ==> StatusCode: ' + response.statusCode);
                                            log('Geräteabfrage fehlgeschlagen ==> Error: ' + error);
                                        }
                                    });    
                            }
                            
                            function getDevices(ContextKey) {
                                var url = "https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices";
                             	var method = "get";
                                    request({
                                        url: url,
                                        method: method,
                                        headers: {"X-MitsContextKey" : ContextKey}
                                    },
                                    function(error, response) {
                             	        if (!error && response.statusCode == 200) {
                                            log('Device_statusCode: ' + response.statusCode);
                                            log('response: ' + JSON.stringify(response));
                             	        } else {
                                            log('Geräteabfrage fehlgeschlagen ==> StatusCode: ' + response.statusCode);
                                            log('Geräteabfrage fehlgeschlagen ==> Error: ' + error);
                             	        }
                             	    });
                            }
                            
                            paul53P Offline
                            paul53P Offline
                            paul53
                            wrote on last edited by
                            #13

                            @Lenny-CB sagte:

                                function (error, response) {       
                            

                            an die Callback-Funktion von request() werden doch 3 Parameter übergeben ?

                            request(options, function (error, response, body) {
                            

                            wobei das gewünschte Ergebnis in body übergeben wird.

                            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                            Lenny.CBL 1 Reply Last reply
                            0
                            • paul53P paul53

                              @Lenny-CB sagte:

                                  function (error, response) {       
                              

                              an die Callback-Funktion von request() werden doch 3 Parameter übergeben ?

                              request(options, function (error, response, body) {
                              

                              wobei das gewünschte Ergebnis in body übergeben wird.

                              Lenny.CBL Offline
                              Lenny.CBL Offline
                              Lenny.CB
                              Most Active
                              wrote on last edited by
                              #14

                              @paul53 sagte in JSON aus diesem Link - Ist das machbar ? MELCLOUD:

                              wobei das gewünschte Ergebnis in body übergeben wird.

                              stimmt, da habe ich mich wohl von deinem Homebridge-Link verleiten lassen. Das war die Grundlage meiner "Script-Schmiererei". :grin:
                              Was wäre hier richtiger? Es aus dem body oder aus dem response zu nehmen? (steht ja in beidem drin)

                              paul53P 1 Reply Last reply
                              0
                              • Lenny.CBL Lenny.CB

                                @paul53 sagte in JSON aus diesem Link - Ist das machbar ? MELCLOUD:

                                wobei das gewünschte Ergebnis in body übergeben wird.

                                stimmt, da habe ich mich wohl von deinem Homebridge-Link verleiten lassen. Das war die Grundlage meiner "Script-Schmiererei". :grin:
                                Was wäre hier richtiger? Es aus dem body oder aus dem response zu nehmen? (steht ja in beidem drin)

                                paul53P Offline
                                paul53P Offline
                                paul53
                                wrote on last edited by
                                #15

                                @Lenny-CB sagt:

                                body oder aus dem response zu nehmen? (steht ja in beidem drin)

                                Wenn das Ergebnis sowohl in body als auch in response.body übergeben wird, ist es egal, wie man es macht (die Variante mit response.body war mir nicht geläufig).

                                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                Lenny.CBL 1 Reply Last reply
                                0
                                • paul53P paul53

                                  @Lenny-CB sagt:

                                  body oder aus dem response zu nehmen? (steht ja in beidem drin)

                                  Wenn das Ergebnis sowohl in body als auch in response.body übergeben wird, ist es egal, wie man es macht (die Variante mit response.body war mir nicht geläufig).

                                  Lenny.CBL Offline
                                  Lenny.CBL Offline
                                  Lenny.CB
                                  Most Active
                                  wrote on last edited by
                                  #16

                                  @paul53 naja sagen wir mal so, ich bin ja der letzte der sagen kann ob es eine Variante ist oder nicht. Bei response kam ein JSON raus in dem ein body mit dem gesuchten Ausdruck enthalten war. Dann habe ich das da "raus gefummelt" und nicht weiter im "richtigen" body geschaut.
                                  Mal schauen was @meicker draus macht.

                                  1 Reply Last reply
                                  0
                                  • M Offline
                                    M Offline
                                    meicker
                                    wrote on last edited by
                                    #17

                                    @Lenny-CB
                                    ich bin gar nicht so weit das ich bei euch mitreden könnte :-) Ich könnte aus einer fast funktionierenden Lösung was umbauen aber selber bekomme ich das leider nicht hin. Für Melcloud bin ich jetzt einen anderen Weg gegangen und habe mit die Daten über Openhab reingeholt. Schöner wäre es natürlich wenn man das mit Java hinbekommen würde und richtig schick wäre ein Adapter. Aber ich kann da, außer das ich die Hardware habe zum testen, nicht weiter helfen ... :-( Leider ... Ich würde es so gerne können ...

                                    vg Marc

                                    1 Reply Last reply
                                    0
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes


                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    365

                                    Online

                                    32.5k

                                    Users

                                    81.6k

                                    Topics

                                    1.3m

                                    Posts
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                    ioBroker Community 2014-2025
                                    logo
                                    • Login

                                    • Don't have an account? Register

                                    • Login or register to search.
                                    • First post
                                      Last post
                                    0
                                    • Home
                                    • Recent
                                    • Tags
                                    • Unread 0
                                    • Categories
                                    • Unreplied
                                    • Popular
                                    • GitHub
                                    • Docu
                                    • Hilfe