Sistema per la gestione di serre automatizzate, sviluppato in C++ con architettura orientata agli oggetti. Il sistema supporta diversi tipi di impianti con comportamenti personalizzati e sistema di irrigazione gestita da timer.
- Gestione Multi-Impianto: Supporta 5 tipologie diverse di impianti
- Sistema Timer: Timer con comportamenti specifici per ogni tipo di impianto
- Simulazione Temporale: Sistema di orario interno con aggiornamento automatico degli stati
- Monitoraggio Consumi: Tracciamento del consumo idrico per ogni impianto
- Interfaccia CLI: Interfaccia a linea di comando per la gestione di tutto il sistema
- Logging Sistema: Sistema di logging integrato con livelli di errore
- Logging su file .txt: Tutti gli eventi vengono salvati in un file .txt
- Aggiunta impianti con comando add: È possibile aggiungere nuovi impianti tramite comando "add"
- Rimozione impianti da riga di comando: È possibile rimuovere gli impianti tramite comando "rm -i"
Classe principale che gestisce l'intera serra:
- Gestione collezione di impianti
- Sistema di orario interno
- Aggiornamento automatico stati
- Interfacce per controllo e monitoraggio
Definisce l'interfaccia comune per tutti gli impianti:
- Gestione stato (acceso/spento)
- Tracking consumo idrico
- Sistema timer base
- Logging attività
Parser per l'elaborazione dei comandi:
- Tokenizzazione comando
- Validazione parametri
- Suddivisione compiti ai metodi appropriati
- Gestione degli errori
Classe per la gestione del tempo:
- Operatori di confronto
- Calcoli temporali
- Validazione formato HH:MM
- Gestione attraversamento mezzanotte
- Consumo: 0.5 litri/minuto
- Modalità: Automatico
- Durata Irrigazione: 2 ore e 30 minuti
- Comportamento: Si attiva all'orario programmato e si spegne automaticamente
- Consumo: 0.5 litri/minuto
- Modalità: Automatico
- Durata Irrigazione: 2 ore e 30 minuti
- Comportamento: Si attiva all'orario programmato e si spegne automaticamente
- Consumo: 0.5 litri/minuto
- Modalità: Automatico
- Durata Irrigazione: 2 ore e 30 minuti
- Comportamento: Si attiva all'orario programmato e si spegne automaticamente
- Consumo: 0.3 litri/minuto
- Modalità: Timer con intervallo personalizzabile
- Comportamento:
- Supporta timer con orario inizio/fine specifici
- Modalità "infinita" (fino a fine giornata)
- Consumo: 0.4 litri/minuto
- Modalità: Adattiva
- Comportamento:
- Temperatura Target: 25°C - 28°C
- Attivazione: Automatica quando temperatura < 25°C
- Disattivazione: Automatica quando temperatura ≥ 28°C
add tipoImpianto nomeImpianto
# Esempio: add Tropicale Palmarm -i nomeImpianto
# Esempio: rm -i Palmaset time HH:MM # Imposta orario di sistema
# Esempio: set time 14:30reset time # Reset orario a 00:00
reset timers # Rimuove tutti i timer attivi
reset all # Reset completo sistemaset [nome_impianto] on # Accensione manuale immediata
set [nome_impianto] off # Spegnimento manuale
# Esempi:
set Tropicale on
set Desertico offTimer Singolo (Tropicale, Alpino, Carnivoro):
set [nome_impianto] HH:MM # Timer con durata fissa (2h 30min)
# Esempi:
set Tropicale 08:00 # Si attiva alle 08:00, si spegne alle 10:30
set Carnivoro 18:30 # Si attiva alle 18:30, si spegne alle 21:00Timer Intervallo (Solo Desertico):
set [nome_impianto] HH:MM HH:MM # Timer con inizio/fine personalizzati
# Esempi:
set Desertico 06:00 07:30 # Attivo dalle 06:00 alle 07:30
set Desertico 20:00 23:00 # Attivo dalle 20:00 alle 23:00rm [nome_impianto] # Rimuove timer e spegne se attivo
# Esempi:
rm Tropicale
rm Deserticoshow # Panoramica tutti gli impianti
show [nome_impianto] # Dettagli impianto specifico
# Esempi:
show # Tabella riassuntiva
show Mediterraneo # Dettagli completi inclusa temperatura[14:30] Stato attuale degli impianti
--------------------------------------------------------
ID Nome Tipo Stato Consumo (litri)
--------------------------------------------------------
1 Tropicale Tropicale Spento 12.50
2 Desertico Desertico Acceso 8.30
3 Carnivoro Carnivoro Spento 0.00
4 Alpino Alpino Acceso 15.75
5 Mediterraneo Mediterraneo Acceso 22.40
--------------------------------------------------------
Dettagli impianto:
ID: 5
Nome: Mediterraneo
Stato: Acceso
Ultima attivazione: [13:45]
Consumo totale: 22.40 litri
- Livello 0: Informazioni normali (cout)
- Livello 1: Errori e avvisi (cerr)
- Timestamp: Ogni messaggio include orario di sistema
- Validazione formato orari (HH:MM)
- Validazione formato comandi
- Controllo esistenza impianti
- Prevenzione impostazione orari retroattivi
Il sistema simula il passaggio del tempo minuto per minuto:
- Aggiornamento automatico stati impianti
- Calcolo consumi in tempo reale
- Gestione attivazioni/disattivazioni programmate
- Simulazione termica per impianto Mediterraneo
- Brunello Andrea @Andrea9698065
- Dalla Santa Manuel @mameledss
- Gitaric Ivan @IvanGitaric