Hi ich habe das in 99pm eingefügt (nach Anleitung von AnWass)
sub checkAllFritzMACpresent($) {
# Benötigt: nur die zu suchende MAC ($MAC),
# Es werden alle Instanzen vom Type FRITZBOX abgefragt
#
# Rückgabe: 1 = Gerät gefunden
# 0 = Gerät nicht gefunden
my ($MAC) = @_;
# Wird in keiner Instanz die MAC Adresse gefunden bleibt der Status 0
my $Status = 0;
$MAC =~ tr/:/_/;
$MAC = "mac_".uc($MAC);
my @FBS = devspec2array("TYPE=FRITZBOX");
foreach( @FBS ) {
my $StatusFritz = ReadingsVal($_, $MAC, "weg");
if ($StatusFritz eq "weg") {
} elsif ($StatusFritz eq "inactive") {
} else {
# Reading existiert, Rückgabewert ist nicht "inactive", also ist das Gerät am Netzwerk angemeldet.
$Status = 1;
es kommt aber:
Zitat
syntax error at ./FHEM/99_myUtils.pm line 29, near "sub checkAllFritzMACpresent($) " Can't use global @_ in "my" at ./FHEM/99_myUtils.pm line 35, near "= @_" syntax error at ./FHEM/99_myUtils.pm line 51, near "$Status }"
ich seh aber gar keine Linie 29 oder 35 oder 51. Die Stellen habe ich, denke ich trotzdem gefunden. Aber was man mir damit sagen will? Ich habe auch sehr wenig Ahnung b.z.w. gar keine vom Code, denke aber das AnWass keinen Fehler gemacht hat?
AM[/code]
Hallo AlterMann,
bitte mal den gesamten Code aus FHEM/99_myUtils.pm einfügen.
Aktuell fehlen mindestens zwei schliessende, geschweifte Klammern.
Abhängig davon was *vor* und *nach* der angegebenen Funktion steht, kann man dann sicher den Fehler identifizieren.
Viele Grüße
Marv
Danke
das ist der gesamte Text..http://anwass.de/anwesenheitserkennung-von-smartphones-mit-fritzbox-und-fhem/
Hier noch mal direkt kopiert
sub checkAllFritzMACpresent($) {
# Benötigt: nur die zu suchende MAC ($MAC),
# Es werden alle Instanzen vom Type FRITZBOX abgefragt
#
# Rückgabe: 1 = Gerät gefunden
# 0 = Gerät nicht gefunden
my ($MAC) = @_;
# Wird in keiner Instanz die MAC Adresse gefunden bleibt der Status 0
my $Status = 0;
$MAC =~ tr/:/_/;
$MAC = "mac_".uc($MAC);
my @FBS = devspec2array("TYPE=FRITZBOX");
foreach( @FBS ) {
my $StatusFritz = ReadingsVal($_, $MAC, "weg");
if ($StatusFritz eq "weg") {
} elsif ($StatusFritz eq "inactive") {
} else {
# Reading existiert, Rückgabewert ist nicht "inactive", also ist das Gerät am Netzwerk angemeldet.
$Status = 1;
}
}
return $Status
}
so ist es auch in 99pm hatte die letzten drei Zeilen oben nicht mit drin, die sind aber da
AM
Hi,
keine Ahnung ob sich daran etwas geändert hat, aber früher war es immer wichtig, dass die Zeilen entsprechend des folgenden codes erhalten geblieben sind, bzw. vorhanden waren:
##############################################
# $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.
Hier deine Subdefinition
.
.
.
1;
LG Thotti70
Hallo AlterMann,
wie Thotti70 schreibt, ist der Kopf bis "Hier deine Subdefinition" sehr wichtig und auch die "1;" am Ende der Datei!
Ich denke, dass damit die originale Fehlermeldung beseitigt wird.
Viel Erfolg :)
Marv
Ja ich Dussel
ich habe eine alte Anweisung gelöscht und dann zuviel vom Kopf! Jetzt habe ich das Beispiel von Euch. Ich wollte vorher eigentlich 99pm löschen und neu erstellen aber war dann zu faul!
Danke für die schnelle Hilfe
AM