Casa Energetica
Off Grid Management - Gestire un impianto fotovoltaico ,Compilatore per impianti fotovoltaici

VISUALIZZA L'ALBUM

Pag: (4)   [1]   2   3   4    (Ultimo)


FinePagina

Bolle

Avatar
GigaWatt


AMMINISTRATORE
Msg:9362

Stato:



Inviato il: 29/05/2022 16:25:48

Nasce l' Off Grid Management ...vediamo dove ci porterà!
L'idea è quella di gestire al meglio un impianto fotovoltaico...specialmente se composto da un sistema di accumulo.
L'idea nasce da quiquoqua e di fatto è quella di abilitare/disabilitare elettrodomestici quando le condizioni sono ottimali, remotizzare i comandi, gestire le notifiche , etc etc...

Anche se molti inverter hanno un sistema di comunicazione seriale dove è possibile capire cosa sta accadendo non mi risulta ci sia un sistema integrato che gestisca al meglio la situazione.

Questo tools, che gira sotto windows, si poggia su sensori/apparati commerciali (shelly) a basso costo ed è orientato a tutti...specialmente a quelli che on hanno dimestichezza con l'elettronica/processori.

Per gestire l'impianto FV occorre scrivere un codice in un linguaggio creato ad hoc per questo progetto: l'ofg basic. Il tool ha anche un debugger per testare il codice.

Vabbè...piano piano cercherò di scrivere tutto.
Dimenticavo...il tool è gratuito e il progetto non ha scopo di lucro!

http://www.energialternativa.info/public/newforum/ForumEA/U/OffGridManagement.png



---------------
Un risultato se non è ripetibile non esiste (by qqcreafis).




 

Bolle

Avatar
GigaWatt


AMMINISTRATORE
Msg:9362

Stato:



Inviato il: 29/05/2022 22:44:58

Iniziamo con il dire con il tool , mediante due dispositivi:
1. shelly em (o uno shelly 1pm / shelly 1pm plus se si ha un inverter da 3kw)
2. shelly uni

permette la creazione e la visualizzazione (anche da cellulare) di un grafico dove sono presenti la tensione di alimentazione , la potenza assorbita e la tensione della batteria.

Questo è il grafico della giornata:

http://www.energialternativa.info/public/newforum/ForumEA/U/GraficoOffGridManagementGiornata.png



Questo è il grafico dell'ultima ora:

http://www.energialternativa.info/public/newforum/ForumEA/U/GraficoOffGridManagementUltimaOra.png



Questo è il grafico delle ultime due ore:

http://www.energialternativa.info/public/newforum/ForumEA/U/GraficoOffGridManagementUltimeDueOre.png



Questo è il grafico che va dalle 14:30 alle 16:00.

http://www.energialternativa.info/public/newforum/ForumEA/U/GraficoOffGridManagementUltimeDalle14_30Alle16_00.png




La tipologia di visualizzazione del grafico è a scelta dell'utente ed in alto sul titolo ci sono altre informazioni, come l'energia consumata, la tensione minima e massima della batteria, l'ultima potenza assorbita letta etc etc...

Avendo la possibilità di vedere il grafico , quindi la tensione delle batteri,e la potenza utilizzata dall'abitazione e tanto altro si ha la possibilità di attivare da remoto i dispositivi anche mediante delle smart plug.

Quindi la configurazione con i due shelly specificata in alto credo che sia la minimale.



Modificato da Bolle - 30/05/2022, 10:26:43


---------------
Un risultato se non è ripetibile non esiste (by qqcreafis).




 

Bolle

Avatar
GigaWatt


AMMINISTRATORE
Msg:9362

Stato:



Inviato il: 30/05/2022 14:29:33

Vediamo un esempio su come controllare un dispositivo.
Configuriamo lo Shelly 1PM plus che oltre l'on/off permette di sapere la tensione e la potenza utilizzata dall'apparato.

Questo è il codice che permette di accendere e spegnere la luce della cucina , visualizzando la tensione e la potenza assorbita dalla lampadina.
Il comando è DEVICE

DEVICE NumeroDevice Operazione

Il numero device è il numero del device configurato e l'Operazione possibile è : ON, OFF o PULSE.

Per ogni device si può utilizzare la seguente funzione:

DEVICE_VOLTAGE NumeroDevice - Torna la tensione
DEVICE_STATE NumeroDevice - Torna lo stato (ON=1, OFF=0)
DEVICE_WATT NumeroDevice - Torna i Watt assorbiti


'---------------------------
' TEST DEVICE 1         -
' Shelly 1PM Plus -
'---------------------------
PRAGMA NO_NUM_LINE
LUCE_CUCINA = 1


'Loop infinito del programma
WHILE TRUE

       
DEVICE LUCE_CUCINA OFF ' Spengo la luce della cucina
       
WAITS 5
        TENSIONE_PRESA=
DEVICE_VOLTAGE LUCE_CUCINA
        WATT_PRESA=
DEVICE_WATT LUCE_CUCINA
        STATO_PRESA=
DEVICE_STATE LUCE_CUCINA
       
LOG TIME & ") STATO=" & STATO_PRESA & " WATT=" & WATT_PRESA & " TENSIONE=" & TENSIONE_PRESA

       
DEVICE LUCE_CUCINA ON ' Accendo la luce della cucina
       
WAITS 5
        TENSIONE_PRESA=
DEVICE_VOLTAGE LUCE_CUCINA
        WATT_PRESA=
DEVICE_WATT LUCE_CUCINA
        STATO_PRESA=
DEVICE_STATE LUCE_CUCINA
       
LOG TIME & ") STATO=" & STATO_PRESA & " WATT=" & WATT_PRESA & " TENSIONE=" & TENSIONE_PRESA

LOOP
END






Questo è il log del programma:.
.....
14:20:25) STATO=0 WATT=0.000000 TENSIONE=222.800000
14:20:32) STATO=1 WATT=9.900000 TENSIONE=222.700000
14:20:39) STATO=0 WATT=0.000000 TENSIONE=222.700000
14:20:45) STATO=1 WATT=9.900000 TENSIONE=222.600000
14:20:52) STATO=0 WATT=0.000000 TENSIONE=223.200000
14:20:59) STATO=1 WATT=9.900000 TENSIONE=224.200000
14:21:06) STATO=0 WATT=0.000000 TENSIONE=224.200000
.....



Modificato da Bolle - 30/05/2022, 14:46:06


---------------
Un risultato se non è ripetibile non esiste (by qqcreafis).




 

Bolle

Avatar
GigaWatt


AMMINISTRATORE
Msg:9362

Stato:



Inviato il: 30/05/2022 16:31:06

Facciamo un altro esempio gestendo l'accensione e lo spegnimento delle luci del giardino. L'accensione verrà effettuata mezz'ora dopo il tramonto e lo spegnimento avverrà 40 minuti prima dell'alba...ma le luci si accenderanno solo se ci sarà energia sufficiente nelle batterie...cioè se la tensione sarà superiore ai 49V.



'-------------------------------------------
' GESTIONE LUCE GIARDINO         -
'-------------------------------------------
PRAGMA NO_NUM_LINE
LUCI_GIARDINO = 2
STATO_LUCE_GIARDINO=
DEVICE_STATE LUCI_GIARDINO
SECONDI_ANTICIPO_PRIMA_ALBA=40*60
' Anticipo lo spegnimento delle lampade mezz'ora prima dell'alba
SECONDI_RITARDO_DOPO_TRAMONTO=30*60
' Ritardo l'accensione delle lampade mezz'ora dopo il tramonto
TENSIONE_LIMITE_ACCENSIONE_LUCE_GIARDINO = 49
' Se la tensione delle batterie sta sotto il livello ...spengo le luci o non le accendo
'Loop infinito del programma
WHILE TRUE
        ORARIO=
TIME
        ADESSO=
TIME_TO_SECONDS(ORARIO) 'SECONDS
        LUCE_ON=
TIME_TO_SECONDS(SUNSET)+SECONDI_RITARDO_DOPO_TRAMONTO 'Calcolo i secondi della giornata in cui accendere la luce
        LUCE_OFF=
TIME_TO_SECONDS(SUNRISE)-SECONDI_ANTICIPO_PRIMA_ALBA'Calcolo i secondi della giornata dove spegnere la luce
       
IF ADESSOOR ADESSO >LUCE_ON THEN
              
CALL ACCENDI_LUCE_GIARDINO
       
ELSE
              
CALL SPEGNI_LUCE_GIARDINO
       
ENDIF
LOOP
END
'---------------------------------------------------------
'luce giardino ON
SUB ACCENDI_LUCE_GIARDINO
       
IF BATTERY_VOLTAGE <49 THEN
               '
La luce dovrebbe essere accesa ma se la tensione delle batterie 'e8 bassa tengo spente le lampade
              
CALL LUCE_GIARDINO(OFF)
       
ELSE
              
'La luce deve essere accesa
              
CALL LUCE_GIARDINO(ON)
       
ENDIF
SUBEND
'---------------------------------------------------------
'luce giardino OFF
SUB SPEGNI_LUCE_GIARDINO
       
CALL LUCE_GIARDINO(OFF) 'SPENGO LA LUCE
SUBEND
'---------------------------------------------------------
'Spengo o accendo fisicamente la luce
SUB LUCE_GIARDINO(STATO)
       
IF STATO_LUCE_GIARDINO AND NOT STATO THEN
              
DEVICE LUCI_GIARDINO STATO
               STATO_LUCE_GIARDINO=STATO
       
ENDIF
       
IF NOT STATO_LUCE_GIARDINO AND STATO THEN
              
DEVICE LUCI_GIARDINO STATO
               STATO_LUCE_GIARDINO=STATO
       
ENDIF
SUBEND





Modificato da Bolle - 30/05/2022, 16:40:24


---------------
Un risultato se non è ripetibile non esiste (by qqcreafis).




 

Bolle

Avatar
GigaWatt


AMMINISTRATORE
Msg:9362

Stato:



Inviato il: 30/05/2022 16:49:39

Facciamo un esempio pratico e vediamo come risolverlo con l'aiuto di questo SW.
La situazione è questa: quando parte la lavastoviglie (vedi grafico della potenza assorbita sempre fornito dal tool) occorre spegnere ogni altro elettrodomestico.

Come fare?
Dovrebbe bastare mettere uno shelly 1PM dentro la presa dell'elettrodomestico e appena si nota l'assorbimento ...si staccano gli elettrodomestici che assorbono di più ...oppure si stacca l'alimentazione all'avvio della presa (tanto riprende da dove era). Poi basta aspettare la fine del lavaggio...e permettere la ripartenza degli altri elettrodomestici.


Può funzionare???

Descriverò meglio la cosa...tanto pensiamoci su!


http://www.energialternativa.info/public/newforum/ForumEA/U/LavastovigliePotenza.png



Modificato da Bolle - 30/05/2022, 16:55:35


---------------
Un risultato se non è ripetibile non esiste (by qqcreafis).




 

emuland

Avatar
GigaWatt


Utente
Msg:4366

Stato:



Inviato il: 31/05/2022 06:12:40

CITAZIONE (Bolle, 30/05/2022 16:49:39 ) Discussione.php?216888&1#MSG4



stai facendo un controllo dei carichi.

stabiliti quelli prioritari, gli altri vanno sganciati se si sovrappongono a quelli prioritari. una volta che hai scelto le priorità, il software sgancia quello di priorità più bassa quando c'è un "superamento" potenza disponibile



---------------
Il posto dove ti propongono confronto, ma solo se gli dai ragionr...
e, dove la verità è la fuo...

 

Bolle

Avatar
GigaWatt


AMMINISTRATORE
Msg:9362

Stato:



Inviato il: 31/05/2022 15:08:19

CITAZIONE (emuland, 31/05/2022 06:12:40 ) Discussione.php?216888&1#MSG5

CITAZIONE (Bolle, 30/05/2022 16:49:39 ) Discussione.php?216888&1#MSG4


stai facendo un controllo dei carichi.

Non propriamente...mi spiego meglio. Montando uno selly 1PM sulla presa della lavastoviglie ci si accorge quando questa viene accesa. Non si aspetta che arrivi al carico pesante (accensione della resistenza). Inoltre si sa anche che il programma dura un'ora (come da grafico sopra con assorbimento variabile ma che è sempre lo stesso giorno dopo giorno) e si possono inibire alcuni apparecchi oppure se le condizioni (meteo) lo permettono si lasciano andare insieme.

Attualmente la situazione è questa: "Posso far partire la lavastoviglie?" ...e a priori non si sa mai...proprio per la mancanza di un coordinamento 'intelligente ' tra gli elettrodomestici, della situazione meteo, dell'energia accumulata e di quella prodotta.



---------------
Un risultato se non è ripetibile non esiste (by qqcreafis).




 

Bolle

Avatar
GigaWatt


AMMINISTRATORE
Msg:9362

Stato:



Inviato il: 31/05/2022 15:45:59

Riprendo il discorso degli interrupt che ci permetteranno di semplificare il codice e gestire in modo ottimale gli eventi.

Attualmente si hanno a disposizione :
1.Interrupt Passaggio di Mezzanotte - INTERRUPT_NEW_DAY
2.Interrupt Carico - INTERRUPT_LEVEL_WATT (Variabili LOW_WATT, TIME_CHG_STATE_WATT)
3.Interrupt Tensione Batteria - INTERRUPT_LEVEL_BATTERY (Variabili LOW_BATTERY, TIME_CHG_STATE_BAT)

Il secondo Interrupt è legato alla potenza assorbita dall'abitazione...se avessimo anche la possibilità di legare gli interrupt anche agli altri dispositivi ...sarebbe una ulteriore semplificazione. Ci penso su!

Questo è un esempio di interrupt sul passaggio di assorbimento si 2200Watt...e ci dice anche da quanti secondi è avvenuto il passaggio di assorbimento.


' INTERRUPT LIVELLO POTENZA -
'------------------------------------------
PRAGMA NO_NUM_LINE
CONSTANT MAX_POWER=2200

'Setto la funzione interruzione al passaggio di potenza
INTERRUPT_LEVEL_WATT MAX_POWER "FunLevelWatt"

'Loop infinito del programma
WHILE TRUE

        POTENZA_ASSORBITA=
WATT

       
IF LOW_WATT THEN
              
LOG "Assorbimento meno di :" & MAX_POWER & " da " & TIME_CHG_STATE_WATT & " secondi!"
       
ELSE
              
LOG "Assorbimento pi'f9 di :" & MAX_POWER & " da " & TIME_CHG_STATE_WATT & " secondi!"
       
ENDIF

LOOP
END
'-----------------------------
' Interrupt livello Potenza ---
'-----------------------------
SUB FunLevelWatt
       
IF LOW_WATT THEN
                   
LOG "Cambio Stato Assorbimento. Minore di :" & MAX_POWER
       
ELSE
       
LOG "Cambio Stato Assorbimento. Maggiore di :" & MAX_POWER
       
ENDIF
SUBEND




---------------
Un risultato se non è ripetibile non esiste (by qqcreafis).




 

Bolle

Avatar
GigaWatt


AMMINISTRATORE
Msg:9362

Stato:



Inviato il: 31/05/2022 23:25:40

Dopo averci pensato ho implementato l'interrupt anche per i dispositivi.
Questo è il codice che permette di indicizzare il device mediante una sintassi vettoriale. Faccio accendere e spegnere in modo casuale la lampadina e la fuzione legata all'interrupt mi segnala il cambio di potenza assorbita. Forse devo rivedere la sintassi dei comandi precedenti per omogenizzarla.


'-----------------------------------------------------------
' INTERRUPT LIVELLO POTENZA SU UN DEVICE -
'-----------------------------------------------------------
PRAGMA NO_NUM_LINE
CONSTANT LEVEL_POWER=5 ' Watt
CONSTANT DEVICE_LUCE=1

'Setto la funzione interruzione al passaggio di potenza
INTERRUPT_LEVEL_WATT_DEVICE DEVICE_LUCE LEVEL_POWER "FunLevelWattDevice"

'Loop infinito del programma
WHILE TRUE

       
IF LOW_WATT_DEVICE(DEVICE_LUCE) THEN
              
LOG "Assorbimento meno di :" & LEVEL_POWER & " da " & TIME_CHG_STATE_WATT_DEVICE(DEVICE_LUCE) & " secondi!"
       
ELSE
              
LOG "Assorbimento pi'f9 di :" & LEVEL_POWER & " da " &TIME_CHG_STATE_WATT_DEVICE(DEVICE_LUCE) & " secondi!"
       
ENDIF

        NUM_CASUALE=
Rnd MOD 30 ' Genero un numero casuale da 0 a 29

       
IF NUM_CASUALE=13 AND LUCE_ACCESA=FALSE THEN
               LUCE_ACCESA=
TRUE
              
LOG "Accendo la luce"
              
DEVICE DEVICE_LUCE ON
       
ENDIF

       
IF NUM_CASUALE=14 AND LUCE_ACCESA THEN
               LUCE_ACCESA=
FALSE
              
LOG "Spengo la luce"
              
DEVICE DEVICE_LUCE OFF
       
ENDIF
LOOP
END
'-----------------------------
' Interrupt livello Potenza ---
'-----------------------------
SUB FunLevelWattDevice

       
IF LOW_WATT_DEVICE(DEVICE_LUCE) THEN
              
LOG "Cambio Stato Assorbimento. Minore di :" & LEVEL_POWER
       
ELSE
              
LOG "Cambio Stato Assorbimento. Maggiore di :" & LEVEL_POWER
       
ENDIF

SUBEND





---------------
Un risultato se non è ripetibile non esiste (by qqcreafis).




 

emuland

Avatar
GigaWatt


Utente
Msg:4366

Stato:



Inviato il: 01/06/2022 06:24:18

CITAZIONE (Bolle, 31/05/2022 15:08:19 ) Discussione.php?216888&1#MSG6

CITAZIONE (emuland, 31/05/2022 06:12:40 ) Discussione.php?216888&1#MSG5
CITAZIONE (Bolle, 30/05/2022 16:49:39 ) Discussione.php?216888&1#MSG4


stai facendo un controllo dei carichi.

Non propriamente...mi spiego meglio. Montando uno selly 1PM sulla presa della lavastoviglie ci si accorge quando questa viene accesa. Non si aspetta che arrivi al carico pesante (accensione della resistenza). Inoltre si sa anche che il programma dura un'ora (come da grafico sopra con assorbimento variabile ma che è sempre lo stesso giorno dopo giorno) e si possono inibire alcuni apparecchi oppure se le condizioni (meteo) lo permettono si lasciano andare insieme.

Attualmente la situazione è questa: "Posso far partire la lavastoviglie?" ...e a priori non si sa mai...proprio per la mancanza di un coordinamento 'intelligente ' tra gli elettrodomestici, della situazione meteo, dell'energia accumulata e di quella prodotta.


è sempre un controllo carichi. ma non basato sul mero consumo istantaneo ma su una "previsione" basata sullo storico? (oppure nel caso della lavastoviglie ritieni il ciclo sempre di 1 ora)

lo integri con la produzione solare(o col meteo) e a quel punto calcoli se l'avvio dell'elettrodomestico XXX può causare problemi di carico.

è una buona soluzione. (sicuramente migliore del controllo carichi base)

ancora meglio (ma piu complesso) sarebbe fare uno "storico" su database del consumo tipico di un elettrodomestico.
con quello potresti "prevedere" la curva dei consumi (i cicli di alcuni elettrodomestici sono abbastanza "standardizzati")



---------------
Il posto dove ti propongono confronto, ma solo se gli dai ragionr...
e, dove la verità è la fuo...

 

Bolle

Avatar
GigaWatt


AMMINISTRATORE
Msg:9362

Stato:



Inviato il: 01/06/2022 11:55:25

CITAZIONE (emuland, 01/06/2022 06:24:18 ) Discussione.php?216888&1#MSG9

è sempre un controllo carichi. ma non basato sul mero consumo istantaneo ma su una "previsione" basata sullo storico?

