原文: http://www.hanselman.com/blog/ConnectingMyParticlePhotonInternetOfThingsDeviceToTheAzureIoTHub.aspx?winzoom=1
译者:Negan.L
向Azure 物联网中心连接particle photon网络设备
我的假期继续. 昨天我做了肩膀手术(肩关节冻结症).所以今天我对于Azune物联网中心很混乱. 我有一些设备放在我的桌子上-一些设备我从来没有真正探索过,我认为我会看一看如果我可以一些事情.
我之前得到了Particle Photon, 它等同于Tessel 2, LattePanda, Funduino, 和Onion Omega.一些日子之前我得到了 Onion Omega并用它来测我的血压并且显示在一块小的OLED屏幕上. 那很酷. 今晚,我将要尝试把Particle Photon在Azune物联网中心装好并接通电源用来监控.
Photon是一个微小的设备带有Wi-Fi模块.很容易安装并且它有一个基于云的带有非常多用c语言和Node.js写的例子的集成开发环境让你来使用.Particle Photon也有一个node.js的命令行.在那里你可以列举你的Photons,看到它们可用的函数,也可以叫做在互联网上的函数! 一个黑客的乐趣就在于此.
有一个叫做"blink an LED"的Hello world在Photon上. 它创造了一个云函数叫做”led”,约束于"ledToggle"方法. 那些云方法返回string参数,所以没有命令行开关的枚举类型 .
int led1 = D0;
int led2 = D7;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
Spark.
function
(
"led"
,ledToggle);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
}
void loop() {
}
int ledToggle(String command) {
if
(command==
"on"
) {
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
return
1;
}
else
if
(command==
"off"
) {
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
return
0;
}
else
{
return
-1;
}
}
在命令行中我可以使用Particle命令行接口(CLI) 来枚举我的设备:
C:\Users\scott>particle listhansel_photon [390039000647xxxxxxxxxxx] (Photon) is onlineFunctions:int led(String args)
你看,它不仅仅可以枚举, 也能云方法关闭设备.我爱死这个方式了.
我可以从基于控制台的Particle Photon的云得到 API 密钥.他们使用我的设备ID和身份验证,我可以称作这个为方法…随着一个HTTP请求!做到如此是多么容易呀!
C:\Users\scott>curl https:
//api.particle.io/v1/devices/390039000647xxxxxxxxx/led -d access_token=31fa2e6f --insecure -d arg="on"
{
"id"
:
"390039000647xxxxxxxxx"
,
"last_app"
:
""
,
"connected"
:
true
,
"return_value"
: 1
}
在这个时刻,LED灯亮着则Particle Photon启动了.我正要去改变代码并且用Particle的在线代码编辑器添加一些遥测法.
他们做了一个非常棒的在线代码编辑器,但是我也可以在本地编辑和编译代码:
C:\Users\scott\Desktop>particle compile photon webconnected.inoCompiling code for photonIncluding:webconnected.inoattempting to compile firmwaredownloading binary from: /v1/binaries/5858b74667ddf87fb2a2df8fsaving to: photon_firmware_1482209089877.binMemory use:text data bss dec hex filename6156 12 1488 7656 1de8Compile succeeded.Saved firmware to: C:\Users\scott\Desktop\photon_firmware_1482209089877.bin
我将会改变代码来声明一个事件当我打开LED的时候.
if
(command==
"on"
) {
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
String data =
"Amazing! Some Data would be here! The light is on."
;
Particle.publish(
"ledBlinked"
, data);
return
1;
}
我重新回到 http://console.particle.io 看这些事件如何在网页上活着.
Particle也支持谷歌云和Azure物联网中心一体化.Azune物联网中心允许你管理数以亿万计的设备和数以亿万计的事件.我只做了一些事情,但是我们都要在一些地方开始.;)
我在我的Azure 帐号中创建了一个免费的Azure物联网中心…
为我的Particle设备做了一个共享访问政策.
在它们的集成系统中我被告知Particle关于Azure的事.
Azure物联网SDK在GitHub上的链接是 https://github.com/Azure/azure-iot-sdks/releases同时有a Windows-based Azure IoT Explorer和a command-line one called IoT Hub Explorer.
我从Azure Portal帐号使用连接字符串用登入物联网中心浏览器:
iothub-explorer login "HostName=HanselIoT.azure-devices.net;SharedAccessKeyName=particle-iot-hub;SharedAccessKey=rdWUVMXs="
之后我将会通过设备ID和共享访问政策的连接字符串运行"iothub-explorer monitor-events". Monitor-events很酷因为它将要搁置并且只是输出事件就好像他们正在流经整个系统.
所以我可以在Particle上使用他们的云呼叫方法, 以及从Azure物联网中心检测事件 . 我可以探索诊断数据以及查询巨大数量的设备到云的数据,潜在流入我的硬件设备.
物联网中心限制对于免费/爱好者 用户作为学习去发展是非常慷慨的.我到目前为止还没有支付任何钱.然而, 它可以按比例排列千万级短信每秒每单元!那意味着百万级信息传给你每秒,只要你需要.
我敢肯定我看到了物联网中心解决方案的价值就好像这在你在设备上得到一个以上的设备时将快速合计.文本文件不是真的估计.即使我只是用物联网连接我的房子,这也很好拥有所有数据流入一个我可以管理和私密查询的中心.