สารบัญ:

วิธีใช้ MQTT กับ Raspberry Pi และ ESP8266: 8 ขั้นตอน (พร้อมรูปภาพ)
วิธีใช้ MQTT กับ Raspberry Pi และ ESP8266: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: วิธีใช้ MQTT กับ Raspberry Pi และ ESP8266: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: วิธีใช้ MQTT กับ Raspberry Pi และ ESP8266: 8 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Home Assistant 2023 (EP.5) DIY อุปกรณ์ IoT ด้วย Tasmota พร้อมติดตั้ง MQTT Broker 2024, มิถุนายน
Anonim
วิธีใช้ MQTT กับ Raspberry Pi และ ESP8266
วิธีใช้ MQTT กับ Raspberry Pi และ ESP8266

ในคำแนะนำนี้ ฉันจะอธิบายว่าโปรโตคอล MQTT คืออะไรและใช้ในการสื่อสารระหว่างอุปกรณ์อย่างไร จากนั้นในการสาธิตเชิงปฏิบัติ ฉันจะแสดงวิธีตั้งค่าระบบไคลเอ็นต์สองระบบอย่างง่าย โดยที่โมดูล ESP8266 จะส่งข้อความ ไปยังโปรแกรม Python เมื่อกดปุ่ม โดยเฉพาะอย่างยิ่ง ฉันกำลังใช้โมดูล Adafruit HUZZAH สำหรับโครงการนี้คือ Raspberry Pi และคอมพิวเตอร์เดสก์ท็อป Raspberry Pi จะทำหน้าที่เป็นนายหน้า MQTT และไคลเอนต์ Python จะถูกเรียกใช้จากคอมพิวเตอร์เดสก์ท็อปแยกต่างหาก (เป็นทางเลือก เนื่องจากสามารถทำงานบน Raspberry Pi ได้)

ในการปฏิบัติตามคำแนะนำนี้ คุณจะต้องมีความรู้พื้นฐานเกี่ยวกับอุปกรณ์อิเล็กทรอนิกส์ และวิธีใช้ซอฟต์แวร์ Arduino คุณควรทำความคุ้นเคยกับการใช้อินเทอร์เฟซบรรทัดคำสั่ง (สำหรับ Raspberry Pi) หวังว่า เมื่อคุณได้รับความรู้ว่า MQTT คืออะไร และใช้งานอย่างไรในสถานการณ์พื้นฐาน คุณจะสามารถสร้างโครงการ IoT ของคุณเองได้!

อะไหล่ที่จำเป็น

  • 1 x Raspberry Pi เชื่อมต่อกับเครือข่ายท้องถิ่น (ใช้ Jessie)
  • 1 x โมดูล ESP8266 (Adafruit HUZZAH)
  • 1 x เขียงหั่นขนม
  • 3 x สายจัมเปอร์ (ชายกับชาย)
  • 1 x ปุ่มกด
  • ตัวต้านทาน 1 x 10k Ohm (รหัสสีน้ำตาล-ดำ-ส้ม)

ฉันได้สร้าง Instructable นี้แล้ว เนื่องจาก MQTT มักจะสนใจฉันในฐานะโปรโตคอล และมีหลายวิธีที่จะนำไปใช้ อย่างไรก็ตาม ฉันไม่สามารถเข้าใจวิธีเขียนโค้ดอุปกรณ์เพื่อใช้งาน นั่นเป็นเพราะฉันไม่รู้/เข้าใจจริงๆ ว่าเกิดอะไรขึ้นกับคำว่า "สวัสดี ชาวโลก!" จากอุปกรณ์ A และส่งไปยังอุปกรณ์ B ดังนั้นฉันจึงตัดสินใจเขียนคำแนะนำนี้เพื่อ (หวังว่า) จะสอนวิธีการทำงานและเพื่อเสริมสร้างความเข้าใจของฉันเอง!

ขั้นตอนที่ 1: MQTT คืออะไร

MQTT คืออะไร?
MQTT คืออะไร?

MQTT หรือ MQ Telemetry Transport เป็นโปรโตคอลการส่งข้อความที่ช่วยให้อุปกรณ์หลายเครื่องสามารถพูดคุยกันได้ ปัจจุบัน เป็นโปรโตคอลยอดนิยมสำหรับ Internet of Things แม้ว่าจะมีการใช้เพื่อวัตถุประสงค์อื่น เช่น Facebook Messenger ที่น่าสนใจคือ MQTT ถูกประดิษฐ์ขึ้นในปี 1999 ซึ่งหมายความว่ามันเก่าเท่าฉัน!

