Hallo livetracking- & fhem-Experten !
Ich hatte meine Heizungssteuerung mit RESIDENTS und Geofency soweit am Laufen, bis das Geofency aus der Wartung ging. Mir wurde "Owntracks" empfohlen. So machte ich mich dran MQTT und Mosquitto zu implementieren. Funktioniert alles soweit, nur den Link zu Residents bekomme ich nicht hin. Klaus(w) hätte da zwar eine Erweiterung zu livetracking ;D, Markus möchte sie aber lieber nicht einbauen :(
Nun würde ich als alternative gerne ein DOIF verwenden um den Residents-Status zu setzen, bin aber zu blöd dazu und bitte euch mir auf die Sprünge zu helfen.
Hier meine Listings:
Internals:
IODev mosquitto
NAME SamsungS7
NR 215
STATE location
TYPE MQTT_DEVICE
qos *:1
.attraggr:
.attreocr:
samsungS7
event
.attrminint:
.qos:
* 1
.retain:
* 0
READINGS:
2018-11-08 17:17:08 cmd {"_type":"cmd","action":"reportLocation"}
2018-11-12 16:14:43 event {"_type":"transition","tid":"S7","acc":60.0,"desc":"home","event":"enter","lat":48.1864981,"lon":16.1239544,"tst":1542035681,"wtst":1541606865,"t":"c"}
2018-11-12 16:18:47 samsungS7 {"_type":"location","tid":"S7","acc":12,"batt":43,"conn":"m","lat":48.1828921,"lon":16.0893263,"tst":1542035926}
2018-11-12 16:18:47 transmission-state incoming publish received
message_ids:
publishSets:
cmd:
topic owntracks/Nici/samsungS7/cmd
values:
msg:
topic owntracks/Nici/samsungS7/msg
values:
sets:
cmd
msg
subscribe:
owntracks/Nici/samsungS7/beacon
owntracks/Nici/samsungS7/cmd
owntracks/Nici/samsungS7/dump
owntracks/Nici/samsungS7/event
owntracks/Nici/samsungS7/msg
owntracks/Nici/samsungS7
owntracks/Nici/samsungS7/step
owntracks/Nici/samsungS7/waypoints
subscribeExpr:
^owntracks\/Nici\/samsungS7\/beacon$
^owntracks\/Nici\/samsungS7\/cmd$
^owntracks\/Nici\/samsungS7\/dump$
^owntracks\/Nici\/samsungS7\/event$
^owntracks\/Nici\/samsungS7\/msg$
^owntracks\/Nici\/samsungS7$
^owntracks\/Nici\/samsungS7\/step$
^owntracks\/Nici\/samsungS7\/waypoints$
subscribeQos:
owntracks/Nici/samsungS7 0
owntracks/Nici/samsungS7/beacon 0
owntracks/Nici/samsungS7/cmd 0
owntracks/Nici/samsungS7/dump 0
owntracks/Nici/samsungS7/event 0
owntracks/Nici/samsungS7/msg 0
owntracks/Nici/samsungS7/step 0
owntracks/Nici/samsungS7/waypoints 0
subscribeReadings:
owntracks/Nici/samsungS7:
cmd
name samsungS7
owntracks/Nici/samsungS7/beacon:
cmd
name beacon
owntracks/Nici/samsungS7/cmd:
cmd
name cmd
owntracks/Nici/samsungS7/dump:
cmd
name dump
owntracks/Nici/samsungS7/event:
cmd
name event
owntracks/Nici/samsungS7/msg:
cmd
name msg
owntracks/Nici/samsungS7/step:
cmd
name step
owntracks/Nici/samsungS7/waypoints:
cmd
name waypoints
Attributes:
IODev mosquitto
event-on-change-reading samsungS7,event
group Mobiltelefon
icon it_smartphone@red
publishSet_cmd owntracks/Nici/samsungS7/cmd
publishSet_msg owntracks/Nici/samsungS7/msg
qos at-least-once
room Steuerung
sortby 2
stateFormat location
subscribeReading_beacon owntracks/Nici/samsungS7/beacon
subscribeReading_cmd owntracks/Nici/samsungS7/cmd
subscribeReading_dump owntracks/Nici/samsungS7/dump
subscribeReading_event owntracks/Nici/samsungS7/event
subscribeReading_msg owntracks/Nici/samsungS7/msg
subscribeReading_samsungS7 owntracks/Nici/samsungS7
subscribeReading_step owntracks/Nici/samsungS7/step
subscribeReading_waypoints owntracks/Nici/samsungS7/waypoints
Internals:
CHANGED
NAME TrackNici
NOTIFYDEV SamsungS7
NR 217
NTFY_ORDER 999-TrackNici
STATE 3.1
TYPE livetracking
.attraggr:
.attrminint:
READINGS:
2018-11-12 16:18:47 .lastOwnTracks 1542035926
2018-11-12 16:18:46 accuracy 12
2018-11-12 16:18:46 batteryPercent 43
2018-11-12 16:18:46 batteryState ok
2018-11-12 16:18:46 connection mobile
2018-11-12 16:18:46 distance 3.1
2018-11-12 16:18:46 id S7
2018-11-12 16:18:46 location 48.1828921,16.0893263
2018-11-12 16:14:41 place home
2018-11-12 16:14:41 zone_0 active
2018-11-12 15:40:12 zone_1 inactive
helper:
lastOwnTracks 1542035926
Attributes:
batteryWarning 20
comment {(split(' ',ReadingsNum("TrackNici","distance",0)))[0]}
filterAccuracy 400
home 48.2106721,16.086056
owntracksDevice SamsungS7
room Residents
roundAltitude 5
roundDistance 0.1
sortby 2
stateFormat distance
verbose 5
zonename_0 home
zonename_1 office
und
Internals:
AUTOGONE 1542060925
DEF rgr_Residents,rgr_Parents
DURATIONTIMER 1542036806.9539
NAME rr_Nici
NOTIFYDEV global,
NR 151
NTFY_ORDER 50-rr_Nici
READY 1
RESIDENTGROUPS rgr_Residents,rgr_Parents
STATE absent
TYPE ROOMMATE
.attraggr:
.attrminint:
READINGS:
2018-11-12 16:32:26 durTimerAbsence 09:17:01
2018-11-12 16:32:26 durTimerAbsence_cr 557
2018-11-12 07:15:25 durTimerPresence 00:00:00
2018-11-12 07:15:25 durTimerPresence_cr 0
2018-02-05 16:38:37 durTimerSleep 00:00:00
2018-02-05 16:38:37 durTimerSleep_cr 0
2018-11-11 21:16:54 lastArrival 2018-11-11 21:16:54
2018-11-12 07:15:25 lastDeparture 2018-11-12 07:15:25
2018-11-11 21:16:54 lastDurAbsence 08:05:37
2018-11-11 21:16:54 lastDurAbsence_cr 486
2018-11-12 07:15:25 lastDurPresence 09:58:31
2018-11-12 07:15:25 lastDurPresence_cr 599
2018-11-12 07:15:25 lastLocation home
2018-10-04 15:14:15 lastLocationAddr -
2018-10-04 15:14:15 lastLocationLat 48.2106761
2018-10-04 15:14:15 lastLocationLong 16.0860662
2018-11-12 07:15:25 lastMood calm
2018-11-12 07:15:25 lastState home
2018-11-12 07:15:25 location office
2018-10-19 17:49:09 locationAddr -
2018-10-19 17:49:09 locationLat 48.2106967
2018-10-19 17:49:09 locationLong 16.0860459
2018-10-19 17:49:09 locationPresence present
2018-11-12 07:15:25 mood -
2018-11-12 07:15:25 presence absent
2018-11-12 07:15:25 state absent
2018-11-09 13:16:19 wayhome 0
TIMER:
rr_Nici_AutoGone:
HASH rr_Nici
MODIFIER AutoGone
NAME rr_Nici_AutoGone
rr_Nici_DurationTimer:
HASH rr_Nici
MODIFIER DurationTimer
NAME rr_Nici_DurationTimer
Attributes:
alias Nici
devStateIcon .*home:user_available@green:absent .*absent:user_away@orange:home .*gone:user_ext_away@red:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown:home
group Bewohner
icon people_sensor
room Residents
rr_autoGoneAfter 16
rr_geofenceUUIDs TrackNici
rr_locationHome home
rr_locationUnderway office
rr_locationWayhome office
rr_locations home,office
rr_realname group
rr_states home,absent,gone
sortby 2
webCmd state
Das u.a. DOIF sollte den Status für rr_Nici entsprechend setzen - aber offensichtlich frage ich etwas falsches ab ...
Internals:
CFGFN
DEF (["SamsungS7:enter"]) (set rr_Nici location [TrackNici:place]) DOELSEIF (["SamsungS7:leave"]) (set rr_Nici location underway)
MODEL FHEM
NAME Nici_ComingHome_LeavingHome
NR 611
NTFY_ORDER 50-Nici_ComingHome_LeavingHome
STATE initialized
TYPE DOIF
.attraggr:
.attrminint:
READINGS:
2018-11-12 16:41:51 cmd 0
2018-11-12 16:41:51 mode enabled
2018-11-12 16:41:51 state initialized
Regex:
cond:
:
0:
"SamsungS7:enter" SamsungS7:enter
1:
"SamsungS7:leave" SamsungS7:leave
condition:
0 ::EventDoIf('SamsungS7',$hash,'enter',0)
1 ::EventDoIf('SamsungS7',$hash,'leave',0)
devices:
do:
0:
0 set rr_Nici location [TrackNici:place]
1:
0 set rr_Nici location underway
2:
helper:
globalinit 1
last_timer 0
sleeptimer -1
itimer:
uiState:
uiTable:
Attributes:
Bitte um Hilfe
Hallo statler,
mein DOIF dazu sieht so aus:
(["$SELF:switch: enter"] or ["owntracks:enter"])
({
my @pos=split(/,/,ReadingsVal('iphone.otrp','location',''));
my $place=ReadingsVal('iphone.otrp','place','');
fhem("set Wohnung location [iphone.otrp:place]");
fhem("set rr_Sebastian location [iphone.otrp:place]");
fhem("set locations.RH add [iphone.otrp:place]");
fhem("setreading rr_Sebastian locationLat $pos[0]");
fhem("setreading rr_Sebastian locationLong $pos[1]");
fhem("set Sebastian.DUM present") if ("$place" eq "home");
fhem("defmod -temporary atTmpHomeCMD_antiFlap_rr_Sebastian at +00:05:00 set Sebastian.DUM absent") if ("$place" eq "home");
Log(1, "Standort-Logik bei enter - Standort: [iphone.otrp:place].");
})
DOELSEIF (["$SELF:switch: leave"] or ["owntracks:leave"])
({
my $loc=ReadingsVal('rr_Sebastian','location','');
my @pos=split(/,/,ReadingsVal('iphone.otrp','location',''));
fhem("set Wohnung location underway") if ($loc !~ /home/);
fhem("set rr_Sebastian location underway") if ($loc !~ /home/);
fhem("set locations.RH add underway");
fhem("setreading rr_Sebastian lastLocationLat $pos[0]");
fhem("setreading rr_Sebastian lastLocationLong $pos[1]");
Log(1, "Standort-Logik bei leave - [iphone.otrp:place].");
})
Es reagiert auf die owntracks events enter und leave und schreibt dann ein paar readings
aus dem livetracking device in meinen ROOMMATE. Wohnung ist ein HOMEMODE device.
EDIT: Mein DOIF hat noch attr wait 2:2 gestezt.
VG Sebastian
Danke Sebastian ! Werde mich diese Woche mal dran machen und deine "Vorlage" an meine Installation anpassen. Melde mich dann in den nächsten Tagen.
Hallo Sebastian, hab mich mal drangesetzt... Kannst mir bitte auch sagen was "iphone.otrp" ist - habe selbst nur Androiden. Danke
LG Statler
Das ist mein livetracking device.
VG Sebastian
Gesendet von iPhone mit Tapatalk
Danke, Sebastian - so funktioniert es !
LG Statler
Hallo Sebastian,
dein u.a. DOIF funktioniert (auf meine Installation angepasst) seit Monaten einwandfrei. Doch zu meinem Verständnis bitte eine Erklärung:
Wozu brauche ich das
["$SELF:switch: enter"]
bitte ??
Zitat von: binford6000 am 12 November 2018, 20:25:42
Hallo statler,
mein DOIF dazu sieht so aus:
(["$SELF:switch: enter"] or ["owntracks:enter"])
({
my @pos=split(/,/,ReadingsVal('iphone.otrp','location',''));
my $place=ReadingsVal('iphone.otrp','place','');
fhem("set Wohnung location [iphone.otrp:place]");
fhem("set rr_Sebastian location [iphone.otrp:place]");
fhem("set locations.RH add [iphone.otrp:place]");
fhem("setreading rr_Sebastian locationLat $pos[0]");
fhem("setreading rr_Sebastian locationLong $pos[1]");
fhem("set Sebastian.DUM present") if ("$place" eq "home");
fhem("defmod -temporary atTmpHomeCMD_antiFlap_rr_Sebastian at +00:05:00 set Sebastian.DUM absent") if ("$place" eq "home");
Log(1, "Standort-Logik bei enter - Standort: [iphone.otrp:place].");
})
DOELSEIF (["$SELF:switch: leave"] or ["owntracks:leave"])
({
my $loc=ReadingsVal('rr_Sebastian','location','');
my @pos=split(/,/,ReadingsVal('iphone.otrp','location',''));
fhem("set Wohnung location underway") if ($loc !~ /home/);
fhem("set rr_Sebastian location underway") if ($loc !~ /home/);
fhem("set locations.RH add underway");
fhem("setreading rr_Sebastian lastLocationLat $pos[0]");
fhem("setreading rr_Sebastian lastLocationLong $pos[1]");
Log(1, "Standort-Logik bei leave - [iphone.otrp:place].");
})
Es reagiert auf die owntracks events enter und leave und schreibt dann ein paar readings
aus dem livetracking device in meinen ROOMMATE. Wohnung ist ein HOMEMODE device.
EDIT: Mein DOIF hat noch attr wait 2:2 gestezt.
VG Sebastian
Danke für die Erleuchtung ! LG Statler
ZitatWozu brauche ich das ["$SELF:switch: enter"] bitte ??
Das war zu Testzwecken noch im DOIF drin. Damit wird das DOIF selbst ausgelöst.
VG Sebastian
Also wie ich vermutet habe zum "produktiven" Einsatz nicht notwendig. Danke.