การทำ cloud iot ด้วย thingsboard ไว้ใช้เองครับ



  ปัจจุบันอุปกรณ์พวก IOT เช่น  Arduino หรือ Raspberry ถูกนำมาใช้กันอย่างแพร่หลาย เมื่อต้องการเก็บข้อมูลเราต้องใช้บริการพวก cloud iot ที่มีอยู่อย่างหลากหลายเช่น Netpie , Thingspeak ,iottweet และอีกหลากหลาย แต่บริการเหล่านี้ เราต้องฝากข้อมูลไว้ที่ข้างนอก ซึ่งอาจจะไม่ปลอดภัย ทางที่ดีที่สุด คือ เราควรเก็บข้อมูลเหล่านั้นไว้เอง thingsboard จึงเป็นทางเลือกที่หน้าสนใจ และเป็น open source ด้วย และมี widget graph ต่างๆ สวยงาม




การติดตั้งบนระบบปฏิบัติการ windows

 ให้ติดตั้ง webserver ให้เรียบร้อยก่อน เช่น wamp หรือ xampp เป็นต้น


1. install java 8   https://java.com/en/download/

2. install   (คู่มือ https://thingsboard.io/docs/user-guide/install/windows/ )

    DataStax   64 bit http://downloads.datastax.com/community/datastax-community-64bit_3.0.9.msi

   DataStax 32 bit http://downloads.datastax.com/community/datastax-community-32bit_3.0.9.msi

3.สร้าง folder สำหรับไฟล์ เช่น   "C:\thingsboard"
   จากนั้นก็ให้ ดาวน์โหลดไฟล์ แตกไฟล์ ใส่ในโฟล์เดอร์ที่เราสร้าง จากที่นี่ https://github.com/thingsboard/thingsboard/releases/download/v1.2.2/thingsboard-windows-1.2.2.zip


จากนั้น เข้า command prompt แบบ administrator คือ ให้คลิ๊กขวาเลือก run administrator แล้ว สั่งติดตั้งโดยให้เข้าไปที่ folder ที่เราสร้าง แล้ว พิมพ์ install.bat แล้วกด enter
C:\thingsboard>install.bat
Detecting if it is 32 bit machine
CurrentVersion 1.8
Java 1.8 found!
Installing thingsboard ...
2017-01-31 02:26:50,704 INFO  - Starting ServiceWrapper in the CLI mode
2017-01-31 02:26:50,907 INFO  - Completed. Exit code is 0
DONE.
  จากนั้นเข้าไปที่ dataStax เลือก cassandra CQLShell เพื่อติดตั้งตัวอย่างข้อมูล


พิมพ์ตามนี้ครับ
cqlsh> source 'c:\thingsboard\data\schema.cql';
cqlsh> source 'c:\thingsboard\data\system-data.cql';
cqlsh> source 'c:\thingsboard\data\demo-data.cql';

เป็นอันติดตั้งเรียบร้อย

ต่อไปเป็นการเปิดการใช้งาน
net start thingsboard
ผลลัพธ์
The Thingsboard Server Application service is starting.
The Thingsboard Server Application service was started successfully.
การเรียกการใช้งาน  http://localhost:8080/    

ตัวอย่างหน้าจอครับ
   


user & password สำหรับใช้งาน

System Administrator

  • login - sysadmin@thingsboard.org.
  • password - sysadmin

Demo Tenant

  • login - tenant@thingsboard.org.
  • password - tenant.

Demo tenant customers:
  • Customer A users - customer@thingsboard.org or customerA@thingsboard.org.
  • Customer B users - customerB@thingsboard.org.
  • Customer C users - customerC@thingsboard.org.
  • all users have “customer” password.


////// จบการติดตั้ง /////


ตัวอย่างใช้งาน esp8266  กับ DHT22 ส่งข้อมูลอุณหภูมิและความชื้น  ขึ้นไปเก็บ


การตั้งค่าบน server 

เข้าไปที  http://localhost:8080  แล้ว login ด้วย user password ข้างล่าง
  • login: tenant@thingsboard.org
  • password: tenant
1. ไปที่เมนู   “Devices” แล้ว  Click “+” button 
2. create device แล้วตั้งชื่อว่า   “DHT11”.
3. หลังจากสร้างเรียบร้อยแล้วเปิดขึ้นมา และ  click “Manage credentials”  ให้   Copy auto-generated access token  เพื่อนำ $ACCESS_TOKEN ไปใช้งาน 

    


ตัวอย่าง code ครับ

#include "DHT.h"
#include <PubSubClient.h>
#include <ESP8266WiFi.h>

#define WIFI_AP "ssid"
#define WIFI_PASSWORD "wifi_password"

#define TOKEN "ehoNfBono2DGWGyx7wO6"  // thingsboard token

// DHT
#define DHTPIN 5
#define DHTTYPE DHT11

char thingsboardServer[] = "192.168.1.6";

WiFiClient wifiClient;

// Initialize DHT sensor.
DHT dht(DHTPIN, DHTTYPE);

PubSubClient client(wifiClient);

int status = WL_IDLE_STATUS;
unsigned long lastSend;

void setup()
{
  Serial.begin(115200);
  dht.begin();
  delay(10);
  InitWiFi();
  client.setServer( thingsboardServer, 1883 );
  lastSend = 0;
}

void loop()
{
  if ( !client.connected() ) {
    reconnect();
  }

  if ( millis() - lastSend > 1000 ) { // Update and send only after 1 seconds
    getAndSendTemperatureAndHumidityData();
    lastSend = millis();
  }

  client.loop();
}

void getAndSendTemperatureAndHumidityData()
{
  Serial.println("Collecting temperature data.");

  // Reading temperature or humidity takes about 250 milliseconds!
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();

  // Check if any reads failed and exit early (to try again).
 // if (isnan(h) || isnan(t)) {
  //  Serial.println("Failed to read from DHT sensor!");
  //  return;
  //}
        h = 60.00;
        t = 38.00;


  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" *C ");

  String temperature = String(t);
  String humidity = String(h);


  // Just debug messages
  Serial.print( "Sending temperature and humidity : [" );
  Serial.print( temperature ); Serial.print( "," );
  Serial.print( humidity );
  Serial.print( "]   -> " );

  // Prepare a JSON payload string
  String payload = "{";
  payload += "\"temperature\":"; payload += temperature; payload += ",";
  payload += "\"humidity\":"; payload += humidity;
  payload += "}";

  // Send payload
  char attributes[100];
  payload.toCharArray( attributes, 100 );
  client.publish( "v1/devices/dht11/", attributes );
  Serial.println( attributes );

}

void InitWiFi()
{
  Serial.println("Connecting to AP ...");
  // attempt to connect to WiFi network

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


void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    status = WiFi.status();
    if ( status != WL_CONNECTED) {
      WiFi.begin(WIFI_AP, WIFI_PASSWORD);
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      Serial.println("Connected to AP");
    }
    Serial.print("Connecting to Thingsboard node ...");
    // Attempt to connect (clientId, username, password)
    if ( client.connect("ESP8266 Device", TOKEN, NULL) ) {
      Serial.println( "[DONE]" );
    } else {
      Serial.print( "[FAILED] [ rc = " );
      Serial.print( client.state() );
      Serial.println( " : retrying in 5 seconds]" );
      // Wait 5 seconds before retrying
      delay( 5000 );
    }
  }
}

การตรวจสอบข้อมูลที่ส่งขึ้นไป
  • login: tenant@thingsboard.org
  • password: tenant
ให้ไปที่ “Devices” แล้วเลือก  “ESP8266 Demo Device” 


การตั้งค่า firewall windows
  ต้องตั้งค่าให้อนุญาต ไม่งั้นมันจะไม่ยอมให้เรา connect

 control panel -> windows firewall -> advance setting -> new rule  -> protocol and ports
เลือก TCP   -> specitfic local ports 8080 , 1883 , 5683  -> allow the connection





ที่มา https://thingsboard.io/docs/user-guide/install/windows/


















ความคิดเห็น

  1. รบกวนสอบถามครับ.
    Install.bat ไม่ได้ครับ. Fail Port 8080 (เปิด Firewall port แล้วครับ.)
    "Connector configured to listen on port 8080 failed to start Thingsboard installation fialed!"

    ตอบลบ
    คำตอบ
    1. ความคิดเห็นนี้ถูกผู้เขียนลบ

      ลบ
  2. รบกวนขออีมเมลหรือเบอร์ติดต่อเจ้าของ Blog ด้วยครับผม

    ตอบลบ

แสดงความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

แจ้งเตือนเข้าไลน์กลุ่ม ผ่าน Line notify เมื่อมีคน login เข้า server ของเราผ่าน SSH (linux) หรือ remote desktop เข้ามา (windows server)

การประยุกต์ใช้ line notify ในการแจ้งปัญหาการใช้งาน สำหรับ php