FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: m0urs am 12 Februar 2016, 08:57:57

Titel: Freeze durch externen Linux-Befehl
Beitrag von: m0urs am 12 Februar 2016, 08:57:57
Hallo,

in einer Routine in der 99_myUtils.pm rufe ich ein externes Linux-Kommando auf, welches bei meinem WLAN-Router nachfragt, ob ein Device noch online ist. Hier der Ausschnitt:

  # Frage WLAN-Status des Geräts auf router ab
   ($lastActivity) = `sudo /usr/local/bin/checkWLANActivity.sh "$mac"`;


Dadurch erzeuge ich in FHEM aber immer einen Freeze von ca. 4,5 Sekunden.

Gibt es da eine bessere Lösung, wie man so etwas macht (also Befehl in Lux aufrufen und Rückgabewerte dann in FHEM weiterverarbeiten) ohne FHEM in dieser Zeit lahmzulegen oder muss ich damit leben?
Titel: Antw:Freeze durch externen Linux-Befehl
Beitrag von: Wernieman am 12 Februar 2016, 09:05:15
Da Du mit Hilfe von telnet und/oder nc Daten von extern nach FHEM "reinpusten" kannst:

1. Entweder extern oder mit FHEM Dein Shell Script Starten und gleich in den Hintergrund schieben "tolles-script &"
2. Im Script mit Hilfe von telnet/ die Daten nach fhem reinpusten
echo -en "set ${1} ${2}\nquit\n" | nc -w 5 fhem-server 7072

Reicht Dir das als "Idee"?

Ich persönlich starte gleich das Script extern über den Cron-Deamon, damit ich nicht mit sudo arbeiten muß. Der Startet das Script gleich mit den "richtigen" rechten
Titel: Antw:Freeze durch externen Linux-Befehl
Beitrag von: m0urs am 12 Februar 2016, 09:53:17
Zitat von: Wernieman am 12 Februar 2016, 09:05:15
echo -en "set ${1} ${2}\nquit\n" | nc -w 5 fhem-server 7072
Reicht Dir das als "Idee"?

Ja, vielen Dank! Habe es eben mal so umgebaut. Das mit dem Senden von Kommandos an FHEM von Linux aus ist super (kann man sicher auch für andere Sachen gebrauchen ;-)) Es gibt jetzt keinen Freeze mehr, da ich via Cron direkt ein Reading in einem Device ändere und in FHEM dann nur das Reading abfrage.
Titel: Antw:Freeze durch externen Linux-Befehl
Beitrag von: Wernieman am 12 Februar 2016, 10:32:01
Arbeite sogar so bei meiner Infrarot-Fernbediehung. Mag das lirc-Modul von FHEM nicht, da es "pollt".

P.S. geht sogar, wenn der Port "verschlüsselt" ist.