FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Harald am 19 Juni 2013, 11:10:20

Titel: Fehlermeldung beim Speichern von 99_myUtils.pm
Beitrag von: Harald am 19 Juni 2013, 11:10:20
Hallo zusammen,

ich hatte einen Fehler in meiner 99_myUtils.pm. Ich hatte am Ende das "1;" vergessen. Das habe ich berichtigt und erhalte nun nach dem Speichern eine Fehlermeldung "Undefined subroutine &main::myUtils_Initialize called at fhem.pl line 1656." Ohne die "1;" am Ende erscheint diese Meldung nicht, aber im Log steht " reload: Error:Modul 99_myUtils deactivated:"

Was habe ich denn da falsch gemacht?

hier meine 99_myUtils.pm##############################################
# $Id: 99_myUtils.pm 1932 2013-06-06 Harald $

package main;
use strict;
use warnings;
use POSIX;

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

#
# Telefone der FB klingeln beim Betätigen der Türklingel
#
sub FBCall ($)
{
  my ($callnr) = @_;
  $callnr = "ATP3 ATDT".$callnr."#";
  my $ret = "ATD: " . `echo $callnr | nc 127.0.0.1 1011`;
  $ret =~ s,[\r\n]*,,g;
  InternalTimer(gettimeofday()+8, "FBHangOn", "", 0);
  return;
}

sub FBHangOn ()
{
  my $ret = " ATH0: " . `echo "ATH0" | nc 127.0.0.1 1011`;
  $ret =~ s,[\r\n]*,,g;
 return;
}

#### Log-abriss vermeiden
# called by
# define addLog notify addLog {addLog("ez_Aussensensor","state");addLog("ez_FHT","actuator");\
#               addLog("MunichWeather","humidity");addLog("MunichWeather","pressure");\
#               addLog("MunichWeather","temperature");addLog("MunichWeather","wind_chill");}
# define a_midnight1 at *23:59 trigger addLog
# define a_midnight2 at *00:01 trigger addLog
sub
addLog($$) {
  my ($logdevice, $reading) = @_; # device and reading to be used
  my $logentry = ReadingsVal($logdevice,$reading,"addLog: invalid reading");
  if ($reading =~ m,state,i) {
    fhem "trigger $logdevice $logentry   << addLog";
  } else {
    fhem "trigger $logdevice $reading: $logentry   << addLog";
  }
}

1;

Wäre toll, wenn mir jemand auf die Sprünge helfen könnte
Titel: Aw: Fehlermeldung beim Speichern von 99_myUtils.pm
Beitrag von: Rince am 19 Juni 2013, 14:46:13
Ich kann grad in meiner nicht nachsehen, aber im Wiki steht es so drin:


package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
 my ($hash) = @_;
}



Bei deiner steht:

package main;
use strict;
use warnings;
use POSIX;

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



Also myUtils_Initialize($$) statt Utils_Initialize($$)


Hilft das?
Titel: Aw: Fehlermeldung beim Speichern von 99_myUtils.pm
Beitrag von: Harald am 19 Juni 2013, 15:01:51
Oh, danke Rince,

das habei ich trotz zigmaligem überprüfen übersehen :-(

Hab's gerade korrigiert, mal sehen ob's klappt.

Nochmals danke und viele Grüße

Harald

PS: Es klappt! das war's wohl. Besten Dank nochmal.
Titel: Antw:Fehlermeldung beim Speichern von 99_myUtils.pm
Beitrag von: Von-XS1-Nach-FHEM am 21 Februar 2015, 20:48:44
Ich bekomme diese Fehler:

2015.02.21 16:17:27 1: reload: Error:Modul 99_myUtils deactivated:

Kann jemand mich bitte Helfen diese raus zu bekommen?

Hier meine 99_myUtils.pm:

Zitat##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;
use POSIX;

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

# Enter you functions below _this_ line.

# Device Timeoutueberwachung ################################################
sub myTimeout($$$$) {
my ($Tdevice, $Twarning, $Terror, $Tdummy) = @_;
my $Tdev1 =  (time - time_str2num(ReadingsTimestamp($Tdevice,"state",0))) / 60;
my $Tdev2 =  Value($Tdummy);

if ($Tdev1 < $Twarning && $Tdev2 ne "ok") {fhem "set ".$Tdummy." ok"};
if ($Tdev1 >= $Twarning && $Tdev1 < $Terror && $Tdev2 ne "timeout") {fhem "set ".$Tdummy." timeout"};
if ($Tdev1 >= $Terror && $Tdev2 ne "error") {fhem "set ".$Tdummy." error"};
}

# Funktion ermittelt den Tagesnamen als String ausgehend von Heute plus einem Tagesoffset
# Aufruf : z.B. DayName(3) ermittel den Tagesnamen in 3 Tagen Sonntag->Mittwoch
#########################################################################################
sub DayName
{
  my $DayOffset = shift;
  $DayOffset %= 7;

  my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
      $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
 
  my @Wochentage = ("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
  return $Wochentage[$Wochentag + $DayOffset];
}

Titel: Antw:Fehlermeldung beim Speichern von 99_myUtils.pm
Beitrag von: Puschel74 am 21 Februar 2015, 20:58:38
Das Wiki zur 99_myUtils kennst du?
Vermutlich nicht.
Als erstes fällt mir auf das
1; am Schluss fehlt.
Schau dir doch nochmal das Wiki an und versuch es dann nochmal.
Titel: Antw:Fehlermeldung beim Speichern von 99_myUtils.pm
Beitrag von: gero am 21 Februar 2015, 20:59:16
Lies dir mal den ersten Beitrag durch:
Zitat von: Harald am 19 Juni 2013, 11:10:20
.. Ich hatte am Ende das "1;" vergessen. ... Ohne die "1;" am Ende erscheint diese Meldung nicht, aber im Log steht " reload: Error:Modul 99_myUtils deactivated:"

Gruß,
Gero


Titel: Antw:Fehlermeldung beim Speichern von 99_myUtils.pm
Beitrag von: Von-XS1-Nach-FHEM am 21 Februar 2015, 21:04:22
Nein aber jetzt schon!  8) :o :o :o :-[ :-[

Danke Danke!

99 myUtils anlegen
Mit wachsender Anzahl von eigenen Helfer-Programmen wird die Speicherung von perl-code in notify unübersichtlich. Es besteht die Möglichkeit, eine eigene Programmdatei zu erzeugen, in der mehrere kleine Programme gesammelt und dann aus diversen notify- oder at-Anweisungen aufgerufen werden.

Inhaltsverzeichnis
1 Eine neue Programmdatei erzeugen
2 Eigene Routinen einfügen
2.1 Routinen mit mehreren Parametern
2.2 Routinen ohne Parameter
3 Eigene Programmdatei laden
4 Links
Eine neue Programmdatei erzeugen
Eine ,leere' Programmdatei sieht folgendermassen aus:

package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}
1; 8) 8) 8) 8) 8) 8)
Titel: Antw:Fehlermeldung beim Speichern von 99_myUtils.pm
Beitrag von: Puschel74 am 21 Februar 2015, 21:05:11
ZitatLies dir mal den ersten Beitrag durch:
Lesen?
Oh Gott - das wollen doch die wenigsten hier.
Posten und warten bis Hilfe kommt aber lesen und verstehen ... das geht doch garnicht.
Titel: Antw:Fehlermeldung beim Speichern von 99_myUtils.pm
Beitrag von: betateilchen am 22 Februar 2015, 10:34:50
warum denn nicht einfach die myUtilsTemplate verwenden, die in fhem automatisch enthalten ist? Die kann man mit "edit files" einfach mittels "Save as" als 99_myUtils.pm abspeichern und das Grundgerüst funktioniert.

Alles weitere steht in der Vorlage - vor allem, wo man seinen eigenen Code hinschreiben muss.