Rejeee Temp & Humid Sensor ใช้กับ TTS V3 และ Private Influxdb
Rejeee Temp& Humid Sensor → TTS V.3 →Telegraf →Influxdb 2.x
- 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. การดูค่า Config ที่ตั้งไว้ในตัวอุปกรณ์ Sensor
เสียบสาย USB Type C เข้ากับ Rejeee Sensor จะเห็น COM3 Port เพิ่มขึ้นใน Device Manager ตามภาพ
หากไม่เห็น COM Port อาจจะเกิดจาก ไม่ได้ติดตั้งตัว Driver CH340 หรือสาย USB Type C มีปัญหา ให้ลองหาสาย Type C เส้นใหม่ที่รองรับ Data มาใช้แทน
ถ้าเกิดจากไม่ได้ติดตั้ง Driver ให้ Download USB-to-Serial Driver มาติดตั้ง ตามลิ้งค์ http://doc.rejeee.com/web/#/29?page_id=200
ใช้โปรแกรม Sensor tool เพื่ออ่านค่าความถี่ในการส่งข้อมูล ค่า 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 แล้วคลิก ReadConfig ด้านล่าง
จะเห็น DevEUI, AppEUI, Appkey เพื่อนำไปเพิ่ม Device ตามตัวอย่าง เช่น
AppEUI CACBB80000000001 (JoinEUI)
DevEUI CACBB8010000322F
AppKey 11223344556677889900AABBCCDDEEFF
3.Add Application
เปิด TheThingsNetwork Console
คลิกที่ Go to applications คลิก Add Application
ป้อนข้อมูล Application ที่ต้องการ แล้วกด Create Appication
4.คลิก Add end device
เลือก Enter end device specifics manually และป้อนค่าอื่นๆ รวมถึงค่า AppEUI ในช่อง JoinEUI แล้วคลิก Confirm
จะมีช่องว่างให้เติมเพิ่มคือ DevEUI และ Appkey
เมื่อนำค่าต่างๆ ป้อนครบแล้วให้คลิก Register end device
5. กำหนด Uplink Payload formatters
ให้เพิ่ม Uplink Payload formatters ดังต่อไปนี้
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
};
}
6.เปิดเครื่อง Sensor โดยกด switch ค้างไว้ประมาณ 7 วินาทีจนหน้าจอกระพริบ
เมื่อ Join สำเร็จตรง Live Data ของ End Device จะมีข้อมูลเข้า หากต้องการส่งทันทีไม่ต้องรอครบเวลาที่ตั้งไว้ให้ กด switch 1 ครั้ง
จะเห็นค่า Voltage ของ แบตเตอรี่ , ความชื้นและอุณหภูมิ
ด้านล่างจอด้านซ้ายบรรทัดแรกจะแสดง 4 Digit หลังของ DevEUI
ด้านล่างจอด้านซ้ายบรรทัดที่สองจะแสดง DevAddr
วิธีดึงค่าจาก TTN มาเก็บไว้บน Privated Influxdb
สร้าง File telegraf.conf ดังต่อไปนี้
[global_tags]
[agent]
interval = "5s"
round_interval = true
metric_batch_size = 1000
metric_buffer_limit = 10000
collection_jitter = "5s"
flush_interval = "10s"
flush_jitter = "5s"
precision = ""
hostname = ""
omit_hostname = false
debug = true
quiet = false
[[outputs.influxdb_v2]]
urls = ["http://192.168.1.100:8086"]
token = vuJ2lLosCTfdtIX5nBrpLv1YID3HPg=="
organization = "influxdata"
bucket = "tablerejeee"[[inputs.mqtt_consumer]]
name_override = "TTN"
servers = ["tcp://eu1.cloud.thethings.network:1883"]
qos = 0
connection_timeout = "30s"
topics = [ "v3/myrejeee@ttn/devices/+/up" ]
client_id = "ttn"
username = "myrejeee@ttn"
password = "NNSXS.KNP5SWKDYFEQMYBW4SWH3IUHLBOUCNZP3ADELRXIGOQ"
data_format = "json"
คำสั่งทดสอบ telegraf.conf คือ
$ sudo docker exec -it telegraf telegraf — debug -test
ไฟล์ telegraf.conf จะมีสามส่วนหลักๆ คือ
1.กำหนดค่าทั่วไป
2.กำหนดค่าสำหรับดึงข้อมูล (Input)
3.กำหนดค่าสำหรับเขียนข้อมูล(Output)
Input Parameters
จะได้มาจาก TTS V.3 ในส่วน MQTT Integrations ของ Device
ค่าที่ต้องใช้คือ username และ password
User Name จะนำไปแทรกใน topics ด้วย เช่น
topics = [ “v3/myrejeee@ttn/devices/+/up” ]
Output Parameters
จะได้มาจาก Influxdb
ค่าที่ใช้คือ token, organization, bucket
เมื่อสร้างและแก้ไขไฟล์ telegraf.conf เสร็จให้สร้าง Container Docker ด้วยคำสั่ง
docker run -d \
--name=telegraf \
--hostname=telegraf \
--user telegraf:$(stat -c '%g' /var/run/docker.sock) \
-p 8125:8125/udp \
-p 8092:8092/udp \
-p 8094:8094 \
-v $PWD/telegraf.conf:/etc/telegraf/telegraf.conf:ro \
-v /var/run/docker.sock:/var/run/docker.sock \
-e TZ=Etc/GMT+7 \
--restart unless-stopped \
telegraf
เรียก ดู Log ของ Telegraf
docker logs telegraf
ถ้าทำงานปรกติ จะมีบรรทัด Wrote batch แสดง
2022–07–19T05:17:38Z D! [outputs.influxdb_v2] Buffer fullness: 0 / 10000 metrics
2022–07–19T05:17:50Z D! [outputs.influxdb_v2] Wrote batch of 2 metrics in 15.606133ms
2022–07–19T05:17:50Z D! [outputs.influxdb_v2] Buffer fullness: 0 / 10000 metrics
2022–07–19T05:18:02Z D! [outputs.influxdb_v2] Buffer fullness: 0 /
2022–07–19T05:19:25Z D! [outputs.influxdb_v2] Wrote batch of 1 metrics in 16.974467ms
2022–07–19T05:19:25Z D! [outputs.influxdb_v2] Buffer fullness: 0 / 10000 metrics
10000 metrics
2022–07–19T05:21:07Z D! [outputs.influxdb_v2] Wrote batch of 1 metrics in 18.866991ms
2022–07–19T05:21:07Z D! [outputs.influxdb_v2] Buffer fullness: 0 / 10000 metrics
2022–07–19T05:21:20Z D! [outputs.influxdb_v2] Buffer fullness: 0 / 10000 metrics
วิธีดูข้อมูลใน Influxdb
ข้อมูลจะไปอยู่ในชื่อ Bucket ที่เราเลือก และ Measurement อยู่ ใน client_id เช่น ttn ที่เรากำหนด
โดยจะมี Field จาก Sensor Rejeee ดังนี้
uplink_message_decoded_payload_battery
uplink_message_decoded_payload_humidity
uplink_message_decoded_payload_temperature
uplink_message_decoded_payload_vol
นอกจากนั้นยังมี Field อื่นๆ อีกหลาย Filed ซึ่งมาจาก Metadata ของ Gateway
เราสามารถสร้าง Dashboard ใน Influxdb ได้ตามรูป