Hauptmenü

tail-Syntax

Begonnen von LCN-User, 09 Mai 2013, 10:30:51

Vorheriges Thema - Nächstes Thema

LCN-User

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

LCN-User

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?

Rohan

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
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

LCN-User

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

LCN-User

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
 

Rohan

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
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

LCN-User

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

rudolfkoenig

mit
fhem("set myvar $OutsideTemp");