All'interno della presa che porta l'alimentazione alla lavastoviglie ci si mette lo shelly 1PM che misura l'assorbimento. Quando qualcuno accende la lavastoviglie il, SW si accorge dell'accensione e si prepara sganciare alcune prese ad altri elettrodomestici ( ad esempio lo scaldabagno se è acceso, oppure la pompa del pozzo) ma non è detto che lo si faccia ( dipende dall'energia accumulata, dall'energia erogata , etc etc). La durata del lavaggio è indifferente...tanto lo si viene a sapere quanto dura perchè si azzera nuovamente l'assorbimento. Volendo si possono localizzare i tempi 'morti' e sfruttare al meglio i momenti in cui non parte la resistenza...ma non serve uno storico, bastano alcune righe di codice visto che la lavastoviglie fa sempre le stesse sequenze...almeno la mia che ho analizzato proprio con i grafici che ogni tanto pubblico. Quindi la risposta alla tua domanda è : è un sistema intelligente che ci permette di sfruttare al meglio l'energia generata! Sto cercando di mettere a disposizione gli strumenti...poi ognuno può fare la gestione che reputa più opportuna!

Ad esempio questa è la lavastoviglie che lavora insieme alla lavatrice ( la mia lavatrice preleva l'acqua calda dall'esterno)....e non ci sono problemi.

http://www.energialternativa.info/public/newforum/ForumEA/U/LavastoviglieConLavatriceInsieme.png





Modificato da Bolle - 01/06/2022, 12:06:02


---------------
Un risultato se non è ripetibile non esiste (by qqcreafis).




 

emuland

Avatar
GigaWatt


Utente
Msg:4366

Stato:



Inviato il: 01/06/2022 12:34:52

ok, fa circa quello che avevo inteso.

volendo , conoscendo il comportamento pregresso (se viene stoccato il consumo del "lavaggio" precendente, potresti addirittura impostare un comportamento predittivo dell'impianto e sganciare preventivamente.



---------------
Il posto dove ti propongono confronto, ma solo se gli dai ragionr...
e, dove la verità è la fuo...

 

Bolle

Avatar
GigaWatt


AMMINISTRATORE
Msg:9362

Stato:



Inviato il: 02/06/2022 12:09:02

Quanto assorbe questo micro pc che potrebbe far girare il SW dell'OFF Grid Management?

http://www.energialternativa.info/public/newforum/ForumEA/U/MicroPC.png


Controlliamolo con questo codice dove abbiamo aggiunto all'interprete il comando WRITE_FILE che scrive la stringa su un file


'-------------------------------------
' ASSORBIMENTO MICRO PC -
'-------------------------------------
PRAGMA NO_NUM_LINE

CONSTANT DEVICE_MICROPC=1

'Loop infinito del programma
WHILE TRUE
        ASSORBIMENTO=
DEVICE_WATT DEVICE_MICROPC

        STRINGA=
TIME & "|" & ASSORBIMENTO

       
LOG STRINGA

       
WRITE_FILE STRINGA
   
       
WAITS 5

LOOP
END




Questo è il file di log generato:
-TOP CODE-

-BOTTOM CODE-

E' saltato fuori che il micropc assorbe 7.5 watt se colleghiamo sia la tastiera che il monitor. Se scolleghiamo la tastiera l'assorbimento scende a 6.5 watt, se sgancio anche il monitor, l'assorbimento scende a 5.6 Watt.



---------------
Un risultato se non è ripetibile non esiste (by qqcreafis).




 

marioenergiaalt...
milliWatt


Utente
Msg:10

Stato:



Inviato il: 17/06/2022 17:55:24


CITAZIONE

Benisimo...preparo l'enteseguibile con gli indirizzi modificabili dall'utente. All'inizio ti passerò i php in privato...poi li pubblicherò.
OK?
Cmq continuiamo su questa altra discussione: http://www.energialternativa.info/Public/NewForum/Discussione.php?216888


ok...grazie.



Modificato da Bolle - 18/06/2022, 18:02:30
 

Bolle

Avatar
GigaWatt


AMMINISTRATORE
Msg:9362

Stato:



Inviato il: 18/06/2022 18:04:24

Mario,
tu hai anche uno shelly uni che misura la tensione delle batterie?



---------------
Un risultato se non è ripetibile non esiste (by qqcreafis).




 
 InizioPagina
 

Pag: (4)   [1]   2   3   4    (Ultimo)

Versione Completa!

Home page     TOP100-SOLAR    Home page forum