×

带警报系统的室温探测器开源分享

消耗积分:0 | 格式:zip | 大小:0.02 MB | 2022-11-28

分享资料个

描述

介绍

我们大多数人经常浏览谷歌以获取他们所在地区的最新温度。同样,大多数制药公司都希望按需了解其生产设施中的温度。并且这样的系统需要实时报告。

想想制药公司需要在30-35摄氏度进行生产的情况,任何变化都会对产品造成损坏。现在,生产设施的经理有两种选择。

  • 要么定期连续读取温度读数,要么在波动时停止操作。这根本不可行。
  • 另一种解决方案是部署物联网设备,该设备将持续监控读数,并在读数波动时向生产设施的经理或员工报告。

第二种方案不仅值得信赖,而且节省了人工。每当出现波动时,设备可以通过短信、社交平台向员工报告,这将为工厂避免巨大的损失。

螺栓物联网平台

Bolt IoT 平台让您无论身在何处都能安全可靠地控制您的设备并从 IoT 设备收集数据。只需单击几下即可部署机器学习算法以检测异常并预测传感器值,从而获得可行的见解。

第 1 步:硬件连接

使用公对母线将 LM35 的 3 个引脚连接到 Bolt Wifi 模块,如下所示:

  • LM35 的 VCC 引脚连接到 Bolt Wifi 模块的 5V。
  • LM35 的输出引脚连接到 Bolt Wifi 模块的 A0(模拟输入引脚)。
  • LM35 的 GND 引脚连接到 Gnd。
pYYBAGODzlmAeJ0JAAC4p8V7Mzk858.png
LM35与跳线的连接
 

第 2 步:软件设置

  • 为此,请安装 Python 3.8
  • 在此安装 pip(Python 包管理器)之后,使用:
python get-pip.py
  • 现在从 pip 安装 BoltIot 包:
pip install boltiot

第 3 步:将设备连接到 BoltIOT 云

  • 打开cloud.boltiot.com并使用您的 ID 和密码登录。
  • 接下来,我们需要前往 Device Tab 并复制 device-id
pYYBAGODzlyAJYNjAADs5KaVLsk076.jpg
BOLT云平台物联网设备部分
 
  • 接下来,转到 API 选项卡并复制 API 代码:

 

poYBAGODzl6AcNreAAGE11c4xPI746.jpg
 

第 4 步:在 Telegram 上创建频道

创建频道的步骤

  • 转到 Telegram 应用程序的主屏幕。
  • 从左侧滑动以显示菜单。
  • 点击“新频道”。
pYYBAGODzmKAQlYmAAFEs3USFGY600.jpg
 
  • 它会要求您输入频道的名称和说明。给出合适的名称和描述。添加照片是可选的。
poYBAGODzmSATB-XAAA8bQBn_qE866.jpg
 
  • 在下一个屏幕中,将频道设置为公共。
  • 在同一屏幕上,它会要求您输入频道的永久链接。您可以使用小写字母和数字 0-9 来创建频道链接。
  • 请注意,频道链接名称是全局的,只有当链接名称可用时,您才能创建频道链接。频道链接名称类似于电子邮件地址,即一次只能存在一个唯一的电子邮件 ID。
  • 您可以将频道链接名称保留为 temperature_alert_,后跟您的电子邮件 ID。例如,如果我的电子邮件 ID 是 developer@boltiot.com,我可以将频道链接名称保留为temperature_alert_developer_boltiot_com (我已经删除了 @ 和。符号,因为它是不允许的,并将其替换为下划线 _)这只是一个建议。您可以根据需要保留频道链接名称,只要它有效即可。
  • 记下此频道永久链接名称。稍后将需要向此频道发送消息。例如,下图中的通道链接名称为“ temperature_alert”。
pYYBAGODzmaAP5_DAABB9XBkgNs225.jpg
 
  • 恭喜!您已经创建了一个新频道。您还可以从应用主屏幕查看此频道。
  • 您可以单击顶部的频道名称以查看有关它的更多详细信息。
poYBAGODzmiAH9mrAAAhU6jjVGE368.jpg
 
  • 接下来,我们需要创建一个机器人并将其添加到频道,以便它可以在该频道上为我们发布警报。

第 5 步:在 Telegram 上创建机器人

创建一个新机器人

Telegram 允许我们在名为“BotFather”的机器人的帮助下创建一个新机器人。它是创建和管理其他机器人的单个机器人。

  • 在应用程序的主屏幕上,单击右上角的搜索图标并输入“botfather”。
pYYBAGODzmqAc6bLAAAjwHcsq4k889.png
 
  • 在搜索结果中,单击“BotFather”的正确结果,如下所示。正确的“BotFather”在其名称旁边会有一个蓝色的勾号。这将带您进入与“BotFather”的聊天窗口。
poYBAGODzm2AGszsAAA513HRPNc063.png
 
  • 聊天中已经有一些项目,并且会向您显示开始使用的命令列表。
pYYBAGODzm-ADt53AABceub1vPQ694.jpg
 
  • 由于我们需要创建一个新的 Bot,请继续并在窗口中输入“/newbot”。
  • 它会要求您输入更多详细信息,例如 Bot 名称和 Bot 用户名。
  • 成功创建机器人后,您将看到类似于下图的屏幕,其中包含机器人令牌。此令牌用于控制您的 Bot 并代表它发送消息。请保持此令牌的安全,因为它将允许任何人访问您的机器人。
poYBAGODznKAeJuTAACJdiGlwSk667.png
 
  • 在上面的屏幕截图中,Bot 令牌是“894346529:AAhuJ2XJQy5dlEtLYF0sc0Z_qu0fSqihSSc”。请将其另存为 telegram_bot_id。telegram_bot_id 保存为“bot”,后跟 bot 令牌。因此,在本例中,telegram_bot_id 将为“bot894346529:AAhuJ2XJQy5dlEtLYF0sc0Z_qu0fSqihSSc”。
  • telegram_bot_id 将在 python 代码中用于发送消息。Python代码将在后面的课程中讲授。
  • 另外,保存 Bot ID 时请小心。您可能会对 0 和 O、I 和 1 等感到困惑,因为它们看起来很相似。
  • 恭喜,您已经创建了一个新的 Bot。现在,我们需要将它添加到我们之前创建的通道中,以便我们可以发送警报。

第 6 步:将机器人添加到频道

  • 在 App 主屏幕中,打开我们之前创建的频道。
  • 在屏幕中,单击顶部的频道名称以打开频道的信息。
pYYBAGODznSAEvegAAAygzaSvPU598.png
 
  • 单击管理员按钮,以便我们可以将新创建​​的机器人添加到频道。
poYBAGODzneAGj0OAAA1e_xacdQ279.png
 
  • 使用机器人的用户名搜索我们创建的机器人。找到正确的 Bot 后,单击它以将其添加到频道。请确保您在上一步中单击了管理员按钮,因为这将允许我们的机器人发布到频道。
pYYBAGODznmAemx1AABSKtDWkvg648.png
 
  • 您将被要求确认机器人的权利。按右上角的刻度线以继续将机器人添加到频道。确保机器人有权“发布消息”。
pYYBAGODznyAXBvsAAAjSTeBgXY536.jpg
 
  • 您现在将在频道管理员列表中看到新创建的机器人。
poYBAGODzn6ACwlHAAAYGChC8Ys003.png
 
  • 现在我们将编写一个代码,用于通过 Bot 向通道发送消息。

第七步:工作原理

温度设置已连接到 BoltIOT 云,现在我们需要编写代码。但在开始之前,让我们先了解一下这个项目的结构。

我们的 Python 脚本将在所述时间间隔内持续监控我们的温度传感器,并捕获数据馈送。捕获数据后,脚本现在将执行 Z 分数分析,以计算周围环境的温度上限和下限。Z-score 统计数据需要很少的数据点来开始计算,比如大约 10 个点。一旦捕获到上述点数,我们就可以应用 Z-score 异常统计来计算数据的上限和下限。或者换句话说,这将为我们提供一段时间内监控的平均室温限制。

Zn = factor * math.sqrt(Variance / frame_size)
High_bound = history_data[frame_size-1]+Zn
Low_bound = history_data[frame_size-1]-Zn

现在,每当我们捕获位于高域和低域之外的数据点时,我们都会向用户发送警报。换句话说,通过 Z-score,我们可以计算出准确的数据上限和下限阈值。

Z分数计算

poYBAGODzoCAMkrIAAAYpO9vft4575.jpg
Z 分数公式
 

截图:

pYYBAGODzoeAImIjAA1Icx0Ujjw421.jpg
完成设置
 

在上图中,我们看到如上图所示进行连接,然后插入 USB 数据线并借助移动电源、移动充电器供电或简单地将其连接到笔记本电脑的 USB 端口。

poYBAGODzoqASSCgAAI9vjpCKbg809.jpg
编译期间的代码。
 

当代码运行时,房间内的温度正在下降,因为它是在空调房间里。为了提高温度,只需揉搓手掌使其温暖并用手轻轻握住传感器,然后您会注意到图像中提到的读数有所不同。随着温度的突然变化,传感器会检测到它并在 Telegram 中向您发送消息。

pYYBAGODzo2AdlvnAAPHQeQOjRg231.jpg
电报中的警报消息
 

它进行了 8 次,每当温度变化出现异常或巨大差异时,我们都会在 Telegram 中收到 8 条警报消息。当温度以一定的速度下降时,它不会在 Telegram 中向您发送任何消息。但是,当温度突然升高 2,3 度或更多度时,它会立即向您发送通知。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'带警报系统的室温探测器开源分享',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);