Anwesenheit per G-TAG der Einwohner im Haus

Begonnen von Micky, 23 Februar 2018, 13:11:55

Vorheriges Thema - Nächstes Thema

Micky

Hi,

habe mal eine Frage kann man das DOIF so umschreiben das er automatisch dem Hausbewohnern bescheid gibt welcher G-Tag gerade anwesend ist.

Also jeder in dem Haus hat so ein G-TAG bluetooth Schlüsselanhänger!

Internals:
   ADDRESS    7C:2F:80:27:C6:E7
   CHANGED   
   DEF        lan-bluetooth 7C:2F:80:27:C6:E7 127.0.0.1:5333 120
   DeviceName 127.0.0.1:5333
   FD         47
   INTERVAL_NORMAL 120
   INTERVAL_PRESENT 120
   MODE       lan-bluetooth
   NAME       MickyGtag
   NOTIFYDEV  global
   NR         43
   NTFY_ORDER 50-MickyGtag
   PARTIAL   
   STATE      present
   TYPE       PRESENCE
   READINGS:
     2018-02-23 12:20:15   command_accepted yes
     2018-02-23 13:09:15   daemon          lepresenced V0.83
     2018-02-23 13:09:15   device_name     Gigaset G-tag
     2018-02-23 13:09:15   model           lan-lepresenced
     2018-02-23 13:09:15   presence        present
     2018-02-23 13:09:15   rssi            -80
     2018-02-23 13:09:15   state           present
   helper:
     CURRENT_STATE present
     CURRENT_TIMEOUT normal
Attributes:
   alias      Micky
   event-on-change-reading .*
   fp_Grundriss 50,200,1
   group      Bewohner
   room       Homekit,Residents
   userReadings battery


Also z.B.: Mein Vater soll immer bescheid bekommen wer gerade zuhause ist.

mein DOIF:

([HomeStatus] eq "away" and
[MickyGtag] eq "present")
(set HomeStatus home, set Pushnachricht msg 'Anwesenheit Micky' 'Micky ist bei dir zuhause - smarthome - wird deaktiviert!')


kann man das umschreiben z.B: Anstatt MickyGtag einfach $GTagName und dies dann in der Pushnachricht übernehmen sodass er weiss wer gerade Zuhause ist?

([HomeStatus] eq "away" and
[$GtagNAME] eq "present")
(set HomeStatus home, set Pushnachricht msg 'Anwesenheit $GtagName' '$GtagName ist bei dir zuhause - smarthome - wird deaktiviert!')

andernfalls müsste ich diese DOIF Bedingung für jeden Hausbewohner schreiben der ein Gtag besitzt ?


hab gerade gesehen wenn er sich verbindet bleibt der immer state Present obwohl ich ihn in alufolie packr und er somit absent sein sollte.
hier mal die log:
2018.02.23 13:20:40 5: ACK received, removing 0107000301020100f9 from dongle sendstack
2018.02.23 13:20:40 1: ERROR evaluating my $SELF='gtag_anwesenheit';my $EVTPART1='absent';my $EVENT='presence: absent';my $EVTPART0='presence:';my $NAME='MickyGtag';my $TYPE='PRESENCE';{
Anwesenheit_check("$EVTPART1", "$NAME"),
Anwesenheit_check_resi("$NAME")
}: Undefined subroutine &main::Anwesenheit_check called at (eval 60) line 2.

2018.02.23 13:20:40 3: gtag_anwesenheit return value: Undefined subroutine &main::Anwesenheit_check called at (eval 60) line 2.

2018.02.23 13:21:07 1: ERROR evaluating my $TYPE='PRESENCE';my $EVTPART0='presence:';my $NAME='MickyGtag';my $EVTPART1='present';my $EVENT='presence: present';my $SELF='gtag_anwesenheit';{
Anwesenheit_check("$EVTPART1", "$NAME"),
Anwesenheit_check_resi("$NAME")
}: Undefined subroutine &main::Anwesenheit_check called at (eval 75) line 2.

