Hallo zusammen,
hab nun den ganzen beitrag editiert.
Die Instanz wurde nicht grün, da die Baudrate nicht passte.
Hier die EInstellung mit dem CUL:
Zähler wurde anschließend sehr schnell gefunden , AES Key rein uns schon kommen die Daten rein.
Hallo zusammen,
hab nun den ganzen beitrag editiert.
Die Instanz wurde nicht grün, da die Baudrate nicht passte.
Hier die EInstellung mit dem CUL:
Zähler wurde anschließend sehr schnell gefunden , AES Key rein uns schon kommen die Daten rein.
@haus-automatisierung ok danke. Dachte mir doch der wäre dagewesen
Hallo zusammen.
Ich hänge an einem Script, Vll. Bin ich einfach zu blind…
Folgender Fall : zu einer gewissen Zeit soll der SOC der Batterie abgefragt werden. Ist dieser wert kleiner x , so soll er in einem gewissen zeitrahmen mit Watt Y die Batterie bis auf Wert x wieder aufladen.
Danach soll er mit dem batterienetladen warten, bis eine neue zeit erreicht ist.
Wie bringe ich den Batteriewachselrichter dazu hier bei Wert x zu stoppen?
Danke und Gruß
Chris
@reblausgt anfängerfrage :
Wie bekomme ich aus der Zahl (Z.b. im stundenblcok) eine Uhrzeit im 24h Format?
Danke
Ihr braucht nicht mehr zu Antworten. Fehler gefunden.
Zyklus nicht beendet ich depp....
Hallo zusammen,
habe ein Blockly geschrieben, welches abhängig vom SoC des Batteriespeiechers die Ladeleistung reduzieren soll.
Dazu müssen nach Modbus-Doku des WR (SMA SBS 2.5) alle 6 Register zyklisch geschrieben werden. Nach Erfahrungen anderer User so alle 15-25 sek.
Sonst verfällt der WR in den Automatikmodus.
Das funktioniert auch soweit so gut, WR lässt sich steuern.
Nun ändert aber das Skript einige Sachen von sich aus.
z.b. aktualisiert er die Werte nach einer gewissen zeit auf einmal alle 5 Sekunden , und nach einem Wechsel der Leistung , also z.b. der Sprung von SoC 79 auf 80 (was eine Leistungsänderung haben sollte) schreibt er dann beide Werte , also 2200 W und 1950 W ins Register 40795.
Wo habe ich hier den Fehler, dass sich der Zyklus "aufhängt" ?
Ich danke für eure Hilfe
var my_1, my_2, my_3, my_4;
on({ id: [].concat(['modbus.0.inputRegisters.30845_BAT_SoC']), change: 'ne' }, async (obj) => {
let value = obj.state.val;
let oldValue = obj.oldState.val;
if (((obj.state ? obj.state.val : '') <= 99) && ((obj.state ? obj.state.val : '') >= 98)) {
my_1 = setInterval(async () => {
setStateDelayed('modbus.0.holdingRegisters.40236_CmpBMSOpMod' /* Betriebsart des BMS */, 2424, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40793_BatChaMinW' /* Minimale Batterieladeleistung */, 0, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40795_BatChaMaxW' /* Maximale Batterieladeleistung */, 500, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40797_BatDschMinW' /* Minimale Batterieentladeleistung */, 0, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40799_BatDschMaxW' /* Maximale Batterieentladeleistung */, 2650, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40801_GridWSpt' /* Sollwert der Netzaustauschleistung */, 0, 250, false);
}, 15000);
} else if (((obj.state ? obj.state.val : '') <= 97) && ((obj.state ? obj.state.val : '') >= 90)) {
my_2 = setInterval(async () => {
setStateDelayed('modbus.0.holdingRegisters.40236_CmpBMSOpMod' /* Betriebsart des BMS */, 2424, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40793_BatChaMinW' /* Minimale Batterieladeleistung */, 0, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40795_BatChaMaxW' /* Maximale Batterieladeleistung */, 1650, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40797_BatDschMinW' /* Minimale Batterieentladeleistung */, 0, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40799_BatDschMaxW' /* Maximale Batterieentladeleistung */, 2650, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40801_GridWSpt' /* Sollwert der Netzaustauschleistung */, 0, 250, false);
}, 15000);
} else if (((obj.state ? obj.state.val : '') <= 89) && ((obj.state ? obj.state.val : '') >= 80)) {
my_3 = setInterval(async () => {
setStateDelayed('modbus.0.holdingRegisters.40236_CmpBMSOpMod' /* Betriebsart des BMS */, 2424, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40793_BatChaMinW' /* Minimale Batterieladeleistung */, 0, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40795_BatChaMaxW' /* Maximale Batterieladeleistung */, 1950, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40797_BatDschMinW' /* Minimale Batterieentladeleistung */, 0, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40799_BatDschMaxW' /* Maximale Batterieentladeleistung */, 2650, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40801_GridWSpt' /* Sollwert der Netzaustauschleistung */, 0, 250, false);
}, 15000);
} else if (((obj.state ? obj.state.val : '') <= 79) && ((obj.state ? obj.state.val : '') >= 70)) {
my_4 = setInterval(async () => {
setStateDelayed('modbus.0.holdingRegisters.40236_CmpBMSOpMod' /* Betriebsart des BMS */, 2424, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40793_BatChaMinW' /* Minimale Batterieladeleistung */, 0, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40795_BatChaMaxW' /* Maximale Batterieladeleistung */, 2200, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40797_BatDschMinW' /* Minimale Batterieentladeleistung */, 0, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40799_BatDschMaxW' /* Maximale Batterieentladeleistung */, 2650, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40801_GridWSpt' /* Sollwert der Netzaustauschleistung */, 0, 250, false);
}, 15000);
} else if ((obj.state ? obj.state.val : '') <= 69) {
(() => { if (my_1) { clearInterval(my_1); my_1 = null; }})();
(() => { if (my_2) { clearInterval(my_2); my_2 = null; }})();
(() => { if (my_3) { clearInterval(my_3); my_3 = null; }})();
(() => { if (my_4) { clearInterval(my_4); my_4 = null; }})();
setStateDelayed('modbus.0.holdingRegisters.40236_CmpBMSOpMod' /* Betriebsart des BMS */, 2424, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40793_BatChaMinW' /* Minimale Batterieladeleistung */, 0, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40795_BatChaMaxW' /* Maximale Batterieladeleistung */, 2500, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40797_BatDschMinW' /* Minimale Batterieentladeleistung */, 0, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40799_BatDschMaxW' /* Maximale Batterieentladeleistung */, 2650, 250, false);
setStateDelayed('modbus.0.holdingRegisters.40801_GridWSpt' /* Sollwert der Netzaustauschleistung */, 0, 250, false);
}
});
Ich danke euch
Edit , nun gerad ebei 90% SoC schreibt er tatsächlich beide Werte gleichzeitig.
@haus-automatisierung ok danke. Dachte mir doch der wäre dagewesen
Hallo zusammen,
ist es möglich auf der Oberfläche bzw. Instanz ein Scrip, welches nicht mehr benötigt wird, zu löschen?
Wenn nein, wie funktioniert dies denn?
Danke euch
Zitat STIEBEL Service :
Modbus is one based, kann also sein das alle Register um 1 versetzt sind
Ich revidiere.
Der PC läuft noch (seh ich über Monit) , Debian, SSH, Influy, iobroker , grafana etc. stürzen ab.
Nun bin ich ratlos.....
Kann es an "Berechtigungen" liegen?
ok, so wie es aussieht hat er nur eine erzeugt und vermutlich auch nur vom Bucket iobroker.
Nun hat er auch nach vielen tüfteln offenbar was gemacht, nun stützt beim Laden aber der PC ab.
Vermutlich wegen zu hoher RAM-Auslastung.
Kann man aus dem Backup einzelne Ordner löschen damit es kleiner wird, oder sind da Abhängigkeiten verbaut?
er hat mir nur von einem Bucket (iobroker) , drei hätte ich insgesamt die Measurement Namen geschrieben.
Keine Daten dazu