Rejeee Temp & Humid Sensor ใช้กับ ChirpStack และ Influxdb

Somsak Lima
6 min readJul 14, 2022

--

  1. Specification เบื้องต้น

Rejeee LoRaWAN SL101AS-TH เป็นเซ็นเซอร์อุณหภูมิและความชื้น มากับจอ E-paper 2.9 นิ้ว เป็นอุปกรณ์ที่ผ่าน กสทช. แล้ว กำลังส่งต่ำกว่า 500mW ผู้ใช้สามารถซื้อไปใช้งานได้ ไม่ต้องมีใบอนุญาติใช้/ตั้งสถานี จาก กสทช. อุปกรณ์นี้สามารถใช้ได้กับ The Things Network, Chirpstack หรือ Helium

คุณสมบัติทางเทคนิค
- LoRaWAN 1.0.3 Class A/C
- ใช้ลิเธียมแบต 5400mAh ใช้ได้นานถึง 5 ปี (ส่งข้อมูลทุก 30 นาที) ผู้ผลิตบอกว่าใช้ได้ถึง 10 ปีหากตั้งส่งเว้นช่วงห่างมากขึ้นอีก แบตเป็นแบบไม่สามารถ Charge ได้ ไฟหมดแล้วต้องหาก้อนใหม่ใช้แทน
- มี Port USB Type C สำหรับปรับตั้งค่าหรือใช้ป้อนไฟเลี้ยงจากภายนอก
- สามารถเปลี่ยน Logo และ Weblink
- ใช้ Chip Semtech SX1262 และ Sensirion STH 30
- ช่วงวัดอุณหภูมิ -45℃~+ 85℃ (±0.3℃)
- ช่วงวัดความชื้น 0–100%RH (±3%RH)
- ความถี่ 923–925Mhz
- TX Power 25dBm (316mW)
- ขนาด 102mm*60mm*25mm

2.LoRaWAN Network Server บน DOCKER

ในบทความนี้จะใช้ Chirpstack ที่ทำงานบน Raspberry PI (ที่สั่งซื้อจากเวป คลิก) ซึ่งติดตั้งด้วย DOCKER ให้ตรวจเช็ค Portainer ดูว่าการติดตั้ง Chirpstack และ Influx ทำงานปรกติหรือไม่

เปิดเวป 192.168.1.100:9000 ใช้ Username/Password คือ admin/m2mlorawan123

หากขึ้นสีเขียวหมดแสดงว่า Server ทำงานปรกติ

3.การใช้ Chirpstack

3.1 ตั้งค่า Chirpstack ทั่วไป

เข้าเวป http://192.168.1.100:8080/ เพื่อเรียกใช้ Chirpstack

สร้าง Network-servers ตามรูป ให้เป็นความถี่ AS923

สร้าง Gateway Profile ตามภาพ

สร้าง Service Profile ตามภาพ

3.2 เพิ่ม LoRaWAN Gateway

เปิด Web Admin ของ Dragino LG308-AS923-TH-EC25 ดูว่า Gateway ID เท่าไร และอย่าลืมตั้งให้ Service Provider เป็น Custom/Private LoRaWAN ชี้ไปที่ Server Address ที่ตั้งไว้ ในกรณีนี้คือ IP 192.168.1.100 กำหนด Uplink Port เป็น 1700 Downlink Port เป็น 1700

เพิ่ม Gateway ตามรูป ตัวอย่างจะใช้ Dragino LoRaWAN Gateway LG308-AS923-TH-EC25 โดยนำ Gateway ID ของ Dragino มาป้อน

ถ้า Gateway ทำงานปรกติ Last seen จะขึ้นว่ามีการเชื่อมต่อเข้ามาไม่กี่วินาทีก่อนตามภาพ

3.3 เพิ่ม LoRaWAN Rejeee Sensor Node

เพิ่ม Device Profile โดยกำหนดชื่อ เช่น rejeee

แก้ Device Profile เลือก TAB JOIN OTAA/ABP ติกเลือก Device support OTAA

