[gelöst]Modul in 99_myUtils

Begonnen von tekki, 31 August 2015, 20:41:03

Vorheriges Thema - Nächstes Thema

tekki

Hallo,

ich habe mir für einen Wecker eine Zugabfrage erstellt. Auf meinem Raspi hat diese auch funktioniert. Nun habe ich FHEM auf einen Intel-NUC mit Ubuntu-Server 14.04 umgezogen. Nun funktioniert diese Abfrage nicht mehr.
Im Logfile erscheint bei der Abfrage "Undefined subroutine &main::get called at ./FHEM/99_myUtils.pm line 41"

Anbei der Code aus der 99_myUtils
##############################################
# $Id: 99_Utils.pm 5488 2014-04-08 11:32:17Z rudolfkoenig $
package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

######## DebianMail  Mail auf dem RPi versenden ############
sub
DebianMail
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $ret = "";
my $sender = "xxxxx";
my $konto = "xxxxxx";
my $passwrd = "xxxxxx";
my $provider = "xxxxxx";
Log 1, "sendEmail RCP: $rcpt";
Log 1, "sendEmail Subject: $subject";
Log 1, "sendEmail Text: $text";

$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=no -o message-charset=utf-8);
$ret =~ s,[\r\n]*,,g;    # remove CR from return-string
Log 1, "sendEmail returned: $ret";
}
####### Zugabfrage basierend auf Zugfinder.de ####
sub
Zugabfrage($)
{
my $url = "[url="http://www.zugfinder.de/zuginfo.php?zugnr=";"]http://www.zugfinder.de/zuginfo.php?zugnr=";[/url]
my ($Zug) = @_; #Parameter wird beim Aufruf in ' geschrieben z.B. 'CNL_419'
my $content = get($url . $Zug);
my @content = split(/\n/,$content);

$content =~ m/\<td\>(.*)\<span class\=\"year20\"\>(.*)\<\/span\>(.*)\<\/td\>\s+\<td\>(.*)\<\/td\>\s+\<td style\=\'padding\:6px 0\.5em 6px 20px\' class\=\'(.*)\'\>\<span\>(.*)\<\/span\>\<\/td\>\s+\
<td\>/;
my $Versp = $6;
my $MVersp = $4;

if ( $Versp eq "p&uuml;nktlich" ) {
$Versp = "pünktlich";
}
  fhem ("setreading Test Datum: $1$2$3");
if ( $4 eq "" ) { 
  fhem ("setreading Test Max: \--");
}
else {
  fhem ("setreading Test Max: $MVersp");
}
  fhem ("setreading Test Versp.: $Versp");
  fhem ("setreading Test Zugnummer: $Zug");
 
if( $Versp eq "pünktlich" || $Versp < 20 ) {
  fhem ("setreading Test Alarm Nein");
  fhem ("set Test $Versp");
{ fhem("set Push_msg msg 'Zuginfo' 'Der Zug hat weniger als 20 Min. Verspaetung bzw. ist puenktlich $Versp'' '' 0 ''"); }
  fhem ("modify Wecker *04:30");
}
else {
{ fhem("set Push_msg msg 'Zugalarm' 'Der Zug hat $Versp Verspaetung'' '' 0 ''"); }
fhem ("setreading Test Alarm Ja");
fhem ("set Test $Versp");
fhem ("modify Wecker *05:00");
}
}

Aufgerufen wird die Abfrage mit {Zugabfrage('CNL_419')}

Hat jemand eine Idee?
Danke schon einmal für die Unterstützung.


Grüße
Ralph

JoWiemann

Hallo Ralph,

zunächst eine Bitte. Programmcode bitte in Code Tags setzen. Ist einfach lesbarer.

In Zeile 41 benutzt Du get(). Du hast aber weder ein use LWP::Simple noch ist mir nicht klar, ob Du LWP::Simple in Deiner neuen Umgebung installiert hast.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

betateilchen

Zitat von: tekki am 31 August 2015, 20:41:03

Hat jemand eine Idee?


Sogar zwei...


  • Du hast vermutlich vergessen, das Modul einzubinden, das die Funktion get() bereitstellt. Ich tippe mal auf LWP::Simple oder ähnliches
  • Wenn der dargestellte Inhalt die gesamte 99_myUtils.pm darstellt, fehlt am Ende die abschließende Zeile mit der 1;
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

tekki

Hallo,
danke für die Unterstützung. Es lag am fehlenden use LWP::Simple
Was ich nicht verstehe das es auf dem RASPI bis zur Umstellung auch ohne dem Eintrag funktioniert hat.

Nun funktioniert alles auf dem NUC wieder so wie vor der Umstellung auf dem Raspi.


Danke noch einmal
Grüße
Ralph