当前位置: 首页>移动开发>正文

IoT Studio服务编排的实现 iot服务器搭建

一、 阿里云MQTT服务器搭建

1、阿里云平台注册及认证

登录阿里云平台网址:阿里云物联网平台-阿里云帮助中心 并要注册与认证, 注册与认证,注册与认证。

2、添加平台

进入”控制台“




IoT Studio服务编排的实现 iot服务器搭建,IoT Studio服务编排的实现 iot服务器搭建_#include,第1张


选择“物联网平台”,并且开通,开通之后进入”管理控制台”(因为我已经开通了,这里的步骤就展示不出来了)



IoT Studio服务编排的实现 iot服务器搭建,IoT Studio服务编排的实现 iot服务器搭建_iot_02,第2张


进入“管理控制台”后点击“公共实例中的“已开通”



IoT Studio服务编排的实现 iot服务器搭建,IoT Studio服务编排的实现 iot服务器搭建_云平台_03,第3张


3、产品和设备创建

在“设备管理”中选择”产品“,可以看到右边有”创建产品“的选项



IoT Studio服务编排的实现 iot服务器搭建,IoT Studio服务编排的实现 iot服务器搭建_#include_04,第4张


接下来直接看图操作

产品名按自己的需求填写就行了



IoT Studio服务编排的实现 iot服务器搭建,IoT Studio服务编排的实现 iot服务器搭建_iot_05,第5张


添加设备



IoT Studio服务编排的实现 iot服务器搭建,IoT Studio服务编排的实现 iot服务器搭建_云平台_06,第6张


可以添加”功能定义“



IoT Studio服务编排的实现 iot服务器搭建,IoT Studio服务编排的实现 iot服务器搭建_#include_07,第7张


这个按自己需求自行设定,设定以后记得点击确认,然后“发布”



IoT Studio服务编排的实现 iot服务器搭建,IoT Studio服务编排的实现 iot服务器搭建_云平台_08,第8张



IoT Studio服务编排的实现 iot服务器搭建,IoT Studio服务编排的实现 iot服务器搭建_云平台_09,第9张


到这里基本产品和设备的创建都已完成,接下来就是获取MQTT的相关信息

4、查看MQTT 接入参数

进入”管理设备“



IoT Studio服务编排的实现 iot服务器搭建,IoT Studio服务编排的实现 iot服务器搭建_云平台_10,第10张


点击设备中的”查看“



IoT Studio服务编排的实现 iot服务器搭建,IoT Studio服务编排的实现 iot服务器搭建_物联网_11,第11张


查看MQTT 参数



IoT Studio服务编排的实现 iot服务器搭建,IoT Studio服务编排的实现 iot服务器搭建_云平台_12,第12张


有关MQTT 的接入内容大家可以看一下这篇官网内容

如何使用MQTT协议模拟设备快速接入物联网平台_物联网平台-阿里云帮助中心

5、查找topic

在产品的设备中点击”查看“



IoT Studio服务编排的实现 iot服务器搭建,IoT Studio服务编排的实现 iot服务器搭建_#include_13,第13张


点击”Topic 类列表“就可以查看系统给定的topic,当然也可以自行定义topic



IoT Studio服务编排的实现 iot服务器搭建,IoT Studio服务编排的实现 iot服务器搭建_iot_14,第14张


二、完整代码

这里会涉及到mosquitto 的内容,大家可以学习一下

CSDN

完整代码

#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <mosquitto.h>


typedef struct  s_conn_para{
	char     *hostname;
	char     *pub_topic;
	char     *clientId;
	char     *username;
	char     *password;
	int       port;
	char     *payload;
	char     *sub_topic;
	int       keepalive;
	int       qos;
}conn_para_t;


void mqtt_clean(struct mosquitto *mosq);
static void my_message_callback(struct mosquitto *mosq, void *obj, const struct mosquitto_message *msg);



int main(int argc, char **argv)
{
	struct mosquitto     *mosq;
	int                   mid, mid1;
	int                   retain = 0;
	int session = true;

	conn_para_t           conn_para = {
			"a1nJJhI9sTT.iot-as-mqtt.cn-shanghai.aliyuncs.com",
			"/sys/a1nJJhI9sTT/....../thing/event/property/post", 
			"a1nJJhI9sTT.Raspberry_DS18B2......0425320779|",
			"Ra....ry_D......&a1nJJhI9sTT",
			"4c2f8513509d0774a2......bc5f2a54589d28607448",		
			1883,
			"{\"params\":{\"temperature\":27.32, \"Humidity\":87.37}}",
			"/a1nJJhI9sTT/...../user/get",
			60,
			0
   };



	mosquitto_lib_init();

	mosq = mosquitto_new(conn_para.clientId, session, NULL);

	if (mosquitto_username_pw_set(mosq, conn_para.username, conn_para.password) != MOSQ_ERR_SUCCESS)
    {
        printf("connect server failure: %s", strerror(errno));
		goto cleanup;
    }
	printf("mqtt connect parameters set OK\n");
	
	if (mosquitto_connect(mosq, conn_para.hostname, conn_para.port, conn_para.keepalive) != MOSQ_ERR_SUCCESS)
    {
        printf("connect server failure: %s\n", strerror(errno));
		goto cleanup;
    }
	printf("connect OK\n");

    if (mosquitto_loop_start(mosq) != MOSQ_ERR_SUCCESS)
    {
        printf("mosquitto_loop_start_failure: %s", strerror(errno));
		goto cleanup;
    }


	//sub  messages callback
    mosquitto_message_callback_set(mosq, my_message_callback);

	if (mosquitto_subscribe(mosq, &mid, conn_para.sub_topic, conn_para.qos) != MOSQ_ERR_SUCCESS)
    {
        printf("mosquitto subsribe failure: %s", strerror(errno));
		goto cleanup;
    }
	printf("sub OK\n");

	while(1)
	{

		if (mosquitto_publish(mosq, &mid1, conn_para.pub_topic, strlen(conn_para.payload), conn_para.payload, conn_para.qos, retain) != MOSQ_ERR_SUCCESS)
		{
			printf("mosquitto publish data failure: %s", strerror(errno));
			continue;
		}
		printf("pub messages: %s\n", conn_para.payload);
		sleep(3);
	}
		
cleanup:
    mqtt_clean(mosq);
    return 0;	
}



void mqtt_clean(struct mosquitto *mosq)
{
    mosquitto_destroy(mosq);
    mosquitto_lib_cleanup;
}


static void my_message_callback(struct mosquitto *mosq, void *obj, const struct mosquitto_message *msg)
{
    printf("sub messages: %s\n", (char *)msg->payload);
}

订阅的 topic 最好使用自己自定义的 Topic ,这样下发命令的时候写的命令内容比较自由一点。

IoT Studio服务编排的实现 iot服务器搭建,IoT Studio服务编排的实现 iot服务器搭建_iot_15,第15张

对于上报数据的 topic 我们最好是使用物模型通信 Topic,这样可以显示我们上报的数据。

IoT Studio服务编排的实现 iot服务器搭建,IoT Studio服务编排的实现 iot服务器搭建_iot_16,第16张

 

IoT Studio服务编排的实现 iot服务器搭建,IoT Studio服务编排的实现 iot服务器搭建_IoT Studio服务编排的实现_17,第17张



https://www.xamrdz.com/mobile/4vv1942039.html

相关文章: