云平台数据储存
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
云平台数据储存
本章介绍了Windows Azure设置与硬件端程序适配,实现远程数据采集与分发。
1.1 系统结构设置
通过芯片数据采集与分发,实现从本地网络查看与远程云端访问。云端服务主要由读入数据储存至Event Hub,使用Stream Analytics实时分析与储存至SQL database。终端可直接访问由数据库自动生成的网页阅览信息。
1.2 Windows Azure设置
为解决远程访问物联网设备信息使用云平台进行数据收集与转发。其中,Windows Azure具有搭设便捷,操作简易,接口对应成熟。
1.2.1 程序环境设置与分发
注册Microsoft Azure账户,选择试用账户。
免费下载Visual Studio Community 2013,获取Azure SDK包并准备本地基本程序编译环境。
新建项目,选择在云端管理,登陆云端账户。
输入应用名称,完成范例程序初始化并上传至云端,获得云域名,为硬件传输做准备。
在完成本地编辑后可随时使用Publish上传至云端查看。
1.2.2 云端储存设置
使用以下命令创建Azure SQL Database:
CREATE TABLE
[dbo].[ProcessedTelemetry]( [MessageType] [nvarchar](50) NULL, [Temp] [float] NULL, [Humidity] [int] NULL, [Location] [nvarchar](50) NULL, [Room] [nvarchar](50) NULL, [Info] [nvarchar](100) NULL, [EventEnqueuedUtcTime] [datetime2](7) NULL )
CREATE CLUSTERED INDEX [ProcessedTelemetry] ON
[dbo].[ProcessedTelemetry]([Location] ASC)
并通过网页设置创建 Event Hub与Stream Analytics,其中Stream Analytics 设置为:
Processed Telemetry Job Query
SELECT EventEnqueuedUtcTime, MessageType, Location, Light, Info FROM input1
Averaged Telemetry Job Query
SELECT DateAdd(minute,-5,System.TimeStamp) as
StartTime, system.TimeStamp as EndTime, Avg(Temp) as AverageTemp, Avg(Humidity) as AverageHumidity, Count(*) as LogCount FROM input2 GROUP BY TumblingWindow(minute, 5)
输入输出均为默认SQL TABLE设置。
1.2.3 界面设置
由EventHub自动生成页面访问
using System;
...
using Microsoft.ServiceBus.Messaging;//调用相关函数
namespace cc3200//配置UI设置
{
public partial class eventhubrest : System.Web.UI.Page
{
public const string EventHubName = "YourEventHubName";
protected void Button1_Click(object sender, EventArgs e)
{
int sendCount = Convert.ToInt32(SendCount.SelectedValue);
...//设置加密访问信息
EventHubConnectSend(sendCount);
}
public void EventHubConnectSend(int sendCount)//持续收集信息{
int sentCount = sendCount;
string infoText;
for (int i = 0; i < sendCount; i++)
{
if (MessageType.Text == "Led")//判断输入信息并储存
...
Event e = new Event
{
MessageType = MessageType.Text,
Led = intLed,
Name= DeviceName,
Button= intButton,
Info = infoText
};
读取时由SQL数据库调用并自动生成网页文件,刷新频率为5分钟一条。
1.3 硬件程序修改
使用Visual Studio获得SAS Token。
修改程序中main.c文件,将预留信息中的EH_SERVER_NAME、POSTHEADER、HOSTHEADER与AUTHHEADER更改为申请服务器相关信息。
添加getDeviceTime、getDeviceLed、getDeviceName与getDeviceButton函数获得设备信息。以getDeviceTime为例:
int getDeviceTime()
{
int iretVal;
unsigned char configLen = (unsigned char)sizeof(SlDateTime_t);
unsigned char configOpt
= (unsigned char) SL_DEVICE_GENERAL_CONFIGURATION_DATE_TIME;
iretVal = sl_DevGet(SL_DEVICE_GENERAL_CONFIGURATION, &configOpt, &configLen, (unsigned char *)&dateTime);
return iretVal;
}
完成后烧录至芯片观察能否与云服务器连接并完成记录。
1.4 成果调试
完成软硬件端适配后连接入网络,观察设备能否实现每隔5分钟进行一次数据采集与上传。
经过一段时间数据收集后网页信息反馈如下: