Hallo zusammen
Ist es möglich die Einstellungen die ich in einem Wochenplan erstellt habe abzuspeichern.
Es geht darum wenn etwas schief geht das ich die Einstellungen wieder zurück holen kann.
Danke euch im voraus
GrafvonSocke
Hallo zusammen
Ist es möglich die Einstellungen die ich in einem Wochenplan erstellt habe abzuspeichern.
Es geht darum wenn etwas schief geht das ich die Einstellungen wieder zurück holen kann.
Danke euch im voraus
GrafvonSocke
Je nachdem wie fit du mit PHP bist. In der Doku sind alle API Befehle zum Konfigurieren des Plans drin. Abspeichern sollte auch eher leicht sein. Wieder einspielen erfordert ein paar mehr Zeilen Quellcode. Versuch es doch mal
paresy
Ich hätte da auch Interesse, wenn es ein fertiges Script gibt.
Hallo,
hab mal ein Function „SaveWeekplanToFile“ zum abspeichern gebaut
<?
//Einzelnen Wochenplan sichern
$ID = 12345;
SaveWeekplanToFile($ID);
//ALLE WOCHENPLAENE SICHERN ...
foreach(IPS_GetEventList() as $EventList)
{
if (IPS_GetEvent($EventList)['EventType'] == 2)
{
SaveWeekplanToFile($EventList);
//oder wenn EIGENER NAME gewunscht bzw. unter ID=0 anordnen
//SaveWeekplanToFile($EventList,"TEST_".$EventList,0);
}
}
/****************************************************************************
SaveWeekplanToFile,
schreibt ein Backupfile und Scriptreference fuer einen Wochenplan
SaveWeekplanToFile(WochenplanID,[BackupName],[ParentID])
[BackupName] = NULL
==> somit wird "WeekplanSave_" + ID + UHRZEIT genommen
[ParentID] = NULL
==> $_IPS['SELF'] genommen und der Script unterhalb
des Aufrufscripts angelegt
Example: SaveWeekplanToFile(1234);
oder
SaveWeekplanToFile(1234,"TEST",2245)
ReleaseNotes:
13.05.2016 tgusi74
+ Function erstellt und geprüft
*****************************************************************************/
function SaveWeekplanToFile($ID, $BackupName=NULL, $ParentID=NULL)
{
$FileContent = "<?" . "
";
$e = IPS_GetEvent($ID);
if ($e['EventType'] != 2)
{
echo ("Bei der ID= " . $ID . " handelt es sich um keinen Wochenplan !! ==> ABBRUCH !!" . "
");
return;
}
$FileContent .= "//WeekplanBackup ------------------------------------" . "
";
$FileContent .= "//BackupDate = " . date("d.m.Y H:i:s") . "
";
$FileContent .= "//WeekplanID = " . $ID . "
";
$FileContent .= "//WeekplanName = '" . IPS_GetName($ID) . "'" . "
";
$FileContent .= "//---------------------------------------------------" . "
";
$FileContent .= "
";
$FileContent .= "$"."ID=" . $ID . ";" . "
";
$FileContent .= "
";
$FileContent .= "//Delete all Groups ... "."
";
for($i=0;$i<=6;$i++)
{
$FileContent .= "@IPS_SetEventScheduleGroup(" . "$" ."ID"
. ","
. $i
. ","
. "0"
. ")" . ";" . "
";
}
$FileContent .= "for(" . "$" . "i=0;" . "$". "i<=100;". "$" ."i++)" . "
";
$FileContent .= " {" . "
";
$FileContent .= " @IPS_SetEventScheduleAction(" . "$" ."ID"
. ","
. "$" ."i"
. ","
. chr(39) . chr(39)
. ","
. -1
. ","
. chr(39) . chr(39)
. ")" . ";" . "
";
$FileContent .= " }" . "
";
$FileContent .= "
";
$FileContent .= "//RESTORE ACTIONS + + + + + + + + + + + + + + + + + + + + + + + +" . "
";
foreach($e['ScheduleActions'] as $a)
{
$FileContent .= "IPS_SetEventScheduleAction(" . "$" ."ID"
. ","
. $a['ID']
. ","
. chr(39) . $a['Name'] . chr(39)
. ","
. $a['Color']
. ","
. chr(39) . $a['ScriptText'] . chr(39)
. ")" . ";" . "
";
}
$FileContent .= "
";
$FileContent .= "//RESTORE ScheduleGroups + + + + + + + + + + + + + + + + + + + + + + + +"."
";
//Durch alle Gruppen gehen
foreach($e['ScheduleGroups'] as $g)
{
$FileContent .= "
";
$FileContent .= "//Group " . $g['ID'] . "
";
$FileContent .= "IPS_SetEventScheduleGroup(" . "$" ."ID"
. ","
. $g['ID']
. ","
. $g['Days']
. ")" . ";" . "
";
$FileContent .= "
";
foreach($g['Points'] as $p)
{
$FileContent .= "IPS_SetEventScheduleGroupPoint(" . "$" ."ID"
. ","
. $g['ID']
. ","
. $p['ID']
. ","
. $p['Start']['Hour']
. ","
. $p['Start']['Minute']
. ","
. $p['Start']['Second']
. ","
. $p['ActionID']
. ")" . ";" . "
";
}
}
$FileContent .= "
";
$FileContent .= "?>";
if ($BackupName != NULL)
{
$ScriptName = $BackupName;
}
else
{
$ScriptName = "WeekplanSave_" . $ID . "_" . date("YmdHis");
}
$ScriptID = IPS_CreateScript(0);
$Script = IPS_GetScript($ScriptID);
rename(IPS_GetKernelDir() . '/scripts/' . $Script['ScriptFile'], IPS_GetKernelDir() . '/scripts/' . $ScriptName . ".PHP" );
IPS_SetScriptFile($ScriptID, $ScriptName . ".PHP");
IPS_SetName($ScriptID, $ScriptName);
if (($ParentID !== NULL) && ($ParentID >= 0) && (IPS_ObjectExists($ParentID) == True) )
{
IPS_SetParent($ScriptID,$ParentID);
}
else
{
IPS_SetParent($ScriptID,$_IPS['SELF']);
}
IPS_SetScriptContent($ScriptID, $FileContent);
}
?>
… das zurücklesen (RESTORE) passiert dann in dem man eben das Backupfile ausführt ==> Testet aber erstmals mit einer TESTINSTANZ !!! (kann fuer nichts garantieren ob sich alle Konstellation ruecksichern lassen, speziell wenn man Code direkt in den Actions hat)
Frage,
was sollte man noch mitabspeichern ?? (eventuell Zustand AKTIV / INAKTIV)
Viel Spass,
tgusi74
Hallo tgusi74,
vielen Dank für das Skript
Ich bin gerade dabei Sicherungsskripte zu schreiben, die bei einer Übertragung von IPS vom Test- auf das Produktivsystem ein erneutes Eingeben gespeicherter Werte, wie z. B. serialisierte Daten für Homematic Heizungsgruppen usw. verhindern sollen, kam mir dieses Skript für die Wochenpläne sehr gelegen
Gruß
Hans