在本指南中,我们将展示如何快速一步一步地设置您的结方法报告的“触发”条件时,发送电子邮件通知TG-BT5-IN或TG-BT5-OUT标签。
根据标签的指南iOS和安卓,标签有一个内置的加速度计,能够检测自由落体,唤醒/运动和倾斜状态。当标签设置为广播时雷竞技网站MikroTik格式有效载荷和加速度计触发器被启用(使用MikroTik Beacon Manager应用程序)→标签将立即广播广告有效载雷竞技网站荷/报告,无论何时触发将被检测到。
对于iOS,触发设置是这样的(处于禁用状态/默认设置):
对于Android,触发设置看起来像这样(在禁用状态/默认设置):
要激活触发检测,只需启用相应的“复选框”。
蓝牙有效载荷通过标签广播后,有效载荷的第21个八位字节将指示检测到的确切触发器。你可以看到载荷在物联网>蓝牙> Advertisng报告标签:
根据上面的截图,第21个八位字节是“04”,这表明,当标签检测到自由落体状态时,有效载荷被发送(当我们“不小心”掉下或扔出标签时,这些有效载荷被广播)。
可以找到有关microtik格式字节值的更多信息雷竞技网站链接。
一旦一切都配置好了,下面将会发生:
换句话说,当KNOT扫描有效载荷并找到第21位字节表示触发器已激活的有效载荷时,您将收到一封电子邮件通知,通知已检测到触发器。
在这个特定的示例中,我们需要设置标记以在雷竞技网站MikroTik格式。在microt雷竞技网站ik格式中,每个有效载荷的第21个八位字节将表明它被触发的原因。
可以找到有关如何启用触发器的手册iOS和/或安卓指南(“广告”/设置灯塔部分)。
为了更容易“激活”触发器,我们还可以根据iOS和/或安卓指南(自由落体阈值和持续时间部分)。为了测试的目的,基本上,只是为了更快地“触发”检测,我们可以改变自由落体持续时间参数设置为“0”秒(这将确保在所有轴上的阈值范围内的任何加速度将立即被检测为“自由落体”事件)。
请注意:物联网需要包装。你可以从我们的下载页面-在“额外包裹”下。
配置可分4步完成:
去物联网>蓝牙>扫描仪选项卡,并确保它已启用:
去广告的报告选项卡并使用MAC地址过滤选项过滤列表(您可以在标签本身的标签上找到打印在MikroTik标签上的MAC地址)。雷竞技网站
尝试“触发”配置的检测,并通过检查21字节的值来确认。
在我们的示例中,我们为我们的标记配置了“自由落体”检测把它。我们从标签上得到了“下落”状态的报告(21 octet =)04):
我们已经确认,标签正确地报告了触发器。
导航到工具>电子邮件节并设置您选择的电子邮件服务器。
你可以找到我们的电子邮件配置示例:链接。我们将使用所示Gmail本指南中的示例。
试着发送一封测试邮件,以确保设置正确。
导航到系统>脚本菜单并在那里添加一个新脚本。
您可以复制下面的脚本。将下面的脚本复制到记事本中,然后再次复制到脚本中来源:”字段。
#在“”内输入标签的MAC地址: localaddressregex "2C:C8:1B:E2:15:29" #在“”中输入邮件主题:本地邮件主题为“RouterOS报告!”l雷竞技 #在“”中输入电子邮件地址:本地电子邮件地址“YOUR_EMAIL@gmail.com” #脚本:################################## 蓝牙 ##################################: localflagstr ={:本地STR "" :if ($1 & 0x01) do={:set $str " switch"}:if ($1 & 0x02) do={:set $str "$str "}:if ($1 & 0x04) do={:set $str "$str free_fall"}:if ($1 & 0x08) ={:set $str "$str impact_x"}:if ($1 & 0x10) do={:set $str "$str impact_y"}:if ($1 & 0x20) do={:set $str "$str impact_z"} :if ([:len $str] = 0) do={:返回""} :return [: select $str 1 [:len $str]]} : localtriggernamef "free_fall":本地触发器“tilt”:local triggernameX "impact_x":local triggernameY "impact_y":local triggernameZ "impact_z":local triggernameS "switch" 寻找新鲜的蓝牙广告:全球btOldestAdvertisementTimestamp:if ([:typeof $btOldestAdvertisementTimestamp] = " none ") do={#启动后第一次运行这个脚本,需要初始化# persistent变量:set $btOldestAdvertisementTimestamp 0}:本地广告[/iot蓝牙扫描仪广告打印详情\As-value where \epoch > $btOldestAdvertisementTimestamp和\地址~ $addressRegex]:local advCount 0:local lastAdvTimestamp 0:本地触发器列表"" :本地triggerF:本地triggerT:本地triggerX:本地triggerY:本地triggerZ:本地触发器 : localmessagef "": localmessaget "": localmessagex "": localmessagey "": localmessagez "":本地消息"" 本地21 "" :foreach adv =$ advertising ={:本地地址($adv->"address"):本地rssi ($adv->"rssi"):local epoch ($adv->"epoch"):local rtime ($adv->"time"):本地AD ($adv->"data"):local flags [:tonum "0x$[:pick $ad 40 42]"]localobj "$[$flagStr $flags]" :设置$advCount ($advCount + 1):设置$lastAdvTimestamp $epoch设置$triggerlist "$triggerlist$obj" :set triggerF [:pick $triggerlist ([find $triggerlist "free_fall"]-0) ([find $triggerlist "free_fall"]+9)]:if ($triggerF=$triggernameF) do={:set messageF "$triggernameF";:set 21 "not00";}:设置triggerT[:选择$triggerlist([查找$triggerlist“倾斜”]-0)([查找$triggerlist“倾斜”]+4)]:if ($triggerT=$triggernameT) do={:set messageT "$triggernameT";:set 21 "not00";}:set triggerX [:pick $triggerlist ([find $triggerlist "impact_x"]-0) ([find $triggerlist "impact_x"]+8)]:if ($triggerX=$triggernameX) do={:set messageX "$triggernameX";:set 21 "not00";}:set triggerY [:pick $triggerlist ([find $triggerlist "impact_y"]-0) ([find $triggerlist "impact_y"]+8)]:if ($triggerY=$triggernameY) do={:set messageY "$triggernameY";:set 21 "not00";}:set triggerZ [:pick $triggerlist ([find $triggerlist "impact_z"]-0) ([find $triggerlist "impact_z"]+8)]:if ($triggerZ=$triggernameZ) do={:set messageZ "$triggernameZ";:set 21 "not00";}:设置触发器[:选择$triggerlist([查找$triggerlist "switch"]-0)([查找$triggerlist "switch"]+6)]:if ($triggerS=$triggernameS) do={:set messageS "$triggernameS";:set 21 "not00";} }:if ($advCount > 0) do={:set $btOldestAdvertisementTimestamp $lastAdvTimestamp} #消息结构::本地消息”$messageFmessageT美元messageX美元messageY美元messageZ美元美元的消息——标签报告的触发器!” :if ($21 ="not00") do={/tool E-mail send to=$emailaddress subject="$emailsubject" body="$message"} else={:put "21 octet not have triggers detected!"}
#在“”内输入标签的MAC地址: localaddressregex "2C:C8:1B:E2:15:29"
#在“”中输入邮件主题:本地邮件主题为“RouterOS报告!”l雷竞技
#在“”中输入电子邮件地址:本地电子邮件地址“YOUR_EMAIL@gmail.com”
#脚本:################################## 蓝牙 ##################################: localflagstr ={:本地STR ""
:if ($1 & 0x01) do={:set $str " switch"}:if ($1 & 0x02) do={:set $str "$str "}:if ($1 & 0x04) do={:set $str "$str free_fall"}:if ($1 & 0x08) ={:set $str "$str impact_x"}:if ($1 & 0x10) do={:set $str "$str impact_y"}:if ($1 & 0x20) do={:set $str "$str impact_z"}
:if ([:len $str] = 0) do={:返回""}
:return [: select $str 1 [:len $str]]}
: localtriggernamef "free_fall":本地触发器“tilt”:local triggernameX "impact_x":local triggernameY "impact_y":local triggernameZ "impact_z":local triggernameS "switch"
寻找新鲜的蓝牙广告:全球btOldestAdvertisementTimestamp:if ([:typeof $btOldestAdvertisementTimestamp] = " none ") do={#启动后第一次运行这个脚本,需要初始化# persistent变量:set $btOldestAdvertisementTimestamp 0}:本地广告[/iot蓝牙扫描仪广告打印详情\As-value where \epoch > $btOldestAdvertisementTimestamp和\地址~ $addressRegex]:local advCount 0:local lastAdvTimestamp 0:本地触发器列表""
:本地triggerF:本地triggerT:本地triggerX:本地triggerY:本地triggerZ:本地触发器
: localmessagef "": localmessaget "": localmessagex "": localmessagey "": localmessagez "":本地消息""
本地21 ""
:foreach adv =$ advertising ={:本地地址($adv->"address"):本地rssi ($adv->"rssi"):local epoch ($adv->"epoch"):local rtime ($adv->"time"):本地AD ($adv->"data"):local flags [:tonum "0x$[:pick $ad 40 42]"]localobj "$[$flagStr $flags]"
:设置$advCount ($advCount + 1):设置$lastAdvTimestamp $epoch设置$triggerlist "$triggerlist$obj"
:set triggerF [:pick $triggerlist ([find $triggerlist "free_fall"]-0) ([find $triggerlist "free_fall"]+9)]:if ($triggerF=$triggernameF) do={:set messageF "$triggernameF";:set 21 "not00";}:设置triggerT[:选择$triggerlist([查找$triggerlist“倾斜”]-0)([查找$triggerlist“倾斜”]+4)]:if ($triggerT=$triggernameT) do={:set messageT "$triggernameT";:set 21 "not00";}:set triggerX [:pick $triggerlist ([find $triggerlist "impact_x"]-0) ([find $triggerlist "impact_x"]+8)]:if ($triggerX=$triggernameX) do={:set messageX "$triggernameX";:set 21 "not00";}:set triggerY [:pick $triggerlist ([find $triggerlist "impact_y"]-0) ([find $triggerlist "impact_y"]+8)]:if ($triggerY=$triggernameY) do={:set messageY "$triggernameY";:set 21 "not00";}:set triggerZ [:pick $triggerlist ([find $triggerlist "impact_z"]-0) ([find $triggerlist "impact_z"]+8)]:if ($triggerZ=$triggernameZ) do={:set messageZ "$triggernameZ";:set 21 "not00";}:设置触发器[:选择$triggerlist([查找$triggerlist "switch"]-0)([查找$triggerlist "switch"]+6)]:if ($triggerS=$triggernameS) do={:set messageS "$triggernameS";:set 21 "not00";}
}:if ($advCount > 0) do={:set $btOldestAdvertisementTimestamp $lastAdvTimestamp}
#消息结构::本地消息”$messageFmessageT美元messageX美元messageY美元messageZ美元美元的消息——标签报告的触发器!”
:if ($21 ="not00") do={/tool E-mail send to=$emailaddress subject="$emailsubject" body="$message"} else={:put "21 octet not have triggers detected!"}
需要考虑以下3行:
: localaddressregex "2C:C8:1B:E2:15:29"
行,我们在其中输入您希望监控的标签的MAC地址;
:本地邮件主题为“RouterOS报告!”l雷竞技
Line,你可以更改邮件的主题;
:本地电子邮件地址“YOUR_EMAIL@gmail.com”
电子邮件地址行,您需要在其中输入电子邮件地址。你想把报告寄到哪里?
您还可以使用以下行更改电子邮件的结构:
#消息结构: :本地消息”$messageF messageT美元 messageX美元 messageY美元 messageZ美元 美元的消息 ——标签报告的触发器!”
#消息结构:
:本地消息”$messageF
messageT美元
messageX美元
messageY美元
messageZ美元
美元的消息
——标签报告的触发器!”
无论你喜欢怎样命名这个脚本,例如,triggernotification。点击应用和好吧。
另外
在本例中,我们将专门展示一个电子邮件通知场景。但是!如果您想使用其他方法发送通知,您可以更改下面的行:
:if ($21 ="not00") do={/tool电子邮件发送到=$emailaddress主题="$emailsubject"正文="$message"}
你可以改变={/工具的电子邮件…“这句话的一部分,例如,”做= {/工具获取…“或者”做= {/iot MQTT发布…”。这样,您就可以发送HTTP发布或MQTT发布消息。
如果您想在检测到触发器时获得电话通知,您也可以使用IFTTT服务(HTTP post到IFTTT webhook),如我们在另一个指南中所述在这里。
您可以通过命令“”手动运行该脚本。/system script运行triggernotification或者点击"运行脚本按钮下的脚本列表部分。
您应该确保在手动启动脚本之后收到了电子邮件通知。
当脚本(一),则RouterOS将检查每l雷竞技个接收/存储的蓝牙有效负载,如果在有效负载列表中找到任何触发器,就会组织并发送一封电子邮件。此电子邮件消息将简单地指出在列表中检测到哪些触发器,而不提供其他信息。
#在“”内输入标签的MAC地址: localaddressregex "2C:C8:1B:E2:15:29" # POSIX regex用于过滤蓝牙广告基于他们的数据。相同#用法与'addressRegex'相同。:本地广告dataregex "" #信号强度滤波器。例如-40只包括蓝牙广告#信号强度大于-40dBm。#要禁用此过滤器,请将其设置为“”:local rssiThreshold "" #在“”中输入邮件主题:本地邮件主题为“RouterOS报告!”l雷竞技 #在“”中输入电子邮件地址:本地电子邮件地址“YOUR_GMAIL@gmail.com” #脚本:################################## 蓝牙 ##################################: localflagstr ={:本地STR "" :if ($1 & 0x01) do={:set $str " switch"}:if ($1 & 0x02) do={:set $str "$str "}:if ($1 & 0x04) do={:set $str "$str free_fall"}:if ($1 & 0x08) ={:set $str "$str impact_x"}:if ($1 & 0x10) do={:set $str "$str impact_y"}:if ($1 & 0x20) do={:set $str "$str impact_z"} :if ([:len $str] = 0) do={:返回""} :return [: select $str 1 [:len $str]]} : localtriggernamef "free_fall":本地触发器“tilt”:local triggernameX "impact_x":local triggernameY "impact_y":local triggernameZ "impact_z":local triggernameS "switch" 寻找新鲜的蓝牙广告:全球btOldestAdvertisementTimestamp:if ([:typeof $btOldestAdvertisementTimestamp] = " none ") do={#启动后第一次运行这个脚本,需要初始化# persistent变量:set $btOldestAdvertisementTimestamp 0}:本地广告[/iot蓝牙扫描仪广告打印详情\As-value where \epoch > $btOldestAdvertisementTimestamp和\地址~ $addressRegex和\data ~ $advertisingDataRegex和\rssi > $rssiThreshold]:local advCount 0:local lastAdvTimestamp 0:本地触发器列表"" :本地triggerF:本地triggerT:本地triggerX:本地triggerY:本地triggerZ:本地触发器 : localmessagef "": localmessaget "": localmessagex "": localmessagey "": localmessagez "":本地消息"" 本地21 "" :foreach adv =$ advertising ={:本地地址($adv->"address"):本地rssi ($adv->"rssi"):local epoch ($adv->"epoch"):local rtime ($adv->"time"):本地AD ($adv->"data"):local flags [:tonum "0x$[:pick $ad 40 42]"]: localflags "$[$flagStr $flags]":if ($fflag ="") do={:设置$fflag "无-定期广播的有效载荷"} : localobj "# $advCount;时间:$ rtime触发:$ fflags ”:设置$advCount ($advCount + 1):设置$lastAdvTimestamp $epoch设置$triggerlist "$triggerlist$obj" :set triggerF [:pick $triggerlist ([find $triggerlist "free_fall"]-0) ([find $triggerlist "free_fall"]+9)]:if ($triggerF=$triggernameF) do={:set messageF "$triggernameF";:set 21 "not00";}:设置triggerT[:选择$triggerlist([查找$triggerlist“倾斜”]-0)([查找$triggerlist“倾斜”]+4)]:if ($triggerT=$triggernameT) do={:set messageT "$triggernameT";:set 21 "not00";}:set triggerX [:pick $triggerlist ([find $triggerlist "impact_x"]-0) ([find $triggerlist "impact_x"]+8)]:if ($triggerX=$triggernameX) do={:set messageX "$triggernameX";:set 21 "not00";}:set triggerY [:pick $triggerlist ([find $triggerlist "impact_y"]-0) ([find $triggerlist "impact_y"]+8)]:if ($triggerY=$triggernameY) do={:set messageY "$triggernameY";:set 21 "not00";}:set triggerZ [:pick $triggerlist ([find $triggerlist "impact_z"]-0) ([find $triggerlist "impact_z"]+8)]:if ($triggerZ=$triggernameZ) do={:set messageZ "$triggernameZ";:set 21 "not00";}:设置触发器[:选择$triggerlist([查找$triggerlist "switch"]-0)([查找$triggerlist "switch"]+6)]:if ($triggerS=$triggernameS) do={:set messageS "$triggernameS";:set 21 "not00";} }:if ($advCount > 0) do={:set $btOldestAdvertisementTimestamp $lastAdvTimestamp} :if ($21 ="not00") do={/tool E-mail send to=$emailaddress subject="$emailsubject" body="$triggerlist"} else={:put "第21位未检测到触发器!"}
# POSIX regex用于过滤蓝牙广告基于他们的数据。相同#用法与'addressRegex'相同。:本地广告dataregex ""
#信号强度滤波器。例如-40只包括蓝牙广告#信号强度大于-40dBm。#要禁用此过滤器,请将其设置为“”:local rssiThreshold ""
#在“”中输入电子邮件地址:本地电子邮件地址“YOUR_GMAIL@gmail.com”
寻找新鲜的蓝牙广告:全球btOldestAdvertisementTimestamp:if ([:typeof $btOldestAdvertisementTimestamp] = " none ") do={#启动后第一次运行这个脚本,需要初始化# persistent变量:set $btOldestAdvertisementTimestamp 0}:本地广告[/iot蓝牙扫描仪广告打印详情\As-value where \epoch > $btOldestAdvertisementTimestamp和\地址~ $addressRegex和\data ~ $advertisingDataRegex和\rssi > $rssiThreshold]:local advCount 0:local lastAdvTimestamp 0:本地触发器列表""
:foreach adv =$ advertising ={:本地地址($adv->"address"):本地rssi ($adv->"rssi"):local epoch ($adv->"epoch"):local rtime ($adv->"time"):本地AD ($adv->"data"):local flags [:tonum "0x$[:pick $ad 40 42]"]: localflags "$[$flagStr $flags]":if ($fflag ="") do={:设置$fflag "无-定期广播的有效载荷"}
: localobj "# $advCount;时间:$ rtime触发:$ fflags
”:设置$advCount ($advCount + 1):设置$lastAdvTimestamp $epoch设置$triggerlist "$triggerlist$obj"
:if ($21 ="not00") do={/tool E-mail send to=$emailaddress subject="$emailsubject" body="$triggerlist"} else={:put "第21位未检测到触发器!"}
当脚本(b),则RouterOS将检查每l雷竞技个接收/存储的蓝牙有效负载,如果在有效负载列表中找到任何触发器,就会组织并发送一封电子邮件。与脚本相比,此电子邮件消息将包含更详细的信息(一)。在这种情况下,消息将指示每个有效负载的接收时间。
控件下添加一个新的调度器以实现该过程的自动化系统>调度器标签:
输入“/system script运行triggernotification“在……下面”事件:“场,设置一个时间间隔您希望运行脚本来检查/扫描广告报告(例如,10秒)。
点击应用和好吧。
1)确认标签广播广告报告,标签触发器被检测到;
2)确认您的邮件服务器设置正确,并且您可以从KNOT (RouterOS)发送电子邮件。l雷竞技
3)手动运行脚本或对脚本应用调度程序后,应该通过电子邮件通知,如下所示:
脚本(一):
脚本(b):