ขออภัย เบราว์เซอร์ของคุณไม่รองรับ JavaScript!
เข้าสู่ระบบ

การตรวจสอบพลังงาน MQTT ด้วย Docker และการกำหนดค่าขั้นสูง

การตรวจสอบพลังงาน MQTT ด้วย Docker และการกำหนดค่าขั้นสูง

หลังจากที่เซิร์ฟเวอร์ IAMMETER-Docker พื้นฐานทำงานแล้ว คุณสามารถขยายให้เป็นเซิร์ฟเวอร์ตรวจสอบพลังงาน MQTT ในเครื่อง ใช้ MySQL สำหรับชุดข้อมูลขนาดใหญ่ ส่งข้อมูลพลังงานแสงอาทิตย์ไปยัง PVOutput และรับข้อมูลการวัดจากแหล่งข้อมูลภายนอกที่เข้ากันได้

คำแนะนำนี้ครอบคลุมเส้นทางข้อมูลขั้นสูงและตัวเลือกการจัดเก็บ สำหรับการติดตั้ง การจัดเก็บข้อมูลแบบต่อเนื่อง (persistent volumes) การเข้าสู่ระบบครั้งแรก การตั้งค่ามิเตอร์ การสำรองข้อมูล และการอัปเกรดคอนเทนเนอร์ ให้เริ่มต้นที่ การตรวจสอบพลังงานแบบโฮสต์เองด้วย Docker

IAMMETER meter / compatible device / custom application
                         │
             ┌───────────┼───────────┐
             │           │           │
            HTTP        MQTT       REST API
             │           │           │
             └───────────┼───────────┘
                         ▼
                  IAMMETER-Docker
                         │
       ┌─────────────────┼─────────────────┐
       ▼                 ▼                 ▼
 SQLite / MySQL     MQTT subscribers     PVOutput

ให้ใช้อินเทอร์เฟซที่จำเป็นสำหรับโปรเจกต์เท่านั้น การติดตั้งตรวจสอบในเครื่องแบบง่ายไม่จำเป็นต้องใช้ MySQL ไคลเอ็นต์ MQTT ภายนอก หรือการส่งข้อมูลต่อ

1. ก่อนเปิดใช้งานฟีเจอร์ขั้นสูง

ตรวจสอบว่าการติดตั้งพื้นฐานทำงานได้อย่างเสถียร:

  • คอนเทนเนอร์ IAMMETER-Docker ทำงานอยู่
  • /app/data ถูกแมปไปยังพื้นที่จัดเก็บแบบต่อเนื่อง
  • โฮสต์ Docker ใช้ที่อยู่ LAN ที่เสถียร
  • เขตเวลาของไซต์ถูกต้อง
  • มีมิเตอร์หรือแหล่งข้อมูลทดสอบอย่างน้อยหนึ่งแหล่งที่ทำงานได้
  • มีการเปลี่ยนรหัสผ่านเริ่มต้นแล้ว
  • มีการสำรองข้อมูลปัจจุบันอยู่แล้ว

การติดตั้งเริ่มต้นจะเปิดพอร์ตดังนี้:

  • 5050 สำหรับเว็บแอปพลิเคชันและ API
  • 1883 สำหรับ MQTT

อย่าเผยแพร่พอร์ตใดพอร์ตหนึ่งโดยตรงสู่สาธารณอินเทอร์เน็ต ใช้ไฟร์วอลล์ VPN หรือเลเยอร์การควบคุมการเข้าถึงอื่น ๆ เมื่อจำเป็นต้องเข้าถึงจากระยะไกล

2. เลือกระหว่าง SQLite หรือ MySQL

IAMMETER-Docker ใช้ SQLite สำหรับการติดตั้งเริ่มต้นแบบง่าย และรองรับ MySQL สำหรับการติดตั้งที่มีชุดข้อมูลขนาดใหญ่

ฐานข้อมูล เหมาะสำหรับ ข้อดี ข้อควรพิจารณา
SQLite บ้าน การทดสอบ และการติดตั้งในเครื่องขนาดเล็ก ไม่ต้องใช้บริการฐานข้อมูลแยกต่างหาก ตั้งค่าเริ่มต้นง่าย ฐานข้อมูลยังคงผูกติดกับวอลุ่มของแอปพลิเคชัน
MySQL การติดตั้งขนาดใหญ่หรือใช้งานยาวนาน บริการฐานข้อมูลแยกต่างหากและเหมาะกับชุดข้อมูลที่เติบโต ต้องมีการปรับใช้ฐานข้อมูล ข้อมูลรับรอง การสำรองข้อมูล และการบำรุงรักษา

อย่าเปลี่ยนไปใช้ MySQL เพียงเพราะมีให้ใช้ ใช้เมื่อปริมาณข้อมูลที่คาดหวัง ระยะเวลาการเก็บรักษา หรือข้อกำหนดการจัดการฐานข้อมูลสมเหตุสมผลต่อการเพิ่มบริการเพิ่มเติม

2.1 เตรียม MySQL ก่อน

ก่อนเลือก MySQL ใน IAMMETER-Docker:

  1. ปรับใช้เซิร์ฟเวอร์ MySQL ที่สามารถเข้าถึงได้
  2. สร้างฐานข้อมูลและผู้ใช้โดยเฉพาะ
  3. จำกัดผู้ใช้นั้นให้ใช้เฉพาะฐานข้อมูลที่จำเป็น
  4. ยืนยันการเข้าถึงเครือข่ายจากคอนเทนเนอร์ IAMMETER-Docker
  5. กำหนดค่าการสำรองข้อมูลฐานข้อมูลเป็นประจำ
  6. บันทึกโฮสต์ พอร์ต ชื่อฐานข้อมูล และข้อมูลรับรองของ MySQL อย่างปลอดภัย

จากนั้นป้อนการตั้งค่าการเชื่อมต่อ MySQL ใน IAMMETER-Docker และยืนยันว่าข้อมูลการวัดใหม่กำลังถูกจัดเก็บ

กำหนดค่า MySQL ใน IAMMETER-Docker

สำรองข้อมูล IAMMETER-Docker ที่มีอยู่ก่อนเปลี่ยนโหมดฐานข้อมูล ตรวจสอบข้อมูลประวัติและการอัปโหลดใหม่หลังการเปลี่ยนแปลง

3. ใช้ IAMMETER-Docker เป็นเซิร์ฟเวอร์ตรวจสอบพลังงาน MQTT

IAMMETER-Docker รองรับ MQTT สำหรับสองทิศทางที่แตกต่างกัน:

  1. เผยแพร่ไปยัง IAMMETER-Docker: มิเตอร์หรือแอปพลิเคชันที่เข้ากันได้ส่งข้อมูลการวัดไปยังเซิร์ฟเวอร์ Docker
  2. สมัครรับข้อมูลจาก IAMMETER-Docker: Node-RED บริการที่กำหนดเอง หรือไคลเอ็นต์ MQTT อื่น ๆ รับข้อมูลการวัดแบบเรียลไทม์จากเซิร์ฟเวอร์

เส้นทางเหล่านี้ใช้รูปแบบหัวข้อ (topic) เดียวกันแต่โหมดการตรวจสอบสิทธิ์ที่แตกต่างกัน

3.1 หัวข้อ MQTT

หัวข้อเรียลไทม์ที่กำหนดไว้คือ:

device/<SN>/realtime

แทนที่ <SN> ด้วยหมายเลขซีเรียลที่ลงทะเบียนใน IAMMETER-Docker SN ในหัวข้อ MQTT และการกำหนดค่าไคลเอ็นต์ต้องตรงกับมิเตอร์ที่สร้างในแพลตฟอร์มภายในเครื่อง

3.2 เผยแพร่ข้อมูลพลังงานไปยัง IAMMETER-Docker

สำหรับอุปกรณ์หรือแอปพลิเคชันที่เผยแพร่:

การตั้งค่า ค่า
Broker ที่อยู่ IP หรือชื่อโฮสต์ของเซิร์ฟเวอร์ IAMMETER-Docker
พอร์ต 1883 โดยค่าเริ่มต้น
การตรวจสอบสิทธิ์ Client ID
Client ID SN ของมิเตอร์ที่ลงทะเบียนใน IAMMETER-Docker
หัวข้อ device/<SN>/realtime
Payload รูปแบบข้อมูลอัปโหลดที่ IAMMETER รองรับ

เผยแพร่ข้อมูลพลังงานไปยัง IAMMETER-Docker ผ่าน MQTT

ก่อนใช้ข้อมูลจริง:

  1. ลงทะเบียน SN ใน IAMMETER-Docker
  2. เผยแพร่ payload ทดสอบหนึ่งครั้ง
  3. ตรวจสอบฟิลด์แรงดันไฟฟ้า กระแสไฟฟ้า กำลังไฟฟ้า และพลังงาน
  4. ยืนยันจำนวนเฟสหรือช่องสัญญาณ
  5. ตรวจสอบหน่วยและทิศทางกำลังไฟฟ้าจริง (active power)
  6. จากนั้นจึงเปิดใช้งานการเผยแพร่อย่างต่อเนื่อง

3.3 สมัครรับข้อมูลพลังงานแบบเรียลไทม์

สำหรับสมาชิก MQTT:

การตั้งค่า ค่า
Broker ที่อยู่เซิร์ฟเวอร์ IAMMETER-Docker
พอร์ต 1883 โดยค่าเริ่มต้น
การตรวจสอบสิทธิ์ ชื่อผู้ใช้และรหัสผ่าน IAMMETER-Docker
หัวข้อ device/<SN>/realtime

สมัครรับข้อมูลเรียลไทม์จาก IAMMETER-Docker

สมาชิกทั่วไปได้แก่:

  • โฟลว์อัตโนมัติ Node-RED
  • บริการประมวลผลข้อมูลในเครื่อง
  • ไคลเอ็นต์ดีบัก MQTT
  • เกตเวย์ที่ส่งต่อข้อมูลการวัดที่เลือก
  • แดชบอร์ดหรือบริการแจ้งเตือนที่กำหนดเอง

หาก Node-RED เป็นแอปพลิเคชันหลักและไม่จำเป็นต้องจัดเก็บประวัติใน IAMMETER-Docker มิเตอร์ยังสามารถเชื่อมต่อกับ Node-RED ผ่าน MQTT, Modbus TCP หรือ API ในเครื่องได้โดยตรง เปรียบเทียบตัวเลือกได้ใน คู่มือมิเตอร์พลังงาน Node-RED

4. ทดสอบและแก้ไขปัญหา MQTT

เริ่มต้นด้วยมิเตอร์เดียวและหัวข้อที่แน่นอน แทนที่จะใช้การสมัครรับแบบ wildcard ที่กว้าง

ตรวจสอบสิ่งต่อไปนี้เมื่อไม่มีข้อมูลปรากฏ:

  • พอร์ต 1883 ถูกแมปจากคอนเทนเนอร์
  • ไคลเอ็นต์สามารถเข้าถึงโฮสต์ Docker ผ่าน LAN
  • SN มีอยู่ใน IAMMETER-Docker
  • Client ID และหัวข้อ MQTT ใช้ SN เดียวกัน
  • หัวข้อคือ device/<SN>/realtime ด้วยตัวพิมพ์ที่คาดไว้
  • โหมดการตรวจสอบสิทธิ์การเผยแพร่และการสมัครรับไม่สับสนกัน
  • payload JSON ตรงกับลำดับฟิลด์และหน่วยที่รองรับ
  • ไคลเอ็นต์ MQTT ตัวอื่นไม่ได้ตัดการเชื่อมต่อเซสชันโดยใช้ Client ID เดียวกันซ้ำ

สำหรับโฟลว์ที่เชื่อถือได้:

  • ใช้ Client ID ที่ไม่ซ้ำกันสำหรับสมาชิกแต่ละราย
  • จัดการการเชื่อมต่อใหม่และข้อความซ้ำ
  • ตรวจสอบ payload ก่อนเขียนลงฐานข้อมูล
  • บันทึก SN ต้นทางกับทุกข้อมูลการวัดที่จัดเก็บ
  • ใช้การแยกเครือข่ายแทนการเปิดพอร์ต MQTT ที่ไม่เข้ารหัสสู่สาธารณะ

5. ส่งข้อมูลพลังงานแสงอาทิตย์ไปยัง PVOutput

PVOutput เป็นบริการภายนอกสำหรับแบ่งปันและเปรียบเทียบข้อมูลการผลิตพลังงานแสงอาทิตย์และการใช้พลังงาน IAMMETER-Docker สามารถส่งข้อมูลไซต์ไปยัง PVOutput

ใช้ตัวเลือกนี้เมื่อ IAMMETER-Docker ยังคงเป็นเซิร์ฟเวอร์รวบรวมข้อมูลในเครื่อง แต่จำเป็นต้องใช้ PVOutput สำหรับการรายงานพลังงานแสงอาทิตย์สาธารณะหรือภายนอก

ก่อนเปิดใช้งานการส่งต่อ:

  1. สร้างหรือเลือกระบบ PVOutput ที่ถูกต้อง
  2. รับข้อมูลรับรอง PVOutput ที่จำเป็น
  3. ยืนยันว่าช่อง Grid และ Inverter ถูกกำหนดอย่างถูกต้องใน IAMMETER-Docker
  4. ตรวจสอบเขตเวลาของไซต์
  5. เปิดใช้งานการส่งต่อสำหรับไซต์ที่ต้องการเท่านั้น
  6. เปรียบเทียบยอดรวมรายวันในทั้งสองระบบหลังจากวันแรกที่สมบูรณ์

