Kết nối thiết bị outdoor lên nền tảng, nội dung này được thực hiện trên ESP32 làm MCU điều khiển Devkit SIM7020 giao tiếp với Innoway qua NB-IoT
Ví dụ đọc giá trị chân analog GPIO34 của ESP32 và gửi lên server với tần suất 30s một lần.
/*
* @FileName: InnoPublish.ino
* @Author: Hao Van
* @Email: haohv6@gmail.com
* @LastEditors: Hao Van
* @Date: 2021-12-02 11:24:27
* @LastEditTime: 2021-12-02 11:24:27
* @Copyright: VIETTEL HIGH TECHNOLOGY INDUSTRIES CORPORATION
* @Company: http://viettelrd.com.vn/en
*
*
*
* @Description: This demo is based on the Esp32,
* It comunicate with Kit 7020. Every 15s, it connect and publish data to InnoWay, then disconnect.
*/
#include <Arduino.h>
#include "InnoWay.h"
#define DEVICE_ID "8d17bc70-8677-4c32-82a4-db77293a94ae"
#define TOKEN "pXQYlQe0jiwnurj36VE0lCQnU4nsBZ5a"
unsigned long previousMillis = 0;
uint8_t analogPin = 34; // Pin used to read data from GPIO34 ADC_CH6.
char buffer_uart0[256];
char data_sub[256];
void setup() {
Serial.begin(115200);
Serial2.begin(115200);
Serial.print("\r\n\r\n-----------InnoWay Publish sample start-------------\r\n\r\n");
}
void loop() {
Inno_polling(buffer_uart0, data_sub); //UART0
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= 15000) {
previousMillis = currentMillis;
Serial.println("----------------------");
float value = analogRead(analogPin);
char pub_data[216], pub_topic[100];
sprintf(pub_topic,"messages/%s/events",DEVICE_ID);
sprintf(pub_data,"{\"Value\":%d}",value);
Serial.print("Data to send:");
Serial.println(pub_data);
int err = Inno_connect(DEVICE_ID, TOKEN, 15, 1);
if ( err != IN_OK) {
Serial.print("\r\nConnect InnoWay err");
goto exit;
}
Serial.print("\r\nConnect OK");
err = Inno_publish(pub_topic, pub_data, 1, 0);
if (err != IN_OK) {
Serial.print("\r\nPublish err");
}
Serial.print("\r\n Publish data OK");
err = Inno_disconnect();
if (err != IN_OK) {
Serial.print("\r\nPublish err");
goto exit;
}
Serial.print("\r\nDisconnect OK");
}
exit:
delay(TIMER_DELAY);
}
/*
* @FileName: InnoSubcribe.ino
* @Author: Hao Van
* @Email: haohv6@gmail.com
* @LastEditors: Hao Van
* @Date: 2021-12-02 11:24:27
* @LastEditTime: 2021-12-02 11:24:27
* @Copyright: VIETTEL HIGH TECHNOLOGY INDUSTRIES CORPORATION
* @Company: http://viettelrd.com.vn/en
*
*
* @Description: This demo is based on the Esp32,
* It comunicate with Kit 7020. When turn on, it subcribe in topic "messages/{Device_id}/events"
* If has data send to that topic, device return it to (char*)data_sub
*/
#include <Arduino.h>
#include "InnoWay.h"
#define DEVICE_ID "8d17bc70-8677-4c32-82a4-db77293a94ae"
#define TOKEN "pXQYlQe0jiwnurj36VE0lCQnU4nsBZ5a"
unsigned long previousMillis = 0;
char buffer_uart0[256];
char data_sub[256];
void setup() {
Serial.begin(115200);
Serial2.begin(115200);
Serial.print("\r\n\r\n-----------InnoWay Subcribe sample start-------------\r\n\r\n");
delay(3000);
}
void loop() {
Serial.println("----------------------");
int err = Inno_connect(DEVICE_ID, TOKEN, 15, 1);
if ( err != IN_OK) {
Serial.print("\r\nConnect InnoWay err");
goto exit;
}
char topic[100];
sprintf(topic,"messages/%s/events",DEVICE_ID);
err = Inno_subscribe(topic, 1);
if ( err != IN_OK) {
Serial.print("\r\Sub InnoWay err");
goto exit;
}
Serial.print("\r\nSubcribe OK");
while(1) {
int err = Inno_polling(buffer_uart0, data_sub);
if (err == IN_SUB_DATA) {
Serial.print("\r\nData subcribe: ");
Serial.print(data_sub);
}
delay(TIMER_ATC_PERIOD);
}
exit:
delay(TIMER_ATC_PERIOD);
}