X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=go%2Fr3-eventbroker_zmq%2Fpresence.go;h=94f48d7ddcd26d6f75f47db0a7a99d0964c3d391;hb=b01aaf672ddbc3cc802a160b70f1119b7f851859;hp=3677b277cabcac88dfb74fb06719cf7c4ba14fd3;hpb=91ed9fe7c53c26cad5771ef4727da01eae932fa0;p=svn42.git diff --git a/go/r3-eventbroker_zmq/presence.go b/go/r3-eventbroker_zmq/presence.go index 3677b27..94f48d7 100644 --- a/go/r3-eventbroker_zmq/presence.go +++ b/go/r3-eventbroker_zmq/presence.go @@ -12,7 +12,7 @@ import ( func MetaEventRoutine_Presence(ps *pubsub.PubSub, movement_timeout, button_timeout int64) { var last_door_cmd *r3events.DoorCommandEvent var last_presence bool - var last_event_indicating_presence, last_frontlock_use int64 + var last_event_indicating_presence, last_frontlock_use, last_manual_lockhandling int64 var front_locked, front_shut, back_shut bool = true, true, true events_chan := ps.Sub("door", "doorcmd", "buttons", "movement") @@ -32,7 +32,7 @@ func MetaEventRoutine_Presence(ps *pubsub.PubSub, movement_timeout, button_timeo last_event_indicating_presence = evnt.Ts } else { if last_presence { Syslog_.Printf("Presence: Mhh, SomethingReallyIsMoving{%+v} received but presence still true. Quite still a bunch we have here.", evnt) } - if front_locked && front_shut && back_shut && evnt.Confidence >= 20 && last_event_indicating_presence > 1800 { + if front_locked && front_shut && back_shut && evnt.Confidence >= 90 && last_event_indicating_presence > 1800 { new_presence = false } } @@ -41,6 +41,9 @@ func MetaEventRoutine_Presence(ps *pubsub.PubSub, movement_timeout, button_timeo last_event_indicating_presence = evnt.Ts case r3events.DoorCommandEvent: last_door_cmd = &evnt + case r3events.DoorManualMovementEvent: + last_manual_lockhandling = evnt.Ts + last_event_indicating_presence = evnt.Ts case r3events.DoorLockUpdate: front_locked = evnt.Locked last_frontlock_use = evnt.Ts @@ -64,7 +67,7 @@ func MetaEventRoutine_Presence(ps *pubsub.PubSub, movement_timeout, button_timeo //... skip state check .. we had a definite presence event } else if any_door_unlocked || any_door_ajar { new_presence = true - } else if last_door_cmd.Using == "Button" { + } else if last_door_cmd != nil && (last_door_cmd.Using == "Button" || last_door_cmd.Ts < last_manual_lockhandling) { new_presence = true } else { new_presence = false