×

交通跟踪门铃开源分享

消耗积分:0 | 格式:zip | 大小:1.31 MB | 2022-12-23

分享资料个

描述

我想试试SAMI,所以这是一个交通跟踪门铃!

目前,当您按下 Raspberry Pi 2 上的按钮时,它会点亮 LED 并发送“哟!” SAMI,三星的物联网数据管理器。它会生成随时间变化的活动图表——可能是您的流量、传感器数据或任何其他内容。

第 1 阶段:让您的 Pi 做好行动准备

从 Raspberry Pi 网站下载最新的 NOOBS 包

将它插入你的 Pi 并启动它。我坚持使用基本安装:点击向右箭头几次,然后单击“完成”。

使用默认管理员凭据 (pi / raspberry) 登录并键入startx以启动 GUI。

现在,您需要更新和安装一些东西:

sudo apt-get update

sudo apt-get upgrade

apt-get install scrot python-pip

如果您在最后一个上遇到授权或访问错误,请发送sudo !!以以根用户身份重新运行该命令。

scrot是一个屏幕截图实用程序,我发现它很有用。您可以随时使用scrot -cd 5(截屏,延迟 5 秒,带倒计时)截屏。

python-pip是 Python 的包管理器。如果您要安装任何额外的模块,这将很有用。

它们都不是绝对必要的,但它们很好。

第 2 阶段:硬件设置

使用数字引脚 14 上的 LED(及其限流电阻)和引脚 15 与地之间的按钮设置您的硬件。

[油炸]

而已!

第三阶段:编程

这涉及 3 个步骤:在 SAMI 中设置您的设备;通过 Temboo 生成与 SAMI 对话的代码;并编写其余代码。

但我们将从一个简单的草图开始,当您按下按钮时它会触发一个动作。

这是我们的开始按钮/LED 代码(我从本教程改编而来。)

将它保存在你的 Pi 上的某个位置,最好是在一个名为“doorbell”之类的文件夹中。

现在,在您的 Unix 终端中打开该目录并运行脚本:

cd doorbell

sudo python gpio-button.py

该脚本将数字引脚 15 设置为带有上拉电阻的按钮。它会为您提供 2 秒的 LED 闪光,让您知道它已启动。然后,当您按下按钮时,d15 连接到 GND,将其拉低。Pi 看到这个并打开 LED 灯一秒钟以确认它,然后等着看你是否会再做一次。

它需要 sudo(root)权限才能工作,因为 Pi 需要它才能与 GPIO 引脚通信。

 

设置萨米

您可以将数据从任何设备推送到 SAMI。您需要做的就是...

  • 定义您要发送的数据点:温度、开/关状态、亮度或其他。
  • 为清单中的每个变量创建一个字段——这会告诉 SAMI 如何解释您发送的数据。

然后,它会自动为您绘制数据图表!如果您很好奇,请立即运行HelloWorld教程 - 您只需要一台计算机,您就会对这些功能有一个很好的了解。

添加清单

登录开发人员门户并单击“新设备类型”按钮。

 
pYYBAGOkEYmAOAcUAABzu_RCjuI393.png
 

输入设备的显示名称、格式如“io.hackster.device”的唯一名称(如果您编写过移动应用程序,这看起来会很熟悉)和描述。

完成后,您将返回到概览页面。

单击您的新设备类型,然后从左侧边栏中选择“Manifest”。您会在右上角看到一个“新版本”按钮;对于这个项目,我们只是添加一个简单的清单。在字段名称中输入“文本”,它会自动完成——填写数据类型(字符串)。

由于我们只是读取传感器数据,因此不需要将操作发送回设备。单击“下一步”访问该页面,然后单击底部的“保存新清单”。

 
poYBAGOkEYuARtFfAACIBqSmsbw551.png
 

创建新设备

SAMI 中有两个门户,下一步将带我们到另一个:用户门户登录,单击“连接另一台设备...”,然后输入新设备类型的名称。命名并保存设备,您就可以开始了!

单击您的设备名称,您将看到一个仪表板,其中显示了所有设备的数据。您可以从已连接的所有设备中选择要显示的设备。随心所欲地设置它。

使用 API

单击导航栏中的“设备”,然后单击“设置”齿轮图标。为了使用此设备进行通信,您需要为其生成设备令牌这是您发送的每条数据附加的唯一代码;它告诉 SAMI 您有权这样做,就像密码一样。就像密码一样,您可以撤销设备令牌并生成一个新的设备令牌,以防它被泄露……例如,如果您在在线教程中发布屏幕截图;)

 
pYYBAGOkEZKAG9uIAABLjOLHzIU387.png
 

设备 ID就像用户名:设备的唯一标识符。

就是这样——我们准备好继续前进了!

设置天宝

在您的 Raspberry Pi 上登录 Temboo 时,您可能想要执行下一部分。打开浏览器,前往Temboo并为自己创建一个帐户,或登录。

您将被重定向到图书馆页面;向下滚动并单击列表底部的Utilities ,然后导航到HTTP > Post直接链接- 仅在登录时有效)

输入信息:

  • 网址 = https://api.samsungsami.io/v1.1/messages
  • 单击可选输入
  • 调试 =真
  • 请求体
{
    :{
       
   }
}
  • 请求标头
{
     :  ,
     :  
}

…… 大功告成!现在,向下滚动并单击粉红色的运行 按钮:

 
poYBAGOkEZaAQ354AAA6IuanA4Y747.png
 

这是神奇的时刻——你的“哟!” 应该住在SAMI!

返回 SAMI 用户门户,然后单击您的设备名称。使用蓝色的+/- CHARTS按钮,确保您的文本字段正在显示,然后单击右上角的三角形“播放”按钮。最后,您可能需要调整顶部的时间设置。

你的哟来了!

 
pYYBAGOkEZuAZn5dAAB6Xfg5HUM441.png
 

如您所见,我一直在尝试不同的文本变体,并且 SAMI 对它们进行了颜色编码。太棒了!这意味着您可以使用 RFID 传感器而不是按钮,并将姓名发送到 SAMI 以绘制单个客人的图表。我可以将其视为很酷的办公室或创客空间黑客。

调试信息

由于您已将Debug 设置为“true”,您可以看到 SAMI 对 Temboo 的反馈。返回库页面并查看详细信息,其中带有有用的复制 按钮,因此您可以跟踪您的实验。

 
pYYBAGOkEZ2AV8w-AABn4SMf-30893.png
 

特别有趣的是Response 字段,它显示了您刚才发送给 SAMI 的特定信息包的个人 ID(“mid” = “message id”),以及ResponseStatusCode  – 应该是 200,HTTP 状态代码“好的!” 如果您还有其他事情,请在此处查找线索。

差不多完成了——再向下滚动一点,您会找到代码 框。大奖!

由于我们使用的是 Python,因此请从语言下拉列表中选择它,并将代码复制到方便的位置。

最后,点击右边的“Get the Python SDK”。

 
pYYBAGOkEZ2AV8w-AABn4SMf-30893.png
 

前往Temboo/Python 入门指南并按照步骤设置 SDK。

重要提示:将它移到您的门铃 目录中,以便您的脚本可以访问它。

(Temboo 设置部分改编自这个很棒的教程!)

编程你的 Pi

在尝试使用不同的 Python 库来发出 HTTP 请求之后,使用 Temboo 变得异常简单希望您很快就会明白这一点。

编写代码:

现在,我们将采用该示例代码并将其与一些让灯亮起来的东西混合在一起!

您可以运行sudo idle3 &以启动 Python 3 的空闲编辑器,或者运行nano sami-gpio.py 以创建一个新的 Python 文件并在终端中对其进行编辑。如果你使用 Idle,你可以通过按 F5 来运行脚本——但同样,它必须有 sudo 权限才能工作。

无论哪种方式,您应该仍在门铃 目录中。

现在,在一个新的文本文件中,您要粘贴来自 Temboo 的代码。现在尝试运行它!代码应如下所示

sudo python sami-temboo-test.py

 
pYYBAGOkEaSAdJjlAAK-NtuItEE266.png
来自极小的 Temboo 测试的极小文本。
 

哦,看!一个漂亮的 200 响应!至少,这应该是你所拥有的……因为你正在运行与以前相同的命令,只是从你的终端而不是浏览器。通过打开 SAMI 中的时间表进行检查。(注意:它可能不会加载到 Pi 上,但你的计算机会知道。)

最后,让我们把所有东西混合在一起!您完成的代码看起来像这样

我已经包括了原始的 Temboo 评论,加上我自己的一些评论,以帮助您。

现在,运行它:(sudo python sami-gpio.py 或者随便你怎么称呼它)

按下按钮,关注 SAMI 图表!极好!

我希望这可以帮助您设置几个很棒的工具。如果您有任何疑问,请在评论中打我!

下一步

好吧,如果没有扬声器,下一个门铃就什么都不是。

然后,我显然必须 3D 打印一个很棒的外壳。

在编码方面,添加一行向IFTTT 的 Maker 频道和/或Twilio发送消息,触发电子邮件和文本警报是微不足道的。(事实上​​ ,在所有这些 SAMI 集成之前我已经开始工作了!但那是另一天......)

敬请关注 :)


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

评论(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);