Hallo Forum,
danke für die Ideengebung.
Habe das WebFront bzgl. der Fußbodenheizung meinen Bedürfnissen anpassen können.
Anbei einige Screenshots und das Skript. Vielleicht kann jemand damit etwas anfangen.
WebFront-Standard:
Das Prinzip ist Folgendes:
Die erste Variable zwischen „-“ und „+“ ist für die manuelle Eingabe des Sollwertes. Dieser kann mit ‚+‘ und ‚-‘ verändert werden. Dann erscheint diese Variable in „Rot“ (wie bei „FBH_Wohnen“). Dieser manuelle Sollwert wird dann als Regelgröße verwendet.
Rechts daneben befindet sich der automatisch berechnete Sollwert (in Abhängigkeit von z.B. PV-Strom, etc.). Wird diese Variable angetippt, dann wird nach diesem Sollwert geregelt und er ist dann mit grün hinterlegt.
Die Variable „AN“ / „AUS“ gibt an, ob das Fußbodenventil gerade geöffnet ist oder nicht.
Die Variable rechts daneben gibt die momentane Isttemperatur an.
Diese Darstellung finde ich recht übersichtlich und man kann damit in die FBH relativ einfach manuell eingreifen.
In der Android-App funktioniert das schalten auch, ist jedoch etwas unübersichtlich dargestellt:
Möchte man trotzdem über das Smarthpone die FBH bedienen, kann man es übersichtlicher einfach über den WebBrowser:
Anbei das Skript (im Bsp. für die Variable Wohnen).
Es muss für jedes Zimmer ein Profil und ein Aktionsskript angelegt werden.
Dies ist zwar etwas müßig, habe ich jedoch relativ einfach mit einer Ordnerstruktur hinbekommen (–> Es muss nur die Raumbezeichnung im Skript geändert werden, der Rest ist Copy & Paste).
Skript:
<?
$Raum = 'Wohnen';
$dT = 1; // Temperaturerhöhung / -erniedriung bei der manuellen Vorgabe
$ID_Skript_FHB_Einschalten = 21259 /*[Geräte\Heizung\FBH_WP_EinAusschalten_V02a]*/;
$ID_Ordner_T_Soll_Auto = 10552 /*[Geräte\Heizung\FBH\T_Soll_Auto]*/;
$ID_Ordner_T_Auto_Boolean = 41729 /*[Geräte\Heizung\FBH\T_Auto_Boolean]*/;
$ID_Ordner_T_Man = 18473 /*[Geräte\Heizung\FBH\T_Man]*/;
$ID_Ordner_T_IST = 28647 /*[Geräte\Heizung\FBH\ID_T_IST]*/;
$ID_Ordner_FBH = 35888 /*[Geräte\Heizung\FBH\ID_FBH]*/;
$ID_T_Soll_Auto = @IPS_GetVariableIDByName('T_Soll_Auto_'.$Raum, $ID_Ordner_T_Soll_Auto);
$ID_T_Auto_Boolean = @IPS_GetVariableIDByName('T_Auto_Boolean_'.$Raum, $ID_Ordner_T_Auto_Boolean);
$ID_T_Man = @IPS_GetVariableIDByName('T_Man_'.$Raum, $ID_Ordner_T_Man);
$ID = @IPS_GetVariableIDByName('ID_Pin_'.$Raum, $ID_Ordner_FBH);
$ID_FBH = GetValue($ID);
$ID = @IPS_GetVariableIDByName('ID_T_Ist_'.$Raum, $ID_Ordner_T_IST);
$ID_T_IST = GetValue($ID);
$ProfileName = 'Profile_V03a_'.$Raum;
//echo 'ID_T_IST ' , $ID_T_IST , "
", "
";
if (@IPS_GetVariableProfile($ProfileName) == false && IPS_CreateVariableProfile($ProfileName, 1))
{ // Variablen-Profil anlegen, wenn es noch nicht besteht
#Manuel
IPS_SetVariableProfileAssociation($ProfileName, 0, '-', '', -1);
IPS_SetVariableProfileAssociation($ProfileName, 1, 0, '', -1);
IPS_SetVariableProfileAssociation($ProfileName, 2, '+', '', -1);
#T_Soll_Auto
IPS_SetVariableProfileAssociation($ProfileName, 3, 0, '', -1);
#FBH
IPS_SetVariableProfileAssociation($ProfileName, 4, 0, '', -1);
#T_Ist
IPS_SetVariableProfileAssociation($ProfileName, 5, 0, '', -1);
}
else {}
$T_Soll_Auto = GetValue($ID_T_Soll_Auto);
$T_IST = GetValue($ID_T_IST);
$FBH = GetValue($ID_FBH);
$T_Man = GetValue($ID_T_Man);
$T_Auto_Boolean = GetValue($ID_T_Auto_Boolean);
//$T_Soll = GetValue($ID_T_Soll);
if ($FBH == true) // FBH ist aktiv
{
$FBH = ' AN';
$Farbe_FBH = 0x00FF00;
}
else // FBH ist inaktiv
{
$FBH = 'AUS';
$Farbe_FBH = 0xFF0000;
}
if ($T_Auto_Boolean == true) // T_Soll_Auto ist aktiv
{
$Farbe_T_Soll_Auto = 0x00FF00;
$Farbe_T_Man = -1;
}
else // T_Man ist aktiv
{
$Farbe_T_Soll_Auto = -1;
$Farbe_T_Man = 0xFF0000;
}
if ($IPS_SENDER === 'WebFront') // wenn ein Button im WF gedrückt wurde
{
//echo 'IPS_VALUE ' , $IPS_VALUE , "
", "
";
Switch ($IPS_VALUE){
Case 0: // '-'
$T_Man = $T_Man - $dT;
$Farbe_T_Soll_Auto = -1;
$Farbe_T_Man = 0xFF0000;
SetValue($ID_T_Man, $T_Man);
//SetValue($ID_T_Soll, $T_Man);
SetValue($ID_T_Auto_Boolean, false);
Break;
Case 1: // T_Man
$T_Man = $T_Man;
$Farbe_T_Soll_Auto = -1;
$Farbe_T_Man = 0xFF0000;
SetValue($ID_T_Man, $T_Man);
//SetValue($ID_T_Soll, $T_Man);
SetValue($ID_T_Auto_Boolean, false);
Break;
Case 2: // '+'
$T_Man = $T_Man + $dT;
$Farbe_T_Soll_Auto = -1;
$Farbe_T_Man = 0xFF0000;
SetValue($ID_T_Man, $T_Man);
//SetValue($ID_T_Soll, $T_Man);
SetValue($ID_T_Auto_Boolean, false);
Break;
Case 3: // T_Soll_Auto
$Farbe_T_Soll_Auto = 0x00FF00;
$Farbe_T_Man = -1;
//SetValue($ID_T_Soll, $Farbe_T_Soll_Auto);
SetValue($ID_T_Auto_Boolean, true);
Break;
default:
//SetValue($IPS_VARIABLE, $IPS_VALUE);
Break;
}
IPS_RunScript($ID_Skript_FHB_Einschalten);
}
// Variablen formatieren auf eine Nachkommastelle
$T_IST = number_format($T_IST, 1, ',', '.');
$T_Soll_Auto = number_format($T_Soll_Auto, 1, ',', '.');
#Manuel
IPS_SetVariableProfileAssociation($ProfileName, 0, '-', '', -1);
IPS_SetVariableProfileAssociation($ProfileName, 1, $T_Man, '',$Farbe_T_Man);
IPS_SetVariableProfileAssociation($ProfileName, 2, '+', '', -1);
#T_Soll_Auto
IPS_SetVariableProfileAssociation($ProfileName, 3, $T_Soll_Auto, '', $Farbe_T_Soll_Auto);
#FBH
IPS_SetVariableProfileAssociation($ProfileName, 4, $FBH, '', $Farbe_FBH);
#T_Ist
IPS_SetVariableProfileAssociation($ProfileName, 5, $T_IST, '', -1);
IPS_SetHidden($IPS_SELF, true); # Skirpt im WF verstecken
?>
Vielen Dank für die Unterstützung, vor allem an Thomas und den „Erfinder“ vom „Entenzähler“.
Grüße
Wickie