NEWS
E3DC Hauskraftwerk steuern
-
@ArnoD oh ja, das ist natürlich auch praktikabel.
man muss halt alle per script einsammeln, wenn man neue dazu haben möchte müssen die in die liste aufgenommen werden.
Aber bei 2Zählern ist das überschaubar...übrigens, bei dir muss wahrscheinlich .value.week eingetragen werden, die spalte neben dran...
-
wird auf die Rolle getriggert, hatte das in dem Auszug nicht gesehen...ist schon ne weile her..
const test = $ ('(functions=Zaehler)'); test.each(function(id,i){ log(id); });
-
probier das mal, also das ist wirklich universell...und kurz
const test = $ ('(functions=Zaehler)'); test.each(function(id,i){ log(id); });
triggert nur auf die eingestellte enumeration...sollte doch jeder hinkriegen seine Zaehler der Aufzählung Zaehler zuzuweisen
-
@smartboart sagte in E3DC Hauskraftwerk steuern:
const test = $ ('(functions=Zaehler)'); test.each(function(id,i){ log(id); });
Super, jetzt funktioniert es
-
Ok habe jetzt erstmal die letzte Änderung im Script eingefügt.
Ich hole mir von Proplanta die Uhrzeit wann die Seite das nächste Mal aktualisiert wird und speichere diese unter einem neun State "NaesteAktualisierung". Bei Änderung rufe ich eine Funktion auf die mir wieder eine schedule Funktion startet mit der neuen Aktualisierungszeit plus 10 min.
So werden die Proplanta Daten regelmäßig automatisch aktualisiert,Da ich jetzt zwei Tage Zeit habe werde ich mich wieder an der RSCP Schnittstelle von E3DC versuchen.
-
@ArnoD
was hälst du davon, die Werte der 5 usecases über vis änderbar zu machen?Also im Prinzip würde ich mir das so vorstellen....
Wenn zB. Programm 1 Aktiv ist, werden meine Änderungen über die Control Eingabe direkt in der Userconfig für 1 übergeben.
Bei aktivem Program 2 in 2 usw. ..
Man könnte dann quasi in Echtzeit wenn man gerade auf die vis schaut und sieht, ok hier könnte was angepasst werden eingreifen.
Das wäre im Prinzip nicht soviel Aufwand, da alle states schon vorhanden sind.
Im Prinzip würde mit Daten schreiben die controldatei beschrieben und auch die user config. Vorher nur ne if programm 1 2 3 4oder 5 dan übernimm die Werte auf var xyz.
vlt. noch usecase manuell, dann gelten die Einstellungen die gerade aktiv sind.
Dann müsste auch Fall 1 mit automatik verriegelt werden.Nur so ne idee...
vlt. legt man noch templates an, wenn man mal toal daneben liegt, kann man den template wieder laden...
-
@smartboart
Ist eine gute Idee, kann dir bei der Umsetzung nur nicht ganz folgen -
Habe eine Möglichkeit gefunden in JS mit 256AES und Cipher-Block-Chain-Verfahren (CBC) zu verschlüsseln, bekomme aber unter NPM Module aes-js nicht installiert. Hat jemand einen Tipp
Test Code:
var aesjs = require('aes-js'); // An example 256-bit key. Fehlende Zeichen werden mit 0xFF aufgefüllt. var key_256 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]; // The initialization vector (must be 32 bytes) var iv = [ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72 ]; // Convert text to bytes (text must be a multiple of 32bytes) var text = 'TextMustBe32Byte0xFF0xFF0xFF0xFF'; var textBytes = aesjs.utils.utf8.toBytes(text); var aesCbc = new aesjs.ModeOfOperation.cbc(key_256, iv); var encryptedBytes = aesCbc.encrypt(textBytes); // To print or store the binary data, you may convert it to hex var encryptedHex = aesjs.utils.hex.fromBytes(encryptedBytes); console.log(encryptedHex); // When ready to decrypt the hex string, convert it back to bytes var encryptedBytes = aesjs.utils.hex.toBytes(encryptedHex); // The cipher-block chaining mode of operation maintains internal // state, so to decrypt a new instance must be instantiated. var aesCbc = new aesjs.ModeOfOperation.cbc(key_256, iv); var decryptedBytes = aesCbc.decrypt(encryptedBytes); // Convert our bytes back into text var decryptedText = aesjs.utils.utf8.fromBytes(decryptedBytes); console.log(decryptedText);
-
@ArnoD
ja die Userconfig hat ja im script eindeutige Variablen z.B
sEinspeiselimit[1] = 5.8;
ist ja vom Programm 1.... Wenn das nun aktiv ist und ich ändere nun in der Vis den Wert über den state
userdata.0.E3DC-Control.Parameter.Einspeiselimit den wert. dient diese Änderung als trigger um ebenfalls diese variable sEinspeiselimit[1] = 5.8; zu beschreiben.EDIT:
problematisch wird dann nur sein diese remanent zu halten.Beim Neustart würde alles wieder überschrieben..man müsste das über nen json string ablegen und einlesen, dann brächte man nur 5 neue States...
ist dann doch wieder komplizierter...
Wie man ein jso schreibt wissen wir jetzt, auslesen tue ich welche in meinen Klimscripten, das bekommen wir bestimmt auch hin...
Aber so einfach ist es dann doch nicht...ausser es gibt andere Ansätze... -
@ArnoD sagte in E3DC Hauskraftwerk steuern:
Habe eine Möglichkeit gefunden in JS mit 256AES und Cipher-Block-Chain-Verfahren (CBC) zu verschlüsseln, bekomme aber unter NPM Module aes-js nicht installiert. Hat jemand einen Tipp
Test Code:
var aesjs = require('aes-js'); // An example 256-bit key. Fehlende Zeichen werden mit 0xFF aufgefüllt. var key_256 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]; // The initialization vector (must be 32 bytes) var iv = [ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72 ]; // Convert text to bytes (text must be a multiple of 32bytes) var text = 'TextMustBe32Byte0xFF0xFF0xFF0xFF'; var textBytes = aesjs.utils.utf8.toBytes(text); var aesCbc = new aesjs.ModeOfOperation.cbc(key_256, iv); var encryptedBytes = aesCbc.encrypt(textBytes); // To print or store the binary data, you may convert it to hex var encryptedHex = aesjs.utils.hex.fromBytes(encryptedBytes); console.log(encryptedHex); // When ready to decrypt the hex string, convert it back to bytes var encryptedBytes = aesjs.utils.hex.toBytes(encryptedHex); // The cipher-block chaining mode of operation maintains internal // state, so to decrypt a new instance must be instantiated. var aesCbc = new aesjs.ModeOfOperation.cbc(key_256, iv); var decryptedBytes = aesCbc.decrypt(encryptedBytes); // Convert our bytes back into text var decryptedText = aesjs.utils.utf8.fromBytes(decryptedBytes); console.log(decryptedText);
was bekommst dufür Fehlermeldungen?
-
@smartboart sagte in E3DC Hauskraftwerk steuern:
Habe eine Möglichkeit gefunden in JS mit 256AES und Cipher-Block-Chain-Verfahren (CBC) zu verschlüsseln, bekomme aber unter NPM Module aes-js nicht installiert. Hat jemand einen Tipp
bei mir scheint es geklappt zu haben...
javascript.1 2020-08-07 16:05:14.400 info (21314) 1 package is looking for funding run `npm fund` for details javascript.1 2020-08-07 16:05:14.338 info (21314) + aes-js@3.1.2 added 1 package from 1 contributor and audited 30 packages in 1.288s javascript.1 2020-08-07 16:05:11.701 info (21314) npm install aes-js --production --prefix "/opt/iobroker/node_modules/iobroker.javascript" (System call) javascript.1 2020-08-07 16:05:11.667 info (21314) found 0 vulnerabilities javascript.1 2020-08-07 16:05:11.665 info (21314) 1 package is looking for funding run `npm fund` for details javascript.1 2020-08-07 16:05:11.608 info (21314) + xmlhttprequest@1.8.0 added 22 packages from 89 contributors and audited 29 packages in 4.1s javascript.1 2020-08-07 16:05:06.167 info (21314) npm install xmlhttprequest --production --prefix "/opt/iobroker/node_modules/iobroker.javascript" (System call) javascript.1 2020-08-07 16:05:06.120 info (21314) starting. Version 4.6.22 in /opt/iobroker/node_modules/iobroker.javascript, node: v12.18.3, js-controller: 3.1.6
-
@smartboart
kannst du das Test Script starten ohne Fehlermeldung ??
Bei mir kommt dann immer:javascript.1 2020-08-07 16:25:33.618 error (8936) at Script.runInContext (vm.js:133:20) javascript.1 2020-08-07 16:25:33.617 error (8936) at script.js.common.Skript_1:17:14 javascript.1 2020-08-07 16:25:33.617 error (8936) at new ModeOfOperationCBC (/opt/iobroker/node_modules/iobroker.javascript/node_modules/aes-js/index.js:439:19) javascript.1 2020-08-07 16:25:33.617 error (8936) Error: invalid initialation vector size (must be 16 bytes) javascript.1 2020-08-07 16:25:33.617 error (8936) ^ javascript.1 2020-08-07 16:25:33.617 error (8936) throw new Error('invalid initialation vector size (must be 16 bytes)'); javascript.1 2020-08-07 16:25:33.617 error (8936) script.js.common.Skript_1: /opt/iobroker/node_modules/iobroker.javascript/node_modules/aes-js/index.js:439 javascript.1 2020-08-07 16:25:33.607 info (8936) Start javascript script.js.common.Skript_1
-
@ArnoD sagte in E3DC Hauskraftwerk steuern:
ich habe das gleiche im log
javascript.1 2020-08-07 16:29:30.598 error (21314) at Script.runInContext (vm.js:130:18) javascript.1 2020-08-07 16:29:30.598 error (21314) at script.js.common.Tests.erdctest:31:14 javascript.1 2020-08-07 16:29:30.598 error (21314) at new ModeOfOperationCBC (/opt/iobroker/node_modules/iobroker.javascript/node_modules/aes-js/index.js:439:19) javascript.1 2020-08-07 16:29:30.597 error (21314) Error: invalid initialation vector size (must be 16 bytes) javascript.1 2020-08-07 16:29:30.597 error (21314) ^ javascript.1 2020-08-07 16:29:30.597 error (21314) throw new Error('invalid initialation vector size (must be 16 bytes)'); javascript.1 2020-08-07 16:29:30.596 error (21314) script.js.common.Tests.erdctest: /opt/iobroker/node_modules/iobroker.javascript/node_modules/aes-js/index.js:439
-
@smartboart
ok habe den Fehler gefunden, hat nichts mit dem NPM Modul zu tun.
Vektor darf anscheinend nur 16 bytes haben, E3DC verwendet aber 32, da waren sie schon wieder meine drei Probleme -
@ArnoD shit
-
@smartboart sagte in E3DC Hauskraftwerk steuern:
@ArnoD
was hälst du davon, die Werte der 5 usecases über vis änderbar zu machen?Wenn möglich parametrierbar ob wie bisher oder wie vorgeschlagen...ich habe erst vor 1-2 Tagen endlich die festen Werte für die unterschiedlichen Einstellungen gefunden und denke nicht im Traum daran die nochmals ändern zu wollen.
vlt. legt man noch templates an, wenn man mal toal daneben liegt, kann man den template wieder laden...
Das habe ich mir selbst in nem separaten Skript tatsächlich auch noch dazu gebaut, falls man was blöd eingestellt hat oder was schief geht. Und noch den Panik-Knopf bei schlechtem Wetter, der alles übersteuert und auf 100% Eigenverbrauch und sofort alles Laden umstellt.
-
@stevie77
Den Schietwetter Panik Taster hast du doch schon, einfach "Ladeschwelle" auf 100% und es wird alles in den Speicher geladen. -
@ArnoD Möglicherweise verstehe ich E3DC-Control noch nicht so gut. Ladeschwelle = 100 ist völlig unabhängig von den ganzen anderen Zeitwerten und oberer Ladekorridor und den Ladeende-Werten? Ein wie auch immer gesetzter unload-Wert pfuscht da auch nicht rein?
-
@stevie77
Richtig, Ladeschwelle überlagert fast alles.siehe Beschreibung im ersten Post:
ladeschwelle = Bis zu diesem SoC Wert wird sofort mit der gesamten überschüssigen PV-Leistung geladen. Erst wenn die ladeschwelle erreicht wird, wird mit dem geregelten Laden begonnen.edit: Außer unload dieser Parameter überlagert Ladeschwelle.
-
Man kann die Seite mit den Parameter eventuell sinnvoll aufbauen.
Es gibt einige die man sicher nicht verstellen will oder nicht verwendet, wie z.B.- Maximum Ladeleistung
- minimum Ladeleistung
- oberer Ladekorridor
- unterer Ladekorridor
- Peakshave
- Speichergröße
Das sind z.B. die die ich nicht benötigen würde.
Diese könnte man in Vis von der Seite entfernen und somit das ganze übersichtlicher gestalten und Platz schaffen für eine manuelle Anwahl von Einstellung 1 bis 5 und die einzelnen Werte jeder Einstellung.