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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Selbst signiertes Zertifikat erlauben / trusten

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    919

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Selbst signiertes Zertifikat erlauben / trusten

Geplant Angeheftet Gesperrt Verschoben JavaScript
2 Beiträge 2 Kommentatoren 232 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D Offline
    D Offline
    DraycD
    schrieb am zuletzt editiert von
    #1

    Hi, meine Powerwall will seit dem letzten Update nicht mehr mit dem Javascript laufen da Tesla nun ein selbstsegniertes Cert. eingebunden hat.
    Bekomme immer:

    javascript.0 2021-07-11 09:41:00.017 error (1280) Request error: Error: Client network socket disconnected before secure TLS connection was established
    javascript.0 2021-07-11 09:41:00.017 error (1280) script.js.common.PowerWall-Abruf: Request PowerWall meldet Fehler: Error: Client network socket disconnected before secure TLS connection was established

    Wie kann ich in JS das Certificate erlauben?

    Hier das Script:
    Quelle & Urheber MeSwissX: https://tff-forum.de/t/powerwall-2-daten-auslesen-per-api/34214/26

    Code:

    const ipPowerwall = '192.168.1.142';
    const userEmail = "thierry@girard.li";
    const password = "thgiPowerwall";
    var logOn = false;
    
    createState("photovoltaik.PowerWall", 0.0); // Ladezustand PowerWall in %
    createState("photovoltaik.PowerWallErrorReported", false);
    createState("photovoltaik.PowerWallDown", false);
    
    createState("photovoltaik.powerWall.error", false);
    createState("photovoltaik.powerWall.down", false);
    createState("photovoltaik.powerWall.battery", 0.0); // Ladezustand PowerWall in %
    createState("photovoltaik.powerWall.power_netz", 0.0); // Energie Netz
    createState("photovoltaik.powerWall.power_battery", 0.0); // Energie Batterie
    createState("photovoltaik.powerWall.power_haus", 0.0); // Energie Haus
    createState("photovoltaik.powerWall.power_solar", 0.0); // Energie Photovoltaik
    
    var powerWallErrorReported = 'javascript.0.photovoltaik.PowerWallErrorReported';
    var PowerWallDown = 'javascript.0.photovoltaik.PowerWallDown';
    
    getPWCookie();
    
    function getPWCookie() {
    
        const https = require("https");
        const cookieUrl = 'https://'+ipPowerwall+'/api/login/Basic';
        
        var request = require("request");
        var agentOptions;
        var agent;
    
        agentOptions = {
            host: ipPowerwall
            , port: '443'
            , path: '/api/login/Basic'
            , rejectUnauthorized: false
        };
    
        agent = new https.Agent(agentOptions);
    
        var headers = { 'Content-Type': 'application/json' };
        var dataString = '{"username": "customer","email": "'+userEmail+'","password":"'+password+'"}';
    
        var options = {
            url: cookieUrl,
            method: 'POST',
            headers: headers,
            body: dataString,
            agent: agent
        };
    
        request(options, function (error, response, body) {
                // if (err) log(JSON.stringify(err));
                // if (resp) log(JSON.stringify(resp));
            if (!error && response.statusCode == 200) {
     //           if(logon) { log('powerWall_Cookie_login_success') };
                try {
                    var json = JSON.parse(body);
                    var token = json.token;
                    getPWDataNew(token);
                    
                } catch (e) {
                    if (e instanceof SyntaxError) {
                        log("json parse error: " + e);
                    } else {
                        log("json parse error - other: " + e);
                    }
                } 
            } else {
                log('Request PowerWall meldet Fehler: ' + error, 'error');
                if (getState(powerWallErrorReported).val === false) {
                    setState(powerWallErrorReported,true);
                    //pushover
                    sendTo('pushover.0', {
                        message: 'PowerWall Error',
                        title: 'POWERWALL',
                        priority: 1,
                        sound: 'magic'
                    });
                }
            }
        });
    }
    
    function getPWDataNew(token) {
        
        const https = require("https");
        const urlBatterySoe = 'https://'+ipPowerwall+'/api/system_status/soe';
        const urlAggregates = 'https://'+ipPowerwall+'/api/meters/aggregates';
        
        var request = require("request");
    
        var agentOptions;
        var agent;
        
        agentOptions = {
            host: ipPowerwall
            , port: '443'
            , path: '/'
            , rejectUnauthorized: false
        };
            
        agent = new https.Agent(agentOptions);
    
        var headers = {
            'Content-Type': 'application/json',
            'Cookie' : 'AuthCookie='+token
        };
    
        var optionsBatterySoe = {
            url: urlBatterySoe,
            method: 'GET',
            headers: headers,
            agent: agent
        };
    
        var optionsAggregates = {
            url: urlAggregates,
            method: 'GET',
            headers: headers,
            agent: agent
        };
    
        request(optionsBatterySoe, function (error, response, body) {
    //            if (error) log(JSON.stringify(error));
    //            if (response) log(JSON.stringify(response));
            if (!error && response.statusCode == 200) {
    //            if (logon) {log('powerWall readout success!!')};
                setState(powerWallErrorReported,false);
                setState(PowerWallDown,false);
                if (body) {
                    batteryPercentage(body);
              } 
            } else {
                log('powerWall battery readout Fehler: ' + error, 'error');
            }
        });
    
        request(optionsAggregates, function (error, response, body) {
    //            if (error) log(JSON.stringify(error));
    //            if (response) log(JSON.stringify(response));
            if (!error && response.statusCode == 200) {
    //            if (logon) {log('powerWall readout success!!')};
                if (body) {
                    aggregatesVerarbeiten(body);
              } 
            } else {
                log('powerWall aggregates readout Fehler: ' + error, 'error');
            }
        });
    
        
    }
    
    // analyse PowerWall Battery Percentage
    function batteryPercentage(result) {
        try {
            var json = JSON.parse(result);
    
            var ladungPowerWall = Number(json.percentage);
            
            if (logOn) log("PowerWall Ladezustand: " + ladungPowerWall + " %");
            
            setState("javascript.0.photovoltaik.PowerWall"/*PowerWall Ladezustand in %*/,ladungPowerWall);
            
        } catch (e) {
            if (e instanceof SyntaxError) {
                log("json parse error: " + e);
            } else {
                log("json parse error - other: " + e);
            }
        }
    }
    
    // analyse PowerWall aggregates
    function aggregatesVerarbeiten(result) {
        try {
            var json = JSON.parse(result);
    
            var sitePower = Number(json.site.instant_power);
            var batteryPower = Number(json.battery.instant_power);
            var loadPower = Number(json.load.instant_power);
            var solarPower = Number(json.solar.instant_power);
    
            setState('photovoltaik.powerWall.power_netz',sitePower);
            setState('photovoltaik.powerWall.power_battery',batteryPower);
            setState('photovoltaik.powerWall.power_haus',loadPower);
            setState('photovoltaik.powerWall.power_solar',solarPower);
            
            if (logOn) log("PowerWall site: " + sitePower + ' battery: ' + batteryPower + ' load: ' + loadPower + ' solar: ' + solarPower);
                    
        } catch (e) {
            if (e instanceof SyntaxError) {
                log("json aggregates parse error: " + e);
            } else {
                log("json aggregates parse error - other: " + e);
            }
        }
    }
    
    // Startet das Skript alle 1 minuten neu
    schedule("* * * * *", function() {
        getPWCookie();
    });
    
    
    

    Hoffe ihr könnt mir helfen ;)

    P 1 Antwort Letzte Antwort
    -1
    • D DraycD

      Hi, meine Powerwall will seit dem letzten Update nicht mehr mit dem Javascript laufen da Tesla nun ein selbstsegniertes Cert. eingebunden hat.
      Bekomme immer:

      javascript.0 2021-07-11 09:41:00.017 error (1280) Request error: Error: Client network socket disconnected before secure TLS connection was established
      javascript.0 2021-07-11 09:41:00.017 error (1280) script.js.common.PowerWall-Abruf: Request PowerWall meldet Fehler: Error: Client network socket disconnected before secure TLS connection was established

      Wie kann ich in JS das Certificate erlauben?

      Hier das Script:
      Quelle & Urheber MeSwissX: https://tff-forum.de/t/powerwall-2-daten-auslesen-per-api/34214/26

      Code:

      const ipPowerwall = '192.168.1.142';
      const userEmail = "thierry@girard.li";
      const password = "thgiPowerwall";
      var logOn = false;
      
      createState("photovoltaik.PowerWall", 0.0); // Ladezustand PowerWall in %
      createState("photovoltaik.PowerWallErrorReported", false);
      createState("photovoltaik.PowerWallDown", false);
      
      createState("photovoltaik.powerWall.error", false);
      createState("photovoltaik.powerWall.down", false);
      createState("photovoltaik.powerWall.battery", 0.0); // Ladezustand PowerWall in %
      createState("photovoltaik.powerWall.power_netz", 0.0); // Energie Netz
      createState("photovoltaik.powerWall.power_battery", 0.0); // Energie Batterie
      createState("photovoltaik.powerWall.power_haus", 0.0); // Energie Haus
      createState("photovoltaik.powerWall.power_solar", 0.0); // Energie Photovoltaik
      
      var powerWallErrorReported = 'javascript.0.photovoltaik.PowerWallErrorReported';
      var PowerWallDown = 'javascript.0.photovoltaik.PowerWallDown';
      
      getPWCookie();
      
      function getPWCookie() {
      
          const https = require("https");
          const cookieUrl = 'https://'+ipPowerwall+'/api/login/Basic';
          
          var request = require("request");
          var agentOptions;
          var agent;
      
          agentOptions = {
              host: ipPowerwall
              , port: '443'
              , path: '/api/login/Basic'
              , rejectUnauthorized: false
          };
      
          agent = new https.Agent(agentOptions);
      
          var headers = { 'Content-Type': 'application/json' };
          var dataString = '{"username": "customer","email": "'+userEmail+'","password":"'+password+'"}';
      
          var options = {
              url: cookieUrl,
              method: 'POST',
              headers: headers,
              body: dataString,
              agent: agent
          };
      
          request(options, function (error, response, body) {
                  // if (err) log(JSON.stringify(err));
                  // if (resp) log(JSON.stringify(resp));
              if (!error && response.statusCode == 200) {
       //           if(logon) { log('powerWall_Cookie_login_success') };
                  try {
                      var json = JSON.parse(body);
                      var token = json.token;
                      getPWDataNew(token);
                      
                  } catch (e) {
                      if (e instanceof SyntaxError) {
                          log("json parse error: " + e);
                      } else {
                          log("json parse error - other: " + e);
                      }
                  } 
              } else {
                  log('Request PowerWall meldet Fehler: ' + error, 'error');
                  if (getState(powerWallErrorReported).val === false) {
                      setState(powerWallErrorReported,true);
                      //pushover
                      sendTo('pushover.0', {
                          message: 'PowerWall Error',
                          title: 'POWERWALL',
                          priority: 1,
                          sound: 'magic'
                      });
                  }
              }
          });
      }
      
      function getPWDataNew(token) {
          
          const https = require("https");
          const urlBatterySoe = 'https://'+ipPowerwall+'/api/system_status/soe';
          const urlAggregates = 'https://'+ipPowerwall+'/api/meters/aggregates';
          
          var request = require("request");
      
          var agentOptions;
          var agent;
          
          agentOptions = {
              host: ipPowerwall
              , port: '443'
              , path: '/'
              , rejectUnauthorized: false
          };
              
          agent = new https.Agent(agentOptions);
      
          var headers = {
              'Content-Type': 'application/json',
              'Cookie' : 'AuthCookie='+token
          };
      
          var optionsBatterySoe = {
              url: urlBatterySoe,
              method: 'GET',
              headers: headers,
              agent: agent
          };
      
          var optionsAggregates = {
              url: urlAggregates,
              method: 'GET',
              headers: headers,
              agent: agent
          };
      
          request(optionsBatterySoe, function (error, response, body) {
      //            if (error) log(JSON.stringify(error));
      //            if (response) log(JSON.stringify(response));
              if (!error && response.statusCode == 200) {
      //            if (logon) {log('powerWall readout success!!')};
                  setState(powerWallErrorReported,false);
                  setState(PowerWallDown,false);
                  if (body) {
                      batteryPercentage(body);
                } 
              } else {
                  log('powerWall battery readout Fehler: ' + error, 'error');
              }
          });
      
          request(optionsAggregates, function (error, response, body) {
      //            if (error) log(JSON.stringify(error));
      //            if (response) log(JSON.stringify(response));
              if (!error && response.statusCode == 200) {
      //            if (logon) {log('powerWall readout success!!')};
                  if (body) {
                      aggregatesVerarbeiten(body);
                } 
              } else {
                  log('powerWall aggregates readout Fehler: ' + error, 'error');
              }
          });
      
          
      }
      
      // analyse PowerWall Battery Percentage
      function batteryPercentage(result) {
          try {
              var json = JSON.parse(result);
      
              var ladungPowerWall = Number(json.percentage);
              
              if (logOn) log("PowerWall Ladezustand: " + ladungPowerWall + " %");
              
              setState("javascript.0.photovoltaik.PowerWall"/*PowerWall Ladezustand in %*/,ladungPowerWall);
              
          } catch (e) {
              if (e instanceof SyntaxError) {
                  log("json parse error: " + e);
              } else {
                  log("json parse error - other: " + e);
              }
          }
      }
      
      // analyse PowerWall aggregates
      function aggregatesVerarbeiten(result) {
          try {
              var json = JSON.parse(result);
      
              var sitePower = Number(json.site.instant_power);
              var batteryPower = Number(json.battery.instant_power);
              var loadPower = Number(json.load.instant_power);
              var solarPower = Number(json.solar.instant_power);
      
              setState('photovoltaik.powerWall.power_netz',sitePower);
              setState('photovoltaik.powerWall.power_battery',batteryPower);
              setState('photovoltaik.powerWall.power_haus',loadPower);
              setState('photovoltaik.powerWall.power_solar',solarPower);
              
              if (logOn) log("PowerWall site: " + sitePower + ' battery: ' + batteryPower + ' load: ' + loadPower + ' solar: ' + solarPower);
                      
          } catch (e) {
              if (e instanceof SyntaxError) {
                  log("json aggregates parse error: " + e);
              } else {
                  log("json aggregates parse error - other: " + e);
              }
          }
      }
      
      // Startet das Skript alle 1 minuten neu
      schedule("* * * * *", function() {
          getPWCookie();
      });
      
      
      

      Hoffe ihr könnt mir helfen ;)

      P Offline
      P Offline
      peterfido
      schrieb am zuletzt editiert von
      #2

      @draycd
      Wenn du das Zertifikat speichern kannst, steht evtl. Hier eine Möglichkeit.

      Gruß

      Peterfido


      Proxmox auf Intel NUC12WSHi5
      ioBroker: Debian (VM)
      CCU: Debmatic (VM)
      Influx: Debian (VM)
      Grafana: Debian (VM)
      eBus: Debian (VM)
      Zigbee: Debian (VM) mit zigbee2mqtt

      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

      748

      Online

      32.6k

      Benutzer

      82.2k

      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