博客说明

所有刊发内容均可转载但是需要注明出处。

教你5分钟上传数据至Streamr

本系列文档主要介绍怎么通过Streamr管理自己的DATA,整个系列包括三篇教程文档,分别是:教你5分钟上传数据至Streamr三种整合数据至Streamr的典型场景教你在Streamr市场上发布数据。所有文档均参考Streamr blog。前两篇主要偏向技术文档,所以需要有一定的技术背景。第三篇不包含任何技术知识,大部分人都可以按照教程来完成相应的操作。

简介

本篇教程文档主要介绍了如何上传用户自身的数据至Sreamr网络。首先,你将使用UI建立一些Stream,然后使用Streamr Java客户端库上传自定义数据至刚建立的Stream。除此之外,本篇文档也将介绍如何通过其他编程语言来调用Streamr提供的API接口,实现用户上传自定义数据至Streamr网络。

术语Streams和events介绍

如图所示,Streamr上的数据(DATA)包括若干个Stream,所述Stream是由一系列有序的event(或者说标有时间戳的数据点)组成。其中,每个event的负载都是JSON格式的对象(或者说是键值对的集合),下面以一些传感器读取的数据为例说明event的负载形式:

{
"temperature": 65.4,
"humidity": 82,
"sensorID": "sauna"
}

创建Stream

  1. 登录 Streamr官网,如果还没有Streamr账户的话,请先点击Sign Up完成注册;
  2. 主导航页面点击Streams
  3. 点击Create Stream按钮;
  4. 填写Stream的名字和简介,例如My test stream
  5. 填写完成后点击Next按钮将出现如下界面;

图中红色圈出的是Stream ID,后续过程会用到,请牢记。

获取用户API keys

用户通过调用Streamr API接口向Streamr提交event时,需要获取API keys来完成鉴权操作。具体步骤如下:

  1. 点击主导航页面的Setting按钮并选择Profile选项;
  2. 找到API Keys选项;
  3. Key name输入框中输入密钥名称(比如Tutorial)并点击+按钮,然后点击copy按钮复制密钥;



提交events至Streams

通过官方JavaScript client提交event

最简单的调用API接口办法是使用官方JavaScript client,该客户端使用node.js编程语言编写,其它语言的客户端库还在计划中。用户可以通过浏览器在本地使用官方的JavaScript client,首先使用浏览器打开JS Bin,然后使用自身的Stream ID和API key替换页面显示代码中的MY-STREAM-IDMY-API-KEY,最后点击Run with JS按钮,用户的浏览器便会自动提交数据至Stream。

具体地,在JS Bin页面用户将看到Sent successfully: …消息,并且在Stream页面的Recent Events选项中将看到JS Bin实时上传的events,具体如下图所示:

在node.js中使用streamr-client提交events

  • 首先安装streamr-client;
npm install --save streamr-client
  • 创建node.js脚本并替换MY-STREAM-ID和MY-API-KEY;
const StreamrClient = require('streamr-client')
const STREAM_ID = 'MY-STREAM-ID'
const API_KEY = 'MY-API-KEY'
// Create the client and give the API key to use by default
const client = new StreamrClient({
apiKey: API_KEY
})
// Here is the event we'll be sending
const msg = {
hello: 'world',
random: Math.random()
}
// Produce the event to the Stream
client.produceToStream(STREAM_ID, msg)
.then(() => console.log('Sent successfully: ', msg))
.catch((err) => console.error(err))
  • 执行上述node.js脚本,注意node.js版本至少为8;

执行完上述操作后,在Stream页面的Recent Events选项中可以看到最新提交的event。

使用HTTP library提交events

用户可以使用HTTP library来完成和Streamr API的交互。

  • 首先用户需要向包含有Stream ID的URL发送HTTP Post请求;
https://www.streamr.com/api/v1/streams/MY-STREAM-ID/data
  • Post请求的body部分包含用户需要上传的数据;
{
"hello": "world",
"number": 12345
}
  • 添加API keys至HTTP的header部分;
Authorization: token MY-API-KEY

用户可以使用Postman等工具完成上述过程,具体参加下图:

使用curl命令行提交events

curl -i -X POST -H “Authorization: token MY-API-KEY” -d “{\”hello\”:\”world\”}” https://www.streamr.com/api/v1/streams/MY-STREAM-ID/data

参考文献

  1. https://medium.com/streamrblog/how-to-connect-data-to-streamr-in-5-minutes-1-of-3-9363afd254e6

Streamr助你掌控自己的数据(1)——教你5分钟上传数据至Streamr的更多相关文章

  1. Streamr助你掌控自己的数据(3)——教你在Streamr市场上发布数据

    博客说明 所有刊发内容均可转载但是需要注明出处. 教你在Streamr市场上发布数据 本系列文档主要介绍怎么通过Streamr管理自己的DATA,整个系列包括三篇教程文档,分别是:教你5分钟上传数据至 ...

  2. Streamr助你掌控自己的数据(2)——三种整合数据至Streamr的典型场景

    博客说明 所有刊发内容均可转载但是需要注明出处. 三种整合数据至Streamr的典型场景 本系列文档主要介绍怎么通过Streamr管理自己的DATA,整个系列包括三篇教程文档,分别是:教你5分钟上传数 ...

  3. Streamr助你掌控自己的数据

    博客说明 所有刊发内容均可转载但是需要注明出处. 项目简介 Streamr 致力于为世界实时数据的自由公平交换打造开源平台,并促进全球数据经济的发展.Streamr项目基于区块链技术,并向用户提供数据 ...

  4. ASIHTTPRequest框架使用总结系列之阿堂教程5(上传数据)

    在上篇文章中,阿堂和网友们分享了如何用ASIHTTPRequest框架下载数据的实例,本篇阿堂将数据介绍如何用ASIHTTPRequest框架上传数据的应用实例.       数据上传是通过ASIHT ...

  5. 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件

    [源码下载] 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件 作者:webabcd 介绍重新想象 Windows 8.1 Sto ...

  6. TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub)[转]

    TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub) Git-1.7.11-preview+GitExtensions244SetupComplete+T ...

  7. Amzon MWS API开发之 上传数据

    亚马逊上传数据,现有能操作的功能有很多:库存数量.跟踪号.价格.商品....... 我们可以设置FeedType值,根据需要,再上传对应的xml文件即可. 下面可以看看FeedType类型 这次我们拿 ...

  8. Amazon MWS 上传数据 (三) 提交请求

    前面介绍了设置服务和构造请求,现在介绍提交请求. 上传数据,查询上传操作的工作状态,和处理上传操作返回的报告操作使用的Amazon API 分别为:SubmitFeed(),FeedSubmissio ...

  9. Amazon MWS 上传数据 (二) 构造请求

    上一篇文章提到了Amazon 上传数据有三个步骤,但是每个步骤都需要构造服务和构造请求,服务是一样的,请求各不相同:这个很容易理解,这三个步骤都需要和Amazon服务器交互,所以他们的服务构造是一样的 ...

随机推荐

  1. 20145203盖泽双 《Java程序设计》第四周学习总结

    20145203盖泽双 <Java程序设计>第四周学习总结 教材学习内容总结 1.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承单 ...

  2. [转]地图投影的N种姿势

    此处直接给出原文链接: 1.地图投影的N种姿势 2.GIS理论(墨卡托投影.地理坐标系.地面分辨率.地图比例尺.Bing Maps Tile System)

  3. Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'getUser' in class org.uncommons.reportng.ReportMetadata threw exception class java.net.UnknownHostException :

    Running TestSuite [TestNG] [WARN] Ignoring duplicate listener : org.uncommons.reportng.HTMLReporter ...

  4. ddt Ui 案例2

    准备用例文件:testcase1.py testcase2.py import ddt import unittest from HTMLTestRunner import HTMLTestRunne ...

  5. 国行ME860刷MIUI3.9.27

    刷机前: 系统版本:45.2.3.ME860.ChinaRetail.en.CN Android版本:2.3.4 基带版本:BP_N_01.38.00R WEBtop版本:WT_1.2.0-144_8 ...

  6. .net 读取Excel 数据时出现 “外部表不是预期的格式”的解决办法

    参考网上的资料有以下2种情况: 第一:excel本身的格式不正确,用记事本打开文件,如果显示乱码证明文件没有问题,如果是html那就证明文件格式不正确. 第二:由excel版本版本导致,例如:2003 ...

  7. python执行时遇到 KeyError: b'somevar' 时需要想到的

    虽然这个问题很小,但我觉得很有必要单独拿出来强调一下. 这样在遇到类似错误的时候可以很快反应过来,进而节约了时间. 这里我拿 shelve 模块举例(shelve的作用大致就是把python变量存放到 ...

  8. Verilog 位拼接运算符的优先级

    最近研究FIFO的时候,在开源工程中看到这样一段代码 ; always @(posedge rd_clk) {'b0}}; else {'b0}}; else if(re) rp_bin <= ...

  9. 20145234黄斐《Java程序设计》MyDC

    http://git.oschina.net/jiataiji/java

  10. python基础学习1-json,pickle的序列化和反序列化

    import requests import json dic={'k1':'v1'} print(dic,type(dic)) result = json.dumps(dic)#调用dumps方法把 ...