99_myBBBUtils

Begonnen von betateilchen, 07 November 2013, 13:19:21

Vorheriges Thema - Nächstes Thema

betateilchen

Wer schon immer nach einer Möglichkeit gesucht hat, die LEDs auf dem BeagleboneBlack per fhem zu steuern - here we go:


package main;

use strict;
use warnings;
use Fcntl qw(:DEFAULT);

my @bbb_leds = map {
my $tmp;
sysopen($tmp, "/sys/class/leds/beaglebone:green:usr$_/brightness", O_WRONLY);
$tmp; } (0..3);


sub
myBBBUtils_Initialize($$) {
my ($hash) = @_;
}

sub bbb_led {
my @vals = @_;
for my $i (0..3) {
syswrite($bbb_leds[$i], "$vals[$i]", 1);
}
}

1;


Damit kann man mittels

bbb_led(val1,val2,val3,val4)

aus fhem heraus die vier benutzersteuerbaren LEDs auf dem Board steuern. val1-val4 sind dabei Werte von 0 (aus) oder 1 (an) und entspricht der Reihenfolge der vier vorhandenen LEDs.

Wichtig: zuvor muss die Schreibberechtigung auf das brightness-Register der jeweiligen LED vorhanden sein (es sei denn, fhem läuft als root) Ich habe dazu in meiner /etc/rc.local folgende vier Zeilen eingefügt:

chmod 777 /sys/class/leds/beaglebone\:green\:usr0/brightness
chmod 777 /sys/class/leds/beaglebone\:green\:usr1/brightness
chmod 777 /sys/class/leds/beaglebone\:green\:usr2/brightness
chmod 777 /sys/class/leds/beaglebone\:green\:usr3/brightness


Damit werden die Rechte nach einem BBB-Neustart automatisch wieder korrekt gesetzt.

(ja ich weiss, Rechtemanipulationen in /sys sollte man vermeiden, aber dummerweise werden die LEDs auf dem BBB über /sys gesteuert und nicht über /dev, was die Verwendung einer udev-Regel ausschließt)




Vielleicht wird das mal ein ganzes BBB_Tools Modul, ich will eigentlich eine Möglichkeit schaffen, die GPIO auch möglichst einfach zu verwenden (konkret: ich möchte den ELV-Gewitterwarnung über GPIO an den BBB anbinden)

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!