เลือก TAB CODEC เลือก Payload code เป็น Custom JavaScript codec functions

ให้ Copy code จากด้านล่างไปใส่ หากเป็น ChirpStack V.3

function Decode(fPort, bytes, variables) {
var obj = {};
var warnings = [];
var len = bytes?bytes.length:0;
var offset = 0;
var dtype;

offset++;
obj.battery = (bytes[offset++]&0x1F);
obj.res = (bytes[offset++]);
do {
dtype = bytes[offset++];
if(0x01 == dtype){
offset += 8;
} else if(0x04 == dtype){
obj.temperature = (((bytes[offset] & 0x80 ? bytes[offset] - 0x100 : bytes[offset]) << 8) + bytes[offset+1]) / 10;
offset += 2;
if (obj.temperature < -10) {
warnings.push("it's cold");
}
} else if(0x05 == dtype){
obj.humidity = bytes[offset++];
} else if(0x06 == dtype) {
offset++;
} else if(0x30 == dtype) {
offset += 5;
}
len = len - offset;
} while(len > 0)

return obj;
}

ให้ Copy code จากด้านล่างไปใส่ หากเป็น ChirpStack V.4

function decodeUplink(input) {
var obj = {};
var warnings = [];
obj.battery = (input.bytes[1]&0x1F);
obj.vol = (input.bytes[2]);
obj.temperature = (((input.bytes[4] & 0x80 ? input.bytes[4] - 0x100 : input.bytes[4]) << 8)
+
input.bytes[5]) / 10;
obj.humidity = input.bytes[7];
if (obj.temperature < -10) {
warnings.push("it's cold");
}
return {
data: obj,
warnings: warnings
};
}

สร้าง Application ตามภาพ

คลิกที่ App1 แล้วสร้าง Device ตามภาพ

เพิ่ม INTEGRATIONS ใน Application App1

คลิก ADD ตรงใต้รูป Influxdb

InfluxDB version * เลือก InfuxDB 2.x
API endpoint (write) * http://192.168.1.100:8086/api/v2/write
Organization * Influxdata
Bucket * tablerejeee
Token * ให้ Copy จาก Influx ซึ่งจะพูดถึงในหัวข้อต่อไป เรื่อง “เตรียม Influxdb สำหรับเก็บข้อมูล Sensor” โดยนำค่า Token จาก Influxdb มาป้อนตรงนี้

4.เตรียม Influxdb สำหรับเก็บข้อมูล Sensor

เปิด Influxdb http://192.168.1.100:8086

ครั้งแรกให้กำหนด Password ใหม่ เช่น
user :influx
password :influx123
Organization :Influxdata
Initial Bucket Name : ใส่ว่า system (เก็บระบบ system)

คลิก Data/Bucket เลือก +Create Bucket

ใส่ชื่อ tablerejeee แล้วคลิก Create

ไปที่ Data/API Token เลือก + Generate API Token เลือก ALL Access API Token (เพื่อความง่ายจึงเลือก Option นี้)

ใส่ Description เช่น tablerejeee

จะเห็น API Token ชื่อ tablerejeee ถูกสร้างขึ้น ให้คลิกที่ชื่อ tablerejeee

จะเห็น Token แสดงขึ้นที่หน้าจอ ให้ Copy to Clipboard แล้วนำไป update ใน Chirpstack ตรง Integration ของ Influxdb

ดูชื่อ Organization จาก Influxdb

คลิกรูปคน/Switch Oraganization

ดูชื่อ Bucket จาก Influxdb
Click Data/Buckets

5.เปิดเครื่อง Sensor Rejeee
กดปุ่มด้านบนเครื่องนานประมาณ 10 วินาที เครื่องจากเริ่มพยามเชื่อมต่อกับ Chirpstack หาก Gateway รับข้อมูลได้จะเห็น เราสามารถกดปุ่ม 1 ครั้งเพื่อสั่งให้เครื่องส่งข้อมูลทันทีไม่ต้องรอรอบที่ตั้งไว ้

Join Request และ Join Accept

ที่ Device ก็จะเห็นข้อมูลไหลเข้า LoRa Frames

เปิดแทป Device Data ก็จะเห็นข้อมูล

หากคลิกในแต่ละบรรทัดของ Device Data จะเห็นข้อมูลในรูปแบบ JSON แสดงค่าต่างๆ รวมถึง ค่าจากvอุณหภูมิและความชื้นจาก Sensor

6.เริ่มดูข้อมูลใน Influxdb

เปิด Data/Buckets

ให้ click ที่ tablerejeee จะเห็นหน้าจอถัดไป ให้คลิก From ชื่อ tablerejeee หากการส่งข้อมูลจาก Chirpstack สามารถเขียนลง Influxdb ได้ถูกต้องจะเห็น รายการ Mesurement ขึ้นมา 5 บรรทัดตามภาพ หากไม่มีขึ้นมาแสดงว่าข้อมูลยังมาไม่ถึง Influxdb ให้ตรวจเช็คความถูกต้องอีกครั้ง

ให้ลองเลือกบรรทัด device_frmpaload_data_temp แล้วคลิก Submit

จะเห็นข้อมูลอุณหภูมิแสดงเป็น Graph เส้นตรงตามภาพตัวอย่าง

อาจจะสร้าง Dashboard ตามภาพด้วย Influxdbได้

ผู้ใช้งานสามารถศึกษาการทำ Dashboard ด้วยการใช้โปรแกรม Grafana ได้อีกเช่นกัน เนื่องจาก Grafana จะมีลูกเล่นให้มากกว่า Dashboard ของ Influxdb

7.การดูค่า Config ที่ตั้งไว้ในตัวอุปกรณ์ Sensor

ค่าความถี่ในการส่งข้อมูล ค่า Key ต่างๆ คือ DevEUI, AppEUI, Appkey จะเก็บไว้ในอุปกรณ์ให้ใช้วาน USB Type C เสียบเข้ากับ Sensor และให้ Download Sensor tools ได้จากเวป http://doc.rejeee.com/web/#/29?page_id=200 เช่น ค่า Uplink Period ตั้งมา 600 วินาที หรือ คือ 10 นาที ซึ่ง Sensor นี้จะส่งข้อมูลทุก 10 นาที

เรียกใช้โปรแกรมแล้วเลือก com port ที่ต่อกับ Sensor เลือกเสร็จให้คลิก Open UART ก่อนแล้ว Read Config

จะเห็น DevEUI, AppEUI,Appkey เพื่อนำไปเพิ่ม Device ใน web chirpstack

หากเป็น Sensortool เวอร์ชั่น 1.5.9 หน้าตาจะแตกต่างออกไปเล็กน้อย

Note!
- NS (ใช้ IP:Port ,ระบุ AS923)
- Gateway Profile (ใช้ NS, ตั้งค่า live interval, Channels)
- Organization
- Service Profile (ใช้ NS, ตั้งค่า Gateway Metadata, Geolocation, Max Datarate)
- Device Profile (ใช้ NS, ตั้งค่า MAC Version, เลือก OTAA-ABP, Class, Codec, Max EIRP, uplink interval)
- Gateways (ใช้ NS ,Gateway ID, Service Profile, Gateway Profile ตั้งค่า ต่ำแหน่ง)
- Application (ใช้ Service Profile, ตั้งค่า integration)
—สร้าง device (ใช้ Device Profile, ตั้งค่า Config, Key DevEUI, AppEUI,Appkey )

คำสั่งจัดการ Influxdb

sudo docker exec -it influxdb influx version

--

--

Somsak Lima
Somsak Lima

Written by Somsak Lima

สนับสนุนและส่งเสริมให้ผู้สนใจสามารถใช้งานเทคโนโลยี LoRa และ LoRaWAN ได้ โดยนำความรู้ที่ได้ไปต่อยอดเพื่อใช้งาน

No responses yet