437 Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von mikoop Experte (2.7k Punkte)
Hallo,

Zur Steuerung einer Bewässerung nutze ich eine Batch-Datei, die den ganzen Tag läuft und Relais öffnet und wieder schliesst. Die Zeit zwischen dem Öffnen und Schliessen des Relais und die Länge der Pause zwischen dem Ende der bat-Datei und dem Beginn wieder am Anfang regle ich mit dem timeout -Befehl und Variablen, die ich am Anfang der batch definiere.

Das ist dann in etwa so:

set /A pause=3600

set /A leer=0
set /A xtrocken=240
set /A trocken=300
set /A normal=360
set /A feucht=420
set /A nass=480
set /A xnass=540

timeout /T %pause%
goto start

Gerne würde ich bei Hitze (oder Regen) die Bewässerungszeit ändern können, das geht aber so nicht, da die Datei den ganzen Tag geöffnet ist und so nicht bearbeitet werden kann.
Natürlich kann ich die Datei schliessen, bearbeiten und wieder starten, aber das hat so seine Nachteile.

Deshalb meine Frage, ob ich die Variablen aus einer anderen Datei (zB .txt) holen kann. Diese Datei könnte ich doch auch dann bearbeiten, wenn die batch-Datei läuft.

Oder habe ich da einen Denkfehler?

Danke und Grüsse,

Mikoop

5 Antworten

0 Punkte
Beantwortet von computerschrat Profi (32.2k Punkte)

Hallo Mikoop,

schau dir mal den Batch Befehl for an. Damit kannst du Elemente aus einer Text-Datei lesen und danach im Batch weiterverarbeiten.

https://docs.microsoft.com/de-de/windows-server/administration/windows-commands/for

Gruß computerschrat

0 Punkte
Beantwortet von
wieder angezeigt von halfstone
ist dieses thema zur zufriedenheit geloest
0 Punkte
Beantwortet von ch55 Experte (3.8k Punkte)
Hallo !

Ich würde die Batch anders aufbauen.

An den Anfang würde ich ein Menü setzen und dort auf eine Eingabe warten, die ich einer variablen zuweise, z.b. Wetter

1=normal

2=Hitze

3=regen usw

Diese Variable dann abfrage und dann zu den entsprechenden Einstellungsparametern für die Bewässerung springen

if wetter = 1 goto parameter1

if wetter = 2 goto parameter2 usw

An der Stelle der Sprungziele setzt du dann die für die Wetterlage erforderlichen Variablen für die Steurung der Bewässerung.

Bei einer Änderung der Wetterlage musst du die batch lediglich neu starten und wählst dann den entsprechenden anderen Menüpunkt aus.

SEHR WICHTIG dabei ist die Anordnung der Sprungziele innerhalb der Batch, denn diese müssen in umgekehrter Reihenfolge angeordnet seim alsd zuerst das Ziel für 3, zuletzt das für Ziel 1

Ich hätte dir gerne eine detailiertere Beschreibung und ein Beispiel geliefert, aber als ich eine ähnliche Datei genutzt habe, gab es noch MS-Dos und Windows 3.1 und ich krieg´s nicht mehr genau auf die Kette.

Also musst du noch etwas googlen.

bye
0 Punkte
Beantwortet von mikoop Experte (2.7k Punkte)
Hallo,

Und danke, dass ihr euch um diese schon etwas ältere Fragestellung kümmert.
Aus Zeitgründen bin ich das noch nicht angegangen.

@ch55
Ein Startmenü am Anfang hilft mir deshalb nicht, da das Programm automatisch startet und endet, ich greife auf den PC oft tagelang nicht zu.
Allerdings hatte ich schon über einen ähnlichen Ansatz nachgedacht, ich könnte eine Datei definieren, die das Wetter beschreibt und beim Start jedes neuen Durchgangs danach suchen und so Sprungziele in der batch definieren (zB if exist water.hot goto Hitze).
Diese Datei könnte ich zB durch ein vbs Script bei Bedarf auf Knopfdruck umbenennen.
Das habe ich aber noch nicht umgesetzt, jetzt im Winter ist die Bewässerung ja auch aus.

 Grüße und schönes Wochenende

Mikoop
0 Punkte
Beantwortet von ch55 Experte (3.8k Punkte)
Hallo !

Du könntest nach dem Menü eine Zeitverzögerung mit time einbauen, nach der dann der variablen der  wert für Normales Wetter zugeordnet wird.

bye
...