FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: AlterMann am 07 April 2019, 15:03:20

Titel: gelöst Anwesenheit über Fritzbox und MAC Abfrage
Beitrag von: AlterMann am 07 April 2019, 15:03:20
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]
Titel: Antw:Anwesenheit über Fritzbox und MAC Abfrage
Beitrag von: marv99 am 07 April 2019, 15:26:53
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
Titel: Antw:Anwesenheit über Fritzbox und MAC Abfrage
Beitrag von: AlterMann am 07 April 2019, 15:41:42
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
Titel: Antw:Anwesenheit über Fritzbox und MAC Abfrage
Beitrag von: thotti70 am 07 April 2019, 15:58:28
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
Titel: Antw:Anwesenheit über Fritzbox und MAC Abfrage
Beitrag von: marv99 am 07 April 2019, 16:08:48
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
Titel: gelöst Antw:Anwesenheit über Fritzbox und MAC Abfrage
Beitrag von: AlterMann am 07 April 2019, 16:32:00
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