Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    754

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

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

Selbst signiertes Zertifikat erlauben / trusten

Geplant Angeheftet Gesperrt Verschoben JavaScript
2 Beiträge 2 Kommentatoren 246 Aufrufe 2 Beobachtet
  • Ä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

      Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

      Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

      Mit deinem Input könnte dieser Beitrag noch besser werden 💗

      Registrieren Anmelden
      Antworten
      • In einem neuen Thema antworten
      Anmelden zum Antworten
      • Älteste zuerst
      • Neuste zuerst
      • Meiste Stimmen


      Support us

      ioBroker
      Community Adapters
      Donate

      309

      Online

      32.8k

      Benutzer

      82.7k

      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