Bei mir steht in allen Skripten möglichst weit vorne folgendes Statement:
include_once "ObjIDsIPS.ind.inc.php"; // 57516 /*[Skripte\Konfiguration\ID-Definitionen\ObjIDsIPS]*/
ind = Individuell (d.h. unterschiedlich je nach System auf PC, Raspi, Banana…)
inc = ist ein Include
php = enthält PHP
Alle Betriebsskripte haben gleichen Inhalt, egal auf welchem System sie laufen.
Nur das Skript „ObjIDsIPS.ind.inc.php“ ist individuell angepaßt.
Außerdem stehen da functions, die ich immer wieder brauche, aber nicht in IPS implementiert sind .
Hier ein Auszug:
<?
define ("PCname",'Svr1' ); // Name des PCs, auf dem dieses File läuft
/*
* File mit IDs, die für den Betrieb von IPS notwendig sind.
*
* @file ObjIDsIPS.ind.inc.php
* Remark: OS- und PC abhängig (siehe PCname)
*
*/
...
/*[Melder\Fenster und Türen]*/
define ("HTML_FuT", 22329 /*[Melder\Fenster und Türen\Status]*/ );
define ("Mon_FuT", 21646 /*[Melder\Fenster und Türen\FuT-Monitor]*/ );
define ("Skript_FuT", 38874 /*[Melder\Fenster und Türen\FuT-Ereignis]*/ );
define ("Daten_FuT", 56806 /*[Melder\Fenster und Türen\FuT-Ereignis\Zeiten]*/ );
/*[Melder\Rauch]*/
define ("HTML_Rauch", 25719 /*[Melder\Rauch\Status]*/ );
define ("Mon_Rauch", 25473 /*[Melder\Rauch\Monitor]*/);
define ("Skript_Rauch", 37980 /*[Melder\Rauch\Ereignis]*/);
define ("Daten_Rauch", 54630 /*[Melder\Rauch\Ereignis\Zeiten]*/);
/*[Melder\Bewegung]*/
define ("HTML_Bew", 15297 /*[Melder\Bewegung\Status]*/ );
define ("Mon_Bew", 37622 /*[Melder\Bewegung\Bew-Monitor]*/ );
define ("Skript_Bew", 30720 /*[Melder\Bewegung\Bew-Ereignis]*/ );
define ("Daten_Bew", 10716 /*[Melder\Bewegung\Bew-Ereignis\Zeiten]*/ );
...
//---- Funktionen
function SetIPSsem ($Sem, $Repeat = 100) {
global $_IPS;
// settype ($Sem, "string");
$i = 10;
do {
$i ++; // nothing
if ($i > $Repeat)
die (IPS_GetScriptFile ($_IPS['SELF']) . ': Time-Out von Semaphore ' . $Sem . " (" . IPS_GetLocation ($Sem) . ")");
} while (IPS_SemaphoreEnter ($Sem, $i) != true);
}
function unSetIPSsem ($Sem) {
// settype ($Sem, "string");
if (IPS_SemaphoreEnter ($Sem, 1)) {
IPS_SemaphoreLeave ($Sem);
return;
}
IPS_SemaphoreLeave ($Sem);
}
function GetIPSsem ($Sem) {
// settype ($Sem, "string");
if (IPS_SemaphoreEnter ($Sem, 1)) {
IPS_SemaphoreLeave ($Sem);
return false;
} else {
return true;
}
}
...
?>
Die auskommentierten Zeilen in den functions sind übrigens der IPS-Entwicklung für den Raspi geschuldet.
Viele Grüsse
Harald
PS: Die PEARL-Programmierer haben übrigens folgendes Motto: „There is more than one way!“