changed to Aliot shared instance

This commit is contained in:
strawmanbobi
2024-04-30 09:51:41 +08:00
parent 596031bf07
commit c0037a7892
10 changed files with 86 additions and 31 deletions

8
.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

8
.idea/iris-kit.iml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="CPP_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

8
.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/iris-kit.iml" filepath="$PROJECT_DIR$/.idea/iris-kit.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

23
.vscode/settings.json vendored
View File

@@ -1,23 +0,0 @@
{
"files.associations": {
"array": "cpp",
"deque": "cpp",
"list": "cpp",
"string": "cpp",
"unordered_map": "cpp",
"vector": "cpp",
"string_view": "cpp",
"initializer_list": "cpp",
"ranges": "cpp",
"memory": "cpp",
"random": "cpp",
"optional": "cpp",
"memory_resource": "cpp",
"system_error": "cpp",
"*.tcc": "cpp",
"functional": "cpp",
"string.h": "c",
"arduino.h": "c"
},
"C_Cpp.errorSquiggles": "disabled"
}

View File

@@ -46,7 +46,6 @@ extern String g_downstream_topic;
extern int g_mqtt_port;
extern String g_aliot_region;
extern String g_aliot_instance_id;
// private variable definitions

View File

@@ -32,6 +32,7 @@ StaticJsonDocument<1024> send_msg_doc;
StaticJsonDocument<1024> http_request_doc;
StaticJsonDocument<1024> http_response_doc;
StaticJsonDocument<2048> emit_code_doc;
StaticJsonDocument<1024> status_notify_doc;
WiFiManager wifi_manager;
WiFiClient wifi_client;

View File

@@ -54,12 +54,12 @@ String g_upstream_topic = "";
String g_downstream_topic = "";
String g_aliot_region = "cn-shanghai";
String g_aliot_instance_id = "iot-060a2sie";
int g_mqtt_port = 1883;
int g_app_id = 0;
mqtt_type_t g_mqtt_type = MQTT_TYPE_MAX;
boolean g_subscribed = false;
unsigned long last_check_time = 0UL;
// private variable definitions
static bool downstream_topic_subscribed = false;
@@ -135,10 +135,14 @@ void irextIoTKeepAlive() {
emqxClientKeepAlive();
}
if (!g_mqtt_client.connected()) {
g_mqtt_client.unsubscribe(g_downstream_topic.c_str());
g_subscribed = false;
connectToIrextIoT();
unsigned long current_time = millis();
if (current_time - last_check_time > 10000) {
if (!g_mqtt_client.connected()) {
g_mqtt_client.unsubscribe(g_downstream_topic.c_str());
g_subscribed = false;
connectToIrextIoT();
}
}
}

View File

@@ -44,7 +44,8 @@ extern StaticJsonDocument<1024> http_request_doc;
extern StaticJsonDocument<1024> http_response_doc;
extern StaticJsonDocument<1024> iris_msg_doc;
extern StaticJsonDocument<1024> iris_ind_doc;
extern StaticJsonDocument<1024> emit_code_doc;
extern StaticJsonDocument<2048> emit_code_doc;
extern StaticJsonDocument<1024> status_notify_doc;
extern String g_product_key;
extern String g_device_name;
@@ -279,6 +280,20 @@ static String buildHeartBeat() {
return heartBeatMessage;
}
static String buildTestResponse() {
String testResponseBeatMessage = "";
iris_msg_doc.clear();
iris_msg_doc["eventName"] = String(EVENT_NOTIFY_RESP);
iris_msg_doc["productKey"] = g_product_key;
iris_msg_doc["deviceName"] = g_device_name;
iris_msg_doc["appId"] = g_app_id;
iris_msg_doc["resp"] = String(NOTIFY_RESP_TEST);
serializeJson(iris_msg_doc, testResponseBeatMessage);
return testResponseBeatMessage;
}
static int handleConnected(String product_key, String device_name, String content) {
return 0;
}
@@ -304,6 +319,23 @@ static int handleEmit(String product_key, String device_name, String content) {
}
static int handleNotifyStatus(String product_key, String device_name, String content) {
INFOF("received emit code : %s, %s, %s\n", product_key.c_str(), device_name.c_str(), content.c_str());
INFOF("received status change notification : %s, %s, %s\n", product_key.c_str(), device_name.c_str(), content.c_str());
status_notify_doc.clear();
if (DeserializationError::Ok == deserializeJson(status_notify_doc, content)) {
int key_id = status_notify_doc["keyId"];
String key_name = status_notify_doc["keyName"];
int status = status_notify_doc["status"];
INFOF("will enter status : %d for %s(%d)\n", status, key_name.c_str(), key_id);
if (RECIPIENT_STATUS_TEST == status) {
// send response for test notification
String testResponseData = buildTestResponse();
sendData(g_upstream_topic.c_str(), (uint8_t*) testResponseData.c_str(), testResponseData.length());
}
} else {
INFOF("deserialize failed\n");
}
return 0;
// parse status
return 0;
}

View File

@@ -28,6 +28,15 @@
#define USER_NAME_MAX (64)
#define PASSWORD_MAX (64)
typedef enum {
RECIPIENT_STATUS_IDLE = 0,
RECIPIENT_STATUS_READY_TO_STUDY = 1,
RECIPIENT_STATUS_STUDIED = 2,
RECIPIENT_STATUS_UPLOADED = 3,
RECIPIENT_STATUS_TEST = 10,
RECIPIENT_STATUS_MAX = 63,
} kit_status_t;
// web http call URL list
#define GET_IRIS_KIT_ACCOUNT_SUFFIX "/irext-collect/credentials/auth_iris_kit"
#define LOAD_ALIOT_ACCOUNT_SUFFIX "/irext-collect/aliot/load_account"
@@ -41,6 +50,9 @@
// IRIS communication
#define EVENT_NAME_CONNECT "__connect"
#define EVENT_HEART_BEAT_REQ "__hb_request"
#define EVENT_NOTIFY_RESP "__notify_response"
#define NOTIFY_RESP_TEST "test_ok"
typedef int (*eventHandler)(String, String, String);
typedef struct {