[fli4l] Wo liegt die Information, welche Geräte mit fli4l verbunden sind?
Thomas Grunenberg
tho_gru at gmx.de
Sa Jan 14 22:42:00 CET 2017
Am 14.01.2017 um 12:07 schrieb K. Dreier:
> Hallo Peter,
>
...
> Ich sehe hier mehrere nötige Schritte:
> 1) Man muß am Anfang prüfen, ob ein bestimmtes Geräte "online" ist.
> Das haben wir, siehe oben.
> 2) Wenn dieses (oder mehrere! wie prüft man das? Es wäre sozusagen OR)
> Geräte online sind, muß die Aktion erfolgen, falls nicht, sollte eine
> Schlaufe laufen, die 1 wieder aufruft
> 3) Falls eines oder mehrere Geräte online sind, muß die Aktion "ein"
> erfolgen, also das Anschalten der Steckdose (wie auch immer DAS dann
> genau funkionert; neue Baustelle)
> 4) sobald Komando in 3 ausgeführt ist, muß eine Variable gesetzt
> werden, z.B. WLANDOSEAKTIV=1
> 5) es muß dann einen Interval geben, in dem der Zustand von 1
> überprüft wird, also z.B. sleep 120 (= 2 Min)
> 6) Falls nach diesem Interval 1 zutrifft, landet man wieder bei 5, da 4
> weiter aktiv/gesetzt bleibt
> 7) Falls nach diesem Interval 1 nicht zutrifft, muß die Aktion "aus"
> erfolgen, also das Ausschalten der Steckdose
> 8 ) Falls 7 ausgeführt wurde, muß die obige Variable geändert werden,
> also z.B. WLANDOSEAKTIV=0
> 9) Das Skript muß nun wiederum in bestimmten Abstand prüfen, ob
> eventuell 1 wieder zutrifft
...
> Gruß
> Klaus
>
Hallo Klaus,
Hier ist ein Gerüst für ein Script, welches als Ausgangsbasis dienen kann:
###########################################################
#! /bin/sh
set -x # uncomment to see the executed statements
set -u # use of undefined variables will cause error message
test_on_condition () {
return 1 # false
}
test_off_condition () {
a=1
if test -f /etc/passwd; then
a=1
fi
b=0
return ${a} \& ${b} # 0 = true
}
execute_on_commands () {
echo "execute_on_commands"
}
execute_off_commands () {
echo "execute_off_commands"
}
while true; do
sleep 2
if test_off_condition; then
execute_off_commands
continue
fi
if test_on_condition; then
execute_on_commands
continue
fi
done
echo "END"
###########################################################
Erklärung:
1)
Am Ende läuft eine (Endlos-)Schleife: Zwischen "while" ... "done"
2)
Am Anfang werden 4 Funktionen definiert: test_on_condition,
test_off_condition, execute_on_commands, execute_off_commands
3)
Falls ein Funktion 0 (für TRUE) mittels "return" zurückliefert, ist die
Bedingung (hinter dem "if" beim Aufruf) wahr und die Befehle zwischen
"then" und "fi" werden ausgeführt.
4)
Das "&" Zeichen dient als logisches UND. *Vorsicht*: Ohne das "\" davor
klappt das nicht (die shell will den Befehl davor als
Hintergrundprogramm starten)
Das "|" Zeichen dient als logischen ODER. Hier gilt auch obiges *Vorsicht*
Ich empfehle Dir, das Script direkt auf deinem fli4l zu entwickeln und
erst wenn es funktioniert per USERCMD in Dein Build zu integrieren.
Du solltest Dich ein bisschen in die Shell-Programmierung einlesen...
Ansonsten: Bei Fragen fragen.
Gruß
Thomas
Mehr Informationen über die Mailingliste Fli4L