iBeacon Detector and Proxidyne Sensors Indigo plugin

Posted on
Fri Mar 24, 2017 5:29 pm
tperfitt offline
User avatar
Posts: 8
Joined: Feb 21, 2015
Location: Naperville, IL

iBeacon Detector and Proxidyne Sensors Indigo plugin

I created a plugin for Indigo that works our Proxidyne sensors (including buttons, motion sensor and a new iBeacon detector for nearby wearable iBeacons). The plugin is here: https://github.com/proxidyne/indigo_bleu.

The plugin supports the new iBeacon Detector. The iBeacon Detector will trigger actions in Indigo when it detects nearby wearable iBeacons such as an iBeacon keyfob. I am the author of the iOS app Geohopper that is used with Indigo to trigger actions via webhooks. When you enter or exit a room, Geohopper detects the event and triggers the webhook, which in term triggers a indigo action. The new plugin does something similar, but instead of an app, it uses a wearable iBeacon, and the action is triggered by the iBeacon Detector sending a message to the USB Proxidyne Receiver plugged into the Indigo server. It also means that you have much more granular control over signal strength when detecting the wearable beacon. This translates to more accurate indoor location detection.

I blogged about using the plugin with the iBeacon detector here: http://proxidyne.com/blog/

The plugin also works with our motion detectors and range of buttons. More information here: http://proxidyne.com/markets/maker/bleu ... utomation/

Check out the plugin and let me know what you think.

tim perfitt

Posted on
Fri Mar 31, 2017 4:14 pm
davelebbing offline
Posts: 2
Joined: Mar 28, 2017

Re: iBeacon Detector and Proxidyne Sensors Indigo plugin

I added some content to the develop branch of the indigo_bleu plugin repo on Github that adds some time-based smoothing of beacon detection events.


This adds a plugin setting called "Absence filter" to ignore transient missed beacon detection events. This way the detector can quickly trigger an action when it finds a beacon, but if something temporarily blocks the beacon it will ignore the change until it continues to not see the beacon show up again. For example, I want my light to turn on right away when I enter a room but I only want the light to turn off when I have definitely left the room and not any time that something briefly blocks the beacon. By keeping track of the time for "beacon_last_seen" I can ignore changes if it's only been a couple seconds since I last saw the beacon.

if bit_present(asset_int, beacon_number):
self.debugLog("beacon {} detected".format(beacon_number))
self.beacon_last_seen[beacon_number] = time.time()
if beacon_previous_state != True:
indigo.server.log("found beacon {}".format(beacon_number))
y.updateStateOnServer("beaconNumber{}".format(beacon_number), value=True)
seconds_since_seen = time.time() - self.beacon_last_seen.get(beacon_number, 0)
if (seconds_since_seen > self.beacon_absence_filter) and (beacon_previous_state != False):
indigo.server.log("lost beacon {}".format(beacon_number))
y.updateStateOnServer("beaconNumber{}".format(beacon_number), value=False)

Page 1 of 1

Who is online

Users browsing this forum: No registered users and 1 guest