Come leggere i dati direttamente dall'inverter SolarEdge?
Regole del forum
Parlare di un solo e singolo argomento per discussione, nella sezione più corretta e con un titolo chiaro e descrittivo, evitando i fuori tema | Evitare di citare tutto il testo di un precedente messaggio, ma lasciare solo il minimo indispensabile usando questo sistema | Utilizzare le unità di misura corrette, in particolare i kW per la potenza e i kWh per l'energia, di cui è spiegata la differenza qui | Leggere il regolamento completo che è visibile qui
Parlare di un solo e singolo argomento per discussione, nella sezione più corretta e con un titolo chiaro e descrittivo, evitando i fuori tema | Evitare di citare tutto il testo di un precedente messaggio, ma lasciare solo il minimo indispensabile usando questo sistema | Utilizzare le unità di misura corrette, in particolare i kW per la potenza e i kWh per l'energia, di cui è spiegata la differenza qui | Leggere il regolamento completo che è visibile qui
-
- ★★★★ Esperto
- Messaggi: 1690
- Iscritto il: 26/07/2021, 15:27
- Località: Veneto
- Veicolo: Renault Zoe R135
Re: Come leggere i dati direttamente dall'inverter SolarEdge?
Hai installato il Binding Modbus?
Se si vai su thing sul menù setting e dovresti trovare una lista di tutti i valori che non hai commentato sul file.
Se li trovi e sono "online" vuol dire che sei riuscito a connetterti all'inveter.
Ora cliccando su ogni oggetto trovi i canali a cui dovrai assegnare un item che non è altro che una variabile formatta. Li poi vedrai i vari valori.
In questo caso assegna una variabile numerica al canale "value as number" gli altri canali non servono
Se non sono stato chiaro questa sera vedo se riesco a metterti degli screenshot
Se si vai su thing sul menù setting e dovresti trovare una lista di tutti i valori che non hai commentato sul file.
Se li trovi e sono "online" vuol dire che sei riuscito a connetterti all'inveter.
Ora cliccando su ogni oggetto trovi i canali a cui dovrai assegnare un item che non è altro che una variabile formatta. Li poi vedrai i vari valori.
In questo caso assegna una variabile numerica al canale "value as number" gli altri canali non servono
Se non sono stato chiaro questa sera vedo se riesco a metterti degli screenshot
Renault Zoe 135 Intens - Fotovoltaico Pannelli Rec Alpha 8,88 Kw Inverter SolarEdge con Ottimizzatori 6Kw e accumulo LG Chem Resu 10H - Climatizzazione casa Brofer HPU600
Re: Come leggere i dati direttamente dall'inverter SolarEdge?
Ci siamo.
Funziona. Leggo tutti i valori in tempo reale.
Per caso, sai se tutti i registri che sono presenti nel file .things sono tutti quelli disponibili o ce ne sono altri che nel file non sono definiti?
Per esempio la potenza prodotta dai singoli pannelli ?
EDIT: trovato questo, dove sono definiti più registri di quelli del file .things e se ne possono aggiungere altri.
https://knowledge-center.solaredge.com/ ... l-note.pdf
Da capire...
EDIT EDIT
vedo che per i vari "canali" ci sono sempre il valore numerico puro e il scale factor
In pratica, dal valore numerico del registro serve togliere tanti zeri quanto è lo scale factor
Da capire come eseguire l'operazione matematica
Funziona. Leggo tutti i valori in tempo reale.
Per caso, sai se tutti i registri che sono presenti nel file .things sono tutti quelli disponibili o ce ne sono altri che nel file non sono definiti?
Per esempio la potenza prodotta dai singoli pannelli ?
EDIT: trovato questo, dove sono definiti più registri di quelli del file .things e se ne possono aggiungere altri.
https://knowledge-center.solaredge.com/ ... l-note.pdf
Da capire...
EDIT EDIT
vedo che per i vari "canali" ci sono sempre il valore numerico puro e il scale factor
In pratica, dal valore numerico del registro serve togliere tanti zeri quanto è lo scale factor
Da capire come eseguire l'operazione matematica
Fiat 132 anno 1978, 2500 cc Diesel
-
- ★★★★ Esperto
- Messaggi: 1690
- Iscritto il: 26/07/2021, 15:27
- Località: Veneto
- Veicolo: Renault Zoe R135
Re: Come leggere i dati direttamente dall'inverter SolarEdge?
Ci sono altri registri in giro per la rete si trovano altri valori. Anche il file della sunspec è un buon punto di partenza.
Per calcolare il valore in Watt o kW fisso io ho creato degli altri items senza collegamento ad un thing e poi con le rules ogni secondo le valorizzo in base al coefficiente di scala. Nello stesso ciclo faccio le operazioni per il calcolo della produzione FV e dei consumi di casa.
Le regole si fanno con un file si testo con estensione .rules da mettere nella cartella rules.
rule "AC produzione Inverter"
when
Time cron "* * * ? * * *"
then
// Let modbus finish reading all registers
var Double power = (MDSolaredgePower.state as DecimalType).doubleValue
var Double SF = (MBSolaredgePowerFA.state as DecimalType).doubleValue
var Double DCpower = (MBSolaredgeDCPower.state as DecimalType).doubleValue
var Double batpower = (MBSolaredgeBatteryPower.state as DecimalType).doubleValue
var Double DCSF = (MBSolaredgeDCPowerPF.state as DecimalType).doubleValue
var Double HMpower = (MBSolaredgePowerHome.state as DecimalType).doubleValue
var Double HMSF = (MBSolaredgePowerHomePF.state as DecimalType).doubleValue
var Double result = power * Math::pow(10,SF)
var Double HMresult = -1 * HMpower * Math::pow(10,HMSF)
var Double power1 = (SolaredgeACPower.state as DecimalType).doubleValue
var Double power2 = (SolaredgeACRete.state as DecimalType).doubleValue
if (result < 0) {result = 0}
postUpdate(SolaredgeACPower, Math.round(result))
postUpdate(SolaredgeACRete, Math.round(HMresult))
var Double DCresult = (DCpower * Math::pow(10,DCSF)) + batpower
if (DCresult < 0) {DCresult = 0}
postUpdate(SolaredgeDCPower, Math.round(DCresult))
if (HMresult > 0) {postUpdate(SolaredgeACImport, Math.round(HMresult)) postUpdate(SolaredgeACexport, 0)}
if (HMresult < 0) {HMresult = -1 * HMresult
postUpdate(SolaredgeACexport, Math.round(HMresult)) postUpdate(SolaredgeACImport, 0)}
if (power1 < 0 ) { power1 = 0}
var Double COresult = power1 + power2
if (COresult < 0) {COresult = 0}
postUpdate(SolaredgeACConsumo, Math.round(COresult))
end
Il nome delle variabili va modificato in base al nome che hai dato tu.
Per calcolare il valore in Watt o kW fisso io ho creato degli altri items senza collegamento ad un thing e poi con le rules ogni secondo le valorizzo in base al coefficiente di scala. Nello stesso ciclo faccio le operazioni per il calcolo della produzione FV e dei consumi di casa.
Le regole si fanno con un file si testo con estensione .rules da mettere nella cartella rules.
rule "AC produzione Inverter"
when
Time cron "* * * ? * * *"
then
// Let modbus finish reading all registers
var Double power = (MDSolaredgePower.state as DecimalType).doubleValue
var Double SF = (MBSolaredgePowerFA.state as DecimalType).doubleValue
var Double DCpower = (MBSolaredgeDCPower.state as DecimalType).doubleValue
var Double batpower = (MBSolaredgeBatteryPower.state as DecimalType).doubleValue
var Double DCSF = (MBSolaredgeDCPowerPF.state as DecimalType).doubleValue
var Double HMpower = (MBSolaredgePowerHome.state as DecimalType).doubleValue
var Double HMSF = (MBSolaredgePowerHomePF.state as DecimalType).doubleValue
var Double result = power * Math::pow(10,SF)
var Double HMresult = -1 * HMpower * Math::pow(10,HMSF)
var Double power1 = (SolaredgeACPower.state as DecimalType).doubleValue
var Double power2 = (SolaredgeACRete.state as DecimalType).doubleValue
if (result < 0) {result = 0}
postUpdate(SolaredgeACPower, Math.round(result))
postUpdate(SolaredgeACRete, Math.round(HMresult))
var Double DCresult = (DCpower * Math::pow(10,DCSF)) + batpower
if (DCresult < 0) {DCresult = 0}
postUpdate(SolaredgeDCPower, Math.round(DCresult))
if (HMresult > 0) {postUpdate(SolaredgeACImport, Math.round(HMresult)) postUpdate(SolaredgeACexport, 0)}
if (HMresult < 0) {HMresult = -1 * HMresult
postUpdate(SolaredgeACexport, Math.round(HMresult)) postUpdate(SolaredgeACImport, 0)}
if (power1 < 0 ) { power1 = 0}
var Double COresult = power1 + power2
if (COresult < 0) {COresult = 0}
postUpdate(SolaredgeACConsumo, Math.round(COresult))
end
Il nome delle variabili va modificato in base al nome che hai dato tu.
Renault Zoe 135 Intens - Fotovoltaico Pannelli Rec Alpha 8,88 Kw Inverter SolarEdge con Ottimizzatori 6Kw e accumulo LG Chem Resu 10H - Climatizzazione casa Brofer HPU600
Re: Come leggere i dati direttamente dall'inverter SolarEdge?
Ultima modifica di steff70 il 14/02/2023, 8:53, modificato 1 volta in totale.
Fiat 132 anno 1978, 2500 cc Diesel
-
- ★★★★ Esperto
- Messaggi: 1690
- Iscritto il: 26/07/2021, 15:27
- Località: Veneto
- Veicolo: Renault Zoe R135
Re: Come leggere i dati direttamente dall'inverter SolarEdge?
Mandami il nome delle 4 items create che ti imposto la regola. Fatta una poi ti sarà più chiaro fare anche le altre
Renault Zoe 135 Intens - Fotovoltaico Pannelli Rec Alpha 8,88 Kw Inverter SolarEdge con Ottimizzatori 6Kw e accumulo LG Chem Resu 10H - Climatizzazione casa Brofer HPU600
Re: Come leggere i dati direttamente dall'inverter SolarEdge?
devo aver fatto pasticcio... risposto di sopra
Fiat 132 anno 1978, 2500 cc Diesel
-
- ★★★★ Esperto
- Messaggi: 1690
- Iscritto il: 26/07/2021, 15:27
- Località: Veneto
- Veicolo: Renault Zoe R135
Re: Come leggere i dati direttamente dall'inverter SolarEdge?
Devi creare l'item anche per i valori di scala.
Potresti nominarle
Power_from_Sun_SF
Power_to_the_Grid_SF
crei un file di testo .rules con questo
rule "AC produzione Inverter"
when
//Item MDSolaredgePower changed or Item MBSolaredgeDCPower changed or Item MBSolaredgePowerHome changed
Time cron "* * * ? * * *"
then
var Double power1 = (Power_from_Sun.state as DecimalType).doubleValue
var Double SF1 = (Power_from_Sun_SF.state as DecimalType).doubleValue
var Double power2 = (Power_to_the_Grid.state as DecimalType).doubleValue
var Double SF2 = (Power_to_the_Grid_SF.state as DecimalType).doubleValue
var Double result1 = power1 * Math::pow(10,SF1)
var Double result2 = -1 * power2 * Math::pow(10,SF2)
// in result1 e result2 hai i valori in Watt
// metto il risultato sul Item SolaredgeACPower che ho creato modifica il nome come preferisci
// il valore diventa negativo di notte perchè assorbe l'inverter e per facilitare le operazioni preferiscono che sia a 0 se vuoi valore negativo commenta
if (result1 < 0) {result1 = 0}
// la riga qui sopra
postUpdate(SolaredgeACPower, Math.round(result1))
// se vuoi solo avere il valore positivo e negativo nella stessa variabile usa la riga commentata e commenta gli IF
// postUpdate(SolaredgeACPowerMeter, Math.round(result2))
// se vuoi dividere per import e export usa quella qui sotto
// volendo puoi avere entrambi i dati se non commenti entrambi
if (result2 > 0) {postUpdate(SolaredgeACImport, Math.round(result2)) postUpdate(SolaredgeACexport, 0)}
if (result2 < 0) {result2 = -1 * result2
postUpdate(SolaredgeACexport, Math.round(result2)) postUpdate(SolaredgeACImport, 0)}
// se usi la prima opzione crea l'item con nome SolaredgeACPowerMeter
// se usi la seconda opzione crea l'item con nome SolaredgeACImport e SolaredgeACexport
in base a come hai impostato avrai i valori in Watt in questi Items
SolaredgeACPower
SolaredgeACPowerMeter
SolaredgeACImport
SolaredgeACexport
Potresti nominarle
Power_from_Sun_SF
Power_to_the_Grid_SF
crei un file di testo .rules con questo
rule "AC produzione Inverter"
when
//Item MDSolaredgePower changed or Item MBSolaredgeDCPower changed or Item MBSolaredgePowerHome changed
Time cron "* * * ? * * *"
then
var Double power1 = (Power_from_Sun.state as DecimalType).doubleValue
var Double SF1 = (Power_from_Sun_SF.state as DecimalType).doubleValue
var Double power2 = (Power_to_the_Grid.state as DecimalType).doubleValue
var Double SF2 = (Power_to_the_Grid_SF.state as DecimalType).doubleValue
var Double result1 = power1 * Math::pow(10,SF1)
var Double result2 = -1 * power2 * Math::pow(10,SF2)
// in result1 e result2 hai i valori in Watt
// metto il risultato sul Item SolaredgeACPower che ho creato modifica il nome come preferisci
// il valore diventa negativo di notte perchè assorbe l'inverter e per facilitare le operazioni preferiscono che sia a 0 se vuoi valore negativo commenta
if (result1 < 0) {result1 = 0}
// la riga qui sopra
postUpdate(SolaredgeACPower, Math.round(result1))
// se vuoi solo avere il valore positivo e negativo nella stessa variabile usa la riga commentata e commenta gli IF
// postUpdate(SolaredgeACPowerMeter, Math.round(result2))
// se vuoi dividere per import e export usa quella qui sotto
// volendo puoi avere entrambi i dati se non commenti entrambi
if (result2 > 0) {postUpdate(SolaredgeACImport, Math.round(result2)) postUpdate(SolaredgeACexport, 0)}
if (result2 < 0) {result2 = -1 * result2
postUpdate(SolaredgeACexport, Math.round(result2)) postUpdate(SolaredgeACImport, 0)}
// se usi la prima opzione crea l'item con nome SolaredgeACPowerMeter
// se usi la seconda opzione crea l'item con nome SolaredgeACImport e SolaredgeACexport
in base a come hai impostato avrai i valori in Watt in questi Items
SolaredgeACPower
SolaredgeACPowerMeter
SolaredgeACImport
SolaredgeACexport
Ultima modifica di MaxVe il 15/02/2023, 16:58, modificato 1 volta in totale.
Renault Zoe 135 Intens - Fotovoltaico Pannelli Rec Alpha 8,88 Kw Inverter SolarEdge con Ottimizzatori 6Kw e accumulo LG Chem Resu 10H - Climatizzazione casa Brofer HPU600
Re: Come leggere i dati direttamente dall'inverter SolarEdge?
Niente... ho fatto come hai detto e non compaiono nuovi item.
Ho creato 2 nuovi item per i fattori di scala e caricato il file sotto /rules con nome solaredge.rules (l'altro era solaredge.things)
Ora sotto items vedo 4 oggetti: i due che già vedevo prima e i due fattori di scala ma non il risultato delle operazioni matematiche
Ho creato 2 nuovi item per i fattori di scala e caricato il file sotto /rules con nome solaredge.rules (l'altro era solaredge.things)
Ora sotto items vedo 4 oggetti: i due che già vedevo prima e i due fattori di scala ma non il risultato delle operazioni matematiche
Fiat 132 anno 1978, 2500 cc Diesel
-
- ★★★★ Esperto
- Messaggi: 1690
- Iscritto il: 26/07/2021, 15:27
- Località: Veneto
- Veicolo: Renault Zoe R135
Re: Come leggere i dati direttamente dall'inverter SolarEdge?
Devi creare anche questi 4 items
SolaredgeACPower
SolaredgeACPowerMeter
SolaredgeACImport
SolaredgeACexport
Gli item non si creano con le regole si possono solo "usare". Devi sempre crearli precedentemente
In questi avrai i dati corretti. Quelli collegati al modbus sono "d'appoggio" per la lettura dei dati
I due items con il fattore di scala li hai nominati come sul file rules che ti ho postato?
SolaredgeACPower
SolaredgeACPowerMeter
SolaredgeACImport
SolaredgeACexport
Gli item non si creano con le regole si possono solo "usare". Devi sempre crearli precedentemente
In questi avrai i dati corretti. Quelli collegati al modbus sono "d'appoggio" per la lettura dei dati
I due items con il fattore di scala li hai nominati come sul file rules che ti ho postato?
Renault Zoe 135 Intens - Fotovoltaico Pannelli Rec Alpha 8,88 Kw Inverter SolarEdge con Ottimizzatori 6Kw e accumulo LG Chem Resu 10H - Climatizzazione casa Brofer HPU600
Re: Come leggere i dati direttamente dall'inverter SolarEdge?
Scusa ma gli ITEM che devono essere creati a cosa vanno LINKATI ?
Oppure li creo con il nome della variabile e basta
Oppure li creo con il nome della variabile e basta
Fiat 132 anno 1978, 2500 cc Diesel