ส่งข้อมูลพลังงานแสงอาทิตย์ IAMMETER-Docker ไปยัง PVOutput

การส่งต่อ PVOutput ต้องการการเข้าถึงอินเทอร์เน็ตจากโฮสต์ Docker การดำเนินการนี้แยกจากการตรวจสอบในเครื่อง: ความล้มเหลวในการเชื่อมต่อ PVOutput ชั่วคราวไม่ควรขัดขวางมิเตอร์จากการอัปโหลดไปยังเซิร์ฟเวอร์ในเครื่องต่อไป

6. รับข้อมูลจากอุปกรณ์ Tasmota ที่เข้ากันได้

IAMMETER-Docker มีโฟลว์ MQTT ที่กำหนดไว้สำหรับอุปกรณ์ที่รองรับการวัดที่รัน Tasmota ตัวอย่างเดิมใช้ Sonoff POW R2

นี่คือเส้นทางความเข้ากันได้สำหรับ payload พลังงานที่รองรับ ไม่ใช่การอ้างว่าอุปกรณ์ Tasmota ทุกเครื่องหรือเทมเพลตทุกแบบให้โครงสร้างการวัดเดียวกัน ทดสอบอุปกรณ์และเฟิร์มแวร์จริงก่อนปรับใช้

ใช้โครงสร้าง MQTT Tasmota ต่อไปนี้:

การตั้งค่า ค่า
โฮสต์ ที่อยู่ IP ของ IAMMETER-Docker
พอร์ต พอร์ต MQTT ของ IAMMETER-Docker ปกติ 1883
Client SN ที่ลงทะเบียนใน IAMMETER-Docker
ผู้ใช้ เว้นว่างไว้สำหรับโฟลว์การเผยแพร่ที่กำหนดไว้นี้
รหัสผ่าน เว้นว่างไว้สำหรับโฟลว์การเผยแพร่ที่กำหนดไว้นี้
หัวข้อ SN ที่ลงทะเบียนใน IAMMETER-Docker
หัวข้อเต็ม device/%topic%/%prefix%/

กำหนดค่ามิเตอร์ Tasmota ที่เข้ากันได้สำหรับ IAMMETER-Docker

หลังการกำหนดค่า ตรวจสอบค่าแต่ละค่าที่รายงานใน IAMMETER-Docker รวมถึงแรงดันไฟฟ้า กระแสไฟฟ้า กำลังไฟฟ้าจริง พลังงาน และตัวประกอบกำลังเมื่ออุปกรณ์รองรับ

ข้อมูลไฟฟ้า Tasmota ใน IAMMETER-Docker

7. ใช้ REST API ของ IAMMETER-Docker

IAMMETER-Docker มีเอกสาร API แบบโต้ตอบบนเซิร์ฟเวอร์ภายในเครื่อง:

http://<docker-host-ip>:5050/docs

REST API สามารถใช้เพื่อ:

  • อัปโหลดข้อมูลการวัดที่รองรับจากเกตเวย์ที่กำหนดเอง
  • ค้นหาข้อมูลสำหรับแดชบอร์ดส่วนตัว
  • เชื่อมต่อแอปพลิเคชันภายในเครื่องกับเซิร์ฟเวอร์ที่โฮสต์เอง
  • ทดสอบ payload ก่อนทำให้การรวมระบบเป็นอัตโนมัติ

ให้การเข้าถึง API อยู่ในเครือข่ายที่เชื่อถือได้ หากระบบภายนอกต้องเชื่อมต่อจากระยะไกล ให้วางบริการไว้หลังเลเยอร์การเข้าถึงที่ปลอดภัยที่เหมาะสม แทนที่จะเปิดพอร์ตแอปพลิเคชันโดยไม่มีการป้องกัน

สำหรับนักพัฒนาที่สร้างระบบรับข้อมูลหรือแพลตฟอร์มที่กำหนดเองแทนการใช้ IAMMETER-Docker ดูที่ พัฒนาระบบตรวจสอบพลังงานของคุณเอง

8. รวมการจัดเก็บในเครื่องและบริการคลาวด์

การโฮสต์เองไม่ได้หมายความว่าต้องปิดการใช้งานทุกบริการภายนอก IAMMETER-Docker สามารถเป็นระบบบันทึกภายในเครื่องในขณะที่ส่งข้อมูลที่เลือกไปที่อื่น

สถาปัตยกรรม ข้อมูลในเครื่อง การพึ่งพาอินเทอร์เน็ต เหมาะสำหรับ
ในเครื่องเท่านั้น IAMMETER-Docker ไม่จำเป็นหลังจากติดตั้ง ความเป็นส่วนตัว ไซต์ออฟไลน์ และแดชบอร์ด LAN
ในเครื่อง + IAMMETER-Cloud IAMMETER-Docker และ IAMMETER-Cloud จำเป็นสำหรับการส่งต่อ สำเนาในเครื่องบวกกับรายงาน IAMMETER-Cloud และการเข้าถึงระยะไกล
ในเครื่อง + PVOutput IAMMETER-Docker และ PVOutput จำเป็นสำหรับการส่งต่อ ผู้ใช้พลังงานแสงอาทิตย์ที่ใช้ PVOutput
ในเครื่อง + สมาชิก MQTT IAMMETER-Docker บวกพื้นที่จัดเก็บที่สมาชิกกำหนด ไม่จำเป็นหากมีสมาชิกในเครื่อง Node-RED ระบบอัตโนมัติ และการประมวลผลที่กำหนดเอง

เปิดใช้งานเฉพาะปลายทางที่มีวัตถุประสงค์ชัดเจนเท่านั้น ปลายทางมากขึ้นหมายถึงข้อมูลรับรอง การพึ่งพาเครือข่าย และเส้นทางการแก้ไขปัญหามากขึ้น

9. รายการตรวจสอบการปรับใช้ขั้นสูง

  • การรวบรวม IAMMETER-Docker พื้นฐานทำงานได้อย่างเสถียรแล้ว
  • ข้อมูลแบบต่อเนื่องและการสำรองฐานข้อมูลได้รับการตรวจสอบแล้ว
  • MySQL ใช้เมื่อค่าใช้จ่ายในการดำเนินงานสมเหตุสมผลเท่านั้น
  • พอร์ต MQTT 1883 สามารถเข้าถึงได้จากเครือข่ายที่เชื่อถือได้เท่านั้น
  • ไคลเอ็นต์ MQTT ทุกตัวใช้ Client ID ที่เหมาะสมและไม่ซ้ำกัน
  • SN ของมิเตอร์ หัวข้อ และอุปกรณ์ที่ลงทะเบียนตรงกัน
  • หน่วย payload จำนวนเฟส และทิศทางกำลังไฟฟ้าได้รับการทดสอบแล้ว
  • ความล้มเหลวในการส่งต่อ PVOutput หรือคลาวด์ไม่รบกวนการรวบรวมในเครื่อง
  • ความเข้ากันได้ของ Tasmota ได้รับการยืนยันกับอุปกรณ์และเฟิร์มแวร์จริงแล้ว
  • การเปลี่ยนแปลงได้รับการทดสอบกับมิเตอร์หนึ่งตัวก่อนนำไปใช้กับการปรับใช้ที่ใหญ่ขึ้น

10. ประวัติเวอร์ชันและบันทึกการเปลี่ยนแปลง

ส่วนด้านบนอธิบายโฟลว์การทำงาน IAMMETER-Docker ที่กำหนดไว้ในปัจจุบัน หน้าเดิมถูกเขียนขึ้นในช่วง V1.8 และ V1.9 ประวัติต่อไปนี้ถูกเก็บไว้สำหรับผู้ใช้ที่ดูแลการติดตั้งรุ่นเก่า

V2.4

V2.3

  • แก้ไขปัญหาการอัปโหลด PVOutput

V2.2

  • เพิ่มบันทึกสำหรับความล้มเหลวในการส่งต่อ IAMMETER-Cloud

V2.1

  • เพิ่มโหมด datalogger และการบันทึกค่าพารามิเตอร์ทางไฟฟ้าทุกวินาที
  • ดูที่ V2.1 datalogger and alarm introduction

V1.9

  • เพิ่มการรองรับ MySQL
  • เพิ่มตัวเลือกรูปภาพที่กำหนดเองสำหรับแต่ละ Place

IAMMETER-Docker V1.9

V1.8

  • เพิ่มการอัปโหลด MQTT ไปยัง IAMMETER-Docker
  • เพิ่มการสมัครรับข้อมูลเรียลไทม์ผ่าน MQTT
  • เพิ่มการส่งต่อ PVOutput โดยตรง
  • เพิ่มโฟลว์การวัด Tasmota/Sonoff ที่กำหนดไว้

11. แหล่งข้อมูลที่เกี่ยวข้อง

อัปเดตล่าสุด: 17 กรกฎาคม 2026

ด้านบน