Forum eedomus
https://forum.eedomus.com/

Floor heating script
https://forum.eedomus.com/viewtopic.php?f=49&t=4747
Page 1 sur 1
Auteur:  @VincentRecipon [ 03 Nov 2016 00:37 ]
Sujet du message:  Floor heating script

Hi I've written a small php script for our beloved eedomus in order to control my floor heating system.

Php script isn't so complicated to write, particularly when you have such first draft. It's also easier to read that multiple rules working in parallel.

I've made a post about how to use this script in this post : http://www.vrdigitalworld.com/smarthome/domotiser-son-chauffage-au-sol?lang=en
Don't hesitate to have some question here or at the end of the post.

Finally here is the script you can also donwload from the post

Code : Tout sélectionner
<?
//********************************************************
//* Gestion consigne température RDC                 V02 *
//******************************** V. Recipon 2016-08-06 *
//********************************************************
$id_day_phase = getArg('dayphase');
$id_consigne = getArg('consigne');
$id_thermostat = getArg('thermostat');
$id_chauffage = getArg('chauffage');
$id_activite = getArg('activite');

$day_phase = getValue($id_day_phase);
$consigne = getValue($id_consigne);
$thermostat = getValue($id_thermostat);
$chauffage = getValue($id_chauffage);
$activite = getValue($id_activite);

// Sortie des valeurs pour debug
echo "Statut Pièce :<br>";
echo "  - Phase du jour : ".$day_phase['value']."<br>";
echo "  - Consigne : ".$consigne['value']."<br>";
echo "  - Thermostat : ".$thermostat['value']."<br>";
echo "  - Mode de Chauffage : ".$chauffage['value']."<br>";
echo "  - Détection d'activité dans la pièce : ".$activite['value']."<br>";


//--------------------------------------------------------
//----- Définition des valeurs pour les arguments    -----
//--------------------------------------------------------

// Valeurs phase du jour
$val_pyjama=0;
$val_reveil=10;
$val_presence=20;
$val_absence=40;
$val_retour=45;
$val_soiree=50;
$val_nuit=60;
$val_abs_prolongee=70;

//--------------------------------------------------------
//----- Gestion du chauffage                         -----
//--------------------------------------------------------
$settemp = $consigne['value'];

echo "Analyse besoin chauffage :<br>";

if ($chauffage['value'] == 0)
{
   echo "  > Chauffage éteint<br>";

   $settemp = 7;
}
else if ($chauffage['value'] == 200)
{
   echo "  > Chauffage marche forcée<br>";

   $settemp = 30;
}
else
{
   echo "|-> Chauffage allumé.<br>";
   
   if ($day_phase['value'] == $val_abs_prolongee)
   {
      echo "|---> Absence prolongée ou porte ouverte <br>";
      $settemp = 12;
   }
   else if ($day_phase['value'] == $val_nuit)
   {
      echo "|-----> Nuit <br>";
      $settemp = $consigne['value']-1;
   }
   else if ($day_phase['value'] == $val_absence)
   {
      echo "|-----> Absence<br>";
      $settemp = $consigne['value']-0.5;
   }
   else if ($day_phase['value'] == $val_reveil OR $day_phase['value'] == $val_retour)
   {
      echo "|-----> Réveil / retour <br>";
      $settemp = $consigne['value'];

   }
   else
   {
      echo "|-----> présence / soirée <br>";
      if ($activite['value'] == 0)
      {
         echo "|-------> Pas d'activité dans la pièce <br>";
         $settemp = $consigne['value']-0.25;
      }
      else
      {
         echo "|-------> Activité dans la pièce <br>";
         $settemp = $consigne['value'];
      }
   }
}

echo "<br>";
echo "Nouvelles consignes :<br>";

// On met à jour les valeurs des périphériques
// seulement si il y a eu changement, cela évite les interactions avec d'autres actions éventuelles sur les même périphériques (des macros en cours par exemple)

if ($settemp != $thermostat['value'])
{
   setValue($id_thermostat, $settemp);
   echo "  - Thermostat : ".$settemp." (Changement)<br>";      
}
else
   echo "  - Thermostat : ".$settemp." (Pas de changement)<br>";   
   
?>
Page 1 sur 1 Le fuseau horaire est UTC+1 heure