2018.02.23 13:21:07 3: gtag_anwesenheit return value: Undefined subroutine &main::Anwesenheit_check called at (eval 75) line 2.


danke auch hierfür nochmal

CoolTux

Ich würde Dir empfehlen das Residents und Roommate Modul zu installieren und ein zu richten. Da hast Du sowas wie, wer ist noch zu Hause, dann gleich als Reading.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Micky

hi,

hatte es schonmal versucht bin aber irgendwie daran gescheitert beim einrichten.

Versuche jetzt erstmal das Problem zu lösen und dann versuche ich Roommate zu installieren


2018.02.23 16:47:07 1: ERROR evaluating my $TYPE='PRESENCE';my $EVTPART0='presence:';my $NAME='MickyGtag';my $EVTPART1='present';my $EVENT='presence: present';my $SELF='gtag_anwesenheit';{
Anwesenheit_check("$EVTPART1", "$NAME"),
Anwesenheit_check_resi("$NAME")
}: Undefined subroutine &main::Anwesenheit_check called at (eval 252) line 2.

2018.02.23 16:47:07 3: gtag_anwesenheit return value: Undefined subroutine &main::Anwesenheit_check called at (eval 252) line 2.


Danke für deine Antwort

CoolTux

Welches Problem meinst Du genau. Ich meine das der Fehler ja da steht. Du rufst anscheinend eine Sub auf die es nicht gibt.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Micky

Also das was ich erkennen konnte, der erkennt meinen Bluetooth G-Tag und anschliessend bleibt er ständig also State Presence auch wenn ich das haus verlasse

Was meinst du mit Sub ?

thank you

CoolTux

Undefined subroutine &main::Anwesenheit_check called at (eval 252) line 2.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Micky

#6
Zitat von: CoolTux am 23 Februar 2018, 17:15:34
Undefined subroutine &main::Anwesenheit_check called at (eval 252) line 2.

also ich hab den jetzt Anwesenheit_check deaktiviert glaub den hatte ich erstellt wollte so ne Prüfung machen wer zuhause ist.

Komisch ist er erkennt den und dann bleibt er ständig online obwohl er alle 120 sec prüft ob er noch anwesend ist.


command_accepted
yes
2018-02-23 12:20:15
daemon
lepresenced V0.83
2018-02-23 17:23:12
device_name
Gigaset G-tag
2018-02-23 17:23:12
model
lan-lepresenced
2018-02-23 17:23:12
presence
present
2018-02-23 17:23:12
rssi
-94
2018-02-23 17:23:12
state
present
2018-02-23 17:23:12



EDIT: hab den G-Tag ca. 3 x in Alu folie gewickelt der zeigt immer noch anwesend, trotz fhem neustart usw.

scheint jetzt zu gehen gefüllt 3/4 mal eingewickelt in Folie.
Versuche jetzt Roomate Module zu installieren.

danke bis hierhin schonmal

Micky

also keine Fehlermeldungen mehr, aber Roommate will irgendwie keine Pushnachricht schicken wenn ich diese manuell abschicke kommt diese allerdings

hab das Wiki durchgeführt
https://wiki.fhem.de/wiki/PRESENCE

da G-Tag bei mir funktioniert hab ich ab dem Punkt:
Anwesenheitserkennung / Anwesenheitsbenachrichtigung mit G-Tags
angefangen.

Muss man noch ein Residents erstellen ?
es kommt kein Log.



