[fli4l] LED schalten auf Alix mit hw_supp (3.10.6)
Stefan Puschek
stefan.puschek at t-online.de
So Aug 21 15:47:59 CEST 2016
Hallo Christoph und peter, der wahrscheinlich mitliest,
...
>> ich möchte auf meinem Alix (2D13) die erste LED über ein Skript steuern:
>>
>> HWSUPP_LED_1_DEVICE='alix::1'
>> HWSUPP_LED_1_PARAM='/usr/local/bin/myledscript'
>>
>> das Skript kann ich vermutlich per usercmd bereitstellen, aber wie lasse
>> ich das Skript ausführen?
>>
>> Muss ich einen cron-Job einrichten oder wird es automatisch zyklisch
>> aufgerufen? Irgendwie stehe ich auf dem Schlauch...
>
> Die Dokumentation gibt da nicht viel her, das stimmt leider.
dafür weiss in Zukunft das Archiv wie es geht (hoffentlich)
> Fakt ist, dass am Ende des Bootens (genauer: in rc998.hwsupp) dein Skript
> (das hwsupp automatisch auf den Router bringt, wie Peter schrieb) einfach
> per ". <Skript>" eingebunden und somit ausgeführt wird. Also genau
> einmal. Dabei beinhaltet die Variable "$i" den Index der LED.
Also muss ich in einer Schleife einen Zustand abfragen un die LED schalten
> Dein Skript ist nun dafür verantwortlich, den "Rest" zu erledigen. Es
> muss also einen Trigger konfigurieren und kann zusätzlich die LED manuell
> ein- oder ausschalten. Das Skript ist also nicht primär dafür da, um die
> LED ein- oder auszuschalten, sondern um dies entsprechend zu
> konfigurieren. Es könnte z.B. den folgenden Inhalt haben:
>
> #!/bin/sh
> echo none > /var/run/hwsuppd/hwsupp-led${i}/trigger
> /usr/bin/hwsupp_setled $i on
>
> Damit würde es die LED dauerhaft einschalten. Die gleiche Funktionalität
> bekommst du aber auch bei HWSUPP_LED_x='ready', also bringt der "Umweg"
> über HWSUPP_LED_x='user' nichts.
>
> Die Syntax für den Aufruf von hwsupp_setled sieht so aus:
>
> hwsupp_setled <index> {on|off|blink}
das steht noch in der Doku
> Vorher muss dein Skript jedoch den "Trigger" für die LED setzen, und zwar
> i.d.R. auf "none". Das erlaubt das manuelle Schalten der LED, ohne dass
> das System "im Hintergrund" die LED verändert. ("blink" erfordert
> allerdings den "timer"-Trigger.)
aha
>> genau das soll passieren; zwischen Router und Switch habe ich eine
>> Powerline-verbindung, die schonmal ausfällt und die LED soll anzeigen,
> ob
>> der Switch pingbar ist
>
> Dazu würde ich wie folgt vorgehen:
>
> 1) LED auf manuelles Schalten vorbereiten:
>
> HWSUPP_LED_1='trigger'
> HWSUPP_LED_1_TRIGGER='none'
so hatte ich das auch vor
> 2) Folgendes Skript check-powerline.sh schreiben (ungetestet!):
>
> #!/bin/sh
>
> # Adresse fürs PING
> TARGET=1.2.3.4
> # Index der LED
> LED=1
> # Timeout in Sekunden zwischen den PINGs
> TIMEOUT=60
>
> while true
> do
> if ping -c 1 -W 1 $TARGET >/dev/null
> then
> hwsupp_setled $LED on
> else
> hwsupp_setled $LED off
> fi
> sleep $TIMEOUT
> done &
das '&' hätte ich vermutlich vergessen und mich gewundert, wenn er
irgendwo hängenbleibt - danke für den Hinweis
> 3) Das Skript von OPT_USERCMD auf den Router bringen und beim Booten
> ausführen lassen (ungetestet!):
>
> OPT_USERCMD='yes'
> USERCMD_BOOT_N='1'
> USERCMD_BOOT_1='check-powerline.sh'
> USERCMD_FILE_N='1'
> USERCMD_FILE_1_SRC='check-powerline.sh'
> USERCMD_FILE_1_DST='/usr/bin/check-powerline.sh'
> USERCMD_FILE_1_MODE='555'
> USERCMD_FILE_1_FLAGS='sh'
das hatte ich auch so geplant - danke für Deine Bestätigung
Vielen Dank - ich werde testen und berichten.
Groetjes
Stefan
Mehr Informationen über die Mailingliste Fli4L