HI!!
Ich versuche mich mit dem PRESENCE Modul und der erkennung der mac Adressen im Fritzbos Natzwerk.
Ich habe die 99_myUtils ergäntzt und ein PRESENCE Define erstellt. Leider bekomme ich kein Handy angezeigt, bzw keine Verbindung...
Kann bitte jemand helfen wo mein Fehler ist? Würde mich sehr über Hilfe freuen!
HIer die ergänzung des 99_myUtils
# Enter you functions below _this_ line.
######## Presence, nach vorhandenen ip/mac in der Fritzbox suchen ############
sub checkFritzMACpresent($$) {
# Benötigt: Name der zu testenden Fritzbox ($Device),
# zu suchende MAC ($MAC),
# Rückgabe: 1 = Gerät gefunden
# 0 = Gerät nicht gefunden
my ($Device, $MAC) = @_;
my $Status = 0;
$MAC =~ tr/:/_/;
$MAC = "mac_".uc($MAC);
my $StatusFritz = ReadingsVal($Device, $MAC, "weg");
if ($StatusFritz eq "weg") {
Log 1, ("checkFritzMACpresent ($Device): $MAC nicht gefunden, abwesend.");
$Status = 0;
} elsif ($StatusFritz eq "inactive") {
Log 1, ("checkFritzMACpresent ($Device): $MAC ist >inactive<, also abwesend.");
$Status = 0;
} else {
# Reading existiert, Rückgabewert ist nicht "inactive", also ist das Gerät per WLAN angemeldet.
Log 1, ("checkFritzMACpresent ($Device): $MAC gefunden, Gerät heißt >$StatusFritz<.");
$Status = 1;
}
return $Status
}
und ein List vom meinem Presende define:
ZitatInternals:
DEF function {checkFritzMACpresent("MyBasis","34:69:87:b7:ad:ee")} 60 60
INTERVAL_NORMAL 60
INTERVAL_PRESENT 60
MODE function
NAME DavidHandy
NOTIFYDEV global
NR 133
NTFY_ORDER 50-DavidHandy
STATE absent
TYPE PRESENCE
READINGS:
2018-03-29 11:53:42 model function
2018-03-29 12:01:43 presence absent
2018-03-29 12:01:43 state absent
helper:
ABSENT_COUNT 0
call {checkFritzMACpresent("MyBasis","34:69:87:b7:ad:ee")}
Attributes:
room PRESENCE
ZitatPresence, nach vorhandenen ip/mac in der Fritzbox suchen
Sind die Handys dort aufgelistet?
Hi,
deine 99_myUtils ist ansonsten "rund"? Hast Du da noch mehr drin was funktioniert? -> https://wiki.fhem.de/wiki/99_myUtils_anlegen
Was steht im FHEM Log?
In deinem Device MyBasis ist die Mac sichtbar? Eventuell list MyBasis
Gruß Otto
Ähm... Muss ich denn MyBasis auch anlegen? Das ist meine Fritzbox...
In der Fritzbox ist natürlich mein Handy mit der Mac Adersse und der IP vorhanden.
Habe mich an diese Anleitung gehalten: https://wiki.fhem.de/wiki/FRITZBOX#Anwesenheitserkennung_per_regelm.C3.A4.C3.9Figer_Abfrage_.C3.BCber_das_PRESENCE_Modul (https://wiki.fhem.de/wiki/FRITZBOX#Anwesenheitserkennung_per_regelm.C3.A4.C3.9Figer_Abfrage_.C3.BCber_das_PRESENCE_Modul)
Meine Utils sind nur mit einem email Modul belegt:
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.
######## Presence, nach vorhandenen ip/mac in der Fritzbox suchen ############
sub checkFritzMACpresent($$) {
# Benötigt: Name der zu testenden Fritzbox ($Device),
# zu suchende MAC ($MAC),
# Rückgabe: 1 = Gerät gefunden
# 0 = Gerät nicht gefunden
my ($Device, $MAC) = @_;
my $Status = 0;
$MAC =~ tr/:/_/;
$MAC = "mac_".uc($MAC);
my $StatusFritz = ReadingsVal($Device, $MAC, "weg");
if ($StatusFritz eq "weg") {
Log 1, ("checkFritzMACpresent ($Device): $MAC nicht gefunden, abwesend.");
$Status = 0;
} elsif ($StatusFritz eq "inactive") {
Log 1, ("checkFritzMACpresent ($Device): $MAC ist >inactive<, also abwesend.");
$Status = 0;
} else {
# Reading existiert, Rückgabewert ist nicht "inactive", also ist das Gerät per WLAN angemeldet.
Log 1, ("checkFritzMACpresent ($Device): $MAC gefunden, Gerät heißt >$StatusFritz<.");
$Status = 1;
}
return $Status
}
######## DebianMail Mail auf dem RPi versenden ############
sub
DebianMail
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $attach = shift;
my $ret = "";
my $sender = "myhome\XXXXXXX";
my $konto = "myhome\XXXXXXXX";
my $passwrd = "XXXXXXX";
my $provider = "smtp.1und1.de:587";
Log 1, "sendEmail RCP: $rcpt";
Log 1, "sendEmail Subject: $subject";
Log 1, "sendEmail Text: $text";
Log 1, "sendEmail Anhang: $attach";
$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -a $attach -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=auto -o message-charset=utf-8);
$ret =~ s,[\r\n]*,,g; # remove CR from return-string
Log 1, "sendEmail returned: $ret";
}
1;
ZitatMuss ich denn MyBasis auch anlegen? Das ist meine Fritzbox
:o :o :o
Und was übergibst Du Deiner Funktion?
sub checkFritzMACpresent($$) {
# Benötigt: Name der zu testenden Fritzbox ($Device),
# zu suchende MAC ($MAC),
# Rückgabe: 1 = Gerät gefunden
# 0 = Gerät nicht gefunden
Ich habe nur Deinen Link angeklickt.
Du hast kein Fritzbox-Device und übergibst der Funktion was? 8)
Zitat von: misux am 29 März 2018, 12:56:32
Ähm... Muss ich denn MyBasis auch anlegen? Das ist meine Fritzbox...
Und Dein FritzBox Gerät heisst MyBasis?
Die Fritzbox muss als FHEM Gerät vorhanden sein!
Deine 99_myUtils ist in Ordung, ich wollte nur sichergehen, dass die Sub aufrufbar ist.
BTW: Du kannst auch die zweite Routine nehmen, die sucht automatisch alle vorhandenen Fritzbox Geräte ab.
Gruß Otto
Toll wäre es wenn Du die Frage von Otto und mir beantworten würdest.
Ein list von MyBasis.
Der Nachweis, dass das Handy dort gelistet ist.
Wie rufst Du checkFritzMACpresent($$) auf?
:-\
Puh... Jetzt bin ich fertig... Also im geistigen Sinne...
Dann verstehe ich die Anleitung offensichtlich nicht... Irgendwie kapier ich nicht was da wie eingetragen sein soll:
sub checkFritzMACpresent($$) {
# Benötigt: Name der zu testenden Fritzbox ($Device),
# zu suchende MAC ($MAC),
# Rückgabe: 1 = Gerät gefunden
# 0 = Gerät nicht gefunden
Also für einen Anfänger ist es etwas unkomplett geschrieben die Anleitung. Und das die Fritzbox auch als device angelegt werden muss habe ich da auch nicht gefunden...
ZitatUnd Dein FritzBox Gerät heisst MyBasis?
Die Fritzbox muss als FHEM Gerät vorhanden sein!
Deine 99_myUtils ist in Ordung, ich wollte nur sichergehen, dass die Sub aufrufbar ist.
BTW: Du kannst auch die zweite Routine nehmen, die sucht automatisch alle vorhandenen Fritzbox Geräte ab.
Ja, meine Fritzbox heist MyBasis.
OKAY, nun stehe ich aufm Schlauch... :-[
Zitat aus der Anleitung
ZitatFritzboxen und die FRITZ!WLAN Repeater speichern den Status angemeldeter Geräte. Dieser Status lässt sich mittels des FRITZBOX Moduls über Readings abfragen, die das Format mac_AA_AA_AA_AA_AA_AA haben und die MAC-Adressen der jeweils angemeldeten Geräte (AA:AA:AA:AA:AA:AA) enthalten. Das Reading existiert, wenn das Gerät angemeldet ist. Wenn das Gerät abgemeldet ist, existiert es nicht mehr. Es gibt auch noch den Zwischenstatus "inactive", der anscheinend gesetzt wird, bevor das Reading gelöscht wird.
Du hast ein define MyBasis FRITZBOX <ip der fritzbox> in deinem FHEM?
Verdammt! Habe es als mein Handy verstanden... Ich dachte das ist mein Handy... Also DavidHandy.. Oh mann....
Okay, ich muss jetzt mit Sohnemann zum Doc, dann mach ich das nochmal richtig ::)
Wie gesagt: nimm einfach die zweite Variante (https://wiki.fhem.de/wiki/FRITZBOX#Anwesenheitserkennung_.C3.BCber_mehrere_Fritzboxen_oder_AVM_Repeater_und_Fritzbox), die sucht einfach nach der Fritzbox. Die trotzdem als FHEM Gerät da sein muss!
Hintergrund: Beide Lösungsvarianten sind in zeitlicher Abfolge entstanden und dokumentiert. Eigentlich könnte die erste weg ;)
Gruß Otto
Entweder
Du schreibst hier für mich zu wenig Infomationen.
Oder
Bei Dir herrscht "gefährliches" Halbwissen (Dein System würde ich gern mal kennenlernen)
am wahrscheinlichsten ist: Ich bin das Problem ???
Zitat von: rabehd am 29 März 2018, 14:55:50
Entweder
Du schreibst hier für mich zu wenig Infomationen.
Oder
Bei Dir herrscht "gefährliches" Halbwissen (Dein System würde ich gern mal kennenlernen)
am wahrscheinlichsten ist: Ich bin das Problem ???
Oder es ist beides... oder alle 3... ;D
nee, ich habe die Anleitung falsch verstanden... Ich habe nicht die Fritzbox define`d sondern mein handy...
So nun habe ich die Fritzbox drin... und wider Probleme... Ich habe in 99_myUtils die 2te variante eingetragen... Ich habe es aber auch richtig verstanden: beim Eintrag der 99_myUtils muss ich NICHTS ändern oder?
Hier ein List der Fritzbox:
Internals:
APICHECKED 1
CFGFN
DEF 192.168.1.254
HOST 192.168.1.254
INTERVAL 300
LUAQUERY 1
M3U_LOCAL ./www/images/MyBasis.m3u
M3U_URL unknown
MODEL FRITZ!Box 7590 (UI)
NAME MyBasis
NR 3706
PERL Modul functionality limited because of missing perl modules: Net::Telnet Soap::Lite
REMOTE 1
STATE Didn't get a session ID
TELNET -1
TR064 1
TYPE FRITZBOX
WEBCM 0
READINGS:
2018-03-29 16:15:15 box_fwVersion 154.06.92
2018-03-29 16:15:15 box_model FRITZ!Box 7590 (UI) [1und1]
2018-03-29 16:15:24 lastReadout Didn't get a session ID
2018-03-29 16:15:24 state Didn't get a session ID
fhem:
LOCAL 0
definedHost 192.168.1.254
is_double_wlan -1
lastHour 0
modulVersion $Date: 2018-02-27 18:58:54 +0100 (Tue, 27 Feb 2018) $
sidTime 0
helper:
TimerCmd MyBasis.Cmd
TimerReadout MyBasis.Readout
Attributes:
room PRESENCE
HIer mein Handy:
Internals:
DEF function {checkAllFritzMACpresent("34:69:87:b7:ad:ee")} 60 60
INTERVAL_NORMAL 60
INTERVAL_PRESENT 60
MODE function
NAME DavidHandy
NOTIFYDEV global
NR 133
NTFY_ORDER 50-DavidHandy
STATE absent
TYPE PRESENCE
READINGS:
2018-03-29 16:10:26 model function
2018-03-29 16:17:27 presence absent
2018-03-29 16:17:27 state absent
helper:
ABSENT_COUNT 0
call {checkAllFritzMACpresent("34:69:87:b7:ad:ee")}
Attributes:
room PRESENCE
Zitatsub checkFritzMACpresent($$) {
# Benötigt: Name der zu testenden Fritzbox ($Device),
# zu suchende MAC ($MAC),
Du übergibst aber nur die MAC-Adresse.
Zitat{checkAllFritzMACpresent("34:69:87:b7:ad:ee")}
Augen auf:
Didn't get a session ID
Passwort gesetzt?
@rabehd - das ist bei der zweiten Version richtig!
Aber die Fritzbox in FHEM muss erstmal funktionieren, darauf baut ja der Rest auf.
Modul functionality limited because of missing perl modules: Net::Telnet Soap::Lite
die meldung ist auch nicht unwichtig.
Zitat von: Otto123 am 29 März 2018, 16:29:32
Augen auf:
Didn't get a session ID
Passwort gesetzt?
Da war der Hacken...
Nu bekomme ich auch n schönes REading aber leider ohne die Handy`s... Vielleicht ist es wichtig zu wissen das ich einen Fritz! Reapeater nutze der als "Mesch" oder sowas eingerichtet ist... der ist auch im Reading...und die handys sehe ich auch im reapeater, aber nicht in der Fritzbox...
Hier :
Internals:
APICHECKED 1
DEF 192.168.1.254
HOST 192.168.1.254
INTERVAL 300
LUAQUERY 1
M3U_LOCAL ./www/images/MyBasis.m3u
M3U_URL http://192.168.1.61:8084/fhem/images/MyBasis.m3u
MODEL FRITZ!Box 7590 (UI)
NAME MyBasis
NR 135
PERL Modul functionality limited because of missing perl modules: Net::Telnet Soap::Lite
REMOTE 1
STATE WLAN: on gWLAN: off
TELNET -1
TR064 1
TYPE FRITZBOX
WEBCM 0
READINGS:
2018-03-29 16:53:13 alarm1 Wecker 1
2018-03-29 16:53:13 alarm1_state off
2018-03-29 16:53:13 alarm1_target FON 1
2018-03-29 16:53:13 alarm1_time 00:00
2018-03-29 16:53:13 alarm1_wdays daily
2018-03-29 16:53:13 alarm2 Wecker 2
2018-03-29 16:53:13 alarm2_state off
2018-03-29 16:53:13 alarm2_target FON 1
2018-03-29 16:53:13 alarm2_time 00:00
2018-03-29 16:53:13 alarm2_wdays daily
2018-03-29 16:53:13 alarm3 Wecker 3
2018-03-29 16:53:13 alarm3_state off
2018-03-29 16:53:13 alarm3_target FON 1
2018-03-29 16:53:13 alarm3_time 00:00
2018-03-29 16:53:13 alarm3_wdays daily
2018-03-29 16:53:13 box_connect 5
2018-03-29 16:53:13 box_cpuTemp 58
2018-03-29 16:53:13 box_dect on
2018-03-29 16:53:13 box_fwVersion 154.06.92
2018-03-29 16:53:13 box_guestWlan off
2018-03-29 16:53:13 box_guestWlanCount 0
2018-03-29 16:53:13 box_guestWlanRemain 0
2018-03-29 16:53:13 box_ipExtern 8xxxxxxxxxx7
2018-03-29 16:48:03 box_model FRITZ!Box 7590 (UI) [1und1]
2018-03-29 16:53:13 box_moh default
2018-03-29 16:53:13 box_powerRate 27
2018-03-29 16:53:13 box_rateDown 29.708
2018-03-29 16:53:13 box_rateUp 13.313
2018-03-29 16:53:13 box_stdDialPort allFons
2018-03-29 16:53:13 box_tr064 on
2018-03-29 16:53:13 box_tr069 on
2018-03-29 16:53:13 box_wlanCount 6
2018-03-29 16:53:13 box_wlan_2.4GHz on
2018-03-29 16:53:13 box_wlan_5GHz on
2018-03-29 16:53:13 dect1 Wohnzimmer
2018-03-29 16:53:13 dect1_fwVersion 3.92
2018-03-29 16:53:13 dect1_intRingTone HandsetDefault
2018-03-29 16:53:13 dect1_intern 610
2018-03-29 16:53:13 dect1_manufacturer AVM
2018-03-29 16:53:13 dect1_model C4
2018-03-29 16:53:13 dect1_radio Deutschlandfunk
2018-03-29 16:53:13 dect2 Dominic
2018-03-29 16:53:13 dect2_fwVersion 3.92
2018-03-29 16:53:13 dect2_intRingTone HandsetDefault
2018-03-29 16:53:13 dect2_intern 611
2018-03-29 16:53:13 dect2_manufacturer AVM
2018-03-29 16:53:13 dect2_model C4
2018-03-29 16:53:13 dect2_radio Deutschlandfunk
2018-03-29 16:53:13 fon1 FAX
2018-03-29 16:53:13 fon1_intern 1
2018-03-29 16:53:13 fon1_out SIP4
2018-03-29 16:53:13 fon2 Telefon
2018-03-29 16:53:13 fon2_intern 2
2018-03-29 16:53:13 lastReadout 281 values captured in 1.00 s
2018-03-29 16:53:13 mac_00_06_78_26_28_A4 0006782628A4 (LAN4, 1 Gbit/s)
2018-03-29 16:53:13 mac_00_11_32_3B_0E_99 BackupStation (LAN4, 1 Gbit/s)
2018-03-29 16:53:13 mac_00_11_32_4B_14_9E VideoStation (LAN4, 1 Gbit/s)
2018-03-29 16:53:13 mac_00_1E_C0_44_16_1A LMAir (WLAN, 54 / 54 Mbit/s, -64)
2018-03-29 16:53:13 mac_00_21_04_FB_12_A9 SiemensDX600A (LAN4, 1 Gbit/s)
2018-03-29 16:53:13 mac_08_EC_A9_BB_B3_98 android-fb8608cc54c14f50 (WLAN, 173 / 117 Mbit/s, -68)
2018-03-29 16:53:13 mac_30_75_12_DE_70_A2 android-159f31cd61ce5651 (WLAN, 468 / 351 Mbit/s, -75)
2018-03-29 16:53:13 mac_34_D2_70_5E_DE_59 dp-701500E1
2018-03-29 16:53:13 mac_3A_31_C4_BF_E2_CD fritz.repeater (WLAN)
2018-03-29 16:53:13 mac_3C_EF_8C_C8_06_DF 2F023B2PAA00228 (LAN4, 1 Gbit/s)
2018-03-29 16:53:13 mac_40_D2_8A_F7_95_87 Nintendo-Wii-U
2018-03-29 16:53:13 mac_44_4E_6D_3C_49_1A fritz.box
2018-03-29 16:53:13 mac_4C_11_BF_ED_4E_23 1L01768PAA00013 (LAN4, 1 Gbit/s)
2018-03-29 16:53:13 mac_4C_11_BF_ED_4E_A2 1L01768PAA00140 (LAN4, 1 Gbit/s)
2018-03-29 16:53:13 mac_4C_11_BF_ED_4E_C3 1L01768PAA00173 (LAN4, 1 Gbit/s)
2018-03-29 16:53:13 mac_60_AF_6D_62_99_FD FHEMTablet (WLAN, 433 / 263 Mbit/s, -72)
2018-03-29 16:53:13 mac_84_9F_B5_48_D6_D3 PC-192-168-1-32
2018-03-29 16:53:13 mac_8C_3A_E3_85_5C_27 android-b48790740ab5c786
2018-03-29 16:53:13 mac_B8_27_EB_03_CC_D6 raspberrypi (LAN4, 1 Gbit/s)
2018-03-29 16:53:13 mac_D4_9A_20_DD_8B_5A iMac (LAN4, 1 Gbit/s)
2018-03-29 16:53:13 mac_E0_50_8B_0A_D6_ED 2H05899PAA00780 (LAN4, 1 Gbit/s)
2018-03-29 16:53:13 mac_E0_50_8B_0E_F7_AF 2K0380EPAA00833 (LAN4, 1 Gbit/s)
2018-03-29 16:53:13 mac_FC_A1_83_AA_3F_9F amazon-2213e5459 (WLAN, 72 / 72 Mbit/s, -64)
2018-03-29 16:53:13 radio00 Deutschlandfunk
2018-03-29 16:53:13 radio01 DRadio Kultur
2018-03-29 16:53:13 radio02 DRadio Wissen
2018-03-29 16:53:13 radio03 Eins Live Diggi
2018-03-29 16:53:13 radio04 radioeins
2018-03-29 16:53:13 radio05 Radio Fritz
2018-03-29 16:53:13 radio06 Sputnik Livestream
2018-03-29 16:53:13 radio07 Swissgroove
2018-03-29 16:53:13 state WLAN: on gWLAN: off
2018-03-29 16:53:13 tam1 Anrufbeantworter
2018-03-29 16:53:13 tam1_newMsg 0
2018-03-29 16:53:13 tam1_oldMsg 0
2018-03-29 16:53:13 tam1_state off
2018-03-29 16:53:13 user01 (guest)
2018-03-29 16:53:13 user01_thisMonthTime 0:00
2018-03-29 16:53:13 user01_todaySeconds 0
2018-03-29 16:53:13 user01_todayTime 0:00
2018-03-29 16:53:13 user01_type Guest
2018-03-29 16:53:13 userTicket01 367293
fhem:
LOCAL 0
definedHost 19xxxxxxxxx54
is_double_wlan 1
lastHour 0
modulVersion $Date: 2018-02-27 18:58:54 +0100 (Tue, 27 Feb 2018) $
radioCount 40
sid 2acxxxxxxxxxxe4fd
sidTime 1522335193
610:
brand AVM
id 1
model C4
userId 1
611:
brand AVM
id 2
model C4
userId 2
landevice:
PC-xxxxxxxxxx-D3
192.168.1.1 iMac
192.168.1.10 BackupStation
192.168.1.11 VideoStation
192.168.1.20 Nintendo-Wii-U
192.168.1.201 1L01768PAA00173
192.168.1.202 1L01768PAA00140
192.168.1.203 2F023B2PAA00228
192.168.1.204 1L01768PAA00013
192.168.1.205 2K0380EPAA00833
192.168.1.206 2H05899PAA00780
192.168.1.207 Uxxxxx
192.168.1.208 Uxxxxxxx
192.168.1.21 amazon-9e78c9772
192.168.1.22 DavidHandy
192.168.1.23 android-159f31cd61ce5651
192.168.1.24 CamTablet
192.168.1.25 DOMINIC
192.168.1.251 fritz.repeater
192.168.1.254 fritz.box
192.168.1.26 FHEMTablet
192.168.1.27 android-b48790740ab5c786
192.168.1.28 dp-701500E1
192.168.1.29 android-fb8608cc54c14f50
192.168.1.30 ChrissiHandy
192.168.1.31 DAVID-PC--David
192.168.1.32 PC-192-168-1-32
192.168.1.33 PC-192-168-1-33
192.168.1.36 amazon-07377889b
192.168.1.47 amazon-ab2e70821
192.168.1.5 HIMEDIA-TV-Box-5
192.168.1.50 HP705A0FF77B4A
192.168.1.55 0006782628A4
192.168.1.57 SiemensDX600A
192.168.1.58 amazon-2213e5459
192.168.1.60 LG--webOS-TV-SJ8509
192.168.1.61 raspberrypi
192.168.1.77 LMAir
landevice6921 fritz.box
landevice6923 dp-701500E1
landevice6924 Marantz-SR7009
landevice6925 Uxxxxxxx
landevice6926 Uxxxxxxxx
landevice6927 iMac
landevice6928 2H05899PAA00780
landevice6929 SiemensDX600A
landevice6933 ChrissiHandy
landevice6945 FHEMTablet
landevice6946 LG--webOS-TV-SJ8509
landevice6950 VideoStation
landevice6954 CamTablet
landevice6985 amazon-9e78c9772
landevice6987 android-fb8608cc54c14f50
landevice6988 amazon-2213e5459
landevice6989 HUAWEI-BTV
landevice6990 Nintendo-Wii-U
landevice6991 HIMEDIA-TV-Box-5
landevice6992 amazon-ab2e70821
landevice6994 DOMINIC
landevice6995 DAVID-PC--David
landevice6996 android-b48790740ab5c786
landevice7000 HP705A0FF77B4A
landevice7001 PC-192-168-1-33
landevice7005 amazon-07377889b
landevice7016 0006782628A4
landevice7021 dp-701500E1
landevice7027 Nintendo-Wii-U
landevice7029 PC-192-168-1-32
landevice7929 DavidHandy
landevice7936 fritz.repeater
landevice7939 raspberrypi
landevice7942 BackupStation
landevice7945 android-159f31cd61ce5651
landevice7955 LMAir
landevice7956 1L01768PAA00173
landevice7957 1L01768PAA00140
landevice7958 2F023B2PAA00228
landevice7959 1L01768PAA00013
landevice7960 2K0380EPAA00833
radio:
0 Deutschlandfunk
1 DRadio Kultur
10
11
12
13
14
15
16
17
18
19
2 DRadio Wissen
20
21
22
23
24
25
26
27
28
29
3 Eins Live Diggi
30
31
32
33
34
35
36
37
38
39
4 radioeins
5 Radio Fritz
6 Sputnik Livestream
7 Swissgroove
8
9
wlanDevice:
00_1E_C0_44_16_1A:
rssi -64
speed 54
speed_rx 54
00_24_D6_6C_96_E4:
rssi 0
speed 0
speed_rx 0
08_EC_A9_BB_B3_98:
rssi -68
speed 173
speed_rx 117
20_D3_90_C6_91_39:
rssi 0
speed 0
speed_rx 0
30_75_12_DE_70_A2:
rssi -75
speed 468
speed_rx 351
34_69_87_B7_AD_EE:
rssi 0
speed 0
speed_rx 0
34_69_87_FC_22_45:
rssi 0
speed 0
speed_rx 0
34_D2_70_5E_DE_59:
rssi 0
speed 0
speed_rx 0
56_31_C4_BF_E2_CD:
rssi -68
speed 117
speed_rx 78
60_AF_6D_62_99_FD:
rssi -72
speed 433
speed_rx 263
6C_56_97_5D_14_83:
rssi 0
speed 0
speed_rx 0
84_9F_B5_48_D6_D3:
rssi 0
speed 0
speed_rx 0
FC_A1_83_AA_3F_9F:
rssi -64
speed 72
speed_rx 72
helper:
TimerCmd MyBasis.Cmd
TimerReadout MyBasis.Readout
Attributes:
room PRESENCE
Dann musst Du den Fritz! Reapeater noch mit dem Fritzbox Modul einrichten.
Zweite Definition. ;)
Aber ich will Dir auch sagen: besonders gut, je nach Handy Modell, läuft diese Geschichte nicht. Stichwort Wlan Energieeinsparung beim Smartphone.
Zitat von: frank am 29 März 2018, 16:33:02
Modul functionality limited because of missing perl modules: Net::Telnet Soap::Lite
die meldung ist auch nicht unwichtig.
Da sowieso eigentlich alles nur noch über tr064 geht, spielt das zumindest eine untergeordnete Rolle ;)
Zitat von: Otto123 am 29 März 2018, 16:59:25
Dann musst Du den Fritz! Reapeater noch mit dem Fritzbox Modul einrichten.
Zweite Definition. ;)
Oh mann... warum steht das nirgends? Entweder hab ich es mal wieder überlesen oder es steht wirklich nirgends...
OKay, ich lege dann mal den Reapeter auch an... bin gespannt wie es läuft... wenns nicht gut funktioniert werde ich dann auch die von dir vorgeschlagene Bluetooth Methode testen...
Weil die Welt gegen Dich ist! 8)
Was soll denn wo stehen? Du willst readings von einem FRITZBOX Device auswerten und Du hast zwei davon, in der einen stehen "die" Geräte in der anderen stehen Andere und wenn Du Pech hast in beiden Keine oder Alle.
Zitat
ZitatExistiert ein AVM Repeater im Netzwerk, kann der als eigenständiges Gerät mit FRITZBOX definiert werden. WLAN Geräte an der Fritzbox werden in der Instanz der Fritzbox gelistet und WLAN Geräte am Repeater in der Repeater Instanz. Um trotzdem die Anwesenheit im Netzwerk einfach zu erkennen, muss die Subroutine in 99_myUtils.pm abgewandelt werden.
Gruß Otto
Zitat von: Otto123 am 29 März 2018, 18:22:36
Weil die Welt gegen Dich ist! 8)
;D
Nicht immer! Es gibt ja noch EUCH! Aber wenn man die Anleitungen für NOOBS verständlicher schreiben würde, müsstet ihr weniger Nerven verschwenden... ::)
Also so z.B.
Anwesenheitserkennung über mehrere Fritzboxen oder AVM Repeater und Fritzbox1. 99_myUtils befüllen mit:
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
}
2. Die FritzBox definieren:
define <FritzBoxname> FRITZBOX <FritzBoxIp>
Z.B. define MeineGeileBox FRITZBOX 192.168.178.1
wenn ein Reapeater vorhanden ist
3. Die Reapeater definieren:
define <ReapeaterName> FRITZBOX <ReapeaterIp>
Z.B. define MeinTollerReapeater FRITZBOX 192.168.178.2
4. die Handys definieren (für jedes Handy ein einzelnes define)
define <HandyName> PRESENCE function {checkAllFritzMACpresent("HandyMAC")} 60 60
z.B. define OpaHandy PRESENCE function {checkAllFritzMACpresent("23:22:54:D7:DA:FF")} 60 60
So würde sogar ich es auf anhieb verstehen! :-X :P ::)
Wie auch immer... Seit ca. 15 Minuten und "ausgeschaltetem" Handy ist der Status noch present.... soweit so gut!!! ;D
Vielen Dank für eure Hilfe!!!
Dann hol Dir einen Account fürs Wiki und mach was draus! :D
Meine ich ernst und nicht sarkastisch!
Zitat von: Otto123 am 29 März 2018, 19:00:13
Dann hol Dir einen Account fürs Wiki und mach was draus! :D
Meine ich ernst und nicht sarkastisch!
Okay, wusste nicht das das jeder darf... Mach ich sogar gerne, für die Hilfe die ich schon hier bekommen habe gebe ich gerne für Nachfolger wie meinereiner was zurück!
Dann schaue ich mal wo das geht! ERLEDIGT! ;)
Hallo,
ich wollte zu meinem Anliegen nun keinen neuen Thread aufmachen, da ich denke, dass es auch hierhin gut passt.
Ich versuche mich gerade ein wenig mit der Programmierung zu machen und wollte dabei mal als Einführung eine kleine Bedingung aufbauen, die mir täglich helfen könnte:
define SATReceiverVUsCheck at *00:00:00
{ if fhem ("PRESENCE Frau_State presence: absent && PRESENCE Mann_State presence: absent")
{ fhem ("set SATReceiverSolo2SE Power:off && SATReceiverSolo2 Power:off ")}
}
Ich möchte gerne den Status meiner SAT-Receiver auf off stellen, wenn PRESENCE State zweier Geräte auf absent sind. Das ganze sollte immer ab 00:00 Uhr geprüft werden.
Die Syntax ist sicherlich noch fehlerhaft oder?
Oh je,
das sieht nach Grundlagenschulung aus :)
Also {hier drin bist Du in Perl}
Bedingung geht so if (Bedingung) {Mach was bei war} else {mach was bei falsch}
Deine PRESENCE States bekommst Du so: Value("Frau_State")
FHEM Befehle aus Perl heraus kannst Du fast so aufrufen wie Du es geschrieben hast:
fhem("FHEM Befehl")
Also mal ein kompletter Ansatz: {if (Value("Frau_State") eq "absent" and Value("Mann_State") eq "absent") {fhem ("set SATReceiverSolo2SE off")}}
Die einzelnen Teile kannst Du zum debuggen immer in der Kommandozeile abfragen / ausführen:
{Value("Frau_State")}
set SATReceiverSolo2SE off
{fhem ("set SATReceiverSolo2SE off")}
Gruß Otto
Oh man Otto ich schäme mich :)
Die Zeile kann ich ja so in die 99_myUtils.pm einfügen oder?
Warum fügt er die Zeile eigentlich in die Configfiles, wenn ich in einer Umgebung (Entwicklung) unter Raw definition den Code einfach nur auf Syntax testen möchte?
99_myUtils ist wieder ein anderes Thema. Dort musst du einen "Rahmensyntax" einhalten und für bestimmte Aufgaben Subroutinen schreiben.
sub Name {Code}
Den kompletten Code testen ist eine nicht so simple Angelegenheit. Raw Definition oder Kommandozeile ist ja eine interaktive "Steuerungs Umgebung".
Die kann FHEM Kommandos ausführen. Die können so aussehen: https://commandref.fhem.de/#command
Wenn Du dort define sagst, schreibt er nach Prüfung in die config.
Mit dem Define wird legt er ein at device an, welches ich dann direkt unter Everythings dann sehen kann. Sollte ich den Code jedoch in 99 reinschreiben muss ich es weglassen und die sub Syntax einhalten richtig?
Das macht man sicherlich, wenn man nicht moechte, dass jedes Programm in der GUI zu sehen sein soll?!
Ist Geschmacksache.
define Schnulli at 18:00 {AufrufSubIn99_myUtils(Parameter1)}
macht man wenn einem der Code in define Schnulli at 18:00 {viel zu lang erscheint
und dabei die Übersicht in der FHEM Definition unübersichtlich wird
weil der Text in der Länge leicht unübersichtlich wird
weil er viel zu lang ist und
über mehrere Zeilen geht
und insgesamt viel zu lang ist
weil er viel zu viel Code enthält
der dann unübersichtlich wird}
Gruß Otto
Hallo Otto,
danke für deine Hilfe. Ich denke ich habe es nun richtig verstanden. Ich habe folgendes mal ausprobiert:
define SATReceiverVUsOFF at *09:00 {SATReceiverVUsCheck ()}
und in die 99_myUtils.pm folgendes eingetragen:
## PRESENCE SAT
sub SATReceiverVUsCheck ()
{
if (Value("Mann_State") eq "absent" and Value("Frau_State") eq "absent" ) {
fhem ("set SATReceiverSolo2SE off" and "set SATReceiverSolo2 off")
}
}
Das scheint aber technisch irgendwie noch nicht zu funktionieren. Der Presentstatus beider Geräte läuft aber ohne Probleme. Die Aktualisierung dauert keine 5 Minuten!
Eigentlich sollte es doch reichen, wenn ich nur diese Zeile in der 99_myUtils.pm reinschreibe:
if (Value("Mann_State") eq "absent" and Value("Frau_State") eq "absent" ) {
fhem ("set SATReceiverSolo2SE off" and "set SATReceiverSolo2 off")
}
auch das funktioniert leider nicht. Die Receiver bleiben an.
Moin,
und hast Du Fehler im Log?
Was macht das denn in der FHEM Kommandozeile: ???
{fhem ("set SATReceiverSolo2SE off" and "set SATReceiverSolo2 off")}
and ist an der Stelle nicht möglich und auch nicht nötig. and wäre die logische Verknüpfung von zwei Werten zu einem! Keine Verbindung von: Dieser Befehl
und Dieser Befehl.
Zitat von hier https://commandref.fhem.de/#command
ZitatMultiple FHEM commands are separated by semicolon (; ). In order to use semicolon in perl code or shell programs, they have to be escaped by the double semicolon (;; )
Für den Test in der FHEM Kommandozeile
{fhem ("set SATReceiverSolo2SE off;;set SATReceiverSolo2 off")}
Für die Sub
fhem ("set SATReceiverSolo2SE off;set SATReceiverSolo2 off")
Edit. Diese Bemerkung verstehe ich gar nicht:
ZitatEigentlich sollte es doch reichen, wenn ich nur diese Zeile in der 99_myUtils.pm reinschreibe:
Du hast schon die 99_myUtils.pm strukturiert mit dem Template angelegt?
Gruß Otto
Zitat von: Otto123 am 29 März 2019, 10:45:30
Diese Bemerkung verstehe ich gar nicht:Du hast schon die 99_myUtils.pm strukturiert mit dem Template angelegt?
Moin nochmal,
Damit wollte ich sagen, reicht es nicht aus diese Zeile in die 99_myUtils.pm zu schreiben, ohne ein define at anlegen zu müssen?
FHEM sollte diese Zeile ja dann immer als Ereignis ausführen oder verstehe ich da wieder etwas falsch?
if (Value("Mann_State") eq "absent" and Value("Frau_State") eq "absent" ) {
fhem ("set SATReceiverSolo2SE off;set SATReceiverSolo2 off")
}
Danke für den Tipp mit den Semikolons.
Ich wiederhole mal meine Frage: Du hast schon die 99_myUtils.pm strukturiert mit dem Template angelegt?
Etwas zum lesen: https://wiki.fhem.de/wiki/99_myUtils_anlegen
die 99_myUtils wird beim Start von FHEM geladen. Es ist nicht der Zweck dieser Datei irgendetwas "immer" auszuführen.
Überhaupt führt FHEM nicht von sich aus etwas "immer" aus. FHEM reagiert auf Ereignisse die Du definierst.
Ein at reagiert auf ein Zeitereigniss
Du kannst auf Änderung des Status von Mann_State reagieren (notify)
usw.
Gruß Otto
Achso, jetzt weiß ich was du mit Template meinst. Ja klar. Ich habe die 99_myUtils.pm bereits so angelegt gehabt:
package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
1;
Mhh ok,dass habe ich mir gedachte, dass FHEM das nicht automatisch ausführt. Dann ist das ja auch geklärt.
Also kann ich das Sub mittels at, notify usw. zum ausführen bringen. Dann ist ja alles in Ordnung:
mein angelegtes define at:
COMMAND {SATReceiverVUsCheck ()}
DEF +*00:01:00 {SATReceiverVUsCheck ()}
und mein Sub
sub SATReceiverVUsCheck ()
{
if (Value("Mann_State") eq "absent" and Value("Frau_State") eq "absent") {
fhem ("set SATReceiverSolo2SE off;set SATReceiverSolo2 off")
}
}
Ich werde mir das Grundlagendokument zur Herzen nehmen. Vielleicht habt Ihr ja noch weitere Dokumente die bei der Grundprogrammierung in FHEM hilfreich sind.
Naja eigentlich hier als Einstieg
https://wiki.fhem.de/wiki/Hauptseite
Und für Perl
https://perldoc.perl.org/index.html
Aber ehrlich: Ich würde diesen Zweizeiler direkt in das at schreiben. Aber musst Du wissen. ;)
99_myUtils ist die Ablage für längeren Code und vor allem auch Dinge die an mehreren Stellen verwendet werden. Aber das kann man selbst halten wie man will.
Gruß Otto
Ja, ich kann dich verstehen. Ich habe es jetzt einfach so probiert, damit ich das Prinzip verstehe.
Ich werde es nachher Produktiv mal ausprobieren.
Ich muss mal noch überlegen, welche Ereignissteuerungen noch Sinn machen bei den Receivern. Diese Lösung war mir in erster Linie wichtig, da meine kleinen Kinder den Receiver gerne mal an lassen :)
Ich habe das so gemacht:define di_Satbox DOIF (([TV] eq "off") and ([VUPLUS1:recordings] == 0)) (set VUPLUS1 shutdown)
Der off Event vom TV schaltet den Receiver aus, falls der nicht gerade aufnimmt.
Das off was Du verwendest schaltet bei mir die Receiver nicht wirklich aus sondern macht nur standby. Da ist der Stromverbrauch nur minimal niedriger als im On Zustand. Erst im deep Standby ist wirklich so gut wie aus.
Gruß Otto
Hi nochmal,
ja ich hatte auch erst den Gedanken gehabt, das ganze irgendwie mit dem TV Status zu lösen, jedoch denke ich, dass ich den Status mit meinem Samsung TV nicht auslesen kann?!
Vielleicht gibt es ja speziell für die Samys mit SmartTV (hat meiner) ja ein Modul.
Am Rande noch eine Frage Otto: Kannst du deine VU auch aus dem Deep off per fhem o. ä. wieder einschalten? Meines erachtens sollte die doch nur im Standby möglich sein.
Sehe gerade, es gibt ja das Modul STV. Denke aber, dass mein UE40J6250 damit laut commandref nicht funktionieren wird!
Hi,
naja den Status des TV kannst Du eventuell auch noch mit einem PRESENCE (lan-ping) oder WOL Devices ermitteln.
Mein VU kann kein WOL (es soll wohl welche geben) und damit kann ich ihn aus dem deep Standby nur mit Fernbedienung wecken. Ist für mich aber ok. Aufnehmen kann er ja allein und wenn ich schauen will kann ich die Minute warten bis er an ist.
Der normale standby ist für mich etwas witzlos, weil er dann praktisch auch an bleiben könnte.
Gruß Otto
Zitat von: Otto123 am 01 April 2019, 15:50:28
Der normale standby ist für mich etwas witzlos, weil er dann praktisch auch an bleiben könnte.
Dachte, dass es dazu mittlerweile einen Standard gibt, den jeder Hersteller auf jedenfall einhalten muss, sodass der Strom eigentlich relativ gering sein sollte.
Das mit dem Ping werde ich versuchen. Hoffe bekomme es hin...
Naja dass mit dem Standby ist bei den enigma Boxen generell so. Standby bedeutet da praktisch nur Bild aus. Deep Standby ist dann < 1 Watt. Damit ist sicher die Forderung erfüllt. Und die Definition/Beschreibung irreführend.
Der Standard ist bei allen Images, dass sie nur standby machen. herunterfahren nur auf Anforderung. ;)
HI, ist zwar etwas spät....
Aber warum machst du nicht ein einfaches DOIF?
Quasi so: DOIF Wenn Presence absent dann sezte um 00Uhr mein Reciever auf off
oder besser:
([?Haus] eq "absent" and [00:00]) (set Satreciever off)
Wäre das nicht der einfachste Weg? Ich nutze meine Precence Steuerung schon lange mit DOIF und das Tadellos!
Ich Schalte meinen Mediaplayer in der Art Aus und wieder ein....:
Wenn ich meinen TV ausschalte, lässt ein DOIF meinen Mediaplayer herunterfahren und 5 Minuten später wird er vom Netz getrennt. Schalte ich den TV wieder ein, wird der Player wieder mit Strom versorgt und bootet.
siehe hier: https://forum.fhem.de/index.php/topic,92694.msg857064.html#msg857064 (https://forum.fhem.de/index.php/topic,92694.msg857064.html#msg857064)
So könntest du ja bei dir den TV durch deine Absent/Present Geräte ersetzen...