IKON SERVER mette a disposizione gli oggetti di tipo CONDIZIONE per effettuare confronti di valori tra oggetti, con i quali è possibile in modo semplice e veloce configurare una o più soglie tra temperatura e setpoint, laddove la sonda di temperatura KNX non disponga di una funzione "termostato" integrata.
Le CONDIZIONI tuttavia non si prestano alla gestione automatica della stagione, qualora si voglia operare sempre sullo stesso oggetto "valvola" (o similare); in questo caso infatti si vuole che la valvola si apra quando il setpoint è superiore alla temperatura in inverno, il viceversa in estate, e sarebbe necessario costruire una catena di più CONDIZIONI e LOGICHE.
Questo tutorial illustra come gestire più semplicemente la problematica con uno SCRIPT, in grado di effettuare in autonomia tutti i controlli, ivi compresa l'applicazione di una isteresi per evitare il comando ravvicinato della valvola quando i valori di temperatura e setpoint sono vicini.
Il primo passo consiste nel creare uno SCRIPT, procedendo come segue:
Accedere alla sezione di AMMINISTRAZIONE di IKON SERVER
Selezionare la voce "FUNZIONI AVANZATE", quindi "SCRIPTING" ed infine "SCRIPTS"
Premere il pulsante "NUOVO" ed assegnare un nome univoco al nuovo script (ad esempio "condizione-stagionale")
Accedere alla scheda del nuovo SCRIPT mediante l'apposito pulsante di MODIFICA (verde)
A questo punto, cancellare il contenuto dello SCRIPT ed inserire il codice seguente:
/*
Questo script esegue un confronto tra un oggetto "temperatura" ed un oggetto "setpoint", tenendo conto di un oggetto "stagione"
per determinare la logica in base alla quale restituire il valore 1 oppure 0:
- Se "stagione" è 1 (inverno), viene restituito "1" quanto il setpoint è superiore alla temperatura
- Se "stagione" è 0 (estate), viene restituito "1" quando il setpoint è inferiore alla temperatura
In questo modo, collegando in uscita allo script il comando di una elettrovalvola (o analogo comando), si ottiene una funzione
riscaldamento ON/OFF nella stagione invernale, condizionamento ON/OFF nella stagione estiva.
La valutazione della condizione è soggetta ad una isteresi di 0.5 gradi.
*/
include_library("surrounding");
$temperatura = $me->getParentByIdentifier("temperatura");
$setpoint = $me->getParentByIdentifier("setpoint");
$stagione = $me->getParentByIdentifier("stagione");
$valvola = $me->getChildByIdentifier("valvola");
$isteresi = 0.5;
if(intval($stagione->value)==1) //Inverno
{
$condizione = floatval($setpoint->value) > (floatval($temperatura->value) + $isteresi);
debug("Modo INVERNO - Condizione " .
($condizione ? "verificata" : "non verificata") .
" essendo la temperatura " . $temperatura->value .
" e il setpoint " . $setpoint->value);
} else { //Estate
$condizione = floatval($setpoint->value) < (floatval($temperatura->value) - $isteresi);
debug("Modo ESTATE - Condizione " .
($condizione ? "verificata" : "non verificata") .
" essendo la temperatura " . $temperatura->value .
" e il setpoint " . $setpoint->value);
}
if($condizione && intval($valvola->value)==0){
$valvola->set(1);
debug("Valvola impostata a 1");
}
elseif(!$condizione && intval($valvola->value)==1){
$valvola->set(0);
debug("Valvola impostata a 0");
}
else {
debug("Valvola non comandata (valore attuale: " . $valvola->value . ")");
}
output("");
|
Personalizzare eventualmente il valore dell'isteresi (nell'esempio impostata a 0.5 gradi) e salvare mediante l'apposito pulsante SALVA.
Per ogni soglia stagionale che si desidera creare è necessario configurare un nuovo SCRIPT RUNNER nel seguente modo:
Selezionare la voce "RUNNERS" nella sezione "SCRIPTING" del menu di amministrazione
Creare un nuovo oggetto mediante il pulsante "AGGIUNGI" della TOOLBAR
Accedere alla scheda del nuovo oggetto tramite il pulsante "MODIFICA" della TOOLBAR
A questo punto inserire nella sezione "DATI GENERALI" un nome identificativo per il nuovo oggetto, e selezionare lo SCRIPT creato in precedenza nell'omonimo menu a tendina; lasciare inalterate le altre opzioni della sezione "ASPETTO".
Nella sezione "INGRESSI" trascinare i seguenti oggetti (che devono essere già presenti nel progetto, eventualmente sotto forma di VARIABILI se non disponibili direttamente nel progetto KNX):
Temperatura
Setpoint
Stagione (convenzione: 0=estate, 1=inverno)
Per ognuno specificare "$VAL" come VALORE ed indicare rispettivamente "temperatura", "setpoint" e "stagione" come IDENTIFICATIVO (rispettando maiuscole/minuscole), come esemplificato nella figura seguente:
Nella sezione USCITE tracinare viceversa l'oggetto da comandare, specificando anche in questo caso "$VAL" come VALORE e "valvola" come IDENTIFICATIVO. Al termine, premere il pulsante AGGIORNA.
A questo punto, è possibile simulare il funzionamento della condizione nella parte DEBUG: cambiare i valori di temperatura, setpoint e stagione e verificare che la valvola venga impostata correttamente; lo SCRIPT mostra nella finestra DEBUG una serie di informazioni che illustrano la logica eseguita.
Se il funzionamento è corretto, non sono necessarie ulteriori operazioni; configurare altri RUNNER se la medesima funzione deve essere duplicata su più temperature e relativi setpoint, associando gli oggetti relativi e configurandoli nello stesso modo.