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

  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. [Javascript] Midas (Aquatemp) Poolheizung

NEWS

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

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

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

[Javascript] Midas (Aquatemp) Poolheizung

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
359 Beiträge 25 Kommentatoren 76.6k Aufrufe 25 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.
  • Z Zahnpasta83

    @oxident Jopp, er sagt "Error in request callback: TypeError: Cannot read properties of undefined (reading 'device_code')"

    O Offline
    O Offline
    oxident
    schrieb am zuletzt editiert von
    #61

    @zahnpasta83 Ahh, Mist. Genau wie bei @Fuxx-0.

    Ich denke (erstmal), da geht leider nix. Sorry!

    1 Antwort Letzte Antwort
    0
    • S Offline
      S Offline
      sunnylaila
      schrieb am zuletzt editiert von
      #62

      Hallo zusammen, ich habe gerade versucht auch meine Poolheizung hinzuzufügen,
      in der Aqua Temp App sehe ich alles,
      leider bekomme ich im Javascript immer nur eine Fehlermeldung und sonst passiert nichts, leider bin ich im Javascript völliger Anfänger, vielleicht kann mir ja hier jemand helfen.

      Fehlermeldung:

      13:39:30.300 info javascript.0 (28843) Stop script script.js.Pool
      13:39:31.076 info javascript.0 (28843) Start javascript script.js.Pool
      13:39:31.084 error javascript.0 (28843) script.js.Pool compile failed:
      at script.js.Pool:543

      Gruß Sunnylaila

      O 1 Antwort Letzte Antwort
      0
      • S sunnylaila

        Hallo zusammen, ich habe gerade versucht auch meine Poolheizung hinzuzufügen,
        in der Aqua Temp App sehe ich alles,
        leider bekomme ich im Javascript immer nur eine Fehlermeldung und sonst passiert nichts, leider bin ich im Javascript völliger Anfänger, vielleicht kann mir ja hier jemand helfen.

        Fehlermeldung:

        13:39:30.300 info javascript.0 (28843) Stop script script.js.Pool
        13:39:31.076 info javascript.0 (28843) Start javascript script.js.Pool
        13:39:31.084 error javascript.0 (28843) script.js.Pool compile failed:
        at script.js.Pool:543

        Gruß Sunnylaila

        O Offline
        O Offline
        oxident
        schrieb am zuletzt editiert von
        #63

        @sunnylaila Klingt lösbar ;-)
        Könntest Du mal schauen, ob in der Log-Anzeige von ioBroker vielleicht noch mehr dazu steht?

        S 2 Antworten Letzte Antwort
        0
        • O oxident

          @sunnylaila Klingt lösbar ;-)
          Könntest Du mal schauen, ob in der Log-Anzeige von ioBroker vielleicht noch mehr dazu steht?

          S Offline
          S Offline
          sunnylaila
          schrieb am zuletzt editiert von
          #64

          @oxident
          Hallo, anbei die Meldungen aus dem Log

          	2023-06-01 09:36:22.358	error	at processImmediate (node:internal/timers:468:21)
          
          javascript.0
          2023-06-01 09:36:22.358	error	at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/main.js:1527:17)
          
          javascript.0
          2023-06-01 09:36:22.358	error	at /opt/iobroker/node_modules/iobroker.javascript/main.js:2053:17
          
          javascript.0
          2023-06-01 09:36:22.358	error	at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1955:37)
          
          javascript.0
          2023-06-01 09:36:22.357	error	at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1702:21)
          
          javascript.0
          2023-06-01 09:36:22.357	error	at new Script (node:vm:100:7)
          
          javascript.0
          2023-06-01 09:36:22.357	error	SyntaxError: Unexpected identifier
          
          javascript.0
          2023-06-01 09:36:22.356	error	^
          
          javascript.0
          2023-06-01 09:36:22.356	error	A F D 4 Antworten Letzte Antwort 1. Juni 2022, 20:59
          
          javascript.0
          2023-06-01 09:36:22.355	error	script.js.Pool compile failed:
           at script.js.Pool:543
          
          1 Antwort Letzte Antwort
          0
          • O oxident

            @sunnylaila Klingt lösbar ;-)
            Könntest Du mal schauen, ob in der Log-Anzeige von ioBroker vielleicht noch mehr dazu steht?

            S Offline
            S Offline
            sunnylaila
            schrieb am zuletzt editiert von
            #65

            @oxident
            Hallo ich habe es jetzt hinbekommen das JavaScript unter userdata angelegt wird
            nur leider bleiben alle Werte leer und im Log bekomme ich folgende Fehlermeldung

            Error in request callback: TypeError: Cannot read properties of undefined (reading 'device_code')

            O 1 Antwort Letzte Antwort
            0
            • S sunnylaila

              @oxident
              Hallo ich habe es jetzt hinbekommen das JavaScript unter userdata angelegt wird
              nur leider bleiben alle Werte leer und im Log bekomme ich folgende Fehlermeldung

              Error in request callback: TypeError: Cannot read properties of undefined (reading 'device_code')

              O Offline
              O Offline
              oxident
              schrieb am zuletzt editiert von
              #66

              @sunnylaila Das ist ja ärgerlich. Genau diese Meldung kommt auch wenn man eine Wärmepumpe mit einer anderen App hat. Kannst Du ein Bild Deines Wifi-Adapters posten?

              S 1 Antwort Letzte Antwort
              0
              • O oxident

                @sunnylaila Das ist ja ärgerlich. Genau diese Meldung kommt auch wenn man eine Wärmepumpe mit einer anderen App hat. Kannst Du ein Bild Deines Wifi-Adapters posten?

                S Offline
                S Offline
                sunnylaila
                schrieb am zuletzt editiert von
                #67

                @oxident
                Hier der Bild welchen Adapter ich nutze, er ist nur in der Heizung verbaut deswegen komme ich schlecht dran.

                IMG_8030.jpeg

                O 1 Antwort Letzte Antwort
                0
                • S sunnylaila

                  @oxident
                  Hier der Bild welchen Adapter ich nutze, er ist nur in der Heizung verbaut deswegen komme ich schlecht dran.

                  IMG_8030.jpeg

                  O Offline
                  O Offline
                  oxident
                  schrieb am zuletzt editiert von
                  #68

                  @sunnylaila Sieht aus, wie meiner... nur halt deutlich neueres Datum.

                  Da stehe ich gerade auf dem Schlauch. Hättest Du die Möglichkeit, herauszufinden, mit welchem Server die App auf dem Handy kommuniziert?

                  Vielleicht haben die für neuere Geräte die Adresse gewechselt.

                  S 1 Antwort Letzte Antwort
                  0
                  • O oxident

                    @sunnylaila Sieht aus, wie meiner... nur halt deutlich neueres Datum.

                    Da stehe ich gerade auf dem Schlauch. Hättest Du die Möglichkeit, herauszufinden, mit welchem Server die App auf dem Handy kommuniziert?

                    Vielleicht haben die für neuere Geräte die Adresse gewechselt.

                    S Offline
                    S Offline
                    sunnylaila
                    schrieb am zuletzt editiert von
                    #69

                    @oxident
                    hi, wo sollte ich das sehen können?
                    in der aquatemp app sehe ich leider nichts von Serveradressen.

                    1 Antwort Letzte Antwort
                    0
                    • Z Offline
                      Z Offline
                      znyde
                      schrieb am zuletzt editiert von
                      #70

                      hier scheint das Zertifkat der Seite abgelaufen zu sein:

                      {'code':'CERT_HAS_EXPIRED'}
                      
                      O 1 Antwort Letzte Antwort
                      0
                      • Z znyde

                        hier scheint das Zertifkat der Seite abgelaufen zu sein:

                        {'code':'CERT_HAS_EXPIRED'}
                        
                        O Offline
                        O Offline
                        oxident
                        schrieb am zuletzt editiert von
                        #71

                        @znyde Ist ja ulkig. Sollte eigentlich nicht stören ... das Skript läuft bei mir ohne Warnung durch.

                        S 1 Antwort Letzte Antwort
                        0
                        • O oxident

                          @znyde Ist ja ulkig. Sollte eigentlich nicht stören ... das Skript läuft bei mir ohne Warnung durch.

                          S Offline
                          S Offline
                          sunnylaila
                          schrieb am zuletzt editiert von
                          #72

                          @oxident
                          bei mir kommt die Zertifikat Meldung jetzt zusätzlich zu dem reading_error.
                          Hast du einen Tip wie ich rausfinden kann mit welcher web Adresse sich die App verbindet? finde leider bei google nicht wie man das rausfinden kann.

                          Z 1 Antwort Letzte Antwort
                          0
                          • S sunnylaila

                            @oxident
                            bei mir kommt die Zertifikat Meldung jetzt zusätzlich zu dem reading_error.
                            Hast du einen Tip wie ich rausfinden kann mit welcher web Adresse sich die App verbindet? finde leider bei google nicht wie man das rausfinden kann.

                            Z Offline
                            Z Offline
                            znyde
                            schrieb am zuletzt editiert von
                            #73

                            @sunnylaila

                            hiermit ignorierst du die SSL Zertifkats meldung

                            function updateToken() {
                             
                                if(token=="") {
                                    log("Token Neuanforderung");
                                    var request = require('request');
                              
                                    var options = {
                                        url: cloudURL + '/app/user/login.json',
                                        method: 'POST',
                                        json: { "user_name": username, "password": password, "type": "2" },
                                        rejectUnauthorized: false
                                    };
                                    
                                    request(options,function (error, response, body){
                                     console.log(error);
                                        console.log(JSON.stringify(response));
                                        if(parseInt(body.error_code)==0) {
                                            
                                            token = body.object_result["x-token"];
                                            log("Login ok! Token " + token);
                                            updateDeviceID();
                                        } else {
                                            // Login-Fehler
                                            log("Login-Fehler in updateToken(): " + response.body, "warn");
                                            token = "";
                                        }
                                        
                                    });
                                } else {
                                    updateDeviceID();
                                }
                             
                                
                             
                                
                             
                            }
                             
                            
                            Z S 2 Antworten Letzte Antwort
                            0
                            • Z znyde

                              @sunnylaila

                              hiermit ignorierst du die SSL Zertifkats meldung

                              function updateToken() {
                               
                                  if(token=="") {
                                      log("Token Neuanforderung");
                                      var request = require('request');
                                
                                      var options = {
                                          url: cloudURL + '/app/user/login.json',
                                          method: 'POST',
                                          json: { "user_name": username, "password": password, "type": "2" },
                                          rejectUnauthorized: false
                                      };
                                      
                                      request(options,function (error, response, body){
                                       console.log(error);
                                          console.log(JSON.stringify(response));
                                          if(parseInt(body.error_code)==0) {
                                              
                                              token = body.object_result["x-token"];
                                              log("Login ok! Token " + token);
                                              updateDeviceID();
                                          } else {
                                              // Login-Fehler
                                              log("Login-Fehler in updateToken(): " + response.body, "warn");
                                              token = "";
                                          }
                                          
                                      });
                                  } else {
                                      updateDeviceID();
                                  }
                               
                                  
                               
                                  
                               
                              }
                               
                              
                              Z Offline
                              Z Offline
                              znyde
                              schrieb am zuletzt editiert von
                              #74
                                log(JSON.stringify(body.object_result));
                              

                              bleibt bei mir ein leeres Array.. habe das Modul welche @sunnylaila hat

                              Z S 2 Antworten Letzte Antwort
                              0
                              • Z znyde
                                  log(JSON.stringify(body.object_result));
                                

                                bleibt bei mir ein leeres Array.. habe das Modul welche @sunnylaila hat

                                Z Offline
                                Z Offline
                                znyde
                                schrieb am zuletzt editiert von
                                #75

                                sorry für den Spam,

                                hier eine Lösung die bei mir geholfen hat

                                einfach diese Abfrage hinzufügen:

                                body: {product_ids: ["1442284873216843776"]},
                                
                                function updateDeviceID() {
                                    
                                    if(token!="") {
                                        var optionsDev = {
                                            url: cloudURL + '/app/device/deviceList.json',
                                            headers: { "x-token": token},
                                            body: {product_ids: ["1442284873216843776"]},
                                           
                                            method: 'POST',
                                            json: true,
                                            
                                            rejectUnauthorized: false          
                                        };
                                
                                S 1 Antwort Letzte Antwort
                                0
                                • Z znyde
                                    log(JSON.stringify(body.object_result));
                                  

                                  bleibt bei mir ein leeres Array.. habe das Modul welche @sunnylaila hat

                                  S Offline
                                  S Offline
                                  sunnylaila
                                  schrieb am zuletzt editiert von
                                  #76

                                  @znyde
                                  hi hattest du denn auch vorher den Fehler :
                                  Error in request callback: TypeError: Cannot read properties of undefined (reading 'error_code')

                                  könntest du mir vielleicht dein Gesamtes Javascript mal schicken, natürlich ohne deine Login Daten.
                                  Dann kann ich es komplett mal einfügen.

                                  Danke und Gruß

                                  Z 1 Antwort Letzte Antwort
                                  0
                                  • S sunnylaila

                                    @znyde
                                    hi hattest du denn auch vorher den Fehler :
                                    Error in request callback: TypeError: Cannot read properties of undefined (reading 'error_code')

                                    könntest du mir vielleicht dein Gesamtes Javascript mal schicken, natürlich ohne deine Login Daten.
                                    Dann kann ich es komplett mal einfügen.

                                    Danke und Gruß

                                    Z Offline
                                    Z Offline
                                    znyde
                                    schrieb am zuletzt editiert von znyde
                                    #77

                                    @sunnylaila

                                    Bei mir ist das Modul an eine Promo Next 5 angeschlossen, das Mapping mit den Temperaturen habe ich geändert... übrigens kannst Du das in deiner App abfragen Burgermenü oben rechts -> Parametereinstellungen -> Kennwort: 022 (so war es bei mir)

                                    // Midas Poolheizung
                                    // v0.0.5
                                    // Changelog:
                                    // 0.0.5: weitere Abfragewerte hinzugefügt (Kompressor- und Ansaugtemperatur)
                                    // 0.0.4: Tokenverfall jetzt 60min nach Skriptstart und nicht zu jeder vollen Stunde (Dank an dering)
                                    // 0.0.3: Datenpunkte beim Start automatisch anlegen (Dank an Andy200877)
                                    // 0.0.2: Token bei jedem Set-Vorgang prüfen und ggf. neu anfordern (Dank an dering)
                                     
                                    const username = "xxx@xxxx.com";
                                    const password = "xxxxxx";
                                    const interval = 30;
                                     
                                     
                                    const cloudURL = "https://cloud.linked-go.com/cloudservice/api";
                                     
                                    const dpRoot = "0_userdata.0.Poolheizung";
                                     
                                    var token = "";
                                    var tokenRefreshTimer;
                                    var device = "";
                                    var reachable = false;
                                     
                                    function clearValues() {
                                        saveValue("error", true, "boolean");
                                        saveValue("consumption", 0, "number");
                                        saveValue("state", false, "boolean");
                                    }
                                     
                                    function saveValue(key, value, sType) {
                                        var dp = dpRoot + "." + key;
                                     
                                        if ( !existsState(dp )) {
                                            createState(dp,value,{name: key,  type: 'number', role: 'value'}, function () {}); 
                                        } else {
                                            setState(dp,value,true);
                                        }
                                    }
                                     
                                    function findCodeVal(result, code) {
                                        //log(code);
                                        for(var i=0; i<result.length; i++) {
                                            //log(result[i].code);
                                            
                                            if(result[i].code.indexOf(code) >= 0) {
                                                return result[i].value;
                                            }
                                        }
                                        return "";
                                    }
                                     
                                    function createobjects() {
                                        log ("erstelle Objekte");
                                        createState(dpRoot + '.ambient', {read: true, write: false,  type: "number", unit:"°C", name: "Umgebungstemperatur"});
                                        createState(dpRoot + '.connection', {read: true, write: false,  type: "boolean", role: "state", name: "Verbindung", def: "false"});
                                        createState(dpRoot + '.consumption', {read: true, write: false,  type: "number", unit:"W", name: "Stromverbrauch", def: 0});
                                        createState(dpRoot + '.error', {read: true, write: false,  type: "boolean", role: "state", name: "Fehler", def: "false"});
                                        createState(dpRoot + '.errorCode', {read: true, write: false,  type: "string", name: "Fehlercode", def: ""});
                                        createState(dpRoot + '.errorLevel', {read: true, write: false,  type: "number", name: "Fehlerlevel"});
                                        createState(dpRoot + '.errorMessage', {read: true, write: false,  type: "string", name: "Fehlermeldung", def: ""});
                                        createState(dpRoot + '.mode', {read: true, write: true,  type: "string", states: "-1:off;0:cool;1:heat;2:auto", name: "Modus", def: ""});
                                        createState(dpRoot + '.silent', {read: true, write: true,  type: "boolean", role: "state", name: "Silent", def: "false"});
                                        createState(dpRoot + '.state', {read: true, write: false,  type: "boolean", role: "state", name: "Status", def: "false"});
                                        createState(dpRoot + '.tempIn', {read: true, write: false,  type: "number", unit:"°C", name: "Eingangstemperatur"});
                                        createState(dpRoot + '.tempOut', {read: true, write: false,  type: "number", unit:"°C", name: "Ausgangstemperatur"});
                                        createState(dpRoot + '.tempSet', {read: true, write: true,  type: "number", unit:"°C", name: "Solltemperatur"});
                                        createState(dpRoot + '.suctionTemp', {read: true, write: false,  type: "number", unit:"°C", name: "Luftansaugtemperatur"});
                                        createState(dpRoot + '.coilTemp', {read: true, write: false,  type: "number", unit:"°C", name: "Kompressortemperatur"});
                                        
                                        createState(dpRoot + '.rawJSON', {read: true, write: false,  type: "array", name: "komplette Rückgabe"});
                                    }
                                     
                                    function updateToken() {
                                     
                                        if(token=="") {
                                            log("Token Neuanforderung");
                                            var request = require('request');
                                      
                                            var options = {
                                                url: cloudURL + '/app/user/login.json',
                                                method: 'POST',
                                                json: { "user_name": username, "password": password, "type": "2" },
                                                rejectUnauthorized: false
                                            };
                                            
                                            request(options,function (error, response, body){
                                             console.log(error);
                                                console.log(JSON.stringify(response));
                                                if(parseInt(body.error_code)==0) {
                                                    
                                                    token = body.object_result["x-token"];
                                                    log("Login ok! Token " + token);
                                                    updateDeviceID();
                                                } else {
                                                    // Login-Fehler
                                                    log("Login-Fehler in updateToken(): " + response.body, "warn");
                                                    token = "";
                                                }
                                                
                                            });
                                        } else {
                                            updateDeviceID();
                                        }
                                     
                                        
                                     
                                        
                                     
                                    }
                                     
                                    function updateDeviceID() {
                                        
                                        if(token!="") {
                                            var optionsDev = {
                                                url: cloudURL + '/app/device/deviceList.json',
                                                headers: { "x-token": token},
                                                body: {product_ids: ["1442284873216843776"]},
                                               
                                                method: 'POST',
                                                json: true,
                                                
                                                rejectUnauthorized: false          
                                            };
                                     
                                            var request = require('request');
                                     
                                            request(optionsDev,function (error, response, body1){
                                      //  console.log(parseInt(body1.error_code));
                                      //         console.log(JSON.stringify(response));
                                       //         log(JSON.stringify(body1.object_result));
                                     
                                                if(parseInt(body1.error_code)==0) {
                                                    
                                                    //token = body.object_result["x-token"];
                                                    log("Login ok! Token " + token);
                                                    
                                                   device = body1.object_result[0].device_code;
                                                   // device=1;
                                                    console.log(device);
                                                    reachable = (body1.object_result[0].device_status=="ONLINE");
                                                    if(reachable) {
                                                        saveValue("connection", true, "boolean");
                                                        if(device!="") updateDeviceStatus(device);
                                                    } else {
                                                        // offline
                                                        device = "";
                                                        saveValue("connection", false, "boolean");
                                                    }
                                                    
                                                } else {
                                                    // Login-Fehler
                                                    //log("Fehler in updateDeviceID(): " + response.body);
                                                    token = "";
                                                    device = "";
                                                    reachable = false;
                                                    saveValue("connection", false, "boolean");
                                                }
                                                
                                            });
                                        }
                                        
                                    
                                    }
                                     
                                    
                                    function updateDeviceStatus(devicecode) {
                                        if(token!="") {
                                            
                                            var optionsDev = {
                                                url: cloudURL + '/app/device/getDeviceStatus.json',
                                                headers: { "x-token": token },
                                                json: { "device_code": devicecode },
                                                method: 'POST',
                                                 rejectUnauthorized: false
                                                
                                            };
                                     
                                            var request = require('request');
                                     
                                            request(optionsDev,function (error, response, body){
                                        
                                                //log(JSON.stringify(response));
                                                //log(JSON.stringify(body.object_result));
                                     
                                                if(parseInt(body.error_code)==0) {
                                     
                                                    if(body.object_result["is_fault"]==true) {
                                                        // TODO: Fehlerbeschreibung abrufen
                                                         //clearValues();
                                                        saveValue("error", true, "boolean");
                                                        updateDeviceDetails(devicecode);
                                                        updateDeviceErrorMsg(devicecode);
                                                    } else {
                                                        // kein Fehler
                                                        saveValue("error", false, "boolean");
                                                        saveValue("errorMessage", "", "string");
                                                        saveValue("errorCode", "", "string");
                                                        saveValue("errorLevel", 0, "number");
                                                        updateDeviceDetails(devicecode);
                                                    }
                                                    
                                                    //token = body.object_result["x-token"];
                                                    //log("Login ok! Token " + token);
                                                    
                                                } else {
                                                    // Login-Fehler
                                                    log("Fehler in updateDeviceStatus(): " + response.body);
                                                    token = "";
                                                    device = "";
                                                }
                                                
                                            });
                                        }
                                    }
                                     
                                    function updateDeviceErrorMsg(devicecode) {
                                        if(token!="") {
                                            
                                            var optionsDev = {
                                                url: cloudURL + '/app/device/getFaultDataByDeviceCode.json',
                                                headers: { "x-token": token },
                                                json: { "device_code": devicecode },
                                                method: 'POST',
                                                 rejectUnauthorized: false
                                                //headers: {"content-type": "application/json"},
                                                //charset: 'utf8',
                                                //json: true
                                                
                                            };
                                     
                                            var request = require('request');
                                     
                                            request(optionsDev,function (error, response, body){
                                        
                                                //log(JSON.stringify(response));
                                                //log(JSON.stringify(body.object_result));
                                     
                                                if(parseInt(body.error_code)==0) {
                                     
                                                    
                                                    saveValue("error", true, "boolean");
                                                    saveValue("errorMessage", body.object_result[0].description, "string");
                                                    saveValue("errorCode", body.object_result[0].fault_code, "string");
                                                    saveValue("errorLevel", body.object_result[0].error_level, "string");
                                                    
                                                } else {
                                                    // Login-Fehler
                                                    log("Fehler in updateDeviceErrorMsg(): " + response.body);
                                                    token = "";
                                                    device = "";
                                                }
                                                
                                            });
                                        }
                                    }
                                     
                                    function updateDeviceDetails(devicecode) {
                                        if(token!="") {
                                            
                                            var optionsDev = {
                                                url: cloudURL + '/app/device/getDataByCode.json',
                                                headers: { "x-token": token },
                                              //  json: { "device_code": devicecode },
                                              // R02=Heatin-Set Point,T2=inlet Water Temp, T3=Outlet Water Temp,T5=Ambient-Temp,
                                              json: { "device_code": devicecode, "protocal_codes":["R02","T1","T2","T3","T5","P01","P02","Power","Mode"] },
                                               
                                               // json: { "device_code": devicecode, "protocal_codes":["Power","Mode","Manual-mute","T01","T02","2074","2075","2076","2077","H03","Set-Temp","R08","R09","R10","R11","R01","R02","R03","T03","1158","1159","F17","H02","T04","T05","T07","T14","T17"] },
                                                // "protocal_codes":["Power","Mode","Manual-mute","T01","T02","2074","2075","2076","2077","H03","Set_Temp","R08","R09","R10","R11","R01","R02","R03","T03","1158","1159","F17","H02","T04","T05"]
                                                method: 'POST',
                                                rejectUnauthorized: false
                                                
                                            };
                                     
                                            var request = require('request');
                                     
                                            request(optionsDev,function (error, response, body){
                                      console.log("update detail" + JSON.stringify(response));
                                     
                                                if(parseInt(body.error_code)==0) {
                                     
                                                    saveValue("rawJSON", body.object_result, "string");
                                                    
                                                    if(findCodeVal(body.object_result, "Power")=="1") {
                                                        // Stromverbrauch T07 x T14 in Watt
                                                        saveValue("consumption", parseFloat(findCodeVal(body.object_result, "T07")) * parseFloat(findCodeVal(body.object_result, "T14")), "number");
                                     
                                                        // Lüfter-Drehzahl T17
                                                        saveValue("rotor", parseInt(findCodeVal(body.object_result, "T17")), "number");
                                                        // Luftansaug-Temperatur T01
                                                        saveValue("suctionTemp", parseFloat(findCodeVal(body.object_result, "T1")), "number");
                                                        // Inlet-Temperatur T02
                                                        saveValue("tempIn", parseFloat(findCodeVal(body.object_result, "T2")), "number");
                                                        // outlet-Temperatur T03
                                                        saveValue("tempOut", parseFloat(findCodeVal(body.object_result, "T3")), "number");
                                                        // Coil-Temperatur T04
                                                        saveValue("coilTemp", parseFloat(findCodeVal(body.object_result, "T04")), "number");
                                                    } else {
                                                        saveValue("consumption", 0, "number");
                                                        saveValue("rotor", 0, "number");
                                                    }
                                     
                                     
                                     
                                                    // Ziel-Temperatur Set_Temp
                                                    saveValue("tempSet", parseFloat(findCodeVal(body.object_result, "Set_Temp")), "number");
                                     
                                                    // Umgebungs-Temperatur T05
                                                    saveValue("ambient", parseFloat(findCodeVal(body.object_result, "T5")), "number");
                                     
                                                    // Flüstermodus Manual-mute
                                                    if(findCodeVal(body.object_result, "Manual-mute")=="1") {
                                                        saveValue("silent", true, "boolean");
                                                    } else {
                                                        saveValue("silent", false, "boolean");
                                                    }
                                     
                                                    // Zustand Power
                                                    if(findCodeVal(body.object_result, "Power")=="1") {
                                                        saveValue("state", true, "boolean");
                                                        saveValue("mode", findCodeVal(body.object_result,"Mode"), "string");
                                                    } else {
                                                        saveValue("state", false, "boolean");
                                                        saveValue("mode", "-1", "string");
                                                    }
                                                    
                                     
                                     
                                                    //log(findCodeVal(body.object_result, "T07"));
                                                    
                                                } else {
                                                    // Login-Fehler
                                                    log("Fehler in updateDeviceDetails(): " + response.body);
                                                    token = "";
                                                    device = "";
                                                }
                                                
                                            });
                                        }
                                    }
                                     
                                    function updateDevicePower(devicecode, power) {
                                        var powerOpt;
                                        var powerMode = 2;
                                     
                                        if(power==-1) {
                                            // aus
                                            powerOpt = 0;
                                            powerMode = -1;
                                        } else if(power==0) {
                                            // an und kühlen
                                            powerOpt = 1;
                                            powerMode = 0;
                                        } else if(power==1) {
                                            // an und heizen
                                            powerOpt = 1;
                                            powerMode = 1;
                                        } else if(power==2) {
                                            // an und auto
                                            powerOpt = 1;
                                            powerMode = 2;
                                        } else {
                                            log("ungülter Zustand!");
                                            return;
                                        }
                                     
                                        if(token!="") {
                                            
                                            var optionsDev = {
                                                url: cloudURL + '/app/device/control.json',
                                                headers: { "x-token": token },
                                                json: {"param":[{ "device_code": devicecode, "protocol_code": "Power","value": powerOpt }]},
                                                method: 'POST',
                                                rejectUnauthorized: false
                                            };
                                     
                                            var request = require('request');
                                     
                                            request(optionsDev,function (error, response, body){
                                                //log(devicecode);
                                                //log(JSON.stringify(response));
                                                //log(JSON.stringify(body.object_result));
                                     
                                                if(parseInt(body.error_code)==0) {
                                                    saveValue("mode", power, "string");
                                                    if(power>=0) updateDeviceMode(device, power);
                                                    
                                                } else {
                                                    log("Zustandsänderung fehlgeschlagen!");
                                                }
                                                
                                            });
                                        }
                                    }
                                     
                                    function updateDeviceMode(devicecode, mode) {
                                        
                                     
                                        if(token!="") {
                                            
                                            var optionsDev = {
                                                url: cloudURL + '/app/device/control.json',
                                                headers: { "x-token": token },
                                                json: {"param":[{ "device_code": devicecode, "protocol_code": "mode","value": mode }]},
                                                method: 'POST',
                                                rejectUnauthorized: false
                                                //headers: {"content-type": "application/json"},
                                                //charset: 'utf8',
                                                //json: true
                                                
                                            };
                                     
                                            var request = require('request');
                                     
                                            request(optionsDev,function (error, response, body){
                                                //log(devicecode);
                                                //log(JSON.stringify(response));
                                                //log(JSON.stringify(body.object_result));
                                     
                                                if(parseInt(body.error_code)==0) {
                                                    saveValue("mode", mode, "string");
                                                    
                                                    
                                                } else {
                                                    log("Zustandsänderung fehlgeschlagen!");
                                                }
                                                
                                            });
                                        }
                                    }
                                     
                                    function updateDeviceSilent(devicecode, silent) {
                                        
                                        var silentMode;
                                     
                                        if(silent) {
                                            silentMode = "1";
                                        } else {
                                            silentMode = "0";
                                        }
                                     
                                        if(token!="") {
                                            
                                            var optionsDev = {
                                                url: cloudURL + '/app/device/control.json',
                                                headers: { "x-token": token },
                                                json: {"param":[{ "device_code": devicecode, "protocol_code": "Manual-mute","value": silentMode }]},
                                                method: 'POST',
                                                rejectUnauthorized: false
                                                //headers: {"content-type": "application/json"},
                                                //charset: 'utf8',
                                                //json: true
                                                
                                            };
                                     
                                            var request = require('request');
                                     
                                            request(optionsDev,function (error, response, body){
                                                //log(devicecode);
                                                //log(JSON.stringify(response));
                                                //log(JSON.stringify(body.object_result));
                                     
                                                if(parseInt(body.error_code)==0) {
                                                    saveValue("silent", silent, "boolean");
                                                    
                                                    
                                                } else {
                                                    log("Zustandsänderung fehlgeschlagen!");
                                                }
                                                
                                            });
                                        }
                                    }
                                     
                                    function updateDeviceSetTemp(devicecode, temperature) {
                                     
                                        var sTemperature = temperature.toString().replace(",", ".");
                                        var sMode = getState(dpRoot + ".mode").val;
                                        if(sMode=="-1") {
                                            //log("Gerät einschalten um Temperatur zu ändern!", 'warn');
                                            return;
                                        } else if(sMode=="0") {
                                            sMode = "R01"; // Kühlen
                                        } else if(sMode=="1") {
                                            sMode = "R02"; // Heizen
                                        } else if(sMode=="2") {
                                            sMode = "R03"; // Auto
                                        }
                                     
                                        
                                     
                                     
                                        if(token!="") {
                                            
                                            var optionsDev = {
                                                url: cloudURL + '/app/device/control.json',
                                                headers: { "x-token": token },
                                                json: {"param":[{ "device_code": devicecode, "protocol_code": "R01","value": sTemperature },{ "device_code": devicecode, "protocol_code": "R02","value": sTemperature },{ "device_code": devicecode, "protocol_code": "R03","value": sTemperature },{ "device_code": devicecode, "protocol_code": "Set_Temp","value": sTemperature }]},
                                                method: 'POST',
                                                rejectUnauthorized: false
                                                //headers: {"content-type": "application/json"},
                                                //charset: 'utf8',
                                                //json: true
                                                
                                            };
                                     
                                            var request = require('request');
                                     
                                            request(optionsDev,function (error, response, body){
                                                //log(devicecode);
                                                //log(JSON.stringify(response));
                                                //log(JSON.stringify(body.object_result));
                                     
                                                if(parseInt(body.error_code)==0) {
                                                    saveValue("tempSet", temperature, "number");
                                                    
                                                    
                                                } else {
                                                    log("Zustandsänderung fehlgeschlagen!");
                                                    log(JSON.stringify(response));
                                                }
                                                
                                            });
                                        }
                                    }
                                     
                                    // Beginn des Skripts
                                     
                                    createobjects(); // DPs anlegen
                                     
                                    updateToken(); // Zugriffstoken erfragen und aktuelle Werte lesen
                                     
                                    schedule('*/' + interval + ' * * * * *', function () {
                                        // regelmäßig Token und Zustand abfragen
                                        updateToken();
                                     
                                        // gewünschte Änderungen ausführen
                                        if(!getState(dpRoot + ".mode").ack) {
                                            updateDevicePower(device, getState(dpRoot + ".mode").val);
                                        }
                                        if(!getState(dpRoot + ".silent").ack) {
                                            updateDevicePower(device, getState(dpRoot + ".silent").val);
                                        }
                                    });
                                     
                                    tokenRefreshTimer = setInterval(async function () {
                                        // Token verfällt nach 60min
                                        token = "";
                                        //log("Token nach Intervall verworfen.")
                                        updateToken();
                                    }, 3600000);
                                     
                                    on({id: dpRoot + ".mode", change: "ne", ack: false}, async function (obj) {
                                        updateToken();
                                        updateDevicePower(device, getState(dpRoot + ".mode").val);
                                    });
                                     
                                    on({id: dpRoot + ".silent", change: "ne", ack: false}, async function (obj) {
                                        updateToken();
                                        updateDeviceSilent(device, getState(dpRoot + ".silent").val);
                                    });
                                     
                                    on({id: dpRoot + ".tempSet", change: "ne", ack: false}, async function (obj) {
                                        updateToken();
                                        updateDeviceSetTemp(device, getState(dpRoot + ".tempSet").val);
                                    });
                                     
                                    
                                    S 2 Antworten Letzte Antwort
                                    0
                                    • Z znyde

                                      @sunnylaila

                                      Bei mir ist das Modul an eine Promo Next 5 angeschlossen, das Mapping mit den Temperaturen habe ich geändert... übrigens kannst Du das in deiner App abfragen Burgermenü oben rechts -> Parametereinstellungen -> Kennwort: 022 (so war es bei mir)

                                      // Midas Poolheizung
                                      // v0.0.5
                                      // Changelog:
                                      // 0.0.5: weitere Abfragewerte hinzugefügt (Kompressor- und Ansaugtemperatur)
                                      // 0.0.4: Tokenverfall jetzt 60min nach Skriptstart und nicht zu jeder vollen Stunde (Dank an dering)
                                      // 0.0.3: Datenpunkte beim Start automatisch anlegen (Dank an Andy200877)
                                      // 0.0.2: Token bei jedem Set-Vorgang prüfen und ggf. neu anfordern (Dank an dering)
                                       
                                      const username = "xxx@xxxx.com";
                                      const password = "xxxxxx";
                                      const interval = 30;
                                       
                                       
                                      const cloudURL = "https://cloud.linked-go.com/cloudservice/api";
                                       
                                      const dpRoot = "0_userdata.0.Poolheizung";
                                       
                                      var token = "";
                                      var tokenRefreshTimer;
                                      var device = "";
                                      var reachable = false;
                                       
                                      function clearValues() {
                                          saveValue("error", true, "boolean");
                                          saveValue("consumption", 0, "number");
                                          saveValue("state", false, "boolean");
                                      }
                                       
                                      function saveValue(key, value, sType) {
                                          var dp = dpRoot + "." + key;
                                       
                                          if ( !existsState(dp )) {
                                              createState(dp,value,{name: key,  type: 'number', role: 'value'}, function () {}); 
                                          } else {
                                              setState(dp,value,true);
                                          }
                                      }
                                       
                                      function findCodeVal(result, code) {
                                          //log(code);
                                          for(var i=0; i<result.length; i++) {
                                              //log(result[i].code);
                                              
                                              if(result[i].code.indexOf(code) >= 0) {
                                                  return result[i].value;
                                              }
                                          }
                                          return "";
                                      }
                                       
                                      function createobjects() {
                                          log ("erstelle Objekte");
                                          createState(dpRoot + '.ambient', {read: true, write: false,  type: "number", unit:"°C", name: "Umgebungstemperatur"});
                                          createState(dpRoot + '.connection', {read: true, write: false,  type: "boolean", role: "state", name: "Verbindung", def: "false"});
                                          createState(dpRoot + '.consumption', {read: true, write: false,  type: "number", unit:"W", name: "Stromverbrauch", def: 0});
                                          createState(dpRoot + '.error', {read: true, write: false,  type: "boolean", role: "state", name: "Fehler", def: "false"});
                                          createState(dpRoot + '.errorCode', {read: true, write: false,  type: "string", name: "Fehlercode", def: ""});
                                          createState(dpRoot + '.errorLevel', {read: true, write: false,  type: "number", name: "Fehlerlevel"});
                                          createState(dpRoot + '.errorMessage', {read: true, write: false,  type: "string", name: "Fehlermeldung", def: ""});
                                          createState(dpRoot + '.mode', {read: true, write: true,  type: "string", states: "-1:off;0:cool;1:heat;2:auto", name: "Modus", def: ""});
                                          createState(dpRoot + '.silent', {read: true, write: true,  type: "boolean", role: "state", name: "Silent", def: "false"});
                                          createState(dpRoot + '.state', {read: true, write: false,  type: "boolean", role: "state", name: "Status", def: "false"});
                                          createState(dpRoot + '.tempIn', {read: true, write: false,  type: "number", unit:"°C", name: "Eingangstemperatur"});
                                          createState(dpRoot + '.tempOut', {read: true, write: false,  type: "number", unit:"°C", name: "Ausgangstemperatur"});
                                          createState(dpRoot + '.tempSet', {read: true, write: true,  type: "number", unit:"°C", name: "Solltemperatur"});
                                          createState(dpRoot + '.suctionTemp', {read: true, write: false,  type: "number", unit:"°C", name: "Luftansaugtemperatur"});
                                          createState(dpRoot + '.coilTemp', {read: true, write: false,  type: "number", unit:"°C", name: "Kompressortemperatur"});
                                          
                                          createState(dpRoot + '.rawJSON', {read: true, write: false,  type: "array", name: "komplette Rückgabe"});
                                      }
                                       
                                      function updateToken() {
                                       
                                          if(token=="") {
                                              log("Token Neuanforderung");
                                              var request = require('request');
                                        
                                              var options = {
                                                  url: cloudURL + '/app/user/login.json',
                                                  method: 'POST',
                                                  json: { "user_name": username, "password": password, "type": "2" },
                                                  rejectUnauthorized: false
                                              };
                                              
                                              request(options,function (error, response, body){
                                               console.log(error);
                                                  console.log(JSON.stringify(response));
                                                  if(parseInt(body.error_code)==0) {
                                                      
                                                      token = body.object_result["x-token"];
                                                      log("Login ok! Token " + token);
                                                      updateDeviceID();
                                                  } else {
                                                      // Login-Fehler
                                                      log("Login-Fehler in updateToken(): " + response.body, "warn");
                                                      token = "";
                                                  }
                                                  
                                              });
                                          } else {
                                              updateDeviceID();
                                          }
                                       
                                          
                                       
                                          
                                       
                                      }
                                       
                                      function updateDeviceID() {
                                          
                                          if(token!="") {
                                              var optionsDev = {
                                                  url: cloudURL + '/app/device/deviceList.json',
                                                  headers: { "x-token": token},
                                                  body: {product_ids: ["1442284873216843776"]},
                                                 
                                                  method: 'POST',
                                                  json: true,
                                                  
                                                  rejectUnauthorized: false          
                                              };
                                       
                                              var request = require('request');
                                       
                                              request(optionsDev,function (error, response, body1){
                                        //  console.log(parseInt(body1.error_code));
                                        //         console.log(JSON.stringify(response));
                                         //         log(JSON.stringify(body1.object_result));
                                       
                                                  if(parseInt(body1.error_code)==0) {
                                                      
                                                      //token = body.object_result["x-token"];
                                                      log("Login ok! Token " + token);
                                                      
                                                     device = body1.object_result[0].device_code;
                                                     // device=1;
                                                      console.log(device);
                                                      reachable = (body1.object_result[0].device_status=="ONLINE");
                                                      if(reachable) {
                                                          saveValue("connection", true, "boolean");
                                                          if(device!="") updateDeviceStatus(device);
                                                      } else {
                                                          // offline
                                                          device = "";
                                                          saveValue("connection", false, "boolean");
                                                      }
                                                      
                                                  } else {
                                                      // Login-Fehler
                                                      //log("Fehler in updateDeviceID(): " + response.body);
                                                      token = "";
                                                      device = "";
                                                      reachable = false;
                                                      saveValue("connection", false, "boolean");
                                                  }
                                                  
                                              });
                                          }
                                          
                                      
                                      }
                                       
                                      
                                      function updateDeviceStatus(devicecode) {
                                          if(token!="") {
                                              
                                              var optionsDev = {
                                                  url: cloudURL + '/app/device/getDeviceStatus.json',
                                                  headers: { "x-token": token },
                                                  json: { "device_code": devicecode },
                                                  method: 'POST',
                                                   rejectUnauthorized: false
                                                  
                                              };
                                       
                                              var request = require('request');
                                       
                                              request(optionsDev,function (error, response, body){
                                          
                                                  //log(JSON.stringify(response));
                                                  //log(JSON.stringify(body.object_result));
                                       
                                                  if(parseInt(body.error_code)==0) {
                                       
                                                      if(body.object_result["is_fault"]==true) {
                                                          // TODO: Fehlerbeschreibung abrufen
                                                           //clearValues();
                                                          saveValue("error", true, "boolean");
                                                          updateDeviceDetails(devicecode);
                                                          updateDeviceErrorMsg(devicecode);
                                                      } else {
                                                          // kein Fehler
                                                          saveValue("error", false, "boolean");
                                                          saveValue("errorMessage", "", "string");
                                                          saveValue("errorCode", "", "string");
                                                          saveValue("errorLevel", 0, "number");
                                                          updateDeviceDetails(devicecode);
                                                      }
                                                      
                                                      //token = body.object_result["x-token"];
                                                      //log("Login ok! Token " + token);
                                                      
                                                  } else {
                                                      // Login-Fehler
                                                      log("Fehler in updateDeviceStatus(): " + response.body);
                                                      token = "";
                                                      device = "";
                                                  }
                                                  
                                              });
                                          }
                                      }
                                       
                                      function updateDeviceErrorMsg(devicecode) {
                                          if(token!="") {
                                              
                                              var optionsDev = {
                                                  url: cloudURL + '/app/device/getFaultDataByDeviceCode.json',
                                                  headers: { "x-token": token },
                                                  json: { "device_code": devicecode },
                                                  method: 'POST',
                                                   rejectUnauthorized: false
                                                  //headers: {"content-type": "application/json"},
                                                  //charset: 'utf8',
                                                  //json: true
                                                  
                                              };
                                       
                                              var request = require('request');
                                       
                                              request(optionsDev,function (error, response, body){
                                          
                                                  //log(JSON.stringify(response));
                                                  //log(JSON.stringify(body.object_result));
                                       
                                                  if(parseInt(body.error_code)==0) {
                                       
                                                      
                                                      saveValue("error", true, "boolean");
                                                      saveValue("errorMessage", body.object_result[0].description, "string");
                                                      saveValue("errorCode", body.object_result[0].fault_code, "string");
                                                      saveValue("errorLevel", body.object_result[0].error_level, "string");
                                                      
                                                  } else {
                                                      // Login-Fehler
                                                      log("Fehler in updateDeviceErrorMsg(): " + response.body);
                                                      token = "";
                                                      device = "";
                                                  }
                                                  
                                              });
                                          }
                                      }
                                       
                                      function updateDeviceDetails(devicecode) {
                                          if(token!="") {
                                              
                                              var optionsDev = {
                                                  url: cloudURL + '/app/device/getDataByCode.json',
                                                  headers: { "x-token": token },
                                                //  json: { "device_code": devicecode },
                                                // R02=Heatin-Set Point,T2=inlet Water Temp, T3=Outlet Water Temp,T5=Ambient-Temp,
                                                json: { "device_code": devicecode, "protocal_codes":["R02","T1","T2","T3","T5","P01","P02","Power","Mode"] },
                                                 
                                                 // json: { "device_code": devicecode, "protocal_codes":["Power","Mode","Manual-mute","T01","T02","2074","2075","2076","2077","H03","Set-Temp","R08","R09","R10","R11","R01","R02","R03","T03","1158","1159","F17","H02","T04","T05","T07","T14","T17"] },
                                                  // "protocal_codes":["Power","Mode","Manual-mute","T01","T02","2074","2075","2076","2077","H03","Set_Temp","R08","R09","R10","R11","R01","R02","R03","T03","1158","1159","F17","H02","T04","T05"]
                                                  method: 'POST',
                                                  rejectUnauthorized: false
                                                  
                                              };
                                       
                                              var request = require('request');
                                       
                                              request(optionsDev,function (error, response, body){
                                        console.log("update detail" + JSON.stringify(response));
                                       
                                                  if(parseInt(body.error_code)==0) {
                                       
                                                      saveValue("rawJSON", body.object_result, "string");
                                                      
                                                      if(findCodeVal(body.object_result, "Power")=="1") {
                                                          // Stromverbrauch T07 x T14 in Watt
                                                          saveValue("consumption", parseFloat(findCodeVal(body.object_result, "T07")) * parseFloat(findCodeVal(body.object_result, "T14")), "number");
                                       
                                                          // Lüfter-Drehzahl T17
                                                          saveValue("rotor", parseInt(findCodeVal(body.object_result, "T17")), "number");
                                                          // Luftansaug-Temperatur T01
                                                          saveValue("suctionTemp", parseFloat(findCodeVal(body.object_result, "T1")), "number");
                                                          // Inlet-Temperatur T02
                                                          saveValue("tempIn", parseFloat(findCodeVal(body.object_result, "T2")), "number");
                                                          // outlet-Temperatur T03
                                                          saveValue("tempOut", parseFloat(findCodeVal(body.object_result, "T3")), "number");
                                                          // Coil-Temperatur T04
                                                          saveValue("coilTemp", parseFloat(findCodeVal(body.object_result, "T04")), "number");
                                                      } else {
                                                          saveValue("consumption", 0, "number");
                                                          saveValue("rotor", 0, "number");
                                                      }
                                       
                                       
                                       
                                                      // Ziel-Temperatur Set_Temp
                                                      saveValue("tempSet", parseFloat(findCodeVal(body.object_result, "Set_Temp")), "number");
                                       
                                                      // Umgebungs-Temperatur T05
                                                      saveValue("ambient", parseFloat(findCodeVal(body.object_result, "T5")), "number");
                                       
                                                      // Flüstermodus Manual-mute
                                                      if(findCodeVal(body.object_result, "Manual-mute")=="1") {
                                                          saveValue("silent", true, "boolean");
                                                      } else {
                                                          saveValue("silent", false, "boolean");
                                                      }
                                       
                                                      // Zustand Power
                                                      if(findCodeVal(body.object_result, "Power")=="1") {
                                                          saveValue("state", true, "boolean");
                                                          saveValue("mode", findCodeVal(body.object_result,"Mode"), "string");
                                                      } else {
                                                          saveValue("state", false, "boolean");
                                                          saveValue("mode", "-1", "string");
                                                      }
                                                      
                                       
                                       
                                                      //log(findCodeVal(body.object_result, "T07"));
                                                      
                                                  } else {
                                                      // Login-Fehler
                                                      log("Fehler in updateDeviceDetails(): " + response.body);
                                                      token = "";
                                                      device = "";
                                                  }
                                                  
                                              });
                                          }
                                      }
                                       
                                      function updateDevicePower(devicecode, power) {
                                          var powerOpt;
                                          var powerMode = 2;
                                       
                                          if(power==-1) {
                                              // aus
                                              powerOpt = 0;
                                              powerMode = -1;
                                          } else if(power==0) {
                                              // an und kühlen
                                              powerOpt = 1;
                                              powerMode = 0;
                                          } else if(power==1) {
                                              // an und heizen
                                              powerOpt = 1;
                                              powerMode = 1;
                                          } else if(power==2) {
                                              // an und auto
                                              powerOpt = 1;
                                              powerMode = 2;
                                          } else {
                                              log("ungülter Zustand!");
                                              return;
                                          }
                                       
                                          if(token!="") {
                                              
                                              var optionsDev = {
                                                  url: cloudURL + '/app/device/control.json',
                                                  headers: { "x-token": token },
                                                  json: {"param":[{ "device_code": devicecode, "protocol_code": "Power","value": powerOpt }]},
                                                  method: 'POST',
                                                  rejectUnauthorized: false
                                              };
                                       
                                              var request = require('request');
                                       
                                              request(optionsDev,function (error, response, body){
                                                  //log(devicecode);
                                                  //log(JSON.stringify(response));
                                                  //log(JSON.stringify(body.object_result));
                                       
                                                  if(parseInt(body.error_code)==0) {
                                                      saveValue("mode", power, "string");
                                                      if(power>=0) updateDeviceMode(device, power);
                                                      
                                                  } else {
                                                      log("Zustandsänderung fehlgeschlagen!");
                                                  }
                                                  
                                              });
                                          }
                                      }
                                       
                                      function updateDeviceMode(devicecode, mode) {
                                          
                                       
                                          if(token!="") {
                                              
                                              var optionsDev = {
                                                  url: cloudURL + '/app/device/control.json',
                                                  headers: { "x-token": token },
                                                  json: {"param":[{ "device_code": devicecode, "protocol_code": "mode","value": mode }]},
                                                  method: 'POST',
                                                  rejectUnauthorized: false
                                                  //headers: {"content-type": "application/json"},
                                                  //charset: 'utf8',
                                                  //json: true
                                                  
                                              };
                                       
                                              var request = require('request');
                                       
                                              request(optionsDev,function (error, response, body){
                                                  //log(devicecode);
                                                  //log(JSON.stringify(response));
                                                  //log(JSON.stringify(body.object_result));
                                       
                                                  if(parseInt(body.error_code)==0) {
                                                      saveValue("mode", mode, "string");
                                                      
                                                      
                                                  } else {
                                                      log("Zustandsänderung fehlgeschlagen!");
                                                  }
                                                  
                                              });
                                          }
                                      }
                                       
                                      function updateDeviceSilent(devicecode, silent) {
                                          
                                          var silentMode;
                                       
                                          if(silent) {
                                              silentMode = "1";
                                          } else {
                                              silentMode = "0";
                                          }
                                       
                                          if(token!="") {
                                              
                                              var optionsDev = {
                                                  url: cloudURL + '/app/device/control.json',
                                                  headers: { "x-token": token },
                                                  json: {"param":[{ "device_code": devicecode, "protocol_code": "Manual-mute","value": silentMode }]},
                                                  method: 'POST',
                                                  rejectUnauthorized: false
                                                  //headers: {"content-type": "application/json"},
                                                  //charset: 'utf8',
                                                  //json: true
                                                  
                                              };
                                       
                                              var request = require('request');
                                       
                                              request(optionsDev,function (error, response, body){
                                                  //log(devicecode);
                                                  //log(JSON.stringify(response));
                                                  //log(JSON.stringify(body.object_result));
                                       
                                                  if(parseInt(body.error_code)==0) {
                                                      saveValue("silent", silent, "boolean");
                                                      
                                                      
                                                  } else {
                                                      log("Zustandsänderung fehlgeschlagen!");
                                                  }
                                                  
                                              });
                                          }
                                      }
                                       
                                      function updateDeviceSetTemp(devicecode, temperature) {
                                       
                                          var sTemperature = temperature.toString().replace(",", ".");
                                          var sMode = getState(dpRoot + ".mode").val;
                                          if(sMode=="-1") {
                                              //log("Gerät einschalten um Temperatur zu ändern!", 'warn');
                                              return;
                                          } else if(sMode=="0") {
                                              sMode = "R01"; // Kühlen
                                          } else if(sMode=="1") {
                                              sMode = "R02"; // Heizen
                                          } else if(sMode=="2") {
                                              sMode = "R03"; // Auto
                                          }
                                       
                                          
                                       
                                       
                                          if(token!="") {
                                              
                                              var optionsDev = {
                                                  url: cloudURL + '/app/device/control.json',
                                                  headers: { "x-token": token },
                                                  json: {"param":[{ "device_code": devicecode, "protocol_code": "R01","value": sTemperature },{ "device_code": devicecode, "protocol_code": "R02","value": sTemperature },{ "device_code": devicecode, "protocol_code": "R03","value": sTemperature },{ "device_code": devicecode, "protocol_code": "Set_Temp","value": sTemperature }]},
                                                  method: 'POST',
                                                  rejectUnauthorized: false
                                                  //headers: {"content-type": "application/json"},
                                                  //charset: 'utf8',
                                                  //json: true
                                                  
                                              };
                                       
                                              var request = require('request');
                                       
                                              request(optionsDev,function (error, response, body){
                                                  //log(devicecode);
                                                  //log(JSON.stringify(response));
                                                  //log(JSON.stringify(body.object_result));
                                       
                                                  if(parseInt(body.error_code)==0) {
                                                      saveValue("tempSet", temperature, "number");
                                                      
                                                      
                                                  } else {
                                                      log("Zustandsänderung fehlgeschlagen!");
                                                      log(JSON.stringify(response));
                                                  }
                                                  
                                              });
                                          }
                                      }
                                       
                                      // Beginn des Skripts
                                       
                                      createobjects(); // DPs anlegen
                                       
                                      updateToken(); // Zugriffstoken erfragen und aktuelle Werte lesen
                                       
                                      schedule('*/' + interval + ' * * * * *', function () {
                                          // regelmäßig Token und Zustand abfragen
                                          updateToken();
                                       
                                          // gewünschte Änderungen ausführen
                                          if(!getState(dpRoot + ".mode").ack) {
                                              updateDevicePower(device, getState(dpRoot + ".mode").val);
                                          }
                                          if(!getState(dpRoot + ".silent").ack) {
                                              updateDevicePower(device, getState(dpRoot + ".silent").val);
                                          }
                                      });
                                       
                                      tokenRefreshTimer = setInterval(async function () {
                                          // Token verfällt nach 60min
                                          token = "";
                                          //log("Token nach Intervall verworfen.")
                                          updateToken();
                                      }, 3600000);
                                       
                                      on({id: dpRoot + ".mode", change: "ne", ack: false}, async function (obj) {
                                          updateToken();
                                          updateDevicePower(device, getState(dpRoot + ".mode").val);
                                      });
                                       
                                      on({id: dpRoot + ".silent", change: "ne", ack: false}, async function (obj) {
                                          updateToken();
                                          updateDeviceSilent(device, getState(dpRoot + ".silent").val);
                                      });
                                       
                                      on({id: dpRoot + ".tempSet", change: "ne", ack: false}, async function (obj) {
                                          updateToken();
                                          updateDeviceSetTemp(device, getState(dpRoot + ".tempSet").val);
                                      });
                                       
                                      
                                      S Offline
                                      S Offline
                                      sunnylaila
                                      schrieb am zuletzt editiert von sunnylaila
                                      #78

                                      @znyde
                                      Ich habe genau die gleiche Heizung, aber meine Werte sind immer noch leer und ich bekomme einige Fehlermeldungen im Log womit ich aber leider nichts anfangen kann da ich keine Ahnung vom JavaScript habe, vielleicht kannst du dir das mal anschauen

                                      Danke schonmal

                                      edit

                                      die Fehlermeldung habe ich selber gefunden lag an einer boolean Einstellung

                                      eigentlich würde ich sagen sollte es meiner Meinung nach dem Log jetzt gehen,
                                      aber unter den Objekten habe ich immer noch keine Werte stehen

                                      der Log schaut jetzt so aus

                                      2023-06-03 15:38:00.590	info	script.js.Poolheizung: update detail{"statusCode":200,"body":{"error_code":"0","error_msg":"Success","error_msg_code":"","object_result":[{"code":"R02","value":"26.0"},{"code":"T1","value":"17.0"},{"code":"T2","value":"27.0"},{"code":"T3","value":"27.5"},{"code":"T5","value":"33.5"},{"code":"P01","value":"2"},{"code":"P02","value":"15"},{"code":"Power","value":"1"},{"code":"Mode","value":"1"}],"is_reuslt_suc":true},"headers":{"date":"Sat, 03 Jun 2023 13:38:00 GMT","content-type":"application/json;charset=UTF-8","transfer-encoding":"chunked","connection":"close"},"request":{"uri":{"protocol":"https:","slashes":true,"auth":null,"host":"cloud.linked-go.com","port":443,"hostname":"cloud.linked-go.com","hash":null,"search":null,"query":null,"pathname":"/cloudservice/api/app/device/getDataByCode.json","path":"/cloudservice/api/app/device/getDataByCode.json","href":"https://cloud.linked-go.com/cloudservice/api/app/device/getDataByCode.json"},"method":"POST","headers":{"x-token":"41A537D337A40009B667CA964A4C3496","accept":"application/json","content-type":"application/json","content-length":102}}}
                                      javascript.0
                                      2023-06-03 15:38:00.172	info	script.js.Poolheizung: 0C7FEDC2A47C
                                      
                                      javascript.0
                                      2023-06-03 15:38:00.171	info	script.js.Poolheizung: Login ok! Token 41A537D337A40009B667CA964A4C3496
                                      
                                      javascript.0
                                      2023-06-03 15:37:30.935	info	script.js.Poolheizung: update detail{"statusCode":200,"body":{"error_code":"0","error_msg":"Success","error_msg_code":"","object_result":[{"code":"R02","value":"26.0"},{"code":"T1","value":"17.0"},{"code":"T2","value":"27.0"},{"code":"T3","value":"27.5"},{"code":"T5","value":"33.5"},{"code":"P01","value":"2"},{"code":"P02","value":"15"},{"code":"Power","value":"1"},{"code":"Mode","value":"1"}],"is_reuslt_suc":true},"headers":{"date":"Sat, 03 Jun 2023 13:37:30 GMT","content-type":"application/json;charset=UTF-8","transfer-encoding":"chunked","connection":"close"},"request":{"uri":{"protocol":"https:","slashes":true,"auth":null,"host":"cloud.linked-go.com","port":443,"hostname":"cloud.linked-go.com","hash":null,"search":null,"query":null,"pathname":"/cloudservice/api/app/device/getDataByCode.json","path":"/cloudservice/api/app/device/getDataByCode.json","href":"https://cloud.linked-go.com/cloudservice/api/app/device/getDataByCode.json"},"method":"POST","headers":{"x-token":"41A537D337A40009B667CA964A4C3496","accept":"application/json","content-type":"application/json","content-length":102}}}
                                      
                                      javascript.0
                                      2023-06-03 15:37:30.427	info	script.js.Poolheizung: 0C7FEDC2A47C
                                      
                                      javascript.0
                                      2023-06-03 15:37:30.426	info	script.js.Poolheizung: Login ok! Token 41A537D337A40009B667CA964A4C3496
                                      

                                      aber die Werte sind immer noch alle Null unter der Userdata 0 Geräte

                                      1 Antwort Letzte Antwort
                                      0
                                      • S Offline
                                        S Offline
                                        sunnylaila
                                        schrieb am zuletzt editiert von
                                        #79

                                        @znyde

                                        So schaut es unter Geräte aus

                                        Screenshot.jpg

                                        Z 1 Antwort Letzte Antwort
                                        0
                                        • S sunnylaila

                                          @znyde

                                          So schaut es unter Geräte aus

                                          Screenshot.jpg

                                          Z Offline
                                          Z Offline
                                          znyde
                                          schrieb am zuletzt editiert von
                                          #80

                                          @sunnylaila

                                          also Werte kommen laut deinem Log ja an..

                                          2023-06-03 15:37:30.935	info	script.js.Poolheizung: update detail{"statusCode":200,"body":{"error_code":"0","error_msg":"Success","error_msg_code":"","object_result":[{"code":"R02","value":"26.0"},{"code":"T1","value":"17.0"},{"code":"T2","value":"27.0"},{"code":"T3","value":"27.5"},{"code":"T5","value":"33.5"},{"code":"P01","value":"2"},{"code":"P02","value":"15"},{"code":"Power","value":"1"},{"code":"Mode","value":"1"}],"is_reuslt_suc":true},"headers":{"date":"Sat, 03 Jun 2023 13:37:30 GMT","content-type":"application/json;charset=UTF-8","transfer-encoding":"chunked","connection":"close"},"request":{"uri":{"protocol":"https:","slashes":true,"auth":null,"host":"cloud.linked-go.com","port":443,"hostname":"cloud.linked-go.com","hash":null,"search":null,"query":null,"pathname":"/cloudservice/api/app/device/getDataByCode.json","path":"/cloudservice/api/app/device/getDataByCode.json","href":"https://cloud.linked-go.com/cloudservice/api/app/device/getDataByCode.json"},"method":"POST","headers":{"x-token":"41A537D337A40009B667CA964A4C3496","accept":"application/json","content-type":"application/json","content-length":102}}}
                                           
                                          

                                          hast du meinen kompletten code genommen?
                                          ansonsten musst du die Funktion

                                          function updateDeviceDetails(devicecode)
                                          

                                          komplett übernehmen

                                          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

                                          524

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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