Hallo.
Wollte mir gerade eine myUtils anlegen und habe beim speichern der Datei folgende Fehlermeldung erhalten.
Undefined subroutine &main::MyUtils_Initialize called at fhem.pl line 2157
Meine Utils sieht laut Wiki wie folgt aus
package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
1;
Habe noch keine Daten eingefügt, weil ich mit der Fehlermeldung nichts anfangen kann. Um die Datei zu erstellen habe ich in Fhem die myUtilsTemplate.pm geüffnet und mit save as unter 99_myUtils abgespeichert.
Weiß jemand Rat?
Danke.
Zitat von: ErzGabriel am 29 September 2016, 18:26:00
und mit save as unter 99_myUtils abgespeichert.
MyUtils oder myUtils?
Habe es schon mit beiden schreibweisen probiert, der Fehler ist bei beiden der gleiche.
hast du sie als myUtils abgespeichert oder 99_myUtils.pm?
Ich habe es einmal als:
99_myUtils.pm
und als
99_MyUtils.pm
probiert. Die Datei immer nur umbenannt, das keine zwei Dateien entstehn. Der Fehler ist jedesmal gleich.
Undefined subroutine &main::MyUtils_Initialize called at fhem.pl line 2157
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
1;
Fehler bleibt, auch bei anpassen der Zeile mit M oder m.
Ich kann den Fehler nicht nachvollziehen. Öffne einfach nochmal die myUtilsTemplate.pm und mache genau das was darin steht.
Hallo ErzGabriel,
Es gibt doch aber die Datei myUtilsTemplate.pm
Erreichbar in der FHEM Oberfläche bei Edit files.
die öffnet man und sagt oben Save as und tippt dahinter 99_myUtils.pm
Damit geht man sicher, dass kein Mist in der neuen Datei steht.
Und genauso steht es im Wiki (http://www.fhemwiki.de/wiki/99_myUtils_anlegen#Eine_neue_Programmdatei_erzeugen)
Die Datei die Du oben gepostet hast sieht nicht so aus wie die Templatedatei. Die hat z.B. keine Leerzeichen am Zeilenanfang
##############################################
# $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.
1;
Gruß Otto
Hallo Otto.
Das war es, habe die 99_myUtils.pm gelöscht, System neu gestartet und es so gemacht wie Du gesagt hast. Keine Fehlermeldung beim speichern.
Ich behaupte mal, da ist dann ein Fehler im Wiki, weil hatte mir den Text von da mit Copy & Paste rüber geholt.
Danke.
Zitat Wiki
ZitatEine neue Programmdatei erzeugen
Fhem enthält seit Updatestand 01/2015 eine Vorlage 'myUtilsTemplate.pm', die zur Erzeugung der Programmdatei genutzt werden sollte. Vorgehensweise:
Fhem-Menüpunkt Edit files anklicken
Weblink 'myUtilsTemplate.pm' anklicken
Im Textfeld hinter 'Save as' den Dateinamen '99_myUtils.pm' für die Programmdatei eintragen
Hinweis: Wenn ein anderer Dateiname angegeben wird, muss der Name Initialize-Routine entsprechend angepasst werden (siehe nachfolgende Erläuterung zur Grundstruktur unter Nr. 3)
Save as anklicken
Also ich finde das passt. Das weiter unten, wo Du dann kopiert hast ist doch nur Erklärung.
Gruß Otto
Hallo ihr Experten, ich musste nach einem SD Karten Defekt mein FHEM neu aufsetzen, leider keine Sicherung erstellt .
Jetzt will ich wie in der Ref beschrieben die 99_myUtils.pm anlegen, bekomme aber immer die Felermeldung:
"Undefined subroutine &main::myUtilsTemplate_Initialize called at fhem.pl line 2725."
Das System ist neu, FHEM hab ich neu inst und aktuallisiert. Ich hab schon verschiedene groß / klein Schreibungen versucht ...immer das gleiche.
Kann das noch mit irgendwelchen Berechigungen zu tun haben ? Gruß Arno
Vermute den Punkt drei hier im Wiki (https://wiki.fhem.de/wiki/99_myUtils_anlegen#Eine_neue_Programmdatei_erzeugen) hast du bisher übergangen ?
edit:
99_myUtils.pm vs. myUtilsTemplate
ist aber auch genau über deinem Beitrag schonmal erwähnt worden.
Ouhh ja das war schon mal ein heisser Tipp....das hatte ich überlesen. Danke.
Jetzt kommt dann auch schon der nächste Fehler..
Wenn ich das Beispiel aus dem Wiki übernehme und die Datei 99_myUtils.pm nenne und nach sub 99_myUtils_Initialize($$)..eintrage dann kommt :
"Illegal declaration of anonymous subroutine at ./FHEM/99_myUtils.pm line 6."
ich bedank mich schonmal im Voraus...Toll wie hier einem geholfen wird ..echt suppi !!!
Gruß Arno
Zitat
...das hatte ich überlesen...
und nach sub 99_myUtils_Initialize($$)..eintrage
Du hast immer noch nicht richtig gelesen wie genau der Name der myUtils bei der Initialize-Routine anzugeben ist.
Die 99 gibst da nicht mit an.
Sowas blödes....Danke Dir..