FHT'S auf Auto zurücksetzen

… und gleich noch eins.

Meine FHT laufen alle im Automode, das hat den Vorteil das bei PC Ausfall oder FS20 Problemen es keine zu kalte oder zu warme Bude gibt.

Leider werden bei mir manchmal FHT’S von Hand auf „manual“ gestellt und dann vergessen. Klar, mann sollte nur die Temperaratur am Stellrad ändern wenns mal nicht passt… aber, na Ihr wisst schon.

Diese Skript findet alle FHT die länger als 24 h nicht auf „Automatik“ standen und schaltet sie auf „Auto“.

Das Skript per Timer einmal pro Stunde aufrufen. Achtung, nicht öfter, die Rückmeldung „Mode“ kommt erst nach einer Weile, wenn das Skript zu oft aufgerufen wird, werden evtl. doppelte Befehle gesendet da noch keine Rückmeldung vorhanden ist.

Wie üblich ist keine spezielle Anpassung an die Installation nötig.

<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File     : FHT_SET_AUTO.ips.php
Trigger  : Timer
Interval : every hour
Purpose  : Switch FHt'S to auto mode that were more than 24 hours in manull mode
Version  : 1
*/

// loop through all IPS instances

$INSTANCE_LIST=(IPS_GetInstanceIDs());
// find FHZ and check if enough free buffers
foreach($INSTANCE_LIST as $IPS_INSTANCE)
   {
   // Get the Module Instance
   $MODULE_INSTANCE=IPS_GetModuleInstance($IPS_INSTANCE);
   // check if this is the FHZ
   if ($MODULE_INSTANCE['moduleguid'] =='{57040540-4432-4220-8D2D-4676B57E223D}')
      {
      // check if at least 5 buffers free , leave some buffers for other things
      $FREE_BUFFERS = FHZ_GetFreeFHTBuffer($MODULE_INSTANCE['instanceid']) ;
      if ($FREE_BUFFERS > 5)
         {
         // find the FHT's
         $CONNECTED_INSTANCES=IPS_GetModuleInstanceConnections($IPS_INSTANCE);
         foreach($CONNECTED_INSTANCES as $IPS_INSTANCE)
            {
            // check if we didnt fill to many buffers leave 2 for other things
            if  ($FREE_BUFFERS > 2)
               {
               $MODULE_INSTANCE=IPS_GetModuleInstance($IPS_INSTANCE);
               if ($MODULE_INSTANCE['moduleguid'] =='{A89F8DFA-A439-4BF1-B7CB-43D047208DDD}')
                  {
                  $INSTANCE_DATA=IPS_GetInstanceSettings ($MODULE_INSTANCE['instanceid']);
                  // get name of variable that tracks FHT Mode
                  $MODE_VARIABLE_NAME = preg_match( '#TargetModeVar.*"(.*)"#', $INSTANCE_DATA, $m) ? $m[1] : '';
                  // Get the current mode setting
                  $FHT_CURRENT_MODE =GetValueInteger($MODE_VARIABLE_NAME);
                  // check if not auto (0)
                  if ( $FHT_CURRENT_MODE <> 0 )
                     {
                     // check when mode was last changed
                     $LAST_MODE_UPDATE =IPS_GetUpdateTime($MODE_VARIABLE_NAME);
                     // if more than one day ago
                     if (TIME() - $LAST_MODE_UPDATE  > 86400)
                        {
                        // set it to Automatic (0)
                        FHT_SetMode ($MODULE_INSTANCE['instanceid'],0);
                        IPS_LogMessage ('Switched FHT to Auto',$MODE_VARIABLE_NAME);
                        // on buffer eaten for this
                        $FREE_BUFFERS =$FREE_BUFFERS -1;
                     }
                  }
               }
            }
         }
      }
   }
}
?>

so, damit ist genug mit den „finde und mach was mit den FHT“ Skripten, für andere Zwecke kann man diese ja leicht abändern, die loops sind ja immer fast gleich.