gelöst Anwesenheit über Fritzbox und MAC Abfrage

Begonnen von AlterMann, 07 April 2019, 15:03:20

Vorheriges Thema - Nächstes Thema

AlterMann

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]
Ich bin Techniker und Anwender, kein Programmierer und genau deshalb will ich in FHEM einsteigen. Bald hab ich viel Zeit und Unkraut jäten is nich mein Ding.....

marv99

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

AlterMann

#2
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
Ich bin Techniker und Anwender, kein Programmierer und genau deshalb will ich in FHEM einsteigen. Bald hab ich viel Zeit und Unkraut jäten is nich mein Ding.....

thotti70

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

marv99

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

AlterMann

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
Ich bin Techniker und Anwender, kein Programmierer und genau deshalb will ich in FHEM einsteigen. Bald hab ich viel Zeit und Unkraut jäten is nich mein Ding.....