99myUtils.pm
### GTAG ANWESENHEITS CHECK
sub Anwesenheit_check($$) {
my ($EVENT, $NAME) = @_;

# gtag_rot - Alias Marco
# gtag_schwarz - Alias Ulli
# gtag_gruen - Alias Frida
# gtag_orange - Alias Hannah

my $RESIDENT = "rr_"; # Alle GTAGs sind Standardmäßig Residents Roommate
# $RESIDENT = "rg_" if (($NAME eq "gtag_orange") xor ($NAME eq "gtag_weis")); # Hier nur Gäste (Roomguest) Auskommentiert, da ich es so nicht brauche
my $ROOMMATE = ("$RESIDENT" . "$NAME"); # Residentsname zusammenbauen
my $ALIASNAME = AttrVal($ROOMMATE,'alias',$ROOMMATE); # ALIAS des Roommates auslesen

my $GTAG1 = Value('gtag_rot'); # ELTERN
my $GTAG2 = Value('gtag_schwarz'); # ELTERN

my $STATUS = "wahrscheinlich gerade los";
$STATUS = "anwesend" if ($EVENT eq "present"); # Status: anwesend
$STATUS = "unterwegs" if ($EVENT eq "absent"); # Status: unterwegs

Log 1, "$ALIASNAME ist $STATUS."; # LOG Eintrag erzeugen

if (($EVENT eq "present" && Value("Alarm") eq "aktiv") && ($NAME eq "gtag_gruen" xor $NAME eq "gtag_orange")) {
#fhem("set teleBot send ALARMIERUNG BLEIBT AKTIV: $ALIASNAME ist da..."); # Telegram
fhem("set Pushnachricht msg 'ALARMIERUNG BLEIBT AKTIV' '$ALIASNAME ist da...'"); # Pushover

}
elsif (($EVENT eq "present" && Value("Alarm") eq "aktiv") && ($NAME eq "gtag_rot" xor $NAME eq "gtag_schwarz")) {
# fhem("set teleBot send ALARMIERUNG INAKTIV: $ALIASNAME ist da...; set Alarm inaktiv"); # Telegram
fhem("set Pushnachricht msg 'ALARMIERUNG INAKTIV' '$ALIASNAME ist da...'; set Alarm inaktiv"); # Pushover
}
elsif (($EVENT eq "absent" && Value("Alarm") eq "aktiv") && ($NAME eq "gtag_gruen" xor $NAME eq "gtag_orange")) {
# fhem("set teleBot send ALARMIERUNG BLEIBT AKTIV: $ALIASNAME hat das Haus verlassen."); # Telegram
fhem("set Pushnachricht msg 'ALARMIERUNG BLEIBT AKTIV' '$ALIASNAME hat das Haus verlassen.'"); # Pushover
}
elsif (($EVENT eq "absent" && Value("Alarm") eq "inaktiv") && ($GTAG1 eq "absent" && $GTAG2 eq "absent")) {
# fhem("set Alarm aktiv; set teleBot send ALARMIERUNG AKTIV: $ALIASNAME hat das Haus verlassen."); # Telegram
fhem("set Alarm aktiv; set Pushnachricht msg 'ALARMIERUNG AKTIV' '$ALIASNAME hat das Haus verlassen.' '' 0 ''"); # Pushover
}
}

### RESIDENTS
sub Anwesenheit_check_resi($) {
my ($NAME) = @_;
my $ALIASNAME = AttrVal($NAME,'alias',$NAME); # ALIASNAME des GTAGs auslesen

my $RESIDENT = "rr_"; # Als Standard sind alle GTAGs Roommates
$RESIDENT = "rg_" if (($NAME eq "gtag_orange") xor ($NAME eq "gtag_weis")); # Hier nur GTAG Namen der Gäste (Roomguest)
my $ROOMMATE = ("$RESIDENT" . "$ALIASNAME"); # Residentsname zusammenbauen

if (ReadingsVal($NAME,'presence',$NAME) eq "absent") {
fhem("set $ROOMMATE absent"); # Resisents Status von Roommates setzen
}
elsif(ReadingsVal($NAME,'presence',$NAME) eq "present") {
fhem("set $ROOMMATE home"); # Resisents Status von Roommates setzen
}
}


gtag_rot ist mein tag alias Micky

