Linux轻松接入OneNet,实现智能物联网控制! (linux接入one net)

智能物联网(IoT)正越来越受到人们的关注,它将各种设备连接到互联网上,实现信息共享和互动控制。OneNet是一种开放式的物联网云平台,它提供了丰富的API和SDK,使得开发者可以轻松地将各种设备接入到OneNet平台,实现智能控制。针对Linux系统如何接入OneNet平台的问题,本文将为大家提供详细的解决方案。

1. 概述

在物联网应用系统中,设备端和云端是信息传递的两个端点。设备端不同类型的传感器负责采集数据,通过网关设备传递给云端。云端则负责存储、处理和控制数据,实现数据的共享和互动控制。

OneNet平台提供了完整的API接口,可以帮助开发者轻松实现设备接入、数据上报和控制。而Linux系统则是一种流行的操作系统,具有开源、安全、可靠等特点,适合用在物联网设备上。

如何将Linux系统接入OneNet平台,实现智能控制呢?下面将对此进行详细介绍。

2. OneNet平台接入

OneNet平台提供了多种接入协议,包括HTTP、MQTT、CoAP等。本文以HTTP协议为例,介绍Linux系统接入OneNet平台的步骤。

2.1. 注册账号

需要在OneNet平台注册账号,并创建产品和设备。具体步骤如下:

1)访问OneNet官方网站(https://open.iot.10086.cn),点击“注册账号”,填写相关信息,完成注册。

2)创建产品:在OneNet平台首页,点击“创建产品”,填写产品名称、描述、行业等信息,并保存。

3)创建设备:在产品详情页,点击“添加设备”,输入设备名称、描述等信息,并保存。

2.2. 获取API-key

接下来,需要获取API-key,该key用于在Linux系统上与OneNet平台进行通信。具体方法如下:

1)进入OneNet平台,找到产品详情页。

2)点击“查看API-key”,获取本产品的API-key。

3)将API-key保存到Linux系统的环境变量中。例如,在~/.bashrc文件中添加以下语句:

export ONENET_APIKEY=

其中,为上一步中获取的API-key。

2.3. 报文格式

在连接OneNet平台之前,需要先了解OneNet平台接收的报文格式。在OneNet平台中,设备与服务器之间采用ON格式进行数据交互。

数据上报:

{

“datastreams”:[

{

“id”:”temperature”,

“datapoints”:[

{

“value”:”23.5”,

“at”:”2023-07-31T08:49:23.000000Z”

}

]

}

]

}

控制指令:

{

“cmd_uuid”: ”x”,

“qos”: 1,

“timeout”: 60,

“resp_topic”:”/devices/{device_id}/control/{object_id}”,

“commands”:[

{

“type”:”urn:x:x”,

“desc”:{},

“paras”:[

{

“name”:”xx”,

“value”:”yyyyy”

}

]

}

]

}

其中,“datastreams”为数据流数组,每个数据流包含数据点数组;“id”为数据流名称;“value”为数据点数值;“at”为数据点时间戳。控制指令中,“cmd_uuid”为指令ID,“commands”为指令数组,每个指令有自己的类型(type)、描述(desc)和参数(paras)。

2.4. 接入示例

接下来,将以Linux系统上的C语言程序为例,演示如何将Linux系统接入OneNet平台。

#include

#include

#include

#include

#include

#define ONENET_URL “http://api.heclouds.com”

typedef struct _payload_t {

char* data;

size_t size;

} payload_t;

int mn()

{

CURL* curl;

CURLcode res;

char* url = NULL;

char* api_key = NULL;

char* device_id = NULL;

char* data = NULL;

payload_t response;

// setup curl

curl = curl_easy_init();

if(!curl) {

printf(“curl initialization fled\n”);

return 1;

}

// get environment variables

api_key = getenv(“ONENET_APIKEY”);

device_id = getenv(“ONENET_DEVICEID”);

// generate url

url = (char*) malloc(sizeof(char) * 256);

memset(url, 0, sizeof(char) * 256);

snprintf(url, 256, “%s/devices/%s/datapoints”, ONENET_URL, device_id);

// set headers

struct curl_slist* headers = NULL;

headers = curl_slist_append(headers, “Content-Type: application/json”);

headers = curl_slist_append(headers, “charset:UTF-8”);

headers = curl_slist_append(headers, api_key);

// set data

data = (char*) malloc(sizeof(char) * 256);

memset(data, 0, sizeof(char) * 256);

snprintf(data, 256, “{\”datastreams\”:[{\”id\”:\”temperature\”,\”datapoints\”:[{\”value\”:\”23.5\”,\”at\”:\”2023-07-31T08:49:23.000000Z\”}]}]}”);

// set response callback

memset(&response, 0, sizeof(payload_t));

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback_func);

curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *) &response);

// set curl options

curl_easy_setopt(curl, CURLOPT_URL, url);

curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);

curl_easy_setopt(curl, CURLOPT_POST, 1L);

curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);

// perform request

res = curl_easy_perform(curl);

if(res != CURLE_OK) {

printf(“http request fled: %s\n”, curl_easy_strerror(res));

return 1;

}

printf(“http response: %s\n”, response.data);

// cleanup

free(url);

free(data);

curl_slist_free_all(headers);

curl_easy_cleanup(curl);

free(response.data);

return 0;

}

其中,ONENET_URL为OneNet平台地址,ONENET_APIKEY和ONENET_DEVICEID为环境变量,分别表示API-key和设备ID。

该示例程序实现了将一组温度数据(23.5度,采集时间为2023年7月31日08:49:23)上传到OneNet平台中的“temperature”数据流中的功能。

3. 结论

相关问题拓展阅读:

Linux远程连接及工具推荐

前言

我们使用哗橘尘命令行管理远程设备一般会用到两种协议之一:telnet或者ssh,无论是专业路由器、专业交换机、专业防火墙、操作系统。比如通过telnet管理一台思科路由器,通过ssh管理一台华为交换机,通过ssh远程管理一台Linux服务器。telnet是明文传输,不安全。ssh是加密传输,安全。一般来说,一台设备只需要启用其中一种协议即可。当然,你也可以选择两种协议同时启用。

推荐工具1: 使用免费的putty,小巧,快速,基础功能

下载地址:

putty应用程序支持Linux和Windows系统

putty参数设置

参数解释

Host Name(or IP address):填写远程服务器的域名或者直接写IP地址,建议直接写IP地址,免去域名解释的时间和流程

telnet默认端口为TCP 23,SSH默认端口为TCP 22

Connection type:连接类型,一般使用Telnet或者SSH,绝大部分的Linux系统默认使用SSH,不开通Telnet,原因是Telnet是明文传输,SSH为加密传输更安全。

Saved Sessions:保存会话,以备下次登录时能直接点击连接。

推荐工具2: 使用功能强大的SecureCRT

下载地址:

SSH2为ssh协议的主流版本号,目前Linux都使用这个版本的协议,默认端口为TCP 22。主机名里填写远程服务器的域名或者直接写IP地址,用户名为远程设备的用户名,Linux里一般为root或者自行建立的管理账号。

SecureCRT参数设置2

SecureCRT参数设置3

推荐乱禅工伍颤具3: 使用xshell,个人版免费

下载地址:

Xshell 是一个强大的终端模拟软件,支持SSH1, SSH2,Telnet,RLOGIN,SFTP,SERIAL协议。与SecureCRT类似。

xshell参数设置

以xshell为例,演示如何远程登录一台Linux:

Step1:获取Linux的IP地址,适用于虚拟机。如果是物理机,请咨询相关技术同事或者直接接入显示器本地查看,查看方法如下:

打开VMware或者物理服务器连接本地显示器,开启Linux系统。

输入用户名:root

密码:输入密码时,屏幕无提示,这是一种安全机制,键盘操作是正常的。

输入以下命令,查看IP地址

查看LinuxIP

我的虚拟机IP下来,你的IP可能不一样,以实际为准。

Step2:打开xshell,输入刚才的管理IP。

远程登录linux

Step3: 接受并保存服务器公钥。

保存ssh公钥1

Step4: 输入用户名和密码

Step5: 调整字体并验证登录成功

shell远程连接Linux界面

试试输入命令id:

可以看到有以下结果输出,证明已经成功连接到Linux系统:

uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

Linux查看当前用户

现在你已经成功登录到Linux系统了。

1、Xshell

一个非常强大的安全终端模拟软件,它支持SSH1.SSH2.以及Windows平台的TELNET协议。Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。

2、secureCRT

SecureCRT支持SSH,如闷嫌同时支持Telnet和rlogin协议。SecureCRT是一款用于连接运行包括Windows、渣手UNIX和VMS的理想工具。通过使用内含的VCP命令行程序可以进行加密文件的传输,网工应该很熟这个软件,经常使用它连接设备。

3、WinSCP

WinSCP是一个Windows环境下使用SSH的开源图形化SFTP工具客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制传输文件。

4、PuTTY

PuTTY是SSH和telnet客户端,用MIT许可证授权。包含的组件有:PuTTY,PuTTYgen,PSFTP,PuTTYtel,Plink,PSCP,Pageant,默认登录协议是SSH,默认的端口为22.

5、MobaXterm

mobaxterm的功能非常全面,几乎提供了所有重要的远程网络工具(比如SSH、X11、RDP、VNC、FTP、MOSH等),以及Windows桌面上的Unix命令(bash、ls、cat、sed、grep、awk、rsync等),登录之后默认开启sftp模式。

6、FinalShell

FinalShell是一体化的服务器网络管理软件 (java语言编写),不仅是ssh客户端,FinalShell还是功罩洞能强大的开发、运维工具,充分满足用户的开发运维需求。

.net可以运行在linux上面?

.net 项目要运行需要 底层运行库 .net freamework的支持,在linux中是不能直接运行的。

NET

微软

的新一代技闭野术平台,为敏捷商务构建互联互通的应用系统,这些系统是基于标准的,联通的,适应变化的,稳定的和高性能的。

从技术的角度,一个.NET应用是一个运行于

.NET Framework

之上的

应用程序

。如果一个应用程序跟.NET Framework无关,它就不能叫做.NET程序。

扩展资料

NET的基本用法:

NET

HELPMSG | LOCALGROUP | NAME | PAUSE | PRINT | SEND | SESSION |

SHARE | START | STATISTICS | STOP | TIME | USE | USER | VIEW >

Net Accounts

更新用户账号数据库、更改密轿基喊码及所有账号的登录要锋察求。

命令格式:net accounts

参考资料:

百度百科-net

.net 项目要运行需要 底层运行库 .net freamework的支持,在linux中是不能直接运行的。

NET是微软的新一代技术平台,为敏捷商务构建互联互通的应用系统,这些系统是基于标准的,联通的,适应变化的,稳定的和高性能的。从技术的角度,一个.NET应用是一个运行于.NET Framework之上的应用程序。

如果一个应用程序跟.NET Framework无关,它就不能叫做.NET程序。比如,仅仅使用了XML并不就是.NET应用,仅仅使用SOAP SDK调用闷李一个Web Service也不是.NET应用。.NET是基于歼罩睁Windows操作系统运行的操作平台,应用于互联网的分布式。

扩展资料

.Net框架设计原则

1、互操作性

Net框架提供了许多向后支持。假设您有一个基于.Net框架的较旧版本(例如2.0)构建的应用程序。如果尝试在具有更高版本.Net框架的计算机上运行同一应用程序,比如3.5。该应用程序仍然可以运行。这是因为Microsoft在每个发行版中均确保较早的框架版本与最新版本兼容。

2、可移植性

基于.Net框架的应用程序可以在任何Windows平台上运行。现在,Microsoft还计划使Microsoft产品在其他平台(例如iOS和Linux)上运行,.Net Core实现了这一点。

3、安全性

NET Framework具有良好的安全性机制。内置的安全机制有助于验证应用程序。每个应用程序都可以显式定义其安全性机制。每种安全机制均用于授予用户访问代码或运行程序的权限。

4、内存管理

公共语言氏岁运行时执行所有工作或内存管理。.Net框架具有查看那些正在运行的程序未使用的资源的全部功能。然后它将相应地释放这些资源。这是通过称为“垃圾收集器”的程序完成的,该程序作为.Net框架的一部分运行。

5、简化的部署

Net框架还具有工具,可用于打包基于.Net框架构建的应用程序。然后可以将这些软件包分发到客户端计算机。这些软件包将自动安装该应用程序。

可以。

来自作者:仙人掌工作室

众所周知,C#是Microsoft推出的.NET语言,只能在.NET平台上运行,例如Win 9x、ME、N

T、2023、XP和Win CE之类的操作系统。但是,现在却有了一个叫做Mono的项目,它的目标

就是把.NET及其编程语言移植到非Windows的平台上。现在,C#是唯一被移植到非Windows

平台的.NET语言。

在任何一个平台(操作系统+硬件体系)上,编写和运行程序的三个最根本的需求是库、编

译器/解释器、运行环境。库以类和方法(函数)的形式提供常用的例程,简化大型程序的

编写。.NET框架也不例外,包让咐含了许多类库。另外,把程序转换成可执行形式以及运行执

行文件时,编译器和运行环境是必不可少的。Mono软件包包含了.NET类库的一部分、一个

C#编译器和.NET运行环境CLR(Common Language Runtime,公共语言运行时环境)。

Mono声称支持Linux、Solaris、Free BSD和MS Windows;除了Intel x86系列的CPU(486,

各类Pentium等)之外,据说还要支持Sparc、PowerPC和StrongArm处理器。

下面就来看看如何在Linux上运行Mono。

命令行应用

先从Mono主页(

)下载软件,执行下面的命令安装所有RPM:

rpm -ivh *.rpm

安装完成后,所有基本的动态执行库,包括System.Data.dll、System.dll、System.Draw

ing.dll、System.Web.dll和System.Xml.dll都被复制到/usr/lib下。接下来,在Linux文

本编辑器中坦轿纯输入下面的内容,把文件保存为HelloMono.cs:

class HelloMono

{

public static void Main(string args)

{ System.Console.WriteLine( “Hello Mono “);

}

}

执行下面的命令编译C#文件:

mcs HelloMono.cs

mcs是Mono的C#命令行编译器。与MS .NET SDK的csc编译器相似,mcs也有很多命令行选项

。上面的命令将生成可执行文件HelloMono.exe。注意这个执行文件不是Linux执行文件,

而是一个.NET执行文件,或者说,这个文件的可执行代码形式是中间语言(IL,Intermed

iate Language)。要运行这个执行文件,必须执行如下命令:

mono HelloMono.exe

Linux控制台上将显示出 “Hello Mono “。关于mcs和Mono的更多说明,请执行man mcs或man

mono参考其man文档。

GUI应用

Mono不支持Windows Forms,但在C#编程中可用GTK #编写GUI。GTK #是GTK+图形库的C#支

持工具,可从

下载。下载完成后,先要安装RPM:

rpm -Uvh *.rpm –nodeps

解开gtk-sharp-0.2.1.tar.gz:

tar -zxvf gtk-sharp-0.2.1.tar.gz

进入子目录gtk-sharp-0.2.1,执行:

./configure –prefix=/usr

make

make install

完成这一步骤之后,重新启动一次。与GTK#有关的所有动态代码模帆岁块(gtk-sharp.dll、a

tk-sharp.dll、gdk-sharp.dll、glib-sharp.dll以及pango-sharp.dll)都会被复制到/u

sr/lib目录,编译用GTK#制作GUI的C#程序时,必须通过-r参数引用它们。GTK#下载包中包

含了几个示例程序,如HelloWorld.cs、Menu.cs、ButtonApp.cs等。编译这些文件的命令

如下:

mcs -r gtk-sharp -r glib-sharp HelloWorld.cs

mcs -r gtk-sharp -r glib-sharp -r System.Drawing Menu.cs

mcs -r gtk-sharp -r glib-sharp -r System.Drawing ButtonApp.cs

下面来看看如何通过-r选项引用前面各个.dll动态模块。执行startx命令启动X Window,

进入终端窗口,再进入示例程序所在目录,执行下面的命令分别运行各个程序:

mono HelloWorld.exe

mono Menu.exe

mono ButtonApp.exe

Mono项目还在完善和发展之中,还没有移植好全部.NET类。但不管怎样,它对许多人来说

将是一个好消息。有关Mono C#类库移植进展的信息,请访问

www.go-mono.com/class-sta

tus.html。

考虑一个典型的服务器/客户机式.NET应用:最终用户只与客户端打交道,客户端更好是方

便的GUI应用,许多人还会希望使用熟悉的Windows平台。但是,对于他们来说,服务器端

使用Windows还是Linux完全无关。所以,服务器端可以用带有Mono的Linux构造,节省了配

备专用Windows服务器的投资。Mono也将为应用迁移带来方便。如果Mono能够顺利发展,W

indows开发者也将能够为Linux或其他非Windows平台开发应用。如果这样的话,不久之后

出现一个类似Visual Studio .NET但免费或廉价的Linux开发IDE也说不定。

然而,所有这一切是否能够成为现实,依赖于Mono是否能够茁壮发展,也依赖于Mono与Wi

ndows平台上的.NET框架兼容或相似程度。另外一些因素也很关键,例如Mono的性能、GUI

的友好程度等。

可以(不过觉得在linux下跑.net有点愣,纯属吃饱了撑的) = =!!!

三年之后,终成现实。

.net开源并且,未来支持Linux和Mac OS X

关于linux接入one net的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » Linux轻松接入OneNet,实现智能物联网控制! (linux接入one net)