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>";
?>