MQTT มีพื้นฐานมาจากแนวคิดที่ว่าอุปกรณ์สามารถเผยแพร่หรือสมัครรับข้อมูลหัวข้อต่างๆ ได้ ตัวอย่างเช่น หากอุปกรณ์ #1 บันทึกอุณหภูมิจากเซ็นเซอร์ตัวใดตัวหนึ่ง ก็สามารถเผยแพร่ข้อความที่มีค่าอุณหภูมิที่บันทึกไว้ในหัวข้อ (เช่น "อุณหภูมิ") ข้อความนี้ถูกส่งไปยัง MQTT Broker ซึ่งคุณสามารถคิดได้ว่าเป็นสวิตช์/เราเตอร์ในเครือข่ายท้องถิ่น เมื่อโบรกเกอร์ MQTT ได้รับข้อความแล้ว จะส่งไปยังอุปกรณ์ใดๆ (ในกรณีนี้คือ อุปกรณ์ #2) ที่สมัครรับข้อมูลในหัวข้อเดียวกัน

ในโครงการนี้ เราจะเผยแพร่ไปยังหัวข้อโดยใช้ ESP8266 และสร้างสคริปต์ Python ที่จะสมัครรับข้อมูลจากหัวข้อเดียวกันนี้ผ่าน Raspberry Pi ซึ่งจะทำหน้าที่เป็นนายหน้า MQTT สิ่งที่ยอดเยี่ยมเกี่ยวกับ MQTT ก็คือมันมีน้ำหนักเบา ดังนั้นมันจึงสมบูรณ์แบบสำหรับการทำงานบนไมโครคอนโทรลเลอร์ขนาดเล็ก เช่น ESP8266 แต่ก็ยังมีให้ใช้กันอย่างแพร่หลาย - เราจึงสามารถรันมันบนสคริปต์ Python ได้เช่นกัน

หวังว่าในตอนท้ายของโครงการนี้ คุณจะเข้าใจว่า MQTT คืออะไรและจะใช้อย่างไรสำหรับโครงการของคุณเองในอนาคต

ขั้นตอนที่ 2: การติดตั้ง MQTT Broker บน Raspberry Pi

การติดตั้ง MQTT Broker บน Raspberry Pi
การติดตั้ง MQTT Broker บน Raspberry Pi
การติดตั้ง MQTT Broker บน Raspberry Pi
การติดตั้ง MQTT Broker บน Raspberry Pi
การติดตั้ง MQTT Broker บน Raspberry Pi
การติดตั้ง MQTT Broker บน Raspberry Pi

ในการตั้งค่าระบบ MQTT ของเรา เราจำเป็นต้องมีโบรกเกอร์ ตามที่ได้อธิบายไว้ในขั้นตอนก่อนหน้านี้ สำหรับ Raspberry Pi เราจะใช้โบรกเกอร์ MQTT " Mosquitto " ก่อนที่เราจะติดตั้งสิ่งนี้ เป็นการดีที่สุดที่จะอัปเดต Raspberry Pi ของเรา

sudo apt-get update

sudo apt-get อัพเกรด

เมื่อคุณทำเสร็จแล้ว ให้ติดตั้ง mosquitto แล้วตามด้วยแพ็คเกจ mosquitto-clients

sudo apt-get ติดตั้งยุง -y

sudo apt-get ติดตั้ง mosquitto-clients -y

เมื่อคุณติดตั้งสองแพ็คเกจนี้เสร็จแล้ว เราจะต้องกำหนดค่านายหน้า ไฟล์กำหนดค่าของโบรกเกอร์ mosquitto อยู่ที่ /etc/mosquitto/mosquitto.conf ดังนั้นให้เปิดไฟล์นี้ด้วยโปรแกรมแก้ไขข้อความที่คุณชื่นชอบ หากคุณไม่มีโปรแกรมแก้ไขข้อความที่ชื่นชอบหรือไม่ทราบวิธีใช้โปรแกรมแก้ไขบรรทัดคำสั่ง ฉันจะใช้ nano เพื่อให้คุณสามารถปฏิบัติตามได้:

sudo nano /etc/mosquitto/mosquitto.conf

ที่ด้านล่างของไฟล์นี้ คุณจะเห็นบรรทัด:

include_dir /etc/mosquitto/conf.d

ลบบรรทัดนี้ เพิ่มบรรทัดต่อไปนี้ที่ด้านล่างของไฟล์

allow_anonymous เท็จ

password_file /etc/mosquitto/pwfile listener 1883

โดยการพิมพ์บรรทัดเหล่านี้ เราได้บอก mosquitto ว่าเราไม่ต้องการให้ใครเชื่อมต่อกับนายหน้าของเราที่ไม่ระบุชื่อผู้ใช้และรหัสผ่านที่ถูกต้อง (เราจะดำเนินการตั้งค่าเหล่านี้ในไม่กี่วินาที) และเราต้องการให้ mosquitto ฟังข้อความที่พอร์ตหมายเลข 1883

หากคุณไม่ต้องการให้โบรกเกอร์ต้องการชื่อผู้ใช้และรหัสผ่าน อย่าใส่สองบรรทัดแรกที่เราได้เพิ่มเข้าไป (เช่น allow_anonymous… และ password_file…) หากคุณทำสิ่งนี้เสร็จแล้ว ให้ข้ามไปที่การรีบูต Raspberry Pi

ตอนนี้ปิด (และบันทึก) ไฟล์นั้น หากคุณกำลังติดตามพร้อมกับตัวอย่างนาโน ให้กด CTRL+X แล้วพิมพ์ Y เมื่อได้รับแจ้ง

เนื่องจากเราเพิ่งบอก mosquitto ว่าผู้ใช้ที่พยายามใช้โบรกเกอร์ MQTT จำเป็นต้องได้รับการพิสูจน์ตัวตน ตอนนี้เราต้องบอก mosquitto ว่าชื่อผู้ใช้และรหัสผ่านคืออะไร! ดังนั้น ให้พิมพ์คำสั่งต่อไปนี้ - แทนที่ชื่อผู้ใช้ด้วยชื่อผู้ใช้ที่คุณต้องการ - จากนั้นป้อนรหัสผ่านที่คุณต้องการเมื่อได้รับแจ้ง (หมายเหตุ: หากเมื่อแก้ไขไฟล์การกำหนดค่า คุณระบุเส้นทาง password_file อื่น ให้เปลี่ยนเส้นทางด้านล่างด้วย ที่คุณใช้)

sudo mosquitto_passwd -c /etc/mosquitto/pwfile username

เนื่องจากเราเพิ่งเปลี่ยนไฟล์กำหนดค่ายุง เราควรรีบูต Raspberry Pi

sudo รีบูต

เมื่อ Raspberry Pi รีบูตเสร็จแล้ว คุณควรมีโบรกเกอร์ MQTT ที่ทำงานได้อย่างสมบูรณ์! ต่อไป เราจะพยายามโต้ตอบกับมัน โดยใช้อุปกรณ์/วิธีการต่าง ๆ มากมาย!

ขั้นตอนที่ 3: การทดสอบนายหน้า

การทดสอบนายหน้า
การทดสอบนายหน้า

เมื่อคุณติดตั้ง mosquitto บน Raspberry Pi แล้ว คุณสามารถทำการทดสอบอย่างรวดเร็ว เพื่อให้แน่ใจว่าทุกอย่างทำงานอย่างถูกต้อง เพื่อจุดประสงค์นี้ มีสองคำสั่งที่เราสามารถใช้ได้บนบรรทัดคำสั่ง mosquitto_pub และ mosquitto_sub ในขั้นตอนนี้ ฉันจะแนะนำคุณเกี่ยวกับการใช้แต่ละสิ่งเหล่านี้เพื่อทดสอบโบรกเกอร์ของเรา

ในการทดสอบโบรกเกอร์ คุณจะต้องเปิดหน้าต่างบรรทัดคำสั่งสองหน้าต่าง หากคุณกำลังใช้ Putty หรือไคลเอ็นต์ SSH อื่น การดำเนินการนี้ทำได้ง่ายเพียงแค่เปิดหน้าต่าง SSH อื่นและเข้าสู่ระบบตามปกติ หากคุณกำลังเข้าถึง Pi ของคุณจากเทอร์มินัล UNIX สิ่งนี้จะเหมือนกันทุกประการ หากคุณกำลังใช้ Raspberry Pi โดยตรง คุณจะต้องเปิดหน้าต่างเทอร์มินัลสองหน้าต่างในโหมด GUI (คำสั่ง startxcan สามารถใช้เพื่อเริ่ม GUI)

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

mosquitto_sub -d -u username -P password -t test

หากคุณตัดสินใจที่จะไม่ตั้งชื่อผู้ใช้และรหัสผ่านในขั้นตอนก่อนหน้านี้ ต่อจากนี้ไป ให้ข้ามแฟล็ก -u และ -P ในคำสั่ง ตัวอย่างเช่น คำสั่ง mosquitto_sub จะเป็นดังนี้:

mosquitto_sub -d -t ทดสอบ

คำสั่ง mosquitto_sub จะสมัครรับข้อมูลจากหัวข้อ และแสดงข้อความใดๆ ที่ส่งไปยังหัวข้อที่ระบุในหน้าต่างเทอร์มินัล ที่นี่ -d หมายถึงโหมดดีบัก ดังนั้นข้อความและกิจกรรมทั้งหมดจะถูกส่งออกบนหน้าจอ -u และ -P ควรอธิบายตนเองได้ สุดท้าย -t คือชื่อของหัวข้อที่เราต้องการสมัครรับข้อมูล - ในกรณีนี้คือ "ทดสอบ"

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

mosquitto_pub -d -u username -P password -t test -m "สวัสดีชาวโลก!"

เมื่อคุณกด Enter คุณจะเห็นข้อความว่า "สวัสดี ชาวโลก!" ปรากฏในหน้าต่างเทอร์มินัลแรกที่เราใช้ (เพื่อสมัครสมาชิก) หากเป็นกรณีนี้ คุณก็พร้อมที่จะเริ่มทำงานกับ ESP8266 แล้ว!

ขั้นตอนที่ 4: การตั้งค่า ESP8266 (Adafruit HUZZAH)

การตั้งค่า ESP8266 (Adafruit HUZZAH)
การตั้งค่า ESP8266 (Adafruit HUZZAH)
การตั้งค่า ESP8266 (Adafruit HUZZAH)
การตั้งค่า ESP8266 (Adafruit HUZZAH)
การตั้งค่า ESP8266 (Adafruit HUZZAH)
การตั้งค่า ESP8266 (Adafruit HUZZAH)
การตั้งค่า ESP8266 (Adafruit HUZZAH)
การตั้งค่า ESP8266 (Adafruit HUZZAH)

ขั้นตอนนี้หากเจาะจงสำหรับ Adafruit HUZZAH (นั่นคือสิ่งที่ฉันใช้เพื่อทำโครงการนี้ให้เสร็จ) หากคุณกำลังใช้อุปกรณ์ Arduino / ESP8266 อื่น คุณอาจต้องการข้ามขั้นตอนนี้ อย่างไรก็ตาม เราขอแนะนำให้คุณอ่านคร่าวๆ เผื่อในกรณีที่มีข้อมูลที่อาจเกี่ยวข้องกับคุณ

สำหรับโครงการนี้ ฉันจะเขียนโปรแกรม HUZZAH ด้วยซอฟต์แวร์ Arduino ดังนั้น หากคุณยังไม่ได้ติดตั้ง ให้ติดตั้งซอฟต์แวร์ Arduino (ใหม่กว่า 1.6.4) คุณสามารถดาวน์โหลดได้ที่นี่

เมื่อคุณติดตั้งซอฟต์แวร์ Arduino แล้ว ให้เปิดและไปที่ File->Preferences ที่นี่ คุณควรเห็นกล่องข้อความ (ใกล้กับด้านล่างของหน้าต่าง) ที่มีป้ายกำกับ: "Additional Boards Manager URLs" ในกล่องข้อความนี้ ให้คัดลอกและวางลิงก์ต่อไปนี้:

arduino.esp8266.com/stable/package_esp8266com_index.json

คลิกตกลงเพื่อบันทึกการเปลี่ยนแปลงของคุณ ตอนนี้เปิด Board Manager (Tools->Board->Board Manager) และค้นหา ESP8266 ติดตั้งแพ็คเกจชุมชน esp8266 โดย ESP8266 รีสตาร์ทซอฟต์แวร์ Arduino

ก่อนที่เราจะสามารถตั้งโปรแกรมบอร์ดได้ เราต้องเลือกตัวเลือกต่างๆ สองสามตัว ในตัวเลือกเมนูเครื่องมือ เลือก Adafruit HUZZAH ESP8266 สำหรับบอร์ด 80 MHz สำหรับความถี่ CPU (คุณสามารถใช้ 160 MHz ได้หากต้องการโอเวอร์คล็อก แต่ตอนนี้ฉันจะใช้ 80 MHz), 4M (3M SPIFFS) สำหรับขนาดแฟลช และ 115200 สำหรับความเร็วในการอัพโหลด นอกจากนี้ ตรวจสอบให้แน่ใจว่าได้เลือกพอร์ต COM ที่คุณใช้ (ซึ่งจะขึ้นอยู่กับการตั้งค่าของคุณ)

ก่อนที่คุณจะสามารถอัปโหลดโค้ดใดๆ ได้ คุณต้องตรวจสอบให้แน่ใจว่า HUZZAH อยู่ในโหมด bootloader หากต้องการเปิดใช้งานสิ่งนี้ ให้กดปุ่มบนบอร์ดที่มีเครื่องหมาย GPIO0 ค้างไว้ และในขณะที่กดค้างไว้ ให้กดปุ่มรีเซ็ตค้างไว้เช่นกัน จากนั้น ปล่อยปุ่มรีเซ็ต แล้วตามด้วย GPIO0 หากคุณทำอย่างถูกต้อง ไฟ LED สีแดงที่ติดเมื่อคุณกด GPIO0 ควรจะสว่างขึ้น

ในการอัปโหลดโค้ดไปยังไมโครคอนโทรลเลอร์ ก่อนอื่นตรวจสอบให้แน่ใจว่า HUZZAH อยู่ในโหมด bootloader จากนั้นคลิกปุ่มอัปโหลดใน Arduino IDE

หากคุณประสบปัญหาในการตั้งค่า HUZZAH สามารถดูข้อมูลเพิ่มเติมได้ที่บทช่วยสอนของ Adafruit

ขั้นตอนที่ 5: การเขียนโปรแกรม ESP8266

การเขียนโปรแกรม ESP8266
การเขียนโปรแกรม ESP8266

ตอนนี้เราจะเริ่มเขียนโปรแกรม ESP8266 แต่ก่อนที่เราจะเริ่มต้นได้ คุณจะต้องติดตั้งไลบรารีต่อไปนี้ในตัวจัดการไลบรารี Arduino (Sketch->Include Libraries->Manage Libraries)

  • Bounce2
  • PubSubClient

เมื่อคุณติดตั้งไลบรารี่เหล่านั้นแล้ว คุณจะสามารถเรียกใช้โค้ดที่ฉันได้รวมไว้ใน Instructable นี้ (MQTT_Publish.zip) เราได้แสดงความคิดเห็นเพื่อให้คุณเข้าใจว่าแต่ละส่วนกำลังทำอะไรอยู่ และหวังว่าสิ่งนี้จะช่วยให้คุณสามารถปรับให้เข้ากับความต้องการของคุณได้

อย่าลืมเปลี่ยนค่าคงที่ที่ด้านบนของโค้ดเพื่อให้ ESP8266 ของคุณสามารถเชื่อมต่อกับเครือข่าย WiFi และโบรกเกอร์ MQTT ของคุณ (Raspberry Pi)

หากคุณตัดสินใจที่จะไม่ตั้งชื่อผู้ใช้และรหัสผ่านสำหรับโบรกเกอร์ MQTT ให้ดาวน์โหลดไฟล์ MQTT_PublishNoPassword.zip แทน

ขั้นตอนที่ 6: การติดตั้ง Python Client (paho-mqtt)

การติดตั้งไคลเอนต์ Python (paho-mqtt)
การติดตั้งไคลเอนต์ Python (paho-mqtt)

โชคดีที่ขั้นตอนนี้ง่ายมาก! ในการติดตั้งไคลเอ็นต์ mosquitto python คุณเพียงแค่พิมพ์ข้อความต่อไปนี้ลงในบรรทัดคำสั่ง (Linux/Mac) หรือแม้แต่ command prompt (Windows)

pip ติดตั้ง paho-mqtt

หมายเหตุ: พรอมต์คำสั่งของ Windows อาจมีปัญหาในการเรียกใช้คำสั่ง pip หากคุณไม่ได้ระบุว่าคุณต้องการติดตั้ง pip และเพิ่ม python ลงในตัวแปร PATH เมื่อคุณติดตั้ง Python มีหลายวิธีในการแก้ไขปัญหานี้ แต่ฉันคิดว่าการติดตั้ง Python ใหม่เป็นวิธีที่ง่ายที่สุด หากมีข้อสงสัย - ให้ Google!

ขั้นตอนที่ 7: ไคลเอนต์ Python - สมัครสมาชิก

Python Client - สมัครสมาชิก
Python Client - สมัครสมาชิก

ในขั้นตอนนี้ เราจะตั้งค่าสคริปต์ Python (ไม่ว่าจะบน Raspberry Pi เองหรือบนคอมพิวเตอร์เครื่องอื่นที่เชื่อมต่อกับเครือข่าย) เพื่อจัดการข้อความทั้งหมดที่ส่ง (เผยแพร่) โดย ESP8266 ไปยังหัวข้อ MQTT

ฉันได้รวมโค้ดหลามไว้ด้านล่าง (PythonMQTT_Subscribe.py) ซึ่งได้รับความคิดเห็นเพื่อช่วยให้คุณเข้าใจว่าเกิดอะไรขึ้น แต่ฉันจะอธิบายคุณสมบัติหลักบางประการที่นี่เช่นกัน

หากคุณไม่ได้ตั้งชื่อผู้ใช้และรหัสผ่านสำหรับการเชื่อมต่อ MQTT ก่อนหน้านี้ ให้ดาวน์โหลดไฟล์ PythonMQTT_SubscribeNoPassword.py แทน

ขั้นตอนที่ 8: การสื่อสารระหว่างอุปกรณ์ ESP8266

การสื่อสารระหว่างอุปกรณ์ ESP8266
การสื่อสารระหว่างอุปกรณ์ ESP8266

ตัวอย่างเช่น หากคุณต้องการตั้งค่าเครือข่าย IoT คุณอาจต้องการสื่อสารระหว่างอุปกรณ์ ESP8266 โชคดีที่โค้ดนี้ไม่ได้ซับซ้อนไปกว่าโค้ดที่เราเคยเขียนมาก่อนมากนัก อย่างไรก็ตาม มีการเปลี่ยนแปลงที่สำคัญอยู่สองสามประการ

เพื่อให้ ESP หนึ่งส่งข้อมูลไปยังอีก ESP หนึ่ง ESP แรกจะต้องเผยแพร่ไปยังหัวข้อ และ ESP ที่สองจะต้องสมัครรับข้อมูลจากหัวข้อนั้น การตั้งค่านี้จะอนุญาตให้มีการสนทนาทางเดียว - ESP(1) ถึง ESP(2) หากเราต้องการให้ ESP(2) พูดคุยกับ ESP(1) เราสามารถสร้างหัวข้อใหม่ โดยที่ ESP(2) จะเผยแพร่ และ ESP(1) จะสมัครรับข้อมูล โชคดีที่เราสามารถมีสมาชิกได้หลายคนในหัวข้อเดียวกัน ดังนั้นหากคุณต้องการส่งข้อมูลไปยังหลายระบบ คุณจะต้องใช้เพียงหัวข้อเดียว (ซึ่งพวกเขาทั้งหมดสมัครรับข้อมูล ยกเว้นอุปกรณ์ที่ส่งข้อมูล นำมาเผยแพร่)

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

ฉันได้รวมโค้ดตัวอย่างไว้ด้านล่าง ซึ่งแสดงให้เห็นว่า ESP8266 สามารถสมัครรับข้อมูลจากหัวข้อได้อย่างไร และฟังข้อความบางข้อความ - 1 และ 0 หากได้รับ 1 ไฟ LED ออนบอร์ด (สำหรับ HUZZAH - GPIO 0) จะเปิดขึ้น. หากได้รับ 0 ไฟ LED นี้จะดับลง

หากคุณต้องการประมวลผลข้อมูลที่ซับซ้อนมากขึ้น ควรทำในฟังก์ชัน ReceivedMessage (ดูโค้ด)

สำหรับโครงการของคุณเอง หากคุณต้องการทั้งส่งและรับข้อมูล คุณสามารถรวมฟังก์ชันการเผยแพร่จากตัวอย่างก่อนหน้าลงในโค้ดที่รวมอยู่ในขั้นตอนนี้ สิ่งนี้ควรได้รับการจัดการในฟังก์ชัน Arduino loop() หลัก

อย่าลืมเปลี่ยนตัวแปรที่ด้านบนของโค้ดเพื่อให้เหมาะกับเครือข่ายของคุณ!

แนะนำ: