[gelöst]Geofency Standort per Telegram bei Ankunft

Begonnen von Larusso, 15 Januar 2018, 17:43:14

Vorheriges Thema - Nächstes Thema

Larusso

Hallo zusammen,

ich teste nun schon einige Tage die FHEM App mit der geofency funktion. Anwesenheit und verlassen des Home wird mir auch super angezeigt. Nun möchte ich aber gerne eine Nachricht per Telegram wenn ich bei einer bestimmten ID (Name der Standortes) einchecke. Dazu habe ich mir folgendes DOIF angelegt:

Internals:
   DEF        ([Daniel:location] = Wadersloh )(set Telegram msg Wadersloh)
   NAME       Geofency1
   NR         317
   NTFY_ORDER 50-Geofency1
   STATE      initialize
   TYPE       DOIF
   READINGS:
     2018-01-15 17:27:39   Device          Daniel
     2018-01-15 17:27:39   e_Daniel_location home
     2018-01-15 17:27:39   error           condition c01: Can't modify non-lvalue subroutine call of &main::ReadingValDoIf in scalar assignment at (eval 21834) line 1, at EOF
Bareword "Wadersloh" not allowed while "strict subs" in use at (eval 21834) line 1.

     2018-01-14 17:49:23   mode            enabled
     2018-01-14 17:49:23   state           initialize
   Regex:
   condition:
     0          ReadingValDoIf($hash,'Daniel','location') = Wadersloh
   devices:
     0           Daniel
     all         Daniel
   do:
     0:
       0          set Telegram msg Wadersloh
     1:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     globalinit 1
     last_timer 0
     sleeptimer -1
   itimer:
   readings:
     0           Daniel:location
     all         Daniel:location
   uiState:
   uiTable:
Attributes:
   alias      Daniel Standort Wadersloh
   do         always
   room       Anwesenheit,zzz J4Fun und Test


aber iergendwie will er mir nicht den Standort als Nachricht schicken, Die Ankunft wird mir per Nachricht aus der App mitgeteilt und im reading vom roommate wird mir auch die ID angezeigt die geofency in der app übergeben soll, diese steht unter dem state "location".

ein anderes doif in verbindung mit "home" funktioniert super:

Internals:
   DEF        ([?22:15 - 22:45|12345] and [Daniel] eq "zuhause")(set Garagentor_433MHz on)
   NAME       Geofence_1
   NR         311
   NTFY_ORDER 50-Geofence_1
   STATE      initialize
   TYPE       DOIF
   READINGS:
     2018-01-15 17:27:39   Device          Daniel
     2018-01-15 17:27:39   e_Daniel_STATE  zuhause
     2018-01-11 15:21:00   mode            enabled
     2018-01-11 15:21:00   state           initialize
     2018-01-15 17:31:29   timer_01_c01    15.01.2018 22:15:00|12345
     2018-01-15 17:31:29   timer_02_c01    15.01.2018 22:45:00|12345
   Regex:
   condition:
     0          DOIF_time($hash,0,1,$wday,$hms,"12345") and InternalDoIf($hash,'Daniel','STATE') eq "zuhause"
   days:
     0          12345
     1          12345
   devices:
     0           Daniel
     all         Daniel
   do:
     0:
       0          set Garagentor_433MHz on
     1:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     globalinit 1
     last_timer 2
     sleeptimer -1
   internals:
     0           Daniel:STATE
     all         Daniel:STATE
   interval:
     0          -1
     1          0
   itimer:
   localtime:
     0          1516050900
     1          1516052700
   realtime:
     0          22:15:00
     1          22:45:00
   time:
     0          22:15:00
     1          22:45:00
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   triggertime:
     1516050900:
       localtime  1516050900
       hash:
     1516052700:
       localtime  1516052700
       hash:
   uiState:
   uiTable:
Attributes:
   alias      Geofency Spätschicht Garage auf
   do         always
   room       Zubehör


habe das zweite doif mal beim state "zuhause" durch das state "Wadersloh" ersetzt aber das will auch nicht funktionieren.
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

Amenophis86

Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Larusso

Wenn ich die def dem entsprechend abändern bekomme ich einen syntax error
Internals:
   DEF        ([Daniel:location] = != eq Wadersloh )(set Telegram msg Wadersloh)
   NAME       Geofency1
   NR         317
   NTFY_ORDER 50-Geofency1
   STATE      initialize
   TYPE       DOIF
   READINGS:
     2018-01-15 18:40:19   Device          Daniel
     2018-01-15 18:40:19   e_Daniel_location home
     2018-01-15 18:40:19   error           condition c01: syntax error, line 1, near "= !="

     2018-01-15 18:39:40   mode            enabled
     2018-01-15 18:39:40   state           initialize
   Regex:
   condition:
     0          ReadingValDoIf($hash,'Daniel','location') = != eq Wadersloh
   devices:
     0           Daniel
     all         Daniel
   do:
     0:
       0          set Telegram msg Wadersloh
     1:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     globalinit 1
     last_timer 0
     sleeptimer -1
   itimer:
   readings:
     0           Daniel:location
     all         Daniel:location
   uiState:
   uiTable:
Attributes:
   alias      Daniel Standort Wadersloh
   do         always
   room       zzz J4Fun und Test
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

sku

er wollte wohl auf den Unterschied zwischen "=" und "eq" hinweisen. eq vergleicht strings, = vergleicht nummerische inhalte. daher:

([Daniel:location] eq "Wadersloh" )(set Telegram msg Wadersloh)

Amenophis86

Ich schreibe es mal aus :)

"=" ist nicht gleich "eq"

Soll heißen in der einen Bedingung arbeitest du richtig mit eq und in der anderen mit =. Wobei das = hier falsch ist und eq heißen müsste. Und Wandersloh muss in "". Insgesamt Empfehle ich dir dich mit der Perl Syntax vertraut zu machen, du wirst diese immer wieder für FHEM brauchen.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Larusso

Genau diese DOIF def hatte ich zuerst, aber er reagiert nicht darauf. In den readings wird mir unter id Wadersloh angezeigt. Genau das übergebe ich mit der Id Bezeichnung aus Geofency am Handy. Hab ich da einen Denkfehler?

Internals:
   DEF        ([Daniel:location] eq "Wadersloh" )(set Telegram msg Wadersloh)
   NAME       Geofency1
   NR         317
   NTFY_ORDER 50-Geofency1
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2018-01-15 23:11:02   cmd             0
     2018-01-15 23:11:02   mode            enabled
     2018-01-15 23:11:02   state           initialized
   Regex:
   condition:
     0          ReadingValDoIf($hash,'Daniel','location') eq "Wadersloh"
   devices:
     0           Daniel
     all         Daniel
   do:
     0:
       0          set Telegram msg Wadersloh
     1:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     globalinit 1
     last_timer 0
     sleeptimer -1
   itimer:
   readings:
     0           Daniel:location
     all         Daniel:location
   uiState:
   uiTable:
Attributes:
   alias      Daniel Standort Wadersloh
   do         always
   room       zzz J4Fun und Test
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

Amenophis86

In deinem List ist a kein Fehler zu sehen und bei hat das Modul nicht ausgelöst. Ein List des Geofancy, wenn du an dem Ort bist wäre noch hilfreich.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Larusso

Hallo Amenophis86,

hier das List vom geofancy bei Ankunft an dem Ort mit der ID Wadersloh:

Internals:
   DEF        geo
   NAME       geofancy
   NR         290
   ROOMMATES  Anita,Daniel,Locative
   STATE      id:Wadersloh trig:1 date:1516108268 lat:51.73825590000001 long:8.2506241 dev:"device id" devAlias=Daniel
   TYPE       GEOFANCY
   READINGS:
     2018-01-16 14:11:08   lastDevice      Daniel
     2018-01-16 14:11:08   lastDeviceUUID  "device id"
     2018-01-16 14:11:08   state           id:Wadersloh trig:1 date:1516108268 lat:51.73825590000001 long:8.2506241 dev:"device id" devAlias=Daniel
   fhem:
     infix      geo
   helper:
     device_aliases:
       "device id" Daniel
       "device id" Locative_App
     device_names:
       Daniel     "device id"
       Locative_App "device id"
Attributes:
   devAlias   "device id":Daniel "device id":Locative_App
   group      Anwesenheit
   room       Anwesenheit


Ich kann alle eventmaps der roomate´s trigger über die DOIF Funktion, z.B. home, absent, away usw. Aber mit der Übergebenen ID in diesem Fall Wadersloh kann ich nichts triggern. Ich habe das gefühl das er nicht die ID verarbeitet die bei der location übergeben wird sondern nur die states also home usw. vielleicht muss ich in dem DOIF ja auf das reading location oder id eingehen aber wie frage ich das ab?

Ich habe die device id´s mal raus genommen nicht wundern das in der list "device id" steht.
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

automatisierer

#8
das List ist vom Geafancy Device.
Du willst aber auf ein Reading deines Rommmate Device triggern.
Also brauchen wir ein List von dem Roommate Device, nicht von Geofancy


Edit:
von dem DOIF auch nochmal, nachdem der gewünschte Standort erreicht worden ist. Alos das DOIF getriggert wurde / werden sollte


Edit:
Ich sage mal, dass DOIF ist soweit korrekt. Habs mal eben nachgebastelt. Also liegt der Fehler mit großer Wahrscheinlichkeit wo anders. Liefer mal die Lists dann sehen wir weiter...

Larusso

Ok, hier die Lists:

list vom Roommate Daniel

Internals:
   .eventMapCmd zuhause:noArg abwesend:noArg verreist:noArg bettfertig:noArg schläft:noArg aufgestanden:noArg
   AUTOGONE   1516240517
   CHANGED   
   DEF        rgr_Residents
   DURATIONTIMER 1516115840.03074
   NAME       Daniel
   NOTIFYDEV  global,
   NR         293
   NTFY_ORDER 50-Daniel
   READY      1
   RESIDENTGROUPS rgr_Residents
   STATE      abwesend
   TYPE       ROOMMATE
   READINGS:
     2018-01-16 16:16:20   durTimerAbsence 01:21:03
     2018-01-16 16:16:20   durTimerAbsence_cr 81
     2018-01-16 14:55:17   durTimerPresence 00:00:00
     2018-01-16 14:55:17   durTimerPresence_cr 0
     2018-01-08 14:45:15   durTimerSleep   00:00:00
     2018-01-08 14:45:15   durTimerSleep_cr 0
     2018-01-16 06:25:21   lastArrival     2018-01-16 06:25:21
     2018-01-16 14:55:17   lastDeparture   2018-01-16 14:55:17
     2018-01-16 06:25:21   lastDurAbsence  06:27:34
     2018-01-16 06:25:21   lastDurAbsence_cr 388
     2018-01-16 14:55:17   lastDurPresence 08:29:56
     2018-01-16 14:55:17   lastDurPresence_cr 510
     2018-01-16 16:16:29   lastLocation    Wadersloh
     2018-01-16 16:16:29   lastLocationAddr -
     2018-01-16 16:16:29   lastLocationLat 51.73825590000001
     2018-01-16 16:16:29   lastLocationLong 8.2506241
     2018-01-16 14:55:17   lastMood        calm
     2018-01-16 14:55:17   lastState       home
     2018-01-16 16:16:29   location        Wadersloh
     2018-01-16 16:16:29   locationAddr    -
     2018-01-16 16:16:29   locationLat     51.73825590000001
     2018-01-16 16:16:29   locationLong    8.2506241
     2018-01-16 16:16:29   locationPresence present
     2018-01-16 14:55:17   mood            -
     2018-01-08 14:55:51   nextWakeup      OFF
     2018-01-16 14:55:17   presence        absent
     2018-01-16 14:55:17   state           absent
     2018-01-08 14:45:15   wayhome         0
   TIMER:
     Daniel_AutoGone:
       HASH       Daniel
       MODIFIER   AutoGone
       NAME       Daniel_AutoGone
     Daniel_DurationTimer:
       HASH       Daniel
       MODIFIER   DurationTimer
       NAME       Daniel_DurationTimer
Attributes:
   alias      Daniel FHEM
   comment    Auto-created by rgr_Residents
   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
   event-on-change-reading state,wayhome</a>
   eventMap   home:zuhause absent:abwesend gone:verreist gotosleep:bettfertig asleep:schläft awoken:aufgestanden
   fp_Erdgeschoss 104,372,1,Daniel FHEM,
   group      Anwesenheit
   icon       people_sensor
   room       Anwesenheit
   rr_geofenceUUIDs "device id"
   rr_lang    DE
   rr_locations Wadersloh Lippstadt
   rr_realname group
   sortby     1
   webCmd     state
   widgetOverride state:zuhause,bettfertig,schläft,aufgestanden,abwesend,verreist



list vom DOIF für Daniel

Internals:
   DEF        ([Daniel] eq "Wadersloh" )(set Telegram msg Wadersloh)
   NAME       Geofency4
   NR         317
   NTFY_ORDER 50-Geofency4
   STATE      ???
   TYPE       DOIF
   READINGS:
   Regex:
   condition:
     0          InternalDoIf($hash,'Daniel','STATE') eq "Wadersloh"
   devices:
     0           Daniel
     all         Daniel
   do:
     0:
       0          set Telegram msg Wadersloh
     1:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     globalinit 1
     last_timer 0
     sleeptimer -1
   internals:
     0           Daniel:STATE
     all         Daniel:STATE
   itimer:
   readings:
   uiState:
   uiTable:
Attributes:
   alias      Daniel Standort Wadersloh
   do         always
   room       Anwesenheit
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

Amenophis86

#10
Da ist dein Problem:
event-on-change-reading state,wayhome

Kein Event, kein Trigger
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Larusso

Was würde passieren wenn ich das attr event on change Reading lösche?
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

Amenophis86

Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Larusso

So lesen bildet, hab dann mal in der command ref nachgelesen und bei Event on change reading location eingefügt. Das werde ich dann nachher mal testen.
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

KernSani

Wenn's funktioniert, bitte noch das Subject des ersten Posts editieren und [Gelöst] davor schreiben.
Danke!
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...