ANTINTRUSIONE - SIMULAZIONE DI PRESENZA - ANTINTRUSIONE - Domotica KNX MyHOME Modbus e soluzioni IOT


ANTINTRUSIONE - SIMULAZIONE DI PRESENZA

Questo tutorial illustra come creare uno script in IKON SERVER per mettere in esecuzione una sequenza di scenari, uno per ogni giorni, al fine di realizzare una semplice simulazione di presenza.

 

CREAZIONE DELLO SCRIPT

Il primo passo consiste nel creare uno SCRIPT, procedendo come segue:

A questo punto, cancella il contenuto dello SCRIPT ed inserisci il codice seguente:

/*
Questo script effettua una simulazione di presenza, eseguendo a rotazione una serie di scenari che devono essere preventivamente
creati ed associati allo script runner.

Sono necessari i seguenti oggetti in INGRESSO:
- Abilitazione -> Identificativo "enable", valore "NEVER"
                  Abilita o meno la simulazione di presenza

- Orologio     -> Identificativo "clock", valore "$VAL"
                  Deve essere pianificato nei giorni e orari in cui si desidera eseguire la simulazione

- Contatore    -> Identificativo "counter", valore "NEVER"
                  Memorizza l'indice dell'ultimo scenario eseguito

In USCITA devono essere associati tutti gli scenari che, a rotazione, vengono eseguiti ogni volta che scatta una pianificazione
sull'oggetto OROLOGIO.

*/

include_library("surrounding");

//Controllo presenza ingressi obbligatori
if(!is_object($enable))   error("Manca abilitazione (enable)",true);
if(!is_object($clock))    error("Manca orologio (clock)",true);
if(!is_object($counter))  error("Manca contatore (counter)",true);

//Se non abilitato, interrompe immediatamente
if(intval($enable->value)!=1){
   error("Simulazione di presenza non abilitata",true);
}

//Se viene ricevuto un valore diverso da 1, esce
if(intval(input())!=1){
   error("Ricevuto valore " . input() . ", uscita",true);
}

//Identifica il numero di scenari associati; se vuoto, restituisce un errore
$scenes_num = count($me->childRelations);
if($scenes_num == 0){
   error("Nessuno scenario associato",true);
}

//Identifica indice dello scenario da eseguire (riportandolo a 1 a fine lista)
$counter_num = intval($counter->value)+1;
if($counter_num > $scenes_num){
   $counter_num = 1;
}
$counter->updateToDb("value",$counter_num);
debug("Indice scenario da eseguire su un totale di $scenes_num: $counter_num",true);

//Esegue lo scenario 
$scene_obj = $me->childRelations[$counter_num-1]->child;
$scene_obj->run();
debug("Eseguito lo scenario " . $scene_obj->name . " (indice $counter_num)",true);

//Uscita
output("");




Salva mediante l'apposito pulsante SALVA.

 

CREAZIONE DELLO SCRIPT RUNNER

A questo punto crea uno SCRIPT RUNNER nel seguente modo:

A questo punto inserisci nella sezione "DATI GENERALI" un nome identificativo per il nuovo oggetto, e seleziona lo SCRIPT creato in precedenza nell'omonimo menu a tendina; lascia inalterate le altre opzioni della sezione "ASPETTO".

Nella sezione "INGRESSI" crea 3 nuovi oggetti tramite il pulsante AGGIUNGI; è importante rispettare alla lettera gli "identificativi" riportati sotto, tutti con caratteri minuscoli, altrimenti il codice dello script non funziona correttamente...

Specifica "$VAL" come valore per l'oggetto orologio, "NEVER" per gli altri.

Accedi inoltre alle schede degli oggetti "abilitazione" e "contatore", identifica la sezione "CONNESSIONI IN USCITA" e seleziona "MAI" come "condizione":

 

 

Infine, tornando alla scheda del runner, trascina nelle USCITE gli scenari che, a rotazione, dovranno essere eseguiti dalla simulazione di presenza (si consiglia di creare scenari di una certa durata, tenendo conto anche della pianificazione assegnata all'orologio).

 

Per provare la simulazione di presenza, ti consigliamo di mettere tutti gli oggetti in un ambiente provvisorio, e agire sugli oggetti "abilitazione" e "orologio" per simulare l'esecuzione e l'abilitazione del sistema; il contatore deve incrementarsi automaticamente, e gli scenari venire eseguiti a rotazione.