ไลบรารี NETPIE (MQTT) สำหรับบอร์ด ESP32 ช่วยให้คุณเชื่อมต่อ WiFi, สื่อสารกับ NETPIE, และอัปเดต shadow / เปิด-ปิดอุปกรณ์ ได้อย่างง่ายสุด ๆ
- 🚀 ใช้งานง่ายมาก — เพียง 3–4 บรรทัดก็เชื่อมต่อได้
- 📡 รองรับ
@msg/#และ@shadow/data/update - 💡 มี helper ฟังก์ชัน
shadowSet()สำหรับส่งค่าขึ้น NETPIE แบบ key-value - 🔁 Auto reconnect WiFi + MQTT
- ⚙️ เขียนด้วย C++ 100% เหมาะกับ Arduino IDE / PlatformIO
Netpie/
├── Netpie.h
├── Netpie.cpp
└── examples/
└── led_shadow/
└── led_shadow.ino
✅ โฟลเดอร์
Netpieต้องอยู่ในDocuments/Arduino/libraries/
- ไปที่โฟลเดอร์
Documents/Arduino/libraries/ - สร้างโฟลเดอร์ชื่อ
Netpie - วางไฟล์
Netpie.h,Netpie.cppลงไป - วางโฟลเดอร์
examples/led_shadow/led_shadow.inoตามโครงสร้างด้านบน - เปิด Arduino IDE → เมนู Sketch → Include Library → Netpie หากเห็นชื่อ Netpie แปลว่าติดตั้งถูกต้องแล้ว ✅
#include "Netpie.h"
#define WIFI_SSID "YourWiFi"
#define WIFI_PASS "YourPassword"
#define MQTT_CLIENT "YourClientID"
#define MQTT_USER "YourUsername"
#define MQTT_TOKEN "YourToken"
Netpie netpie(WIFI_SSID, WIFI_PASS, MQTT_CLIENT, MQTT_USER, MQTT_TOKEN);
const int LEDPIN = LED_BUILTIN;
bool ledOn = false;
void onMsg(const String& topic, const String& msg) {
Serial.printf("[RX] %s => %s\n", topic.c_str(), msg.c_str());
if (topic == "@msg/led") {
ledOn = (msg == "on" || msg == "ledon");
digitalWrite(LEDPIN, ledOn ? HIGH : LOW);
netpie.shadowSet("led", ledOn);
}
}
void setup() {
Serial.begin(115200);
pinMode(LEDPIN, OUTPUT);
netpie.onMessage(onMsg);
netpie.begin();
netpie.subMsg("led");
}
void loop() {
netpie.loop();
// ส่งค่าจำลองอุณหภูมิและความชื้นทุก 5 วิ
static unsigned long last = 0;
if (millis() - last > 5000) {
last = millis();
float temperature = random(250, 350) / 10.0; // 25.0 - 35.0°C
float humidity = random(400, 800) / 10.0; // 40.0 - 80.0%
netpie.shadowSet("temperature", temperature);
netpie.shadowSet("humidity", humidity);
Serial.printf("[Publish] Temp: %.1f°C Hum: %.1f%%\n", temperature, humidity);
}
}-
ไปที่ https://netpie.io/
-
สร้าง device แล้วนำ
- Client ID
- Token
- Secret (ใช้เป็น MQTT username)
-
ใส่ค่าเหล่านี้ในโค้ด
-
อัปโหลดลง ESP32
-
เปิด Serial Monitor → ดูผลลัพธ์
-
ทดสอบสั่งเปิดไฟ:
- Topic:
@msg/led - Message:
"on"หรือ"off"
- Topic:
| ฟังก์ชัน | รายละเอียด |
|---|---|
begin() |
เชื่อมต่อ WiFi + ตั้งค่า MQTT |
loop() |
เรียกใน loop() เพื่อคงการเชื่อมต่อ |
onMessage(handler) |
ตั้ง callback เมื่อมีข้อความเข้า |
sub(topic) |
subscribe topic เอง |
subMsg("led") |
subscribe @msg/led |
pub(topic, msg) |
publish ข้อความเอง |
pubMsg("led", "on") |
publish ไปที่ @msg/led |
shadowSet(key, value) |
ส่ง key-value ขึ้น Shadow อัตโนมัติ |
connected() |
เช็คสถานะการเชื่อมต่อ MQTT |
netpie.shadowSet("temperature", 28.5);
netpie.shadowSet("humidity", 60.2);
netpie.pubMsg("notify", "Temperature high!");MIT License สร้างโดย Phoovadet NoobDev