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 ;)
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login