×

将您的Magicbit(ESP32)连接到thingsboard

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2022-11-15

刘军

分享资料个

描述

介绍

ThingsBoard 是一个开源服务器端平台,可让您监视和控制物联网设备。它对个人和商业用途都是免费的,您可以在任何地方部署它。如果这是您第一次使用该平台,我们建议您查看什么是事物板页面和入门指南。

此示例应用程序将允许您使用您的 magicbit 设备和 ThingsBoard Web UI 显示来自 DHT11 传感器的湿度/温度数据。

在 Magicbit 设备上运行的应用程序是使用 ThingsBoard Arduino SDK 编写的,非常简单易懂。

完成此示例/教程后,您将在以下仪表板上看到您的传感器数据。

poYBAGNxiVqARe7uAAEF3DRvC0w35.jpeg
 

访问 Thingsboard Demo 官方页面并注册。

在左侧栏上登录后,您将看到设备。单击设备并添加新设备。

pYYBAGNxiV2AC1TkAACCe3VnzZs099.png
 

在凭据选项卡上勾选添加凭据选项卡,然后从下拉框中选择访问令牌。您可以添加自己的访问令牌或留空以自动生成令牌。

在别名中将设备设置为magicbit。转到仪表板选项卡并导入仪表板。

按照图像中的以下步骤 导入仪表板。 在附件中找到名为“magicbit_temperature_humidity_demo_dashboard.json”的演示 JSON 文件。

pYYBAGNxiV-AUmisAABHKZ-yQpc97.jpeg
 
poYBAGNxiWGASig8AAA-_aqo-bM80.jpeg
 
poYBAGNxiWOAbHxkAAAyB6bIWuQ15.jpeg
 
pYYBAGNxiWaAfxyxAAA6KL2Uf7Y57.jpeg
 

按如下方式将您的魔法位与 DHT11 模块连接到引脚 33。

poYBAGNxiWiABU1YAAEViakzxro90.jpeg
 

在 Arduino IDE 中下载以下库,

pYYBAGNxiWuAe5sqAAFx7tG1ZU8096.png
 
pYYBAGNxiW2AA4K5AAFc5XzLBzc221.png
 

以下是您将使用的 Arduino 代码。

注意您需要在草图中编辑以下常量和变量:

  • WIFI_AP- 您的接入点名称
  • WIFI_PASSWORD- 接入点密码
  • TOKEN- ThingsBoard 配置步骤中的$ACCESS_TOKEN 。
  • THINGSBOARD_SERVER- 可在您的 wifi 网络中访问的 ThingsBoard 主机/IP 地址。指定demo.thingsboard.io您是否使用实时演示服务器。
#include            // DHT for Library library
#include            // WiFi control for ESP32
#include     // ThingsBoard SDK

#define DHTPIN 33     // what digital pin we're connected to

#define DHTTYPE DHT11   // DHT 11
DHT dht(DHTPIN, DHTTYPE);

// Helper macro to calculate array size
#define COUNT_OF(x) ((sizeof(x)/sizeof(0[x])) / ((size_t)(!(sizeof(x) % sizeof(0[x])))))

// WiFi access point
#define WIFI_AP_NAME       "4G"// "WIFI_AP"
// WiFi password
#define WIFI_PASSWORD      "nevergiveup"// "WIFI_PASSWORD"

// See https://thingsboard.io/docs/getting-started-guides/helloworld/
// to understand how to obtain an access token
#define TOKEN              "XZjQ26r9XJcsNkWGuASY" // "TOKEN"
// ThingsBoard server instance.
#define THINGSBOARD_SERVER  "demo.thingsboard.io"

// Baud rate for debug serial
#define SERIAL_DEBUG_BAUD    115200

// Initialize ThingsBoard client
WiFiClient espClient;
// Initialize ThingsBoard instance
ThingsBoard tb(espClient);
// the Wifi radio's status
int status = WL_IDLE_STATUS;


// Period of sending a temperature/humidity data.
int send_delay = 2000;
unsigned long millis_counter;
void InitWiFi()
{
  Serial.println("Connecting to AP ...");
  // attempt to connect to WiFi network

  WiFi.begin(WIFI_AP_NAME, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Connected to AP");
}

void reconnect() {
  // Loop until we're reconnected
  status = WiFi.status();
  if ( status != WL_CONNECTED) {
    WiFi.begin(WIFI_AP_NAME, WIFI_PASSWORD);
    while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
    }
    Serial.println("Connected to AP");
  }
}

// Setup an application
void setup() {
  // Initialize serial for debugging
  Serial.begin(SERIAL_DEBUG_BAUD);
  WiFi.begin(WIFI_AP_NAME, WIFI_PASSWORD);
  InitWiFi();


  // Initialize temperature sensor
  dht.begin();
}

// Main application loop
void loop() {


  // Reconnect to WiFi, if needed
  if (WiFi.status() != WL_CONNECTED) {
    reconnect();
    return;
  }


  // Reconnect to ThingsBoard, if needed
  if (!tb.connected()) {
    // Connect to the ThingsBoard
    Serial.print("Connecting to: ");
    Serial.print(THINGSBOARD_SERVER);
    Serial.print(" with token ");
    Serial.println(TOKEN);
    if (!tb.connect(THINGSBOARD_SERVER, TOKEN)) {
      Serial.println("Failed to connect");
      return;
    }
  }

 

  // Check if it is a time to send DHT11 temperature and humidity
  if(millis()-millis_counter > send_delay) {
    Serial.println("Sending data...");

    // Uploads new telemetry to ThingsBoard using MQTT.
    // See https://thingsboard.io/docs/reference/mqtt-api/#telemetry-upload-api
    // for more details
    float h = dht.readHumidity();
    // Read temperature as Celsius (the default)
    float t = dht.readTemperature();
    
    if (isnan(h) || isnan(t)) {
      Serial.println("Failed to read from DHT sensor!");
    } else {
      Serial.print("Temperature:");
      Serial.print(t);
      Serial.print(" Humidity ");
      Serial.println(h);
      tb.sendTelemetryFloat("temperature", t);
      tb.sendTelemetryFloat("humidity", h);
    }

    millis_counter = millis(); //reset millis counter
  }

  // Process messages
  tb.loop();
}

数据可视化

在现场演示服务器中:

  • 登录:您的现场演示用户名(电子邮件)
  • 密码:您的现场演示密码

有关如何获取帐户的更多详细信息,请参阅实时演示页面。

转到“设备”部分并找到“Magicbit” ,打开设备详细信息并切换到“最新遥测”选项卡。如果一切配置正确,您应该能够看到“温度”“湿度”的最新值。

poYBAGNxiXCAPXlUAABQK-L5pbE51.jpeg
 

之后,打开“仪表板”部分,然后找到并打开“magicbit_temperature_humidity_demo_dashboard” 结果,您将看到一个显示温度和湿度水平的时间序列图表(类似于介绍中的仪表板图像)。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !