presenced - Version für Systeme mit perl ohne Threads?

Begonnen von reibuehl, 22 März 2014, 15:16:11

Vorheriges Thema - Nächstes Thema

reibuehl

Hallo,

Ich würde gerne meine OpenWrt-Access Points zur Anwesenheitserkennung verwenden. Bluetooth ist vorhanden, aber leider unterstützt das OpenWrt Perl wohl keine Threads. Wenn ich presenced starte, erhalte ich nur die Meldung "This Perl not built to support threads" obwohl die OpenWrt Module perlbase-thread and perlbase-threads installiert sind.

Gibt es eine Möglichkeit, presenced entweder remote auf den Bluetooth Empfänger zugreifen zu lassen oder gibt es eine presenced Version, die ohne Threads auskommt?

Gruß,
Reiner
Reiner.

tbals

Ich habe ähnliches vor, allerdings etwas einfacher.
Ich frage per ssh remote command die im WLAN verbundenen Clients ab und grepe nach der MAC-Adresse von meine Handy.
Das geht mit eine einfach bash script:

if (ssh root@10.10.10.10 iw dev wlan0 station dump | grep "aa:bb:cc:dd:ee") > /dev/null 2>&1
            then
                    echo 1
            else
                    echo 0
fi


Schön wäre wenn man das per SNMP lesen könnte, geht aber nicht.
1x JeeLink am ODROID C1 (FHEM2FHEM) für diverse LaCrosse Sensoren,  HMLAN für diverse Homematic Aktoren,
Haupt-FHEM auf Asus EeeBox und als DBlog-Server

reibuehl

Sollte es nicht möglich sein, Dein Kommando über extend oder exec in der snmpd mit einzubinden?

So was in der Art:


exec PresenceHandy1 /usr/sbin/iw dev wlan0 station dump | grep "aa:bb:cc:dd:ee"


Ich bin mir jetzt beim Syntax nicht ganz sicher - speziell ob Pipe Ausdrücke erlaubt sind, aber notfalls kannst Du den Ausdruck ja in ein Shell Script packen und mit der MAC als Argument aufrufen.

Über die OID extTable.extIndex.extResult sollte dann der  Exit Code, unter extTable.extIndex.extOutput Der Output des Kommandos abgefragt werden können.
Reiner.

tbals

Ich habe es jetzt noch anders gemacht. SNMP "kostet" und ssh ist zu langsam.
Jetzt lasse ich meine openWRT Router (habe davon mehrere im Haus) jede Minute ihre assoziierten Clients an netcat schicken, das dann direkt am FHEM-Server in eine Datei fällt:
# crontab -l
*  * *  *  * /usr/sbin/iw dev wlan0 station dump | grep ^Station | nc 172.xx.xx.xx 1337


Auf den FHEM-Server läuft ein einfach cat per inetd gestartet, das auf Port 1337 lauscht und in eine Datei schreibt.

Das presence-Script grept dann einfach nach der gesuchten MAC-Adresse und fertig ists. Das geht alles sehr schnell und sehr CPU-freundlich.
1x JeeLink am ODROID C1 (FHEM2FHEM) für diverse LaCrosse Sensoren,  HMLAN für diverse Homematic Aktoren,
Haupt-FHEM auf Asus EeeBox und als DBlog-Server