Mehrere Variablen in einer Zeile ohne Benennung

Hallo Community,

ich möchte im WebFront innerhalb einer Zeile mehrere Variable nebeneinander darstellen, etwa so:

Name T_Ist T_Soll FBH
Zimmer1 20 21 AN
Zimmer2 20 19 AUS

Eine umständliche Möglichkeit wäre, mit mehreren vertikalen Split-Planes zu arbeiten.
Nachteile sind jedoch das parallele Scrollen nicht möglich ist und dass die Namen der Variablen im WF erscheinen. Damit wird es dann zu unübersichtlich.

Habt Ihr Vorschläge / Ideen dazu?

Vielen Dank
Grüße
Wickie

Eine Tabelle in einer HTML-Box?

Sent from my iPhone using Tapatalk

Integervariable mit 3 Assoziationen, den „Text“ kannst Du beschreiben. Optional würdest Du über ein Actionsscript die 3 Variablen sogar schaltbar, änderbar hinbekommen. Die Integervariable bildet dann die 3 Variablen aber nur indirekt ab, es ist also ein Script zum schreiben dieser notwendig.

Hallo Thomas,
wenn das so klappen könnte, wäre es super. Bräuchte dabei jedoch Hilfe, weil ich mich bisher noch nicht mit diesen Funktionen beschäftigt habe.
Werde mich ab Montag damit rumschlagen und mich dann regelmäßig melden :o

HTML-Box wäre eine Alternative, habe mich jedoch damit auch nicht beschäftigt…

Vielen Dank für die Tipps schon einmal.

Grüße
Wickie

…klingt eher nach Float und Bool in einer Zeile.
Da würde die Variante von Thomas ausscheiden und eher die vorgeschlagene von kronos passen, wenn es nur um die Anzeige geht.
Also eine HTML-Tabelle wäre die „bessere“ Lösung, wenn ich die Frage richtig verstanden habe?

Ich würde die Variablen aber auch schaltbar ausführen wollen.
Habe nämlich vor noch eine Auto-Solltemperatur (von einem Skript vorgegeben) und eine manuelle Soll-Temperatur in diese Zeile zu schreiben. Mittels Button kann man dann wählen, ob man die Auto- oder die Manuelle Solltemperatur wählt. Zusätlich sollte die manuelle Solltemperatur noch mit z.B. dem „Entenzähler“ variabel gestaltet sein…
Mal schauen ob all dies in einer Zeile umsetzbar ist…
wenn nicht, dann muss ich meine Anforderungen reduzieren…

Grüße
Wickie

…klingt eher nach Float und Bool in einer Zeile.
Da würde die Variante von Thomas ausscheiden und eher die vorgeschlagene von kronos passen, wenn es nur um die Anzeige geht.

Nein, das geht.

In meinem genannten Beispiel wird über das Klicken des Wertes der Integervariable die Assoziation mit dem Wert der Bool oder Floatvar befeuert. Das ist nur eine Frage des Aktionsscriptes. Die Integervariable kann alle Variablentypen abbilden, sie ist quasi ein Spiegel auf die Originalvariable.

Im Anhang ein Beispiel der div. Möglichkeiten.

d.h. du überschreibst bei jedem Variablenupdate die Assoziation.
Coole Idee :cool:, hätte ich auch schon öfter gebraucht.

danke für den Tip.
bb

Yepp, genau. Damit kann man schöne Sachen machen. Mit html wirds passiv, dazu brauchts dann noch java etc.:slight_smile:

Wenn Wickie das ausreicht keine Kommastellen für seine Ist-Temperatur darzustellen, dann geht das natürlich so.
Dann müsste er für die Ausgabe immer Runden auf die nächste ganze Zahl. Ich weiss nicht, ob das in seinem Sinne ist?
Dafür fehlen noch die Informationen.

Wenn Wickie das ausreicht keine Kommastellen für seine Ist-Temperatur darzustellen, dann geht das natürlich so.

Das ist doch nur Text, Du kannst dort beliebige Nachkommastellen abbilden.:wink:

Hallo Thomas,

wenn ich dein Beispiel umsetzen könnte, wäre super.
Kannst du vielleicht das entsprechende Aktionsskript hier Posten, damit ich mich besser in die Thematik reinarbeiten kann?

Dank dir.

Beste Grüße
Wickie

Das Script ist relativ umfangreich, hier ein Auszug welches z.B. eine Uhrzeit in eine Assoziation schreibt;


    if($_IPS['SENDER'] == "WebFront" and $_IPS['VARIABLE'] == $id_term_minute_int)
    {
        $wert_stu = (int)IPS_GetVariableProfile("fm_term_uhrzeit")['Associations'][2]['Name'];

        if($_IPS['VALUE'] == 0)     $wert_stu = $wert_stu-5;
        if($_IPS['VALUE'] == 1)     $wert_stu = $wert_stu-1;
        if($_IPS['VALUE'] == 3)     $wert_stu = $wert_stu+1;
        if($_IPS['VALUE'] == 4)     $wert_stu = $wert_stu+5;
      if($_IPS['VALUE'] < 5)       SetValueInteger($id_term_minute_int, 2);
      if($wert_stu < 0 or $wert_stu > 23) return;
        SetValueString($id_term_stunde, (string)$wert_stu );
        
          $wert_min = (int)IPS_GetVariableProfile("fm_term_uhrzeit")['Associations'][8]['Name'];

        if($_IPS['VALUE'] == 6)     $wert_min = $wert_min-10;
        if($_IPS['VALUE'] == 7)     $wert_min = $wert_min-1;
        if($_IPS['VALUE'] == 9)     $wert_min = $wert_min+1;
        if($_IPS['VALUE'] == 10)     $wert_min = $wert_min+10;
      if($_IPS['VALUE'] > 5)     SetValueInteger($id_term_minute_int, 8);
      if($wert_min < 0 or $wert_min > 59) return;
          SetValueString($id_term_minute, (string)$wert_min );
          
        //IPS_SetVariableProfileAssociation(integer $ProfilName, float $Wert, string $Name, string $Icon, integer $Farbe)
        IPS_SetVariableProfileAssociation("fm_term_uhrzeit", 2, $wert_stu." Uhr", "", 290);
        IPS_SetVariableProfileAssociation("fm_term_uhrzeit", 8, $wert_min." min", "", 290);
        return;
    }

FM_024.png

Hallo Thomas,

danke für das Skript.
Das Einarbeiten bringt die ersten Früchte:

Das entsprechende Skript dazu:


<?
$ProfileName = 'Profile_V03a';
$ID_T_Soll_Wohnen = 33841 /*[Geräte\Heizung\FBH\T_Soll\T_Soll_Wohnen]*/;
$ID_T_IST_Wohnen = 58113 /*[Geräte\Feuchtesensoren\Temperatur & Feuchtesensor BJ Unterputz (XXX, T, Wohnen)\T_Ist_Wohnen]*/;
$ID_FBH_Wohnen = 36848 /*[Geräte\8 Channel Switch\8 Channel Switch (2)\2 FBH Wohnen]*/;

$T_Soll_Wohnen = GetValue($ID_T_Soll_Wohnen);
$T_IST_Wohnen = GetValue($ID_T_IST_Wohnen);
$FBH_Wohnen = GetValue($ID_FBH_Wohnen);

if ($FBH_Wohnen == true)
	{
	$FBH_Wohnen = 'AN';
	$Farbe_FBH = 0x00FF00;
	}
else
	{
	$FBH_Wohnen = 'AUS';
	$Farbe_FBH = 0xFF0000;
	}
	

IPS_SetHidden($IPS_SELF, true);   # Skirpt im WF verstecken

#Wert 1
IPS_SetVariableProfileAssociation($ProfileName, 0, 'Soll', '', -1);
IPS_SetVariableProfileAssociation($ProfileName, 1, $T_Soll_Wohnen, '', 0x00FF00);
#Wert 2
IPS_SetVariableProfileAssociation($ProfileName, 2, 'IST', '', -1);
IPS_SetVariableProfileAssociation($ProfileName, 3, $T_IST_Wohnen, '', -1);
#Wert 3
IPS_SetVariableProfileAssociation($ProfileName, 4, 'FBH', '', -1);
IPS_SetVariableProfileAssociation($ProfileName, 5, $FBH_Wohnen, '', $Farbe_FBH);


?>

Muss die nächsten Tage mal schauen, was ich noch alles damit anfangen kann… Melde mich dann wieder.
Eine helle Hintergrundbeleuchtung von allen Variablen gleichzeitig ist nicht möglich oder?

Grüße
Wickie

Eine helle Hintergrundbeleuchtung von allen Variablen gleichzeitig ist nicht möglich oder?

Nein, nur die mit dem Focus.

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