[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