C 使用REST将批处理事件发送到Azure事件中心
我能够使用NodeMCU将事件发送到事件中心。我使用以下代码 但我想发送批处理事件。为此我参考了这一页 下面是发送单个事件的NodeMCU串行监视器的快照 根据链接,我们必须将“内容类型”更改为 以及格式中的有效载荷C 使用REST将批处理事件发送到Azure事件中心,c,azure,arduino,azure-eventhub,arduino-esp8266,C,Azure,Arduino,Azure Eventhub,Arduino Esp8266,我能够使用NodeMCU将事件发送到事件中心。我使用以下代码 但我想发送批处理事件。为此我参考了这一页 下面是发送单个事件的NodeMCU串行监视器的快照 根据链接,我们必须将“内容类型”更改为 以及格式中的有效载荷 data= "[{'Temperature':25.25 , 'Deviceid':esp3} , {'Temperature':30.30 , 'Deviceid':esp3}]"; 下面是批处理事件的串行监视器的快照 我错过什么了吗?为了接收批处理事件,我需要对流分析
data= "[{'Temperature':25.25 , 'Deviceid':esp3} , {'Temperature':30.30 , 'Deviceid':esp3}]";
下面是批处理事件的串行监视器的快照
我错过什么了吗?为了接收批处理事件,我需要对流分析进行任何更改。我是Azure和StackOverflow的新手
以下是发送单个事件的代码
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <String.h>
#include "sha256.h"
#include "Base64.h"
// START: Azure Evet Hub settings
const char* KEY = "dhGE6MbbRLe6IPZs6dOHd3byQlEJ8YzqnW+uBAT7T/Q="; // main event hub key
const char* KEY_NAME = "RootManageSharedAccessKey"; // key name
const char* HOST = "rishieventhub2.servicebus.windows.net"; // event hub name
const char* END_POINT = "/rishidata/messages"; // name of eventhub created inside event hub
// END: Azure Evet Hub settings
// START: WiFi settings
const char* SSID = "Nokia";
const char* PASSWORD = "rishikesh";
// END: WiFi settings
String request;
String data;
String fullSas;
WiFiClientSecure client;
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println();
// START: Naive URL Encode
String url = "https://" + (String)HOST + (String)END_POINT;
url.replace(":", "%3A");
url.replace("/", "%2F");
Serial.println(url);
// END: Naive URL Encode
// START: Create SAS
// https://azure.microsoft.com/en-us/documentation/articles/service-bus-sas-overview/
// Where to get secods since the epoch: local service, SNTP, RTC
int expire = 1711104241;
String stringToSign = url + "\n" + expire;
// START: Create signature
Sha256.initHmac((const uint8_t*)KEY, 44);
Sha256.print(stringToSign);
char* sign = (char*) Sha256.resultHmac();
int signLen = 32;
// END: Create signature
// START: Get base64 of signature
int encodedSignLen = base64_enc_len(signLen);
char encodedSign[encodedSignLen];
base64_encode(encodedSign, sign, signLen);
String encodedSas = (String) encodedSign;
// Naive URL encode
encodedSas.replace("=", "%3D");
Serial.println(encodedSas);
// END: Get base64 of signature
// SharedAccessSignature
fullSas = "sr=" + url + "&sig="+ encodedSas + "&se=" + expire +"&skn=" + KEY_NAME;
// END: create SAS
// START: Wifi connection
Serial.print("connecting to ");
Serial.println(SSID);
WiFi.begin(SSID, PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
// END: Wifi connection
}
int temp=15;
void loop() {
WiFiClientSecure client;
if (!client.connect(HOST, 443)) {
Serial.println("connection failed");
return;
}
//data= "[{'Temperature':25.25 , 'Deviceid':'esp3'} , {'Temperature':30.30 , 'Deviceid':'esp3'}]"; // for batch events
data = "{'Temperature':25.25 , 'Deviceid':'esp3'}"; // for single events
request = String("POST ")+"https://rishieventhub2.servicebus.windows.net" + END_POINT + "?timeout=60&api-version=2014-01" + " HTTP/1.1\r\n" +
"Host: " + HOST + "\r\n" +
"Authorization: SharedAccessSignature " + fullSas + "\r\n" +
"Content-Type: application/atom+xml;type=entry;charset=utf-8\r\n" +
"Content-Length: " + data.length() + "\r\n\r\n" +
data;
Serial.println(request);
client.print(request);
delay(100);
#包括
#包括
#包括
#包括“sha256.h”
#包括“Base64.h”
//开始:Azure Evet中心设置
const char*KEY=“dhge6mbrle6ipzs6dohd3byqlej8yzqnw+uBAT7T/Q=”;//主事件中心键
const char*KEY_NAME=“RootManageSharedAccessKey”//键名
const char*HOST=“rishieventhub2.servicebus.windows.net”;//事件中心名称
const char*END_POINT=“/rishidata/messages”;//在事件中心内创建的事件中心的名称
//结束:Azure Evet中心设置
//开始:WiFi设置
const char*SSID=“诺基亚”;
const char*PASSWORD=“rishikesh”;
//结束:WiFi设置
字符串请求;
字符串数据;
字符串fullSas;
WiFiClientSecure客户端;
无效设置(){
序列号开始(115200);
Serial.println();
Serial.println();
//开始:原始URL编码
String url=“https://”+(字符串)主机+(字符串)端点;
url.replace(“:”,“%3A”);
url.replace(“/”,“%2F”);
Serial.println(url);
//结束:原始URL编码
//开始:创建SAS
// https://azure.microsoft.com/en-us/documentation/articles/service-bus-sas-overview/
//从新纪元开始在哪里获得secods:本地服务、SNTP、RTC
int=1711104241;
字符串stringToSign=url+“\n”+过期;
//开始:创建签名
Sha256.initHmac((const uint8_t*)键,44);
Sha256.打印(stringToSign);
char*sign=(char*)Sha256.resultmac();
int-signLen=32;
//结束:创建签名
//开始:获取签名的base64
int encodedSignLen=base64_enc_len(signLen);
char encodedSign[encodedSignLen];
base64_编码(encodedSign、sign、signLen);
字符串encodedSas=(字符串)encodedSign;
//朴素URL编码
encodedSas.replace(“=”,“%3D”);
Serial.println(encodedSas);
//结束:获取签名的base64
//共享签名
fullSas=“sr=“+url+”&sig=“+encodedSas+”&se=“+expire+”&skn=“+KEY\u NAME;
//结束:创建SAS
//开始:Wifi连接
串行打印(“连接到”);
序列号println(SSID);
WiFi.begin(SSID,密码);
while(WiFi.status()!=WL_已连接){
延迟(1000);
连续打印(“.”);
}
Serial.println(“”);
Serial.println(“WiFi连接”);
Serial.println(“IP地址:”);
Serial.println(WiFi.localIP());
//结束:Wifi连接
}
内部温度=15;
void循环(){
WiFiClientSecure客户端;
如果(!client.connect(主机,443)){
Serial.println(“连接失败”);
返回;
}
//data=“[{'Temperature':25.25,'Deviceid':'esp3'},{'Temperature':30.30,'Deviceid':'esp3'}]”;//对于批处理事件
data=“{'Temperature':25.25,'Deviceid':'esp3'}”//用于单个事件
请求=字符串(“POST”)+“https://rishieventhub2.servicebus.windows.net“+结束点+”?超时=60&api版本=2014-01“+”HTTP/1.1\r\n”+
主机:“+Host+”\r\n+
“授权:SharedAccessSignature”+fullSas+“\r\n”+
“内容类型:应用程序/atom+xml;类型=条目;字符集=utf-8\r\n”+
内容长度:“+data.Length()+”\r\n\r\n+
数据;
Serial.println(请求);
客户。打印(请求);
延迟(100);
发送单个事件的代码工作正常,我可以将值存储在表存储中,并且可以使用azure表存储查看。
下面是我试图发送批处理事件的代码
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <String.h>
#include "sha256.h"
#include "Base64.h"
// START: Azure Evet Hub settings
const char* KEY = "dhGE6MbbRLe6IPZs6dOHd3byQlEJ8YzqnW+uBAT7T/Q="; // main event hub key
const char* KEY_NAME = "RootManageSharedAccessKey"; // key name
const char* HOST = "rishieventhub2.servicebus.windows.net"; // event hub name
const char* END_POINT = "/rishidata/messages"; // name of eventhub created inside event hub
// END: Azure Evet Hub settings
// START: WiFi settings
const char* SSID = "Nokia";
const char* PASSWORD = "rishikesh";
// END: WiFi settings
String request;
String data;
String fullSas;
WiFiClientSecure client;
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println();
// START: Naive URL Encode
String url = "https://" + (String)HOST + (String)END_POINT;
url.replace(":", "%3A");
url.replace("/", "%2F");
Serial.println(url);
// END: Naive URL Encode
// START: Create SAS
// https://azure.microsoft.com/en-us/documentation/articles/service-bus-sas-overview/
// Where to get secods since the epoch: local service, SNTP, RTC
int expire = 1711104241;
String stringToSign = url + "\n" + expire;
// START: Create signature
Sha256.initHmac((const uint8_t*)KEY, 44);
Sha256.print(stringToSign);
char* sign = (char*) Sha256.resultHmac();
int signLen = 32;
// END: Create signature
// START: Get base64 of signature
int encodedSignLen = base64_enc_len(signLen);
char encodedSign[encodedSignLen];
base64_encode(encodedSign, sign, signLen);
String encodedSas = (String) encodedSign;
// Naive URL encode
encodedSas.replace("=", "%3D");
Serial.println(encodedSas);
// END: Get base64 of signature
// SharedAccessSignature
fullSas = "sr=" + url + "&sig="+ encodedSas + "&se=" + expire +"&skn=" + KEY_NAME;
// END: create SAS
// START: Wifi connection
Serial.print("connecting to ");
Serial.println(SSID);
WiFi.begin(SSID, PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
// END: Wifi connection
}
int temp=15;
void loop() {
WiFiClientSecure client;
if (!client.connect(HOST, 443)) {
Serial.println("connection failed");
return;
}
data= "[{'Temperature':25.25 , 'Deviceid':'esp3'} , {'Temperature':30.30 , 'Deviceid':'esp3'}]"; // for batch events
// data = "{'Temperature':25.25 , 'Deviceid':'esp3'}"; // for single events
request = String("POST ")+"https://rishieventhub2.servicebus.windows.net" + END_POINT + "?timeout=60&api-version=2014-01" + " HTTP/1.1\r\n" +
"Host: " + HOST + "\r\n" +
"Authorization: SharedAccessSignature " + fullSas + "\r\n" +
"Content-Type: application/vnd.microsoft.servicebus.json" +"\r\n" +
"Content-Length: " + data.length() + "\r\n\r\n" +
data;
Serial.println(request);
client.print(request);
delay(100);
}
#包括
#包括
#包括
#包括“sha256.h”
#包括“Base64.h”
//开始:Azure Evet中心设置
const char*KEY=“dhge6mbrle6ipzs6dohd3byqlej8yzqnw+uBAT7T/Q=“;//主事件中心键
const char*KEY_NAME=“RootManageSharedAccessKey”;//键名
const char*HOST=“rishieventhub2.servicebus.windows.net”;//事件中心名称
const char*END_POINT=“/rishidata/messages”;//在事件中心内创建的事件中心的名称
//结束:Azure Evet中心设置
//开始:WiFi设置
const char*SSID=“诺基亚”;
const char*PASSWORD=“rishikesh”;
//结束:WiFi设置
字符串请求;
字符串数据;
字符串fullSas;
WiFiClientSecure客户端;
无效设置(){
序列号开始(115200);
Serial.println();
Serial.println();
//开始:原始URL编码
String url=“https://”+(字符串)主机+(字符串)端点;
url.replace(“:”,“%3A”);
url.replace(“/”,“%2F”);
Serial.println(url);
//结束:原始URL编码
//开始:创建SAS
// https://azure.microsoft.com/en-us/documentation/articles/service-bus-sas-overview/
//从新纪元开始在哪里获得secods:本地服务、SNTP、RTC
int=1711104241;
字符串stringToSign=url+“\n”+过期;
//开始:创建签名
Sha256.initHmac((const uint8_t*)键,44);
Sha256.打印(stringToSign);
char*sign=(char*)Sha256.resultmac();
int-signLen=32;
//结束:创建签名
//开始:获取签名的base64
int encodedSignLen=base64_enc_len(signLen);
char encodedSign[encodedSignLen];
base64_编码(encodedSign、sign、signLen);
字符串encodedSas=(字符串)encodedSign;
//朴素URL编码
encodedSas.replace(“=”,“%3D”);
Serial.println(encodedSas);
//结束:获取签名的base64
//共享签名
fullSas=“sr=“+url+”&sig=“+encodedSas+”&se=“+expire+”&skn=“+KEY\u NAME;
//结束:创建SAS
//开始:Wifi连接
串行打印(“连接到”);
序列号println(SSID);
WiFi.begin(SSID,密码);
while(WiFi.status()!=WL_
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <String.h>
#include "sha256.h"
#include "Base64.h"
// START: Azure Evet Hub settings
const char* KEY = "dhGE6MbbRLe6IPZs6dOHd3byQlEJ8YzqnW+uBAT7T/Q="; // main event hub key
const char* KEY_NAME = "RootManageSharedAccessKey"; // key name
const char* HOST = "rishieventhub2.servicebus.windows.net"; // event hub name
const char* END_POINT = "/rishidata/messages"; // name of eventhub created inside event hub
// END: Azure Evet Hub settings
// START: WiFi settings
const char* SSID = "Nokia";
const char* PASSWORD = "rishikesh";
// END: WiFi settings
String request;
String data;
String fullSas;
WiFiClientSecure client;
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println();
// START: Naive URL Encode
String url = "https://" + (String)HOST + (String)END_POINT;
url.replace(":", "%3A");
url.replace("/", "%2F");
Serial.println(url);
// END: Naive URL Encode
// START: Create SAS
// https://azure.microsoft.com/en-us/documentation/articles/service-bus-sas-overview/
// Where to get secods since the epoch: local service, SNTP, RTC
int expire = 1711104241;
String stringToSign = url + "\n" + expire;
// START: Create signature
Sha256.initHmac((const uint8_t*)KEY, 44);
Sha256.print(stringToSign);
char* sign = (char*) Sha256.resultHmac();
int signLen = 32;
// END: Create signature
// START: Get base64 of signature
int encodedSignLen = base64_enc_len(signLen);
char encodedSign[encodedSignLen];
base64_encode(encodedSign, sign, signLen);
String encodedSas = (String) encodedSign;
// Naive URL encode
encodedSas.replace("=", "%3D");
Serial.println(encodedSas);
// END: Get base64 of signature
// SharedAccessSignature
fullSas = "sr=" + url + "&sig="+ encodedSas + "&se=" + expire +"&skn=" + KEY_NAME;
// END: create SAS
// START: Wifi connection
Serial.print("connecting to ");
Serial.println(SSID);
WiFi.begin(SSID, PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
// END: Wifi connection
}
int temp=15;
void loop() {
WiFiClientSecure client;
if (!client.connect(HOST, 443)) {
Serial.println("connection failed");
return;
}
data= "[{'Temperature':25.25 , 'Deviceid':'esp3'} , {'Temperature':30.30 , 'Deviceid':'esp3'}]"; // for batch events
// data = "{'Temperature':25.25 , 'Deviceid':'esp3'}"; // for single events
request = String("POST ")+"https://rishieventhub2.servicebus.windows.net" + END_POINT + "?timeout=60&api-version=2014-01" + " HTTP/1.1\r\n" +
"Host: " + HOST + "\r\n" +
"Authorization: SharedAccessSignature " + fullSas + "\r\n" +
"Content-Type: application/vnd.microsoft.servicebus.json" +"\r\n" +
"Content-Length: " + data.length() + "\r\n\r\n" +
data;
Serial.println(request);
client.print(request);
delay(100);
}