Thanapon Tapala

Backend Developer

Embedded Developer

Smart Farmer

Maker

Thanapon Tapala

Backend Developer

Embedded Developer

Smart Farmer

Maker

Blog Post

[Thingsboard] ทำ IoT Platform ด้วย Thingsboard + PostgreSQL

[Thingsboard] ทำ IoT Platform ด้วย Thingsboard + PostgreSQL

Thingsboard คือ IoT platform ตัวหนึ่งที่เป็น open-source (จริงๆก็มีเสียเงินนะ ชื่อว่า PE หรือ Professional edition และ onCloud service) รองรับการเชื่อมต่อของ Devices ผ่าน MQTT CoAP และ HTTP อีกทั้งยังสามารถ integrate service พวก AWS IoT, Azure IoT และอื่นๆเข้ามาใช้งานได้ด้วยเช่นกัน ในส่วนของการติดตั้งก็จะ support ตั้งแต่ Raspberry Pi ไปจนถึงรันบน Kube ที่เป็น Container orchestration เลย

สิ่งที่ต้องมีนะครับ

  • Docker engine and Docker-compose

เริ่มกันเลย

  • สร้างไฟล์ docker-compose.yml กันก่อน
version: '3.4'

services:
  thingsboard:
    container_name: thingsboard
    image: thingsboard/tb-postgres
    ports: 
      - 9090:9090
      - 1883:1883
      - 5683:5683/udp
    restart: always
    depends_on: 
        - postgresql
    environment:
      DATABASE_ENTITIES_TYPE: sql
      DATABASE_TS_TYPE: sql
      SPRING_JPA_DATABASE_PLATFORM: org.hibernate.dialect.PostgreSQLDialect
      SPRING_DRIVER_CLASS_NAME: org.postgresql.Driver
      SPRING_DATASOURCE_MAXIMUM_POOL_SIZE: 5
      SQL_POSTGRES_TS_KV_PARTITIONING: MONTHS
      SPRING_DATASOURCE_URL: jdbc:postgresql://postgresql:5432/thingsboard
      SPRING_DATASOURCE_USERNAME: postgres
      SPRING_DATASOURCE_PASSWORD: postgresPassword

  postgresql:
    container_name: postgresql
    image: postgres:11.5-alpine
    restart: always
    environment:
      POSTGRES_PASSWORD: postgresPassword
      POSTGRES_USER: postgres
      POSTGRES_DB: thingsboard
    ports:
      - 5432:5432

thingsboard/tb-postgres: เป็น docker image ของ Thingsboard ที่เชื่อมต่อเข้ากับ PostgreSQL database โดยจะมี port ที่ถูก expose ออกมาเป็น 9090 ซึ่งจะเป็นหน้า Web UI ของ Thingsboard, 1883 เป็น Port สำหรับ MQTT และ 5683 สำหรับ CoAP

postgres:11.5-alpine: เป็น image ของ PostgreSQL ซึ่งจะมี port 5432 สำหรับให้ service อื่นๆเข้ามาเชื่อมต่อได้

  • จากนั้นก็ทำการรัน docker-compose ขึ้นมาเลยโดยที่เราจะต้องอยู่ใน folder เดียวกันกับไฟล์ docker-compose.yml ข้างบนนะครับ
docker-compose up -d
  • แล้วก็จะได้หน้าตาแบบนี้ครับ รอให้ docker มัน pull image ลงมาสักครู่
  • หลังจากที่เรารัน docker-compose เรียบร้อยแล้วมาลองดูว่า container ของเรานั้นทำงานอยู่ไหมโดยใช้คำสั่ง
docker ps -a
  • ก็จะได้หน้าตาแบบนี้ ว่า container ของเรากำลังรันอยู่นะจ๊ะ…

ทดสอบเข้า Web browser แล้วไปที่ http://localhost:9090 กันดูนะครับ

Systen Administrator[email protected] / sysadmin คือ role ที่ใหญ่ที่สุดสามารถกำหนด tenant admin ได้จัดการระบบต่างๆได้

Tenant Administrator[email protected] / tenant เป็น admin ที่จะมีไว้สำหรับสร้าง Asset, Device, Dashboard หรือการกำหนด rule engine

Customer User[email protected] / customer คือ end-user

เสร็จเรียบร้อยครับ ส่วนที่เหลือก็อยู่ที่แต่ละคนละเอาไปประยุกต์ใช้กันต่อไปแล้ว เบื้องต้นสำหรับผม ถ้าเรากำลังจะทำระบบ IoT ขึ้นมาสักตัวหนึ่ง ส่วนตัวคิดว่าการใช้ docker-compose ร่วมกัน Thingsboard Platform น่าจะเป็นวิธีที่ง่ายที่สุดและเร็วที่สุด แต่จริงๆทางฝั่ง Thingboard เขาก็มี Cloud service ให้บริการอยู่เหมือนกันข้อดีก็คือเราไม่จำเป็นต้องมา Maintain ระบบแค่มีหน้าที่ส่งข้อมูลกับนำข้อมูลมาวิเคราะห์หรือแสดงผลเท่านั้นก็พอ ก็อาจจะเป็นอีก IoT Platform หนึ่งให้เราเลือกใช้ในอนาคตต่อไปนะครับ

สำหรับวันนี้ขอบคุณและสวัสดีครับ 🙂

tb-postgres

ThingsBoard is an open-source IoT platform for data collection, processing, visualization, and device management.

postgres

The PostgreSQL object-relational database system provides reliability and data integrity.

https://thingsboard.io/docs/

The ThingsBoard documentation can help you set up ThingsBoard, learn about the platform and get your IoT projects running on ThingsBoard.
Taggs: