Check for low power (Was: Re: 4D Server as a Service on OSX)

Bernd Fr?hlich (6/4/14 8:51AM)


Bernd Fr?hlich (6/4/14 8:51 AM)

Mitchell Shiller wrote:

color><param>00000,0000,DDEE/param>TThe scenario is as follows.
The server is installed in a region where power failures occur at an
all too frequent occurrence.
There is a UPS connected to the system but this provides at best 1
hour of additional run time.
When the UPS is running down is forces a shut down of the server.
So the call to shutdown is external to 4D.

Unless there is a way to detect the Shutdown "message" from the OS,
than calling it internally does not help.
/color>
I have solved that problem as follows:
Start a process on the Server that calls the "BatteryCheck" Method
every few Seconds/Minutes.
If the battery is below 25% call QUIT 4D.
Additionally I display a warning message on the server if it is
running on battery, so the user can take action in case somebody is
there.

 // Methode: Batterycheck
 // Angelegt: BF 09.05.06
 // Objekt: Dienstroutine
 // Beschreibung: Prüft, ob der Rechner auf Batteriestrom läuft
 // und gibt den Füllstand in % zurück, falls das der Fall ist
(sonst
100)
 // ----------------------------------------------------

C_LONGINT($0;$lPercent)

C_LONGINT($lPos)
C_TEXT($tIn;$tOut)

$lPercent:=0
LAUNCH EXTERNAL PROCESS("pmset -g ps";$tIn;$tOut)
If (OK=1)
$lPos:=Position("%";$tOut)
If ($lPos>3)  //Rechner hat Batterie (Eingebaut oder USV)
If (Position("AC Power";$tOut)>0)  //Rechner hat Strom, Batterie wird
geladen
$lPercent:=100
Else
$lPercent:=Num(Substring($tOut;$lPos-3;3))
End if
Else  =A0//Rechner hat keine Batterie (läuft am Netz)
$lPercent:=100
End if
Else
bLogWrite ("Fehler beim Batteriecheck!";10)
End if
$0:=$lPercent

Greetings from Germany,
Bernd Fröhlich

Reply to this message

Summary created 6/4/14 at 12:44PM by Intellex Corporation

Comments welcome at: feedback@intellexcorp.com