LOGICHE - AGGIORNAMENTO OGGETTI SENZA EVENTI - LOGICHE - Domotica KNX MyHOME Modbus e soluzioni IOT


LOGICHE - AGGIORNAMENTO OGGETTI SENZA EVENTI

IKON SERVER permette di comandare lo stato di oggetti al variare di stato di altri oggetti attraverso gli EVENTI ATTIVI (vv. manuale di installazione), tuttavia questo meccanismo determina l'esecuzione in cascata di eventuali eventi attivi a sua volta associati agli oggetti che vengono comandati. Se tra questi ultimi è presente anche l'oggetto che inizialmente è cambiato di stato, si genera un loop.

Lo script presentato in questo tutorial permette di evitare questa situazione, aggiornando solo lo stato nel DB con il valore ricevuto in ingresso, senza determinare l'esecuzione di eventuali eventi associati.

 

CREAZIONE DELLO SCRIPT

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

A questo punto, cancellare il contenuto dello SCRIPT ed inserire il codice seguente:

//Scanning child relations
foreach($me->childRelations as $childRelation)
{
    $child = $childRelation->child;
    $child->updateToDb("value",input());
    debug("Oggetto " . $child->name . " aggiornato allo stato " . input(),true);
}
output('');


Salvare mediante l'apposito pulsante SALVA.

 

CREAZIONE DELLO SCRIPT RUNNER

Per ogni oggetto che, con il cambio di stato, deve aggiornare uno o più altro oggetti, è necessario configurare un nuovo SCRIPT RUNNER nel seguente modo:

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 l'oggetto il cui cambio di stato determina l'aggiornamento degli oggetti, avendo cura di specificare "$VAL" come valore; e nella sezione "USCITE" viceversa trascinare uno o più oggetti che si desidera aggiornare con lo stato dell'ingresso, anche in questo caso specificando "$VAL" come valore. In questo caso, gli identificativi non sono utilizzati.

A questo punto, è possibile simulare il funzionamento dello script nella parte DEBUG: cambiare il valore dell'oggetto di ingresso e verificare che, nella sezione "debug", sia riportato l'aggiornamento di stato di tutte le uscite.