Fehlermeldung beim Speichern von 99_myUtils.pm

Begonnen von Harald, 19 Juni 2013, 11:10:20

Vorheriges Thema - Nächstes Thema

Harald

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
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

Rince

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?
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Harald

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.
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

Von-XS1-Nach-FHEM

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];
}


Puschel74

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.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

gero

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


Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

Von-XS1-Nach-FHEM

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)

Puschel74

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.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!