NEWS
Selbst signiertes Zertifikat erlauben / trusten
-
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 establishedWie 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/26Code:
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 ;)
-
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 establishedWie 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/26Code:
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 ;)
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