Temperaturüberwachung mit Batch-Prog

Diskutiere Temperaturüberwachung mit Batch-Prog im Programmierung Forum im Bereich Software Forum; Hi, hab einen Server laufen der mir regelmäßig über ein von einem Scheduler gestartetes Batch-Programm Temperaturen einliest und die Datei mit...

joe676

Threadstarter
Dabei seit
18.12.2010
Beiträge
7
Hi,

hab einen Server laufen der mir regelmäßig über ein von einem Scheduler gestartetes Batch-Programm Temperaturen einliest und die Datei mit den aktuellen Messwerten auf einen FTP-Server hochläd.

Nun bräuchte ich das Gegenstück auf einem anderen PC um die Einhaltung der Temperaturgrenzen zu überwachen und gegebenenfalls Alarm auszulösen.

Stelle mir vor, dass mir ein Scheduler (im Hintergrund) ein Batch-Programm startet, dieses läd die Datei mit den Messwert(en) vom FTP-Server, liest die Wert(e) der Datei ein u. reagiert entsprechend.

Wie liest man mittels Batch (auf Windows XP) Wert(e) aus einer Datei und weist die Wert(e) Batch-Variable(n) zu?

Alles weiter denke ich ist mittels if-Befehl zu bewerkstelligen?

Grüße

Joe676
 

automatthias

vernunftgeplagt
Dabei seit
21.04.2006
Beiträge
10.498
Hallo joe676,

erst mal herzlich willkommen auf dem Winboard!

:welcome


Unter Windows kann man Variablen mithilfe des SET Befehls setzen.
Wenn Du auf der Kommandozeile SET /? eingibst, siehst Du die Erklärung und einige Beispiele.

Zu Auslesen einer Datei kannst Du es mit FIND oder besser FINDSTR versuchen. Auch hier bekommst Du mit /? Hilfe angezeigt.
(Ich weiß aber nicht, ob FINDSTR bei jeder Windows-Version dabei ist).
 

Hups

Katzennarr
Team
Dabei seit
01.07.2007
Beiträge
19.915
Ort
D-NRW
Wäre so ein Tool nicht dafür geeignet?

Zitat:
Außerdem schlägt WebTemp Alarm bei z.B. zu hoher CPU-Temperatur oder Lüfterausfall und versendet dann auf Wunsch Alarm-Mails und/oder kann das System herunterfahren und abschalten
 

joe676

Threadstarter
Dabei seit
18.12.2010
Beiträge
7
@Hups
Es geht um die Überwachung der Temperaturen einer Heizungsanlage.

@automatthias
Das Messdatenfile hat beispielsweise folgenden Aufbau (Anzahl und Reihenfolge der Elemente kann auch verändert werden):

Messzeit Fühler-Nr. Beschreibung Messwert
08:30 (Tab) 0 (Tab) Kueche (Tab) 20.7
08:30 (Tab) 1 (Tab) Zimmer1 (Tab) 19.3
08:30 (Tab) 2 (Tab) Vorlauf (Tab) 65.5
08:30 (Tab) 3 (Tab) aussen (Tab) -10.7

Kannst mal ein Beispiel bringen wie ich mit findstr nur den numerischen Datenwert am Zeilenende und nicht immer die ganze Zeile samt Messzeit, Fühler Nr., Beschreibung auslesen kann?

Den ausgelesenen Wert weise ich mittels set z.B. der Variablen Messwertkueche zu.

Wie porgrammiert man den numerischen Vergleich: if Messwertkueche < 17.2 then Alarm1

Danke

Joe676
 

automatthias

vernunftgeplagt
Dabei seit
21.04.2006
Beiträge
10.498
Muss das unbedingt als Batchdatei laufen?
Könntest Du auch zusätzliche Hilfsprogramme verwenden?

Auf einem Unix/Linux-System wäre das trivial zu realisieren (sed, awk)
Mit Windows-Boardmitteln wird es nicht einfach.

Mit findstr bekommt man immer nur passende Zeilen angezeigt. Die Zeile selber muss man dann mithilfe von FOR auswerten. Schau mal im Windows "Hilfe- und Supportcenter" in der Befehlszeilenreferenz unter FOR nach, bei FOR /F gibt es delims und tokens.

Beispiel:
Code:
@echo off
for /f "tokens=4" %%x in (messwerte.txt) do (call :Auswertung %%x)
goto :EOF

:Auswertung
echo %1
if %1 GTR 20 echo ALARM

:EOF
 

joe676

Threadstarter
Dabei seit
18.12.2010
Beiträge
7
Danke für deine wertvollen Tipps und insbesonders das Beispielprogramm.
Bin begeistert von den mir bis dato unbekannten Möglichkeiten der erweiterten Befehle.

Hab nur noch 3 kleine Problemchen.
1) Ich erzeuge den Alarmton entweder mit echo (ctrl+G =^G=alt7 = bell) bzw. komfortabler mit xecho #[ACEFH]
Hab drei Notebooks die alle auf XP SP3 laufen und die Soundcards sind jeweils richtig konfiguriert (kann mit jedem MP3 Musik abspielen), bei zweien hör ich die über das Batch-Programm erzeugten Töne, beim dritten ist überhaupt nichts zu hören.
Woran kann das liegt? (Einstellung von cmd.exe, Registry,...?)

2) Ich verwende zur halbstündlichen Temperaturauswertung eine Zeitschleife, wobei ich alle 10 Sek. auf den richtigen Zeitpunkt prüfe. Die 10 Sek. erzeug ich mit:
ping /n 11 localhost >nul
Gibt es eine andere Möglichkeit der Zeitsteuerung mit geringerer Prozessorbelastung? Viell. mit AT-Befehl? (Möglichst ohne zeitaufwendige Plattenzugriffe)

3) Wie liest man die Stunden ein, ohne dass bei 08-09 ein Oktalfehler entsteht?
So geht's nicht: for /f "delims=:" %%x in ('time /T') do set /a Stundev=%%x-1
Wie bringt man eine Null vor der zweiten Ziffer weg (von 00 bis 09)?

Danke

Joe676
 
Zuletzt bearbeitet:

joe676

Threadstarter
Dabei seit
18.12.2010
Beiträge
7
Hallo!

Für das 3. Problem hab ich mittlerweile eine aufwendige und hoffentlich fehlerfreie Lösung gefunden:
for /f "delims=:" %%x in ('time /T') do set Stundev=%%x
if not "%Stundev:~ 0,1%" == "0" set /a Stundev=%Stundev%-1
if "%Stundev:~ 0,1%" == "0" set /a Stundev=%Stundev:~ 1%-1

Geht das nicht einfacher die Stunde ohne Vornull zu ermitteln, ohne sich dabei Hilfsprogramme (mit Plattenzugriff) wie showdate zu bedienen?

Grüße

Joe
 
Zuletzt bearbeitet:
Thema:

Temperaturüberwachung mit Batch-Prog

Temperaturüberwachung mit Batch-Prog - Ähnliche Themen

Wie man/frau ein (Batch-)Programm schreibt: Hi Die Systemfunktionen des Kommandointerpreters sind hilfreich und nuetzlich fuer alle moeglichen Aufgaben, aber leider schlecht bis gar nicht...

Sucheingaben

cpu temperatur batch

,

permanente temperaturaufzeichnung per batch datei

Oben