Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
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.5k

JSON aus diesem Link - Ist das machbar ? MELCLOUD

Geplant Angeheftet Gesperrt Verschoben JavaScript
17 Beiträge 3 Kommentatoren 983 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    meicker
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • M Offline
      M Offline
      meicker
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • M Offline
        M Offline
        meicker
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #8

                  @paul53
                  Argument :-)

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • M meicker

                    @paul53
                    Argument :-)

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
                      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
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        • paul53P paul53

                          @Lenny-CB sagte:

                          keine Übersicht gefunden

                          Übersicht

                          Lenny.CBL Offline
                          Lenny.CBL Offline
                          Lenny.CB
                          Most Active
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          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
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            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
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              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
                                schrieb am zuletzt editiert von
                                #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 Antwort Letzte Antwort
                                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
                                  schrieb am zuletzt editiert von
                                  #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 Antwort Letzte Antwort
                                  0
                                  • M Offline
                                    M Offline
                                    meicker
                                    schrieb am zuletzt editiert von
                                    #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 Antwort Letzte Antwort
                                    0
                                    Antworten
                                    • In einem neuen Thema antworten
                                    Anmelden zum Antworten
                                    • Älteste zuerst
                                    • Neuste zuerst
                                    • Meiste Stimmen


                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    761

                                    Online

                                    32.5k

                                    Benutzer

                                    81.6k

                                    Themen

                                    1.3m

                                    Beiträge
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                    ioBroker Community 2014-2025
                                    logo
                                    • Anmelden

                                    • Du hast noch kein Konto? Registrieren

                                    • Anmelden oder registrieren, um zu suchen
                                    • Erster Beitrag
                                      Letzter Beitrag
                                    0
                                    • Home
                                    • Aktuell
                                    • Tags
                                    • Ungelesen 0
                                    • Kategorien
                                    • Unreplied
                                    • Beliebt
                                    • GitHub
                                    • Docu
                                    • Hilfe