Hallo Tobi,
tschuldige dfas ich mich jetzt erst melde. Habe die ganze Zeit probiert. Leider bekomme ichs nicht hin.
Mit wget hab ich zwar die Datei holen können, aber das auslesen der Werte hat nicht funktioniert. Anbei mal die
99_utils.pm wie ich sie verwende.
Mein weblog hat die Adresse 192.168.0.56
##############################################
# $Id: 99_myUtils.pm 1099 2011-11-12 07:53:34Z rudolfkoenig $
package main;
use strict;
use warnings;
use POSIX;
use Net::FTP;
###################################################
sub
Tobis_FTPGet ($$$$$) # parameter: server user pw pfad file
{
my $server=shift; # Hier wird die Adresse des FTP-Servers festgelegt (Hostname oder IP-Adresse)
my $username=shift; # Benutzername auf dem FTP-Server
my $password=shift; # Passwort fuer den Benutzer anonymous
my $Pfad=shift; # Pfad auf dem Server
my $datei=shift; # Der Name der Datei
my $ftp=Net::FTP->new($server, Debug=>0, Passive=>0) || die "Keine Verbindung mit $server.\n"; # Erzeugen des FTP-Objektes, als Intitialisierungsparameter wird die Adresse des FTP-Servers uebergeben
$ftp->login($username, $password) || die "Fehler beim einloggen.\n"; # Einloggen auf FTP-Server mit User-Name und Passwort
$ftp->cwd($Pfad) || die "Fehler beim Verzeichniswechsel nach $Pfad\n"; # Verzeichnis auf server wechseln
$ftp->binary() || die "Fehler bei Umschalten auf binary-transfer\n"; # uertragung binary
$ftp->get($datei) || die "Fehler beim herunterladen von $datei auf $server.\n"; # hier findet der eigentliche Download der Datei statt
$ftp->quit() || die "Fehler beim ausloggen von $server.\n\n"; # Abmelden vom FTP-Server
}
sub
Tobis_UpdatePhotovoltaikData()
{
my $taillaenge = 5;
my $temp = "";
my @Zeile = "";
my @Daten = "";
my @dateidaten = "";
# delta_inverter holen
Tobis_FTPGet("192.168.0.56", "admin", "admin", "/system", "delta_inverter.txt");
# dort die letzten Zeilen in andere Datei schreiben
system ("tail -$taillaenge /var/log/fhem/delta_inverter.txt > /var/log/fhem/temp.txt");
# delta_inverter loeschen
unlink ("/var/log/fhem/delta_inverter.txt") || die $!;
# Datei öffnen und einlesen
open (DATEI, "</var/log/fhem/temp.txt") || die $!;
@dateidaten = <DATEI>;
close (DATEI);
# Werte zuordnen
foreach(@dateidaten)
{
@Zeile = split (";", $_);
if (@Zeile == 50) # wir haben eine gueltige Zeile gelesen
{
$Daten[$Zeile[2]] = 0;
$Daten[$Zeile[2]] = $Daten[$Zeile[2]] + $Zeile[16];
}
@Zeile = "";
}
# und ueber set setzen
$Daten[0] = $Daten[1] + $Daten[2];
$temp = "WG: $Daten[0] W1: $Daten[1] W2: $Daten[2]";
if ($temp ne Value("Stromproduktion"))
{
fhem ("set Stromproduktion $temp");
}
# dann temp_datei loehen
unlink ("/var/fhem/temp.txt") or die $!;
$temp = "";
}
sub
Tobis_GetActPower()
{
my $Temp = Value("Stromproduktion");
my @Data = split (" ", $Temp);
return $Data[1];
}
###################################################
1;
und hier noch die deltainverter.txt, lieget auch unter \system wie bei dir.
[info]
Anlage=XXXXXXX
Datum=121031
[messung]
;s;Adresse;WR-Typ;MPC;S_GL;S_WR;S_DC1;S_DC2;S_AL;UDC1;IDC1;UDC2;IDC2;UAC;IAC;PAC;FAC;T_WR1;T_WR2;I_LC;R_ISO;E_TOTAL;E_INT;P_LIMIT;COS_PHI
;s;;;;;;;;;V;A;V;A;V;A;W;Hz;°C;°C;A;MOhm;kWh;Wh;;
[Start]
21:20:00;300;2;PVI-3.0-OUTD;;;;;;;;;;;;;;;;;;;;;;
21:20:00;300;3;PVI-3.0-OUTD;;;;;;;;;;;;;;;;;;;;;;
21:25:00;300;2;PVI-3.0-OUTD;;;;;;;;;;;;;;;;;;;;;;
21:25:00;300;3;PVI-3.0-OUTD;;;;;;;;;;;;;;;;;;;;;;
21:30:00;300;2;PVI-3.0-OUTD;;;;;;;;;;;;;;;;;;;;;;
21:30:00;300;3;PVI-3.0-OUTD;;;;;;;;;;;;;;;;;;;;;;
ich finde den Fehler leider nicht, hab mir schon ein perlbuch gekauft, hat mir aber auch nix geholfen........
Viele Grße
woody