SetValueInteger mittels zugeordneten Text möglich?

Hallo Gemeinde,

ist es möglich eine Integervariable auch anhand des zugeordneten Textes, also der Beschreibung zu setzen ?

Zum Beispiel beim Setzen von „Arbeitszimmer“ wird auf Wert 2 umgeschaltet:

Gruß André

Ja, das ist möglich. Genau das ist der Sinn und Zweck von Variablenprofil. Der Variablen ggf. noch ein passendes ActionSkript zuweisen - fertig.

Das ist so leider nicht korrekt. Via Skript ist eine solche Zuweisung nicht einfach möglich. Du müsstest hierfür das Profil auslesen und die Werte bestimmen. Was ist dein Anwendungsfall, dass du das in einem Skript machen möchtest? Denn nach den dargestellten Texten zu gehen ist häufig eher unglücklich. Änderst du beispielsweise später Wohnzimmer zu Stube, weil dir das besser gefällt, funktionieren deine Skripte nicht mehr. Die 2 wäre allerdings weiterhin aktuell.

Dann habe ich nicht verstanden, was das Ziel sein soll.

@ DerStandart

Tja, das ist mir schon klar. Das wollte ich jedoch umgehen. Es ist das Wochenplanscript von Pitty, welches ich zunächst per SwitchPage anzeige und nun einen vorgewählten Raum gleich anzeigen lasse:

Heizkörperthermostat Heizprogramme per WebFront einstellen - Seite 56

@ Dr. Niels

Genau so habe ich es gemacht. Variablenprofil auslesen, Assoziationen durchsehen und entsprechend ansprechen.

Das Snippet:


<?

// WebFront Page switchen //
WFC_SwitchPage(47627, "Wochenplan");

// Zimmer umschalten //
$Zimmer = $_GET["daten"];

// ObjectID von ROOT/Heizung ermitteln
$ObjektID_Heizung = @IPS_GetObjectIDByName("Heizung", 0);
// ObjectID von ROOT/Heizung/Wochenplan ermitteln
$ObjektID_Wochenplan = @IPS_GetObjectIDByName("Wochenplan", $ObjektID_Heizung);
// ObjectID von ROOT/Heizung/Wochenplan/Wochenprogramm ermitteln
$ObjektID_Wochenprogramm = @IPS_GetObjectIDByName("Wochenprogramm", $ObjektID_Wochenplan);

// ObjectID von ROOT/Heizung/Wochenplan/Wochenprogramm/Zimmer ermitteln
$ObjektID_Zimmer = @IPS_GetObjectIDByName("Zimmer", $ObjektID_Wochenprogramm);

// ObjectID von ROOT/Heizung/Wochenplan/Wochenprogramm/Profil ermitteln
$ObjektID_Profil = @IPS_GetObjectIDByName("Profil", $ObjektID_Wochenprogramm);

// Variablenprofil von Zimmer holen
$Zimmer_Profil = IPS_GetVariable($ObjektID_Zimmer)["VariableCustomProfile"];
$Zimmer_Associations  = IPS_GetVariableProfile($Zimmer_Profil)["Associations"];

foreach($Zimmer_Associations as $Zimmer_Association)
	{                                                                             
	// Namen korrigieren 
	$Name = str_replace(array(" ", "[", "]"), array("_", "_", ""), $Zimmer_Association["Name"]);
	
	echo("Name: $Name");
	
	if($Zimmer == $Name)
		{
		SetValue($ObjektID_Zimmer, $Zimmer_Association["Value"]);
		}
	}

// Profil auslesen aktivieren
SetValue($ObjektID_Profil, 0);

?>

Die Integervariable lasse ich mir automatisch erstellen, indem alle Thermostate, die bei mir unter Hardware liegen, mit Namen ausgelesen werden. Daran wird sich nichts so schnell ändern.

Übergeben wird mi ein Raum aus dem Webfront, wenn ich direkt auf einen Heizkörper klicke (s.u.)

Ich habe nur noch nicht gefunden, wie ich gleich das Auslesen triggern kann. Der letzte Aufruf schaltet nur die Anzeige, ruft aber die Aktion (noch) nicht aus. Ich wollte das Originalscript nur marginal ändern, wo ich meine Thermostate eingebunden habe …

Da vielleicht Ideen ?

Gruß André