Internals:
   ADDRESS    7C:2F:80:27:C6:E7
   CFGFN     
   CHANGED   
   DEF        lan-bluetooth 7C:2F:80:27:C6:E7 127.0.0.1:5333 120
   DeviceName 127.0.0.1:5333
   FD         51
   INTERVAL_NORMAL 120
   INTERVAL_PRESENT 120
   MODE       lan-bluetooth
   NAME       gtag_rot
   NOTIFYDEV  global
   NR         272
   NTFY_ORDER 50-gtag_gruen
   PARTIAL   
   STATE      present
   TYPE       PRESENCE
   READINGS:
     2018-02-23 19:10:23   daemon          lepresenced V0.83
     2018-02-23 19:10:23   device_name     Gigaset G-tag
     2018-02-23 19:10:23   model           lan-lepresenced
     2018-02-23 19:10:23   presence        present
     2018-02-23 19:10:23   rssi            -55
     2018-02-23 19:10:23   state           present
   helper:
     CURRENT_STATE present
     CURRENT_TIMEOUT normal
Attributes:
   alias      Micky
   devStateIcon present:user_available maybe.*:user_unknown absent:user_away
   event-on-change-reading state
   presenceThreshold 1
   room       9.6_System,Anwesend,Homekit



hab den von grün auf rot umbenannt weil ich das nicht im utility Eltern ummodeln wollte

danke

CoolTux

Wo ist denn Dein Roommate Device?

Du erstellst ein Residents und mehrere Roommates, danach trägst Du bei den Roommates als Attribut Deine presence Devices ein. Dann schalten die presence die Roommates auf anwesend und abwesend. Danach kannst Du dann Deine notifys für die Meldungen auf die Roommates oder auf das Residents Device anlegen. Die Roommates schlaten automatisch das Residents.

Stell es Dir so vor. Das Residents ist Deine Wohnung, die Bewohner (Roommates) bilden ihren Status im Residents ab. Einer schläft einer ist weg das Residents ist also auf schlafend da der Zustand der Wohnung nicht abwesend ist sondern schlafend
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Micky

#9
hi CoolTux,

aber im Wiki steht davon nix ?

Gibt es ein HowTo

edit: also ich erstelle jetzt:

define Bewohner RESIDENTS
und die Roomates sind meine Bewohner also meine gtags diese hab ich ja schon ?

verstehe ich es richtig?

danke

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Micky

#11
danke .....hab jetzt einen

ROOMMATE

Internals:
   CFGFN     
   CHANGED   
   DEF        rgr_Residents
   DURATIONTIMER 1519411350.87665
   NAME       rr_Micky
   NOTIFYDEV  global,
   NR         442
   NTFY_ORDER 50-rr_Micky
   READY      1
   RESIDENTGROUPS rgr_Residents
   STATE      ???
   TYPE       ROOMMATE
   READINGS:
     2018-02-23 19:36:30   durTimerAbsence 00:00:00
     2018-02-23 19:36:30   durTimerAbsence_cr 0
     2018-02-23 19:36:30   durTimerPresence 00:00:00
     2018-02-23 19:36:30   durTimerPresence_cr 0
     2018-02-23 19:36:30   durTimerSleep   00:00:00
     2018-02-23 19:36:30   durTimerSleep_cr 0
   TIMER:
     rr_Micky_DurationTimer:
       HASH       rr_Micky
       MODIFIER   DurationTimer
       NAME       rr_Micky_DurationTimer
Attributes:
   alias      Status
   devStateIcon .*zuhause:user_available:absent .*anwesend:user_available:absent .*abwesend:user_away:home .*verreist:user_ext_away:home .*bettfertig:scene_toilet:asleep .*schlaeft:scene_sleeping:awoken .*schläft:scene_sleeping:awoken .*aufgestanden:scene_sleeping_alternat:home .*:user_unknown:home
   eventMap   home:zuhause absent:abwesend gone:verreist gotosleep:bettfertig asleep:schläft awoken:aufgestanden
   group      Micky
   icon       people_sensor
   room       Residents
   rr_realname group
   sortby     1
   webCmd     state
   widgetOverride state:zuhause,bettfertig,schläft,aufgestanden,abwesend,verreist


und RESIDENTS
angelegt:

Internals:
   CFGFN     
   CHANGED   
   DURATIONTIMER 1519411425.83724
   NAME       rgr_Residents
   NOTIFYDEV  global,rr_Micky
   NR         429
   NTFY_ORDER 50-rgr_Residents
   READY      1
   ROOMMATES  rr_Micky
   STATE      ???
   TYPE       RESIDENTS
   READINGS:
     2018-02-23 19:33:45   durTimerAbsence 00:00:00
     2018-02-23 19:33:45   durTimerAbsence_cr 0
     2018-02-23 19:33:45   durTimerPresence 00:00:00
     2018-02-23 19:33:45   durTimerPresence_cr 0
     2018-02-23 19:33:45   durTimerSleep   00:00:00
     2018-02-23 19:33:45   durTimerSleep_cr 0
   TIMER:
     rgr_Residents_DurationTimer:
       HASH       rgr_Residents
       MODIFIER   DurationTimer
       NAME       rgr_Residents_DurationTimer
Attributes:
   alias      Bewohner
   devStateIcon .*zuhause:user_available:absent .*anwesend:user_available:absent .*abwesend:user_away:home .*verreist:user_ext_away:home .*bettfertig:scene_toilet:asleep .*schlaeft:scene_sleeping:awoken .*schläft:scene_sleeping:awoken .*aufgestanden:scene_sleeping_alternat:home .*:user_unknown:home
   eventMap   home:zuhause absent:abwesend gone:verreist gotosleep:bettfertig asleep:schläft awoken:aufgestanden
   group      Zuhause Status
   icon       control_building_filled
   room       Residents
   webCmd     state
   widgetOverride state:zuhause,bettfertig,schläft,aufgestanden,abwesend,verreist


muss ich jetzt in der 99myUtils.pm

folgende daten anpassen übernehmen ?

my $RESIDENT = "[b]rr_[/b]"; # Alle GTAGs sind Standardmäßig Residents Roommate
my $ROOMMATE = ("$RESIDENT" . "$NAME"); # Residentsname zusammenbauen
my $ALIASNAME = AttrVal($ROOMMATE,'alias',$ROOMMATE); # ALIAS des Roommates auslesen


ersetzten mit Gruppe:
rgr_Residents

CoolTux

Deine myUtils kannste erstmal bei Seite legen. Jetzt machst erstmal bei Deinem Roommate ein Attribut presence und trägst da dein presence device ein.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Micky

#13
Zitat von: CoolTux am 23 Februar 2018, 19:51:27
Deine myUtils kannste erstmal bei Seite legen. Jetzt machst erstmal bei Deinem Roommate ein Attribut presence und trägst da dein presence device ein.

attr rgr_Residents presence

kann ich diesen Nutzen ? Sorry ich habs noch nicht verstanden

Internals:
   ADDRESS    7C:2F:80:27:C6:E7
   CFGFN     
   CHANGED   
   DEF        lan-bluetooth 7C:2F:80:27:C6:E7 127.0.0.1:5333 120
   DeviceName 127.0.0.1:5333
   FD         51
   INTERVAL_NORMAL 120
   INTERVAL_PRESENT 120
   MODE       lan-bluetooth
   NAME       gtag_rot
   NOTIFYDEV  global
   NR         272
   NTFY_ORDER 50-gtag_gruen
   PARTIAL   
   STATE      present
   TYPE       PRESENCE
   READINGS:
     2018-02-23 19:59:47   daemon          lepresenced V0.83
     2018-02-23 19:59:47   device_name     Gigaset G-tag
     2018-02-23 19:59:47   model           lan-lepresenced
     2018-02-23 19:59:47   presence        present
     2018-02-23 19:59:47   rssi            -56
     2018-02-23 19:59:47   state           present
   helper:
     CURRENT_STATE present
     CURRENT_TIMEOUT normal
Attributes:
   alias      Micky
   devStateIcon present:user_available maybe.*:user_unknown absent:user_away
   event-on-change-reading state
   presenceThreshold 1
   room       9.6_System,Anwesend,Homekit

CoolTux

du nutzt gar nichts vom presence Device für die Anweseneit.


attr rr_Micky rr_presenceDevices gtag_rot


Das machst Du erstmal
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net