summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorliYony <[email protected]>2023-09-23 21:59:39 +0800
committerMeco Man <[email protected]>2023-10-11 05:58:43 -0400
commita8249a28c6320e81ac2afe5a74464dcb377a0a77 (patch)
tree3d0004001f17c31f01c1c55ae3c9cebe46610eab
parent299700cf78d12e3c04d68b527c881667eb4b90ad (diff)
[bsp][stm32] stm32l431-BearPi 添加mqtt连接华为云综合用例
-rw-r--r--bsp/stm32/stm32l431-BearPi/board/Kconfig54
-rw-r--r--bsp/stm32/stm32l431-BearPi/board/ports/mpu6050_meas.c104
2 files changed, 157 insertions, 1 deletions
diff --git a/bsp/stm32/stm32l431-BearPi/board/Kconfig b/bsp/stm32/stm32l431-BearPi/board/Kconfig
index 8043ca769c..c5bde336d1 100644
--- a/bsp/stm32/stm32l431-BearPi/board/Kconfig
+++ b/bsp/stm32/stm32l431-BearPi/board/Kconfig
@@ -189,7 +189,61 @@ menu "Onboard Peripheral Drivers"
select BSP_USING_I2C1
select PKG_USING_MPU6XXX
default n
+ if BSP_USING_MPU6050
+ menuconfig BSP_USING_MQTT_HW_CLOUD
+ bool "Enable MPU6050 Connect to Huawei Cloud"
+ select BSP_USING_LPUART1
+ select PKG_USING_CJSON
+ select PKG_USING_AT_DEVICE
+ select AT_DEVICE_USING_ESP8266
+ select PKG_USING_KAWAII_MQTT
+ select KAWAII_MQTT_NETSOCKET_USE_SAL
+ default n
+
+ if AT_DEVICE_USING_ESP8266
+ config ESP8266_SAMPLE_WIFI_SSID
+ string "WIFI ssid"
+ default "rtthread"
+
+ config ESP8266_SAMPLE_WIFI_PASSWORD
+ string "WIFI password"
+ default "12345678"
+
+ config ESP8266_SAMPLE_CLIENT_NAME
+ string "AT client device name"
+ default "lpuart1"
+ endif
+
+ if PKG_USING_KAWAII_MQTT
+ config KAWAII_MQTT_HOST
+ string "mqtt host"
+ default "jiejie01.top"
+
+ config KAWAII_MQTT_PORT
+ string "mqtt port"
+ default "1883"
+ config KAWAII_MQTT_CLIENTID
+ string "mqtt client id"
+ default "rtthread001"
+
+ config KAWAII_MQTT_USERNAME
+ string "mqtt username"
+ default "rt-thread"
+
+ config KAWAII_MQTT_PASSWORD
+ string "mqtt password"
+ default "rt-thread"
+
+ config KAWAII_MQTT_SUBTOPIC
+ string "mqtt subscribe topic"
+ default "rtt-sub"
+
+ config KAWAII_MQTT_PUBTOPIC
+ string "mqtt publish topic"
+ default "rtt-pub"
+ endif
+ endif
endmenu
endmenu
diff --git a/bsp/stm32/stm32l431-BearPi/board/ports/mpu6050_meas.c b/bsp/stm32/stm32l431-BearPi/board/ports/mpu6050_meas.c
index 2e6f855958..7d5a4d65a8 100644
--- a/bsp/stm32/stm32l431-BearPi/board/ports/mpu6050_meas.c
+++ b/bsp/stm32/stm32l431-BearPi/board/ports/mpu6050_meas.c
@@ -17,6 +17,79 @@
#define MPU6050_DEVICE_NAME "i2c1"
+#ifdef BSP_USING_MQTT_HW_CLOUD
+#include "mqttclient.h"
+#include <netdev_ipaddr.h>
+#include <netdev.h>
+#include <cJSON.h>
+
+#ifndef KAWAII_MQTT_HOST
+#define KAWAII_MQTT_HOST "jiejie01.top"
+#endif
+#ifndef KAWAII_MQTT_PORT
+#define KAWAII_MQTT_PORT "1883"
+#endif
+#ifndef KAWAII_MQTT_CLIENTID
+#define KAWAII_MQTT_CLIENTID "rtthread001"
+#endif
+#ifndef KAWAII_MQTT_USERNAME
+#define KAWAII_MQTT_USERNAME "rt-thread"
+#endif
+#ifndef KAWAII_MQTT_PASSWORD
+#define KAWAII_MQTT_PASSWORD "rt-thread"
+#endif
+#ifndef KAWAII_MQTT_SUBTOPIC
+#define KAWAII_MQTT_SUBTOPIC "rtt-sub"
+#endif
+#ifndef KAWAII_MQTT_PUBTOPIC
+#define KAWAII_MQTT_PUBTOPIC "rtt-pub"
+#endif
+
+static char payload_buf[256];///////////////////////
+static rt_bool_t is_upload = RT_TRUE;
+
+static void mqtt_subscribe_handle(void *client, message_data_t *msg)
+{
+ (void)client;
+ KAWAII_MQTT_LOG_I("-----------------------------------------------------------------------------------");
+ KAWAII_MQTT_LOG_I("%s:%d %s()...\ntopic: %s\nmessage:%s", __FILE__, __LINE__, __FUNCTION__, msg->topic_name, (char *)msg->message->payload);
+ KAWAII_MQTT_LOG_I("-----------------------------------------------------------------------------------");
+
+ cJSON* json_data = RT_NULL;
+ cJSON* json_upload = RT_NULL;
+ json_data = cJSON_Parse((char *)msg->message->payload);
+ if (json_data == RT_NULL)
+ {
+ return;
+ }
+ json_upload = cJSON_GetObjectItem(json_data, "paras");
+ json_upload = cJSON_GetObjectItem(json_upload, "upload_bool");
+
+ if (json_upload->valueint == RT_TRUE)
+ {
+ is_upload = RT_TRUE;
+ LOG_I("start upload.");
+ }
+ else
+ {
+ is_upload = RT_FALSE;
+ LOG_I("stop upload.");
+ }
+
+}
+
+static int mqtt_publish_handle(mqtt_client_t *client, void *payload)
+{
+ mqtt_message_t msg;
+ memset(&msg, 0, sizeof(msg));
+
+ msg.qos = QOS1;
+ msg.payload = payload;
+
+ return mqtt_publish(client, KAWAII_MQTT_PUBTOPIC, &msg);
+}
+#endif /* BSP_USING_MQTT_HW_CLOUD */
+
static void mpu6050_accel_entry(void *parameter)
{
struct mpu6xxx_device *dev;
@@ -31,11 +104,40 @@ static void mpu6050_accel_entry(void *parameter)
return;
}
LOG_I("mpu6050 init succeed.");
+#ifdef BSP_USING_MQTT_HW_CLOUD
+ /* wait network init. */
+ while(!netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP))
+ {
+ rt_thread_mdelay(2);
+ }
+
+ LOG_I("network init succeed.");
+
+ mqtt_log_init();
+ mqtt_client_t *client = mqtt_lease();
+ mqtt_set_host(client, KAWAII_MQTT_HOST);
+ mqtt_set_port(client, KAWAII_MQTT_PORT);
+ mqtt_set_user_name(client, KAWAII_MQTT_USERNAME);
+ mqtt_set_password(client, KAWAII_MQTT_PASSWORD);
+ mqtt_set_client_id(client, KAWAII_MQTT_CLIENTID);
+ mqtt_set_clean_session(client, 1);
+
+ KAWAII_MQTT_LOG_I("The ID of the Kawaii client is: %s ", KAWAII_MQTT_CLIENTID);
+ mqtt_connect(client);
+ mqtt_subscribe(client, KAWAII_MQTT_SUBTOPIC, QOS1, mqtt_subscribe_handle);
+#endif /* BSP_USING_MQTT_HW_CLOUD */
while(1)
{
mpu6xxx_get_accel(dev, &accel);
+#ifdef BSP_USING_MQTT_HW_CLOUD
+ if (is_upload == RT_TRUE)
+ {
+ rt_sprintf(payload_buf, "{\"services\":[{\"service_id\":\"mpu6050\",\"properties\":{\"accel_x\":%3d,\"accel_y\":%3d,\"accel_z\":%3d}}]}", accel.x, accel.y, accel.z);
+ mqtt_publish_handle(client, payload_buf);
+ }
+#endif /* BSP_USING_MQTT_HW_CLOUD */
LOG_D("accel.x = %3d, accel.y = %3d, accel.z = %3d", accel.x, accel.y, accel.z);
rt_thread_mdelay(1000);
@@ -46,7 +148,7 @@ static int rt_hw_mpu6050_init()
{
rt_thread_t tid_mpu;
- tid_mpu = rt_thread_create("mpu_accel", mpu6050_accel_entry, RT_NULL, 1024, 10, 10);
+ tid_mpu = rt_thread_create("mpu_accel", mpu6050_accel_entry, RT_NULL, 2048, 6, 10);
if (tid_mpu == RT_NULL)
{
return -RT_ERROR;