Агуулгын хүснэгт:

MQTT -ийг Raspberry Pi болон ESP8266 -тай хэрхэн ашиглах вэ: 8 алхам (зурагтай)
MQTT -ийг Raspberry Pi болон ESP8266 -тай хэрхэн ашиглах вэ: 8 алхам (зурагтай)

Видео: MQTT -ийг Raspberry Pi болон ESP8266 -тай хэрхэн ашиглах вэ: 8 алхам (зурагтай)

Видео: MQTT -ийг Raspberry Pi болон ESP8266 -тай хэрхэн ашиглах вэ: 8 алхам (зурагтай)
Видео: 5. Установка MQTT Broker на Raspberry Pi. Умный Дом | Room31 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, дотоод сүлжээнд холбогдсон (Жесси ажиллаж байгаа)
  • 1 x ESP8266 модуль (Adafruit HUZZAH)
  • 1 х талхны самбар
  • 3 x холбогч утас (эрэгтэй-эрэгтэй)
  • 1 x товчлуур
  • 1 x 10k Ом эсэргүүцэл (Браун-Хар-Улбар шар өнгийн өнгөний код)

MQTT намайг протокол болгон сонирхдог бөгөөд үүнийг ашиглах олон янзын арга байдаг тул би энэ зааварчилгааг бүтээсэн. Гэсэн хэдий ч би үүнийг ашиглахын тулд төхөөрөмжүүдийг хэрхэн кодлох талаар толгойгоо эргүүлж чадаагүй юм шиг байна. Энэ нь миний "Сайн уу, Дэлхий!" А төхөөрөмжөөс B төхөөрөмж рүү илгээнэ үү. Тиймээс би энэ зааварчилгааг бичихдээ энэ нь хэрхэн ажилладагийг зааж өгөх болно гэж найдаж байна.

Алхам 1: MQTT гэж юу вэ?

MQTT гэж юу вэ?
MQTT гэж юу вэ?

MQTT буюу MQ Телеметрийн Тээвэрлэлт нь олон төхөөрөмж хоорондоо ярилцах боломжийг олгодог мессежийн протокол юм. Одоогийн байдлаар энэ нь Интернетийн зүйлүүдийн түгээмэл хэрэглэгддэг протокол бөгөөд үүнийг бусад зорилгоор ашиглаж байсан, жишээлбэл, Facebook Messenger. Сонирхолтой нь MQTT нь 1999 онд зохион бүтээгдсэн бөгөөд энэ нь над шиг хөгшин гэсэн үг юм!

MQTT нь төхөөрөмжүүд сэдвүүдийг нийтлэх эсвэл захиалах боломжтой гэсэн санаан дээр суурилдаг. Тиймээс, жишээ нь. Хэрэв Төхөөрөмж #1 нь мэдрэгчийнхээ нэгээс температурыг бүртгэсэн бол түүний бичсэн температурын утгыг агуулсан сэдвийг (жишээлбэл "Температур") нийтлэх боломжтой. Энэ мессежийг MQTT брокер руу илгээдэг бөгөөд үүнийг орон нутгийн сүлжээнд шилжүүлэгч/чиглүүлэгч гэж бодож болно. MQTT брокер мессежийг хүлээн авмагц үүнийг ижил сэдвээр захиалсан бүх төхөөрөмжид (энэ тохиолдолд 2 -р төхөөрөмж) илгээх болно.

Энэ төсөлд бид ESP8266 ашиглан сэдвийг нийтлэх бөгөөд MQTT брокероор ажиллах Raspberry Pi -ээр дамжуулан энэ сэдвийг захиалах Python скриптийг үүсгэх болно. MQTT -ийн давуу тал нь хөнгөн жинтэй тул ESP8266 гэх мэт жижиг микроконтроллер дээр ажиллахад тохиромжтой, гэхдээ бас өргөн хэрэглэгддэг тул бид үүнийг Python скрипт дээр ажиллуулах боломжтой болно.

Энэхүү төслийн төгсгөлд та MQTT гэж юу болох, цаашид үүнийг өөрийн төслүүдэд хэрхэн ашиглах талаар ойлголттой болно гэж найдаж байна.

Алхам 2: MQTT брокерыг Raspberry Pi дээр суулгах

Raspberry Pi дээр MQTT брокер суулгах
Raspberry Pi дээр MQTT брокер суулгах
Raspberry Pi дээр MQTT брокер суулгах
Raspberry Pi дээр MQTT брокер суулгах
Raspberry Pi дээр MQTT брокер суулгах
Raspberry Pi дээр MQTT брокер суулгах

MQTT системийг тохируулахын тулд бидэнд өмнөх алхамд тайлбарласанчлан брокер хэрэгтэй болно. Raspberry Pi -ийн хувьд бид "Mosquitto" MQTT зуучлагчийг ашиглах болно. Үүнийг суулгахаасаа өмнө Raspberry Pi -ээ шинэчлэх нь хамгийн сайн арга юм.

sudo apt-get update

sudo apt-get шинэчлэлт

Үүнийг хийсний дараа шумуул, дараа нь шумуул-үйлчлүүлэгчийн багцыг суулгаарай.

sudo apt -get шумуул -y суулгаарай

sudo apt-get шумуул-үйлчлүүлэгчид -y суулгаарай

Та эдгээр хоёр багцыг суулгаж дууссаны дараа бид брокерийг тохируулах шаардлагатай болно. Шумуулын зуучлагчийн тохиргооны файл нь /etc/mosquitto/mosquitto.conf хаягаар байрладаг тул үүнийг дуртай текст засварлагчаар нээнэ үү. Хэрэв танд дуртай текст засварлагч байхгүй эсвэл командын мөрийн засварлагчийг хэрхэн ашиглахаа мэдэхгүй байгаа бол би нано ашиглах болно, ингэснээр та дагах боломжтой болно.

sudo нано /etc/mosquitto/mosquitto.conf

Энэ файлын доод хэсэгт та дараах мөрийг харах ёстой.

оруулах_dir /etc/mosquitto/conf.d

Энэ мөрийг устга. Дараах мөрүүдийг файлын доод хэсэгт нэмнэ үү.

Зөвшөөрөгдөх_аномгүй худал

password_file/etc/mosquitto/pwfile сонсогч 1883

Эдгээр мөрүүдийг оруулснаар бид зөв хэрэглэгчийн нэр, нууц үг оруулаагүй брокертойгоо холбогдохыг хүсэхгүй байгаа (бид үүнийг хэдхэн секундын дотор тохируулах болно) гэж шумууланд хэллээ. 1883 порт дээрх мессежийг сонсоорой.

Хэрэв та зуучлагч хэрэглэгчийн нэр, нууц үг шаардахыг хүсэхгүй байгаа бол бидний оруулсан эхний хоёр мөрийг бүү оруулаарай (өөрөөр хэлбэл allow_anonymous… and password_file …). Хэрэв та үүнийг хийсэн бол Raspberry Pi -г дахин эхлүүлэхийг алгасаарай.

Одоо тэр файлыг хаагаад (хадгална уу). Хэрэв та нано жишээг дагаж байгаа бол CTRL+X товчлуурыг дарж, асуухад Y бичнэ үү.

Бид саяхан MQTT брокерийг ашиглахыг оролдож буй хэрэглэгчид баталгаажуулах шаардлагатай гэж шумууланд хэлсэн тул одоо хэрэглэгчийн нэр, нууц үг юу болохыг шумуулд хэлэх хэрэгтэй боллоо! Тиймээс дараах тушаалыг оруулна уу - хэрэглэгчийн нэрийг хүссэн хэрэглэгчийн нэрээр орлуулаад дараа нь асуухад хүссэн нууц үгээ оруулна уу (Анхаарна уу: хэрэв та тохиргооны файлыг засварлахдаа өөр password_file замыг зааж өгсөн бол доорх замыг солино уу. таны хэрэглэж байсан нэг).

sudo mosquitto_passwd -c/etc/mosquitto/pwfile хэрэглэгчийн нэр

Бид шумуулын тохиргооны файлыг дөнгөж өөрчилсөн тул Raspberry Pi -ийг дахин ачаалах хэрэгтэй.

sudo дахин ачаална уу

Raspberry Pi -ийг дахин ачаалж дуусмагц та бүрэн ажиллагаатай MQTT брокертой байх ёстой! Дараа нь бид олон янзын төхөөрөмж/аргыг ашиглан түүнтэй харилцахыг хичээх болно!

Алхам 3: Брокерийг турших

Брокерийг шалгаж байна
Брокерийг шалгаж байна

Raspberry Pi дээр шумуул суулгасны дараа та бүх зүйлийг зөв ажиллаж байгаа эсэхийг шалгахын тулд хурдан тест өгч болно. Энэ зорилгоор командын мөрөнд ашиглаж болох хоёр команд байдаг. шумуулны_пуб ба шумуулын_баг. Энэ алхамаар би брокероо шалгахын тулд эдгээрийг тус бүрээр нь ашиглах болно.

Брокерийг шалгахын тулд та хоёр командын шугамын цонхыг нээх хэрэгтэй болно. Хэрэв та Putty эсвэл өөр SSH клиент ашиглаж байгаа бол энэ нь өөр SSH цонх нээж, ердийн байдлаар нэвтрэхтэй адил хялбар юм. Хэрэв та өөрийн Pi -д UNIX терминалаас хандаж байгаа бол энэ нь яг адилхан юм. Хэрэв та Raspberry Pi -г шууд ашиглаж байгаа бол GUI горимд хоёр терминал цонх нээх шаардлагатай болно (GUI эхлүүлэхийн тулд startxcan командыг ашиглана уу).

Одоо та хоёр цонх нээсэн тул бид туршилтаа эхлүүлж болно. Хоёр терминалын аль нэгэнд хэрэглэгчийн нэр, нууц үгийг өмнөх алхам дээр тохируулсан командыг орлуулж дараах тушаалыг бичнэ үү.

mosquitto_sub -d -u хэрэглэгчийн нэр -P нууц үг -t тест

Хэрэв та өмнөх алхамдаа хэрэглэгчийн нэр, нууц үгээ тохируулахгүй байхаар шийдсэн бол одооноос эхлэн тушаалууд дахь -u ба -P тугуудыг үл тоомсорлоорой. Жишээлбэл, mosquitto_sub тушаал дараах байдлаар байх болно.

mosquitto_sub -d -t тест

Mosquitto_sub тушаал нь сэдвийг захиалах бөгөөд терминалын цонхонд заасан сэдвээр илгээсэн бүх мессежийг харуулах болно. Энд -d гэдэг нь дибаг хийх горимыг хэлдэг тул бүх зурвас болон үйлдлийг дэлгэц дээр гаргах болно. -u ба -P нь өөрөө тайлбартай байх ёстой. Эцэст нь, -t бол бидний бүртгүүлэхийг хүсч буй сэдвийн нэр юм - энэ тохиолдолд "тест".

Дараа нь нөгөө терминалын цонхонд бид "тест" сэдвээр мессеж нийтлэх гэж байна. Хэрэглэгчийн нэр, нууц үгээ өөрчлөхийн тулд дахин санаж дараах зүйлийг бичнэ үү.

mosquitto_pub -d -u хэрэглэгчийн нэр -P нууц үг -t тест -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 руу очно уу. Энд та (цонхны доод талд) "Нэмэлт самбар менежерийн URL" гэсэн шошготой текст хайрцгийг харах ёстой. Энэ текст хайрцагт дараах линкийг хуулж буулгана уу.

arduino.esp8266.com/stable/package_esp8266com_index.json

Өөрчлөлтөө хадгалахын тулд OK дарна уу. Одоо Board Manager (Tools-> Board-> Board Manager) -ийг нээгээд ESP8266-г хайж олоорой. Esp8266 by ESP8266 Олон нийтийн багцыг суулгаарай. Arduino програмыг дахин эхлүүлнэ үү.

Одоо самбарыг програмчлахаасаа өмнө хэд хэдэн өөр сонголтыг сонгох хэрэгтэй. Багаж хэрэгслийн цэснээс Adafruit HUZZAH ESP8266 -ийг Удирдах зөвлөлд, 80 МГц -ийг CPU давтамжид (хэрэв та үүнийг хэтрүүлэхийг хүсвэл 160 МГц -ийг ашиглаж болно, гэхдээ одоогоор би 80 МГц ашиглах болно), 4M (3M SPIFFS) -ийг сонгоно уу. Flash -ийн хэмжээ, байршуулах хурдны хувьд 115200. Түүнчлэн, ашиглаж буй COM портыг сонгохоо мартуузай (энэ нь таны тохиргооноос хамаарна).

Та ямар ч код байршуулахаасаа өмнө HUZZAH ачаалагч горимд байгаа эсэхийг шалгах хэрэгтэй. Үүнийг идэвхжүүлэхийн тулд самбар дээрх GPIO0 гэсэн товчлуурыг дарж, энэ товчлуурыг дарж байхдаа Reset товчлуурыг дарна уу. Дараа нь дахин тохируулах товчийг, дараа нь GPIO0 -ийг суллана уу. Хэрэв та үүнийг зөв хийсэн бол GPIO0 дарахад улаан гэрэл асах ёстой.

Микроконтроллерт код оруулахын тулд эхлээд HUZZAH нь bootloader горимд байгаа эсэхийг шалгаад Arduino IDE дээрх байршуулах товчийг дарна уу.

Хэрэв танд HUZZAH -ийг тохируулахад асуудал гарвал нэмэлт мэдээллийг Adafruit -ийн өөрийн гарын авлагаас авах боломжтой.

Алхам 5: ESP8266 програмчлах

ESP8266 програмчлах
ESP8266 програмчлах

Одоо бид ESP8266-ийг програмчилж эхлэх болно, гэхдээ эхлүүлэхийн өмнө та дараах номын сангуудыг Arduino номын сангийн менежерт суулгах хэрэгтэй болно (Sketch-> Номын санг оруулах-> Номын санг удирдах)

  • Үсрэх2
  • PubSubClient

Тэдгээр номын санг суулгасны дараа та энэ зааварт (MQTT_Publish.zip) оруулсан кодыг ажиллуулах боломжтой болно. Хэсэг тус бүр юу хийж байгааг ойлгохын тулд би үүнийг заавал тайлбарласан бөгөөд энэ нь танд үүнийг өөрийн хэрэгцээнд нийцүүлэх боломжийг олгоно гэж найдаж байна.

ESP8266 нь таны WiFi сүлжээ болон MQTT зуучлагчтай (Raspberry Pi) холбогдохын тулд кодын дээд хэсэгт байрлах тогтмолуудыг өөрчлөхөө бүү мартаарай.

Хэрэв та MQTT зуучлагчийн хэрэглэгчийн нэр, нууц үгийг тохируулахгүй байхаар шийдсэн бол оронд нь MQTT_PublishNoPassword.zip файлыг татаж аваарай.

Алхам 6: Python Client (paho-mqtt) суулгах

Python клиентийг суулгах (paho-mqtt)
Python клиентийг суулгах (paho-mqtt)

Аз болоход, энэ алхам маш энгийн! Шумуулын питон үйлчлүүлэгчийг суулгахын тулд та дараах тушаалыг командын мөрөнд (Linux/Mac) эсвэл командын мөрөнд (Windows) оруулах хэрэгтэй.

paho-mqtt-ийг суулгах

Анхаарна уу: Хэрэв та Python -ийг суулгахдаа pip суулгаж, PATH хувьсагчдаа python нэмэхийг хүсээгүй бол Windows командын мөрөнд pip командыг ажиллуулахад асуудал гарч болзошгүй. Үүнийг засах хэд хэдэн арга байдаг боловч Python -ийг дахин суулгах нь хамгийн хялбар арга гэж би бодож байна. Хэрэв эргэлзэж байвал - google -д өгөөрэй!

Алхам 7: Python үйлчлүүлэгч - Захиалах

Python үйлчлүүлэгч - Захиалж байна
Python үйлчлүүлэгч - Захиалж байна

Энэ алхамд бид ESP8266 -аас MQTT сэдэв рүү илгээсэн (нийтлүүлсэн) бүх мессежийг зохицуулахын тулд Python скриптийг (Raspberry Pi өөрөө эсвэл сүлжээнд холбогдсон өөр компьютер дээр) тохируулах гэж байна.

Би юу болж байгааг ойлгоход туслах зорилгоор тайлбарласан Python кодыг доор оруулсан болно (PythonMQTT_Subscribe.py), гэхдээ би зарим үндсэн онцлогуудыг энд тайлбарлах болно.

Хэрэв та өмнө нь MQTT холболтын хэрэглэгчийн нэр, нууц үгийг тохируулаагүй бол PythonMQTT_SubscribeNoPassword.py файлыг татаж аваарай.

Алхам 8: ESP8266 төхөөрөмжүүдийн хооронд холбоо тогтоох

ESP8266 төхөөрөмжүүдийн хооронд харилцах
ESP8266 төхөөрөмжүүдийн хооронд харилцах

Жишээлбэл, хэрэв та IoT сүлжээг тохируулахыг хүсч байвал ESP8266 төхөөрөмжүүдийн хооронд холбогдохыг хүсч болно. Аз болоход, энэ нь бидний өмнө бичсэн кодоос хамаагүй төвөгтэй зүйл биш боловч хэд хэдэн мэдэгдэхүйц өөрчлөлт гарсан байна.

Нэг 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 () үндсэн функцэд зохицуулах ёстой.

Кодын дээд хэсэгт байгаа хувьсагчдыг сүлжээндээ тохируулан өөрчлөхөө мартуузай!

Зөвлөмж болгож буй: