Habe hier was gefunden mit dem os ohne china cloud geht, versteh nur nicht so viel vom coden, aber eventuell hilft es euch:
https://community.symcon.de/t/loesung-klimaanlage-midea-dimstal-ueber-wlan-steuern-nicht-ueber-cloud/53079
NEWS
Latest posts made by DraycD
-
RE: Test Adapter Midea Dimstal Klimaanlagen v0.0.x
-
RE: Bild von Kamera per Pushover senden
@cinimod
setze ein delay zwischen erstellung und senden von 200ms, dann gehts -
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
-
Backup von influxdb via exec.
Hi,
ich scheitere an dem automatischen Backup für influxdb.
habe versucht via exec folgendes auszüführen:
sudo mount -t cifs -o user=backup-iobroker,pass=passwort //192.168.2.54/iobroker/influxdb /media/smb-nas sudo influxd backup -portable /media/smb-nas
es kommen keine errors oder so aber im nas ist nichts gespeichert.
wenn ich es ins terminal eingebe geht es direkt.habt ihr eine idee?
hier das ganze blockly als js:
schedule('{"time":{"exactTime":true,"start":"00:00"},"period":{"days":1}}', function () { exec('sudo influxd backup -portable /media/smb-nas'); console.log("exec: " + 'sudo influxd backup -portable /media/smb-nas'); exec('sudo mount -t cifs -o user=backup-iobroker,pass=alcara //192.168.2.54/iobroker/influxdb /media/smb-nas'); console.log("exec: " + 'sudo mount -t cifs -o user=backup-iobroker,pass=Password //192.168.2.54/iobroker/influxdb /media/smb-nas'); }); schedule("* * * * *", function () { });
-
[Gelöst]Zeitplan geht aber gibt error im LOG
Hallo ihr lieben,
bin seit ca 1 woche dran mein haus zu digitalisieren.habe hier aber nun ein Problem.
ich nutze Blockly um von meinen 3 PV anlagen im 2 sec Takt die summe zu errechnen.
dazu nutze ich den Zeitplan, eine Variable und die 3 PV Daten.alles geht aber im LOG habe ich ultra viele errors:
Wenn ich das Skriot stoppe kommen keine errors mehr.
Also hängt es nur mir dem Skript zusammen.hier das Blockly:
Hier das JS:
schedule("*/2 * * * * *", function () { setState("javascript.0.scriptEnabled.common.EigeneDatenpunkte.Alle-PV"/*Alle-PV*/, (getState("fronius.0.inverter.1.PAC").val + getState("sonoff.0.Sonoff_POW_PV-Erweiterung.ENERGY_Power").val + getState("sonoff.0.Sonoff_POW_PV-Garage.ENERGY_Power").val), true); }); //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJzY2hlZHVsZSUyMiUyMGlkJTNEJTIydzclM0QlMkZWRilpc2h2QzZUazloeDdkJTIyJTIweCUzRCUyMjEzJTIyJTIweSUzRCUyMjg3JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU0NIRURVTEUlMjIlM0UqJTJGMiUyMColMjAqJTIwKiUyMColMjAqJTNDJTJGZmllbGQlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyU1RBVEVNRU5UJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydXBkYXRlJTIyJTIwaWQlM0QlMjIlNUVINlglMkNIUilXSHB1JTI1SyU2MDgpZ1kyJTIyJTNFJTNDbXV0YXRpb24lMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhodG1sJTIyJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFamF2YXNjcmlwdC4wLnNjcmlwdEVuYWJsZWQuY29tbW9uLkVpZ2VuZURhdGVucHVua3RlLkFsbGUtUFYlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX2FyaXRobWV0aWMlMjIlMjBpZCUzRCUyMkNvJTdCJTVFJTdDX1olM0IlM0I1ZCUyQ1MlMkYlN0QlN0IwcDJMJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VBREQlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMiohckNPViU0MHQoISlJZSUyQyU2MFclM0ZrJTYwayUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTElM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyeVolNDAlM0Z+WnQ1NlBVJTVCNTAlMjN1QkwlMkJIJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFZnJvbml1cy4wLmludmVydGVyLjEuUEFDJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIydlF0KSUzQmwwcXMlNDBMeWUwSy1ER1FWJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMSUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9hcml0aG1ldGljJTIyJTIwaWQlM0QlMjJuVWslNDAoMmwlMjQxNzhMJTNBYUl6JTIzNCUzQk4lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUFERCUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyJTVFUXlyZCUzRGV5JTNCa2RkN2UlNUVPMCUyQnpCJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMSUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjJNV2xqM0Z+JTQwJTIzV35jJTYwJTNGakxaYihwJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFc29ub2ZmLjAuU29ub2ZmX1BPV19QVi1FcndlaXRlcnVuZy5FTkVSR1lfUG93ZXIlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJtJTVCfl8paDE3TnRDJTNBTGllWCUyQ0dBUSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTElM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyKV9sY2l5MGUhUiUyMyUyMzFPQyU1QlEqJTdDRiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRXNvbm9mZi4wLlNvbm9mZl9QT1dfUFYtR2FyYWdlLkVORVJHWV9Qb3dlciUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnhtbCUzRQ==
hier noch die ausgabe aus blockly:
09:29:24.002 warn javascript.0 (18738) at Object.<anonymous> (script.js.common.EigeneDatenpunkte.PV-Alle:2:3) 09:29:26.002 warn javascript.0 (18738) at Object.<anonymous> (script.js.common.EigeneDatenpunkte.PV-Alle:2:3) 09:29:28.005 warn javascript.0 (18738) at Object.<anonymous> (script.js.common.EigeneDatenpunkte.PV-Alle:2:3) 09:29:30.003 warn javascript.0 (18738) at Object.<anonymous> (script.js.common.EigeneDatenpunkte.PV-Alle:2:3) 09:29:32.004 warn javascript.0 (18738) at Object.<anonymous> (script.js.common.EigeneDatenpunkte.PV-Alle:2:3) 09:29:34.002 warn javascript.0 (18738) at Object.<anonymous> (script.js.common.EigeneDatenpunkte.PV-Alle:2:3) 09:29:36.005 warn javascript.0 (18738) at Object.<anonymous> (script.js.common.EigeneDatenpunkte.PV-Alle:2:3)
was mache ich falsch?