Přetoky do DS + prodej z baterie na spotu

Beny
Příspěvky: 459
Registrován: čtv říj 21, 2021 9:17 pm

Re: Přetoky do DS + prodej z baterie na spotu

Příspěvek od Beny »

jbb píše: čtv bře 06, 2025 12:07 am Používám node-red-contrib-modbus- takže generické uzly pro modbus, nikoliv něco specifického pro SA [ty věci co jsou pro SA byly co vím jen pro čtení, nikoliv pro ovládání]. A ten generický uzel pro PV invertory od Victronu bohužel nefunguje - tam by se mělo zadávat číslo výkonu ve W, ale to SA neumí přijmout...

Jinak adresuji SA na jeho IP (tedy je třeba použít pevnou IP, ne DHCP), port 502.

Do hexové hodnoty F001 (decimál 61441) zapisuji číslo 0..100, opovídající procentům výkonu. Následně s odstupem 2 sec zapisuji to samé (ale asi korektnější by bylo psát 1) do hexové hodnoty F100 (decimál 61696), čímž potvrdím tu změnu výkonu. Modbus-write node.

Naopak z F001 je možné i to procento vyčíst - Modbus Getter node.
Děkuju.
Já interní Modbus v NR používám pro ostatní zařízení také, jen jsem měl za to, že uzly pro SA budou nějak specifické. Ale mám tam jiný problém a už jsem si uvědomil, proč jsem šel cestou integrace v HA.

Jak jsem psal do SZ potřebuji zapsat hodnotu ve formátu Float32. Ty zadáváš zápisy v Uint16 a int16 pro ty tvé dvě adresy.
Bohužel jsem nepřišel na to, jak zadat formát Float32. Pokud pošlu zápis na adresu pro omezení přetoků (na určitou hodnotu - ne implicitně zakázané či povolené) dojde jiné číslo.

Chci to řešit přes přetoky, protože pak pokud se navýší spotřeba krásně výrobu dle toho reguluje. Tak, jak mě to teď jde přes HA.
Jenže zatím nedokážu zapsat správnou hodnotu.

Dám sem kod z funkce, kterou to dělám. Pokud by někoho něco napdalo sem s tím.

Kód: Vybrat vše

var fc = 6;
var sa = 63234;
var addresses = 1;
var value = 1;
msg.payload = { "value": value, 'fc': fc, 'unitid': 1, 'address': sa, 'quantity': addresses };
return msg;
SolarEdge 5000 HD, panely AEG JV a JZ, AEG SV, SolarEdge Optimizer P300 a P401, PLC Unipi Patron M527, elektroměry EM 340 a EM111 Modbus
http://www.pocasinakladne.cz/
Beny
Příspěvky: 459
Registrován: čtv říj 21, 2021 9:17 pm

Re: Přetoky do DS + prodej z baterie na spotu

Příspěvek od Beny »

Po boji s ChatGPT se povedl vyladit kod pro zápis v Float32, resp. Slovenský ChatGPT věděl jak správně na pořadí v zápise :-) Resp. Michal Chaláni z FB skupiny.

Pokud by někdo potřeboval nastavit přetoky u SolarEdge

Kód: Vybrat vše

var fc = 16; // Write Multiple Registers
var sa = 63234; // Starting address
var floatValue = 200; // Toto je hodnota, ktorú chceš zapísať (Float32)
// Prevod Float32 na dva 16-bitové registre (Buffer hack)
var buffer = Buffer.alloc(4);
buffer.writeFloatBE(floatValue, 0); // Big Endian (štandard Modbus)
// Dva 16-bit registre z bufferu
var reg1 = buffer.readUInt16BE(0); // Prvý register (High)
var reg2 = buffer.readUInt16BE(2); // Druhý register (Low)

// Ak by zariadenie vyžadovalo Little Endian (low word first), použiješ toto poradie:
 var values = [reg2, reg1]; //
msg.payload = {
"value": values,
"fc": fc,
"unitid": 1,
"address": sa,
"quantity": values.length
};
return msg;
SolarEdge 5000 HD, panely AEG JV a JZ, AEG SV, SolarEdge Optimizer P300 a P401, PLC Unipi Patron M527, elektroměry EM 340 a EM111 Modbus
http://www.pocasinakladne.cz/
Odpovědět

Zpět na „Victron komunita“