首页 > Arduino > 如何为Arduino设备构建远程配置
如何为Arduino设备构建远程配置
来源:Atmel  时间:2015-01-05

如何为Arduino设备构建远程配置

如果你只能在本地控制一个智能设备,那么它并不能被称之为智能。那有什么用呢?你需要的是远程控制设备的功能。而这正是远程配置发挥作用的地方。

远程配置能够让开发人员和用户触发行动,进而在任何地点控制他们的设备。设备状态解析通过网络(在本案例中为PubNub)传送的信号,并根据信号指令永久地改变装置的状态(如灯泡从关到开)。

A 远程配置的消息传递层

在本教程中,我们将展示如何在[基于Atmel的]Arduino联网设备上实现远程配置。在开发的过程中,我们遇到了两个问题。

1. 网设备的状态(如在线/离线状态)

2. 连接到云的设备的状态

通过使用Presence API,第一个问题迎刃而解,因此,我们将着重关注第二个问题。我们将采用存储和回放的方法,存储并检索用于家庭自动化解决方案的联网设备的状态。如此,我们就能够远程控制智能设备,实时发送信号。

JSON对象就是一个典型的示例,如下所示:

{"状态":[
    {"通电":""}, 
    {"咖啡量: 一半"},
    {"温度":""}
]}

 

远程配置的整体流程

注册一个免费的PubNub账户。如此便可获得独特的发表/订阅键,用于激活PubNub。这些键位于开发人员控制台

● 利用Arduino通过PubNub物联网网络发布消息,控制智能设备。

● 通过web浏览器,访问这些消息。

了解教程!

步骤一:连接PubNub

例如,控制冰箱的温度。如下参数可存储为设备的状态,如查看冰箱门的开启状态、温度、功耗,甚至还有冰箱的容积。

在Arduino IDE上运行,并查看步骤二中关于连接PubNub至Arduino的教程,获得更多详情。

步骤二:在Arduino中创建JSON对象

为在Arduino中创建json对象,我们需要使用JSON.h库。创建上文所述的JSON对象可参照如下步骤:

aJsonObject *msg = aJson.createObject();
            aJson.addStringToObject(msg, "姓名", "Arduino");
            aJson.addNumberToObject(msg, "外部温度", 34);

 

步骤三:向设备发送信号

除此之外,只需再利用Arduino IDE发布消息即可。要做到这一点,可参照如下代码:

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char pubkey[] = "demo";
char subkey[] = "demo";
char channel[] = "设备状态";
 
//setup 
void setup()
{
            Serial.begin(9600);
            Serial.println("串口设置");
 
            while (!Ethernet.begin(mac)) {
                        Serial.println("以太网设置错误");
                        delay(1000);
            }
            Serial.println("以太网设置");
 
            PubNub.begin(pubkey, subkey);
            Serial.println("PubNub 设置");
}   
 
// establishing internet connection to the Arduino and publishing the state建立Arduino网络连接并发布状态
void loop()
{
            Ethernet.maintain();
            EthernetClient *client;
            client = PubNub.publish(channel, msg);
            if (!client) {
                        Serial.println("发布错误");
            } else {
                        client->stop();
            }
            delay(5000);
}
 

 

另外,如果只能在web浏览器上查看设备状态怎么办?在浏览器控制台中粘贴如下代码,并查看状态填写。

// 发布和订阅键初始化
 
 var pubnub = PUBNUB.init({
     publish_key: 'PUBLISH_KEY_HERE',
     subscribe_key: 'SUBSCRIBE_KEY_HERE',
     uuid: 'devices_state设备状态'
 });
 
 // 通过历史记录检索已经发布到该渠道的消息。
 
 pubnub.history({
     channel: '历史记录_渠道',
     callback: function(m){console.log(JSON.stringify(m))},
 });

就是这样!还有一点:PubNub并不限制你发布或通过历史记录检索消息的数量。你可以利用多个Arduinos进行尝试,并远程查看其状态。

远程配置的用例数之不尽,从农业到运输和物流,再到家庭自动化。它使你能够在地球上的任何地方完全控制你的智能设备,功能异常强大。

点击阅读英文原文