LEDs ausschalten.

Tuxi

Mitglied
Mitglied seit
14 Aug 2005
Beiträge
328
Punkte für Reaktionen
0
Punkte
0
Hallöle

Geht doch schon über das freetz-Webinterface:
Rudishell >>-Kommando--> led-ctrl display_suspend
...auch wieder rückgängig:
Rudishell >>-Kommando--> led-ctrl display_wakeup

Oder meinst du ein CGI?
Dann sollte aufjedenfall usleep in der busybox sein.
Warum? Den usleep braucht man für Blink/Lauflichteffekte. ;)

leds.sh (Funktiondefinitionen, muss an die jeweilige Box angepasst werden)
Code:
#! /bin/sh

usleep () {
if [ -f /var/media/NEW_LINK/bin/usleep ]
then
/var/media/NEW_LINK/bin/usleep $1
return 0
else
sleep 1
#ping -W 1 -c $1 127.0.0.1 >/dev/null
return 0
fi
return 1
}

all_off () {
led-ctrl dsl_nicht_verbunden=0
led-ctrl power_off
led-ctrl internet_abgebaut
led-ctrl dect_abgeschaltet
led-ctrl wlan_off
led-ctrl update_led1=0
return 0
}

all_on () {
led-ctrl power_on
led-ctrl internet_aufgebaut
led-ctrl dect_aktiv
led-ctrl wlan_on
led-ctrl update_led1
return 0
}

ltr () {
led-ctrl power_on
usleep $1
led-ctrl power_off
led-ctrl internet_aufgebaut
usleep $1
led-ctrl internet_abgebaut
led-ctrl dect_aktiv
usleep $1
led-ctrl dect_abgeschaltet
led-ctrl wlan_on
usleep $1
led-ctrl wlan_off
led-ctrl update_led1
usleep $1
led-ctrl update_led1=0
return 0
}

rtl () {
led-ctrl update_led1
usleep $1
led-ctrl update_led1=0
led-ctrl wlan_on
usleep $1
led-ctrl wlan_off
led-ctrl dect_aktiv
usleep $1
led-ctrl dect_abgeschaltet
led-ctrl internet_aufgebaut
usleep $1
led-ctrl internet_abgebaut
led-ctrl power_on
usleep $1
led-ctrl power_off
return 0
}

kitt () {
all_off
while true
do
ltr $1
rtl $1
done
return 0
}

run () {
all_off
ltr $1
rtl $1
return 0
}

left () {
all_off
while true
do
rtl $1
done
return 0
}

right () {
all_off
while true
do
ltr $1
done
return 0
}

if [ $# -gt 0 ]
then
run 150000
return 0
fi
#EOF
...bitteschön.
 
Zuletzt bearbeitet:
Das ist irgendiwe cool.

Hast du mal ein Video wie das aussieht?

Ich hab ne 7390 was muss ich da napassen?

EDIT: habe was auf youtube gefunden: Hier ist das Skript:

http://pitload.org/2309

Wie kann man das für die 7390 anpassen.

Ausserdem hätte ich gerne das ganze verlangsamt. D.h. die LED's sollen sehr langsam sich ändern.

geht das?
 
Zuletzt bearbeitet:
Hallo,
:gruebel: Es sollen nur die LEDs deaktiviert werden? Das geht bei den FWs ab OS 06.xx doch über das WebIF?
 
Hallöle

Nee, Video müsst ich erst machen.

Auch auf einer 7390 müssteste erstmal telnet aktivieren.
Telefonisch: #96*7* (aus = #96*8*)
Mit PuTTY oder Windows (erst installieren) telnet über die Kommandozeile.
Die gesamten LED Events werden mit led-ctrl -l aufgelistet.
Einminütiges rotes Dauerblinken der Info-LED: led-ctrl filesystem_mount_failure
Benutz ich für einen reinkommenden Telefonanruf.

Bei dem von dir verlinkten KITT!Box Skript geschieht die Verzögerung nicht durch sleep,
oder usleep, sondern über den ping nach Google.

kittbox.sh
Code:
#!/bin/ash
#
# AVM KITT!Box - r0001
#
# This script controls the LEDs on an AVM Fritz!Box 7270 and creates a K.I.T.T. like effect
#
# Hint: You must be connected to the internet and allow ping requests to and ping replys from google.de. See tick()
#
###
#
# LED documentation for led-ctrl
#
#   LED \ Event   On                  Off                Flash I On                Flash II On       Flash Off
#
#   All                                                  hardware_error                              hardware_error=0
#   Power         power_on            power_off          dsl_nicht_verbunden [1]   dsl_training [1]  dsl_verbunden
#   Internet/DSL  internet_aufgebaut  internet_abgebaut  voip_mwi_speech_msg       voip_mwi_mail     voip_mwi_no_message
#   Festnetz      festnetz_aufgebaut  festnetz_abgebaut  festnetz_mwi_set                            festnetz_mwi_reset
#   WLAN          wlan_on             wlan_off           wlan_starting             wps_start         wlan_on|wps_done [2]
#   Info          update_led1         update_led1=0      update_running            update_error      update_no_action
#   Info (Rot)                                           filesystem_mount_failure                    filesystem_done
#
# Some events work in parallel, others overwrite previous settings but will be restored if switched off.
#
# [1] requires power_on in order to work
# [2] wlan_on if wlan_starting was used, wps_done if wps_start was used
#
# for more info see:
#   <http://wiki.ip-phone-forum.de/gateways:avm:howtos:mods:leds>
#   <http://www.ip-phone-forum.de/showpost.php?p=1316971>
#
###
# dirty hack to have some kind of ticks smaller than 1sec
tick() {
        ping -c 1 google.de 2>&1 >/dev/null
}
# define LED on and off events (see above)
LED0_ON='power_on'
LED0_OFF='power_off'
LED1_ON='internet_aufgebaut'
LED1_OFF='internet_abgebaut'
LED2_ON='festnetz_aufgebaut'
LED2_OFF='festnetz_abgebaut'
LED3_ON='wlan_on'
LED3_OFF='wlan_off'
LED4_ON='update_led1'
LED4_OFF='update_led1=0'
# turn off all LEDs
led-ctrl "$LED0_OFF"
led-ctrl "$LED1_OFF"
led-ctrl "$LED2_OFF"
led-ctrl "$LED3_OFF"
led-ctrl "$LED4_OFF"
# K.I.T.T. effect
while true; do
	led-ctrl "$LED0_ON"
	tick
	led-ctrl "$LED0_OFF"
	led-ctrl "$LED1_ON"
	tick
	led-ctrl "$LED1_OFF"
	led-ctrl "$LED2_ON"
	tick
	led-ctrl "$LED2_OFF"
	led-ctrl "$LED3_ON"
	tick
	led-ctrl "$LED3_OFF"
	led-ctrl "$LED4_ON"
	tick
	led-ctrl "$LED4_OFF"
	led-ctrl "$LED3_ON"
	tick
	led-ctrl "$LED3_OFF"
	led-ctrl "$LED2_ON"
	tick
	led-ctrl "$LED2_OFF"
	led-ctrl "$LED1_ON"
	tick
	led-ctrl "$LED1_OFF"
	led-ctrl "$LED0_ON"
	tick
done;
Also: ping -c 1 google.de 2>&1 >/dev/null
...ändern in...
ping -c 3 google.de 2>&1 >/dev/null
Aber musst du selber antesten.

In der Konsole startest du es so, damit es im Hintergrund laufen kann: kittbox.sh &
Mit ps und herausfinden der PID kannstes wieder beenden.
Oder mit: killall kittbox.sh
 
Zuletzt bearbeitet:
Bei dem von dir verlinkten KITT!Box Skript geschieht die Verzögerung nicht durch sleep,
oder usleep, sondern über den ping nach Google.

Abgesehen davon, dass Ping als Ersatz für Sleep nicht wirklich elegant ist, sollte man wenigstens 127.0.0.1 verwenden, dann ist man nicht von einer externen Verbindung abhängig.
Gibt es wirklich eine Firmware ohne sleep? Sogar die 7170 hat sleep in der Firmware.
 
Sleep gibt es auch schon in der FB7050.
Ping verwenden die meisten aber, wenn man kürzere Verzögerungen als 1s braucht.
 
Genau das ist das Problem mit sleep, kann nur sekundengenau, b.z.w. nicht unter einer Sekunde.
Manche (Lauf)lichteffekte kommen aber besser bei 1/4 Sekunde, oder usleep 250000, deswegen
wohl der ping Trick. Ein ping auf localhost ist natürlich sehr schnell.
Ich check mal: ping -c 3 localhost 2>&1 >/dev/null
Code:
deepbase # time ping -c 1 localhost 2>&1 >/dev/null
real    0m 0.00s
user    0m 0.00s
sys     0m 0.00s
deepbase # time ping -c 2 localhost 2>&1 >/dev/null
real    0m 1.00s
user    0m 0.00s
sys     0m 0.01s
deepbase # time ping -c 3 localhost 2>&1 >/dev/null
real    0m 2.00s
user    0m 0.00s
sys     0m 0.01s
... -c 1 ist zu schnell auf localhost, deswegen wohl eine Internetadresse.

Da ROcket es aber eh langsamer möchte kann er ja die tick Funktion so gestalten...
Code:
tick() {
# ping -c 1 google.de 2>&1 >/dev/null
sleep 1
}

Mit localhost:
Der Switch -c 1 ist am sinnvollsten, bei Bedarf dann einfach den tick öfter aufrufen...

Code:
tick() {
        ping -c 1 localhost 2>&1 >/dev/null
}
# define LED on and off events (see above)
LED0_ON='power_on'
LED0_OFF='power_off'
LED1_ON='internet_aufgebaut'
LED1_OFF='internet_abgebaut'
LED2_ON='festnetz_aufgebaut'
LED2_OFF='festnetz_abgebaut'
LED3_ON='wlan_on'
LED3_OFF='wlan_off'
LED4_ON='update_led1'
LED4_OFF='update_led1=0'
# turn off all LEDs
led-ctrl "$LED0_OFF"
led-ctrl "$LED1_OFF"
led-ctrl "$LED2_OFF"
led-ctrl "$LED3_OFF"
led-ctrl "$LED4_OFF"
# K.I.T.T. effect
while true; do
        led-ctrl "$LED0_ON"
        [b]tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick[/b]
        led-ctrl "$LED0_OFF"
        led-ctrl "$LED1_ON"
        [b]tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick[/b]
        led-ctrl "$LED1_OFF"
        led-ctrl "$LED2_ON"
        [b]tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick[/b]
        led-ctrl "$LED2_OFF"
        led-ctrl "$LED3_ON"
        [b]tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick[/b]
        led-ctrl "$LED3_OFF"
        led-ctrl "$LED4_ON"
        [b]tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick[/b]
        led-ctrl "$LED4_OFF"
        led-ctrl "$LED3_ON"
        [b]tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick[/b]
        led-ctrl "$LED3_OFF"
        led-ctrl "$LED2_ON"
        [b]tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick[/b]
        led-ctrl "$LED2_OFF"
        led-ctrl "$LED1_ON"
        [b]tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick[/b]
        led-ctrl "$LED1_OFF"
        led-ctrl "$LED0_ON"
        [b]tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick;tick[/b]
done;
(Jetzt weiss ich wofür Schleifen da sind)

Bei mir (F!B 7360SL) ist die dritte LED übrigens:
Code:
LED2_ON='dect_aktiv'
LED2_OFF='dect_abgeschaltet'
 
Zuletzt bearbeitet:
OK. Das Skript hat zunächst auch ganz gut geklappt, nur dass die LED's sehr schnell geschaltet haben.


Ich kann das Skript aber nun nicht mehr ausführen.

Ich rufe das Skript mit dem befehl. ./kittbox.sh auf. beim ersten male hat das auch gut geklappt, als ich dann aber die Ping counts erhöht habe und das skript nochmals starten wollte kam die Fehlermeldung "-sh: ./kittbox.sh: not found"

Ich bin sicher dass das ein Linux anfänger Fehler ist, aber bit Hilft einen WIndows Idioten mal weiter.


Wieso will das Skript beim zweiten Mal nicht starten?

Es läuft auch kein Prozess mehr unter ps

Was mache ich falsch?
 
Mal sehen...
Das ./ vor kittbox.sh bedeutet: Aktuelles Verzeichnis
Um das Skript so auszuführen musst du dich also im selbem Verzeichnis wie das Skript befinden.
Ausserdem sollte bei dieser Aufrufsform ein SHEBANG vorhanden sein:
1. Zeile: #!/bin/sh

2. Das Skript ist nicht ausführbar gemacht worden: chmod +x kittbox.sh

3. Beides brauchst du nicht wenn du es so aufrufen tust: sh kittbox.sh
 
Zuletzt bearbeitet:
OK danke. Nummer 3 hat geholfen.


Ich bekomme die LED's aber nicht langsamer, wenn ich den Ping count erhöhe und das Skript ausführe kommt die Fehlermeldung:

Code:
: not found line 33:
: not found line 37: }
: not found line 38:
: not found line 42:
: not found line 45:
: not found line 48:
: not found line 51:
: not found line 54:
: not found line 61:
kittbox.sh: line 171: syntax error: unexpected "done" (expecting "do")

Ich ändere den code auf windows. Ich nehme an, das smuss ich mit vi oder vim machen, dazu kenne ich mich aber mit linux nicht gut genug aus.
 
Das ist ein typischer Effekt, wenn man DOS/Windows Zeilenenden in einer Datei hat. Es muss nicht unbedingt vi sein, es tut auch ein Programm unter Windows, das die Zeilenenden richtig speichern kann. Such mal nach Notepad++.
Wenn Du Freetz verwendest, kannst Du auch den Text über die Zwischenablage in die Rudi Shell übertragen.
 
Moin

Genau, so mach ich das auch.
Syntaxhighlight bekommst du damit auch.
Das hilft bei der Fehlersuche.
Entweder als *.sh abspeichern öffnen, oder bei einer noch nicht gespeicherten:
Menü: Sprachen -> S --> Shell
...auswählen.
 

Anhänge

  • Notepadplusplus_Windows2Linux_01.jpg
    Notepadplusplus_Windows2Linux_01.jpg
    44.8 KB · Aufrufe: 23
Ich mache es immer mit WINSCP und SFTP direkt auf der FB.

Da kann ich die Dateien sogar "on the fly" ändern.

Und selbst ar7.cfg, debug.cfg, calllog ... lassen sich damit direkt in /var/flash/ auf der FB ändern.
(das geht mit SCP nicht, deshalb nehme ich SFTP)
 
Zuletzt bearbeitet:
OK das klappt jetzt. Ich habe jetzt ein ping count von 3 eingestellt und die LED's laufen jetzt schön gemütlich hin und her. Sieht cool aus.

Danke für die Hilfe.
 
Hehe, viel zu lang und hartkodiert.
Hier haste was zum "spielen"...
kittbox.sh
Code:
#!/bin/sh
tick()
{
if [ $1 -lt 1000 ]
then
        i=$1
        while [ $i -ne 0 ]
        do
                ping -c 1 localhost 2>&1 >/dev/null
                i=$(($i - 1))
        done
fi
}
# define LED on and off events (see above)
LED0_ON='power_on'
LED0_OFF='power_off'
LED1_ON='internet_aufgebaut'
LED1_OFF='internet_abgebaut'
LED2_ON='dect_aktiv'
LED2_OFF='dect_abgeschaltet'
LED3_ON='wlan_on'
LED3_OFF='wlan_off'
LED4_ON='update_led1'
LED4_OFF='update_led1=0'
# turn off all LEDs
led-ctrl "$LED0_OFF"
led-ctrl "$LED1_OFF"
led-ctrl "$LED2_OFF"
led-ctrl "$LED3_OFF"
led-ctrl "$LED4_OFF"
# K.I.T.T. effect
while true; do
	led-ctrl "$LED0_ON"
	tick $1
	led-ctrl "$LED0_OFF"
	led-ctrl "$LED1_ON"
	tick $1
	led-ctrl "$LED1_OFF"
	led-ctrl "$LED2_ON"
	tick $1
	led-ctrl "$LED2_OFF"
	led-ctrl "$LED3_ON"
	tick $1
	led-ctrl "$LED3_OFF"
	led-ctrl "$LED4_ON"
	tick $1
	led-ctrl "$LED4_OFF"
	led-ctrl "$LED3_ON"
	tick $1
	led-ctrl "$LED3_OFF"
	led-ctrl "$LED2_ON"
	tick $1
	led-ctrl "$LED2_OFF"
	led-ctrl "$LED1_ON"
	tick $1
	led-ctrl "$LED1_OFF"
	led-ctrl "$LED0_ON"
	tick $1
done;
#EOF
LED2 noch anpassen!
Aufrufen kannste es dann so:
sh kittbox.sh 50
..oder..
sh kittbox.sh 25
..oder..
sh kittbox.sh 10
(mein timings Favorit)
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.