Ok, hier ein kleines Script welches eine Integer-Variabel überwacht und eine String erstellt.
String-Variable und Ereignis wird automatisch unterhalb des Scripts erstellt.
Vielleicht kanns jemand brauchen
<?php
$intVariableId = 47143; // Ersetze diese ID durch die tatsächliche ID deiner Integer-Variable
$stringVariableName = "Modus"; // Name der String-Variable
$stringVariableIdent = "ModusStatus"; // Ident der String-Variable
$parentID = $_IPS['SELF']; // Das Skript selbst als Elternobjekt
// String-Variable prüfen und erstellen, falls nicht vorhanden
$stringVariableId = @IPS_GetObjectIDByIdent($stringVariableIdent, $parentID);
if ($stringVariableId === false) {
// String-Variable erstellen
$stringVariableId = IPS_CreateVariable(3); // 3 bedeutet String
IPS_SetName($stringVariableId, $stringVariableName);
IPS_SetIdent($stringVariableId, $stringVariableIdent);
IPS_SetParent($stringVariableId, $parentID); // Unterhalb des Skripts erstellen
}
// Wert der Integer-Variable abrufen
$intValue = GetValue($intVariableId);
// Überprüfen und den entsprechenden String-Wert setzen
switch ($intValue) {
case 0:
$stringValue = "heizen";
break;
case 1:
$stringValue = "Warmwasser";
break;
case 2:
$stringValue = "PVA";
break;
case 3:
$stringValue = "EVU-Sperre";
break;
case 4:
$stringValue = "Abtauen";
break;
case 5:
$stringValue = "Leerlauf";
break;
case 6:
$stringValue = "el. heizen";
break;
case 7:
$stringValue = "kühlen";
break;
default:
$stringValue = "Unbekannt";
break;
}
SetValue($stringVariableId, $stringValue);
// Ereignis erstellen, falls nicht vorhanden
$eventID = @IPS_GetEventIDByName("Ereignis für Variable $intVariableId", $_IPS['SELF']);
if ($eventID === false) {
$eventID = IPS_CreateEvent(0); // 0 bedeutet Ausgelöstes Ereignis
IPS_SetEventTrigger($eventID, 1, $intVariableId); // 1 bedeutet bei Änderung
IPS_SetParent($eventID, $_IPS['SELF']);
IPS_SetName($eventID, "Ereignis für Variable $intVariableId");
IPS_SetEventScript($eventID, "IPS_RunScript(" . $_IPS['SELF'] . ");");
IPS_SetEventActive($eventID, true);
} else {
// Sicherstellen, dass das Ereignis das Skript korrekt zuweist
IPS_SetEventScript($eventID, "IPS_RunScript(" . $_IPS['SELF'] . ");");
}
?>