FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: LCN-User am 09 Mai 2013, 10:30:51

Titel: tail-Syntax
Beitrag von: LCN-User am 09 Mai 2013, 10:30:51
Hallo,

ich bin weiter in kleinen Trippelschritten auf dem Weg zu einem besseren Perl-Verständnis.

Nun möchte ich aus einer Log-Datei mit folgendem Code in regelmäßigen Abständen einen Wert einlesen:
define checkOutsideTemp at +*00:01  { \
   my $LCNData = "//FB-LINHK/FB-LinHK/USBDISK2-0-01/linhk/LCNData.log";;\
   my $a = (`tail -1 $LCNData`);;\
   Log 3,"Außentemperatur = $a";;\
}

//FB-LINHK ist eine Netzwerkfreigabe. Der tail-Befehl wirft aber einen Fehler aus.
ZitatCan't exec "tail": No such file or directory at (eval 394) line 1.
Natürlich existiert dieser (Windows-)Pfad und auch die Datei. Was mache ich falsch?

Vatertägliche Grüße,
LCN-User
Titel: Aw: tail-Syntax
Beitrag von: LCN-User am 09 Mai 2013, 10:56:23
Der Doppel-Slash // muss in Unix-Umgebungen wohl als einfacher Slash / geschrieben werden. Damit geht es aber immer noch nicht.

Die Installation ist eine auf 5.4 aktualisierte AVM-Version auf 7390. Kann es sein, dass wegen der chroot-Situation kein Pfad außerhalb der Box angesprochen werden kann?
Titel: Aw: tail-Syntax
Beitrag von: Rohan am 09 Mai 2013, 20:54:31
Hi LCN-User,

du versuchst also von einer Linux-Umgebung (FB 7390) auf eine Windows-Freigabe zuzugreifen. Ohne Samba-Client (smb) wird das mM nicht funktionieren. Ich kenne jetzt die Fritzboxen nicht, aber das dürfte ohne weitere Klimmzüge nicht funktionieren.

Gruß
Thomas
Titel: Aw: tail-Syntax
Beitrag von: LCN-User am 09 Mai 2013, 22:58:31
Hallo,

danke für den Hinweis - da kann ich ja lange suchen. Ich komme halt aus der Windows-Welt.

Die Lösung des Problems ist für mich aber ganz einfach. Die Werte, die ich aus dem LCN-Bussystem abrufe, erzeuge ich eigentlich durch Aufruf einer speziellen URL. Ich hatte die Daten nur zur Kontrolle in eine Freigabe geschrieben, kann sie aber natürlich ebenso gut durch Aufruf dieser URL aus FHEM heraus generieren.

Schaue ich mir morgen mal an.

Gute Nacht,
LCN-User
Titel: Aw: tail-Syntax
Beitrag von: LCN-User am 10 Mai 2013, 17:24:57
Zitat von: LCN-User schrieb am Do, 09 Mai 2013 22:58kann sie aber natürlich ebenso gut durch Aufruf dieser URL aus FHEM heraus generieren.
Dieser Code holt sich die vom LCN-Bussystem zur Verfügung gestellte Temperatur und gibt sie als Text aus:
+*00:10 {
   my $OutsideTemp = GetHttpFile("192.168.178.5:8000","/replacestate?src=FHEM_Data.html");
   log 3,"Aussentemperatur = $OutsideTemp";
}

Das Variablen-Handling ist für mich noch etwas unscharf. Der hier geholte Wert ist ja nur lokal innerhalb des Define verfügbar. Gibt es eine Möglichkeit, für solche Messwerte ein Pseudo-Device aufzusetzen? Dann wäre die Temperatur systemweit verfügbar.

Grüße, LCN-User
 
Titel: Aw: tail-Syntax
Beitrag von: Rohan am 10 Mai 2013, 19:45:27
Hi,

Zitat von: LCN-User schrieb am Fr, 10 Mai 2013 17:24... Gibt es eine Möglichkeit, für solche Messwerte ein Pseudo-Device aufzusetzen?

define MyTemp dummy
attr MyTemp userReadings MyTempValue

?

Edith zur zweiten:

userReadings brauchst du noch nicht einmal...

Beispiel aus der commandref:
 
  define myvar dummy
  set myvar 7



Gruß
Thomas

Edith: Typo
Titel: Aw: tail-Syntax
Beitrag von: LCN-User am 10 Mai 2013, 22:18:39
Hallo Thomas,
Zitat von: Rohan schrieb am Fr, 10 Mai 2013 19:45Hi,
userReadings brauchst du noch nicht einmal...

Beispiel aus der commandref:
 
  define myvar dummy
  set myvar 7
Das verstehe ich nicht. Wie kommt jetzt der Inhalt meiner Variablen $OutsideTemp in den Dummy?

Gruß, LCN-User
Titel: Aw: tail-Syntax
Beitrag von: rudolfkoenig am 11 Mai 2013, 14:36:19
mit
fhem("set myvar $OutsideTemp");