- MQTT అంటే ఏమిటి?
- రాస్ప్బెర్రీ పై పై దోమ MQTT బ్రోకర్ను ఇన్స్టాల్ చేస్తోంది
- రాస్ప్బెర్రీ పై మస్కిట్టో బ్రోకర్ను పరీక్షిస్తోంది
- సర్క్యూట్ రేఖాచిత్రం
- కోడ్ మరియు వివరణ
MQTT అనేది ఇంటర్నెట్ ద్వారా సందేశాలను పంపడానికి మరియు స్వీకరించడానికి ఉపయోగించే ప్రోటోకాల్. డేటాను ఇంటర్నెట్లో ప్రచురించడానికి మేము గతంలో ఈ ప్రోటోకాల్ను అయోట్ ఎలక్ట్రిసిటీ మీటర్ మరియు రాస్ప్బెర్రీ పై అలెక్సాలో ఉపయోగించాము. ఈ ట్యుటోరియల్లో మనం MQTT మరియు దానికి సంబంధించిన నిబంధనల గురించి మరింత తెలుసుకుంటాము. ఇక్కడ మేము రాస్ప్బెర్రీ పైని స్థానిక MQTT బ్రోకర్గా ఉపయోగిస్తాము మరియు MQTT అప్లికేషన్ డాష్బోర్డ్ ద్వారా నోడ్ఎంసియు ESP12E కి కనెక్ట్ చేయబడిన LED ని నియంత్రిస్తాము. DHT11 సెన్సార్ కూడా NodeMCU కి అనుసంధానించబడి ఉంది, కాబట్టి MQTT డాష్బోర్డ్లో ఉష్ణోగ్రత మరియు తేమను చదవడం, రాస్ప్బెర్రీ పైని స్థానిక MQTT బ్రోకర్గా ఉపయోగించడం ద్వారా.
కాబట్టి, MQTT మరియు దానికి సంబంధించిన నిబంధనలను అర్థం చేసుకోవడం ద్వారా ప్రారంభిద్దాం.
MQTT అంటే ఏమిటి?
MQTT అంటే మెసేజ్ క్యూ టెలిమెట్రీ ట్రాన్స్పోర్ట్, ఇది IBM చే రూపొందించబడింది. ఈ ప్రోటోకాల్ సరళమైనది మరియు తేలికైనది, ఇది ఇంటర్నెట్ ద్వారా సందేశాలను పంపడానికి మరియు స్వీకరించడానికి ఉపయోగించబడుతుంది మరియు ఇది తక్కువ బ్యాండ్విడ్త్ ఉపయోగాలు కలిగిన పరికరాల కోసం రూపొందించబడింది. ఈ రోజుల్లో ఈ ప్రోటోకాల్ సెన్సార్ల డేటాను పంపడానికి మరియు స్వీకరించడానికి IoT పరికరాల్లో తరచుగా ఉపయోగించబడుతుంది. అలాగే, IoT ఆధారిత హోమ్ ఆటోమేషన్ సిస్టమ్స్లో, ఈ ప్రోటోకాల్ చాలా ఇంటర్నెట్ డేటాను ఉపయోగించకుండా సులభంగా ఉపయోగించవచ్చు.
MQTT లో తరచుగా ఉపయోగించే కొన్ని పదాలు ఉన్నాయి:
- సభ్యత్వాన్ని పొందండి మరియు ప్రచురించండి
- సందేశం
- అంశం
- మధ్యవర్తి
1. సబ్స్క్రయిబ్ చేయండి మరియు ప్రచురించండి: సబ్స్క్రయిబ్ అంటే ఇతర పరికరం నుండి డేటాను పొందడం, మరియు డేటాను ఇతర పరికరానికి పంపడం అని ప్రచురించడం.
డివైస్ 1 డేటాను డివైస్ 2 కి పంపినప్పుడు దానిని పబ్లిషర్ అని పిలుస్తారు మరియు మరొకటి చందాదారుడు మరియు దీనికి విరుద్ధంగా ఉంటుంది.
2. సందేశం: సందేశాలు అంటే మనం పంపే మరియు స్వీకరించే సమాచారం. ఇది డేటా లేదా ఏ రకమైన కమాండ్ అయినా కావచ్చు. ఉదాహరణకు, మేము ఉష్ణోగ్రత డేటాను క్లౌడ్కు ప్రచురిస్తుంటే, ఈ ఉష్ణోగ్రత డేటాను సందేశం అంటారు.
3. అంశం: ఇన్కమింగ్ సందేశాల కోసం మీరు ఆసక్తిని నమోదు చేసే మార్గం లేదా మీరు సందేశాన్ని ఎక్కడ ప్రచురించాలనుకుంటున్నారో తెలుపుతుంది. ఫార్వర్డ్ స్లాష్ ద్వారా వేరు చేయబడిన తీగలతో విషయాలు సూచించబడతాయి. డేటా MQTT ఉపయోగించి అంశాలపై ప్రచురించబడుతుంది మరియు తరువాత MQTT పరికరం డేటాను పొందడానికి అంశానికి సభ్యత్వాన్ని పొందుతుంది.
4. MQTT బ్రోకర్: ప్రచురణకర్తల నుండి అన్ని సందేశాలను స్వీకరించడం, సందేశాలను ఫిల్టర్ చేయడం మరియు వాటిపై ఆసక్తి ఉన్న చందాదారులకు సందేశాలను ప్రచురించడం ఈ విషయం బాధ్యత.
ఈ బ్రోకర్ను క్లౌడ్లో హోస్ట్ చేసినప్పుడు దాన్ని MQTT క్లౌడ్ అంటారు. అడాఫ్రూట్ IO, MQTT.IO, IBM బ్లూమిక్స్, మైక్రోసాఫ్ట్ అజూర్ వంటి అనేక క్లౌడ్ ఆధారిత MQTT సేవలు ఉన్నాయి. MQTT ను ప్రముఖ అమెజాన్ AWS క్లౌడ్తో కూడా ఉపయోగించవచ్చు, అమెజాన్ AWS ట్యుటోరియల్తో ప్రారంభించడంలో మేము వివరించాము.
మేము రాస్ప్బెర్రీ పైని ఉపయోగించి మన స్వంత MQTT బ్రోకర్ను తయారు చేయవచ్చు. ఇది స్థానిక MQTT బ్రోకర్ అవుతుంది, అంటే మీరు మీ స్థానిక నెట్వర్క్లోని డేటాను ఎక్కడి నుండైనా పంపవచ్చు మరియు స్వీకరించవచ్చు. కాబట్టి ఇక్కడ మేము స్థానిక MQTT బ్రోకర్గా చేయడానికి రాస్ప్బెర్రీ పైలో దోమ MQTT బ్రోకర్ను ఇన్స్టాల్ చేస్తాము మరియు NodeMCU నుండి MQTT డాష్బోర్డ్ అనువర్తనానికి ఉష్ణోగ్రత డేటాను పంపుతాము. అలాగే, మేము బ్రోకర్ను ఉపయోగించి నోడ్ఎంసియుకు కనెక్ట్ చేయబడిన ఎల్ఇడిని నియంత్రిస్తాము.
రాస్ప్బెర్రీ పై పై దోమ MQTT బ్రోకర్ను ఇన్స్టాల్ చేస్తోంది
మీ రాస్ప్బెర్రీ పైలో టెర్మినల్ తెరిచి, బ్రోకర్ను ఇన్స్టాల్ చేయడానికి కింది ఆదేశాలను టైప్ చేయండి
sudo apt update sudo apt install -y దోమ దోమ-క్లయింట్లు
ఇన్స్టాలేషన్ పూర్తయ్యే వరకు వేచి ఉండండి. ఇప్పుడు, కోరిందకాయ పై ప్రారంభంలో బ్రోకర్ను ప్రారంభించడానికి, కింది ఆదేశాన్ని టైప్ చేయండి
sudo systemctl mosquitto.service ని ప్రారంభిస్తుంది
అంతే, మేము మా MQTT బ్రోకర్ను ప్రారంభించటానికి సిద్ధంగా ఉన్నాము. ఇది సరిగ్గా ఇన్స్టాల్ చేయబడిందని తనిఖీ చేయడానికి, కింది ఆదేశాన్ని నమోదు చేయండి
దోమ -v
ఈ ఆదేశం మీ MQTT బ్రోకర్ యొక్క సంస్కరణను మీకు ఇస్తుంది. ఇది 1.4.x లేదా అంతకంటే ఎక్కువ ఉండాలి.
రాస్ప్బెర్రీ పై మస్కిట్టో బ్రోకర్ను పరీక్షిస్తోంది
1. కింది ఆదేశాన్ని ఉపయోగించి మోస్కిట్టో బ్రోకర్ను నేపథ్యంలో అమలు చేయండి
దోమ -డి
2. ఇప్పుడు, కింది ఆదేశాన్ని ఉపయోగించి ఉదాహరణ టాపిక్ లో ఒక అంశాన్ని చందా చేస్తాము
mosquitto_sub -d -t exampleTopic
3. ఇప్పుడు, మేము ఉదాహరణ టాపిక్కు కొన్ని సందేశాన్ని ప్రచురిస్తాము
mosquitto_pub -d -t exampleTopic -m "హలో వరల్డ్!"
మీరు హలో ప్రపంచాన్ని అందుకుంటారు! చందాదారుల టెర్మినల్లో సందేశం.
ఇప్పుడు, మేము NodeMCU మరియు MQTT డాష్బోర్డ్ అనువర్తనాన్ని ఉపయోగిస్తున్న సందర్భంలో మా పరికరం నుండి డేటాను నియంత్రించడానికి మరియు పొందడానికి సమయం ఆసన్నమైంది .
- మొదట మేము అనువర్తనాన్ని ఉపయోగించి ఆదేశాన్ని పంపడం ద్వారా LED ని నియంత్రిస్తాము కాబట్టి ఈ సందర్భంలో NodeMCU చందాదారుడిగా మరియు అనువర్తనాన్ని ప్రచురణకర్తగా ప్రవర్తిస్తుంది.
- అప్పుడు ESP12E కి DHT11 సెన్సార్ కూడా కనెక్ట్ చేయబడింది మరియు ఇది ఈ ఉష్ణోగ్రత పఠనాన్ని మొబైల్ MQTT అనువర్తనానికి పంపుతుంది కాబట్టి ఈ సందర్భంలో మొబైల్ చందాదారుడు మరియు నోడ్ఎంసియు ప్రచురణకర్త అవుతుంది. మరియు ఈ సందేశాలను సంబంధిత అంశాలపై ఫార్వార్డ్ చేయడానికి, దోమ MQTT బ్రోకర్ ఉపయోగించబడుతుంది.
సర్క్యూట్ రేఖాచిత్రం
రేఖాచిత్రంలో చూపిన విధంగా సర్క్యూట్ను కనెక్ట్ చేయండి. ఇక్కడ ఉష్ణోగ్రత రీడింగుల కోసం DHT11 ఉపయోగించబడుతుంది కాని LM35 ఉష్ణోగ్రత సెన్సార్ను కూడా ఉపయోగించవచ్చు. వాతావరణ స్టేషన్ను నిర్మించడానికి నోడ్ఎంసియుతో సహా మా అనేక ప్రాజెక్టులలో మేము ఇప్పటికే డిహెచ్టి 11 సెన్సార్ను ఉపయోగించాము.
డేటాను చందా చేయడానికి మరియు ప్రచురించడానికి నోడ్ఎంసియు కోసం కోడ్ రాయడం ప్రారంభిద్దాం.
కోడ్ మరియు వివరణ
ఇక్కడ మేము Adafruit MQTT లైబ్రరీ టెంప్లేట్ను ఉపయోగిస్తాము మరియు కోడ్లోని అవసరమైన వాటిని మారుస్తాము. కొన్ని విషయాలను మార్చడం ద్వారా డేటాను అడాఫ్రూట్ IO క్లౌడ్కు ప్రచురించడానికి మరియు సభ్యత్వాన్ని పొందడానికి అదే కోడ్ను ఉపయోగించవచ్చు.ఈ డౌన్లోడ్ కోసం స్కెచ్ నుండి అడాఫ్రూట్ MQTT లైబ్రరీ -> లైబ్రరీని చేర్చండి -> లైబ్రరీలను నిర్వహించండి. Adafruit MQTT కోసం శోధించండి మరియు దానిని ఇన్స్టాల్ చేయండి. లైబ్రరీని ఇన్స్టాల్ చేసిన తరువాత. ఉదాహరణలకు వెళ్ళండి -> Adafruit mqtt లైబ్రరీ -> mqtt_esp8266
అప్పుడు మా రాస్ప్బెర్రీ పై ఐపి చిరునామా మరియు వై-ఫై ఆధారాల ప్రకారం ఈ కోడ్ను సవరించండి.
ESP8266WIFI మరియు Adafruit MQTT కోసం అన్ని లైబ్రరీలను చేర్చండి.
# చేర్చండి
అప్పుడు మీ Wi-Fi కోసం SSID మరియు పాస్వర్డ్ను నిర్వచించండి, దాని నుండి మీరు మీ ESP-12e ని కనెక్ట్ చేయాలనుకుంటున్నారు. మీ RPi మరియు NodeMCU ఒకే నెట్వర్క్తో కనెక్ట్ అయ్యేలా చూసుకోండి.
# WLAN_SSID "xxxxxxxx" ను నిర్వచించండి # WLAN_PASS "xxxxxxxxxx" ని నిర్వచించండి
ఈ విభాగం అడాఫ్రూట్ సర్వర్ను నిర్వచిస్తుంది, ఈ సందర్భంలో మీ రాస్ప్బెర్రీ పై మరియు సర్వర్ పోర్ట్ యొక్క IP చిరునామా.
# మీ పై యొక్క AIO_SERVER "ip చిరునామాను నిర్వచించండి " # AIO_SERVERPORT 1883 ని నిర్వచించండి
మేము అడాఫ్రూట్ క్లౌడ్ను ఉపయోగించనందున దిగువ ఫీల్డ్లు ఖాళీగా ఉంటాయి.
# AIO_USERNAME ని నిర్వచించండి "" # AIO_KEY ని నిర్వచించండి ""
MQTT సర్వర్కు కనెక్ట్ అవ్వడానికి ESP8266 WiFiClient క్లాస్ని సృష్టించండి.
వైఫై క్లయింట్ క్లయింట్;
వైఫై క్లయింట్ మరియు MQTT సర్వర్ మరియు లాగిన్ వివరాలలో ఉత్తీర్ణత ద్వారా MQTT క్లయింట్ తరగతిని సెటప్ చేయండి.
Adafruit_MQTT_Client mqtt (& క్లయింట్, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
ఉష్ణోగ్రతను ప్రచురించడానికి 'ఉష్ణోగ్రత' అనే ఫీడ్ను సెటప్ చేయండి.
Adafruit_MQTT_ ప్రచురించు ఉష్ణోగ్రత = Adafruit_MQTT_ ప్రచురించండి (& mqtt, AIO_USERNAME "/ ఫీడ్లు / ఉష్ణోగ్రత");
మార్పులకు చందా కోసం 'led1' అనే ఫీడ్ను సెటప్ చేయండి.
Adafruit_MQTT_Subscribe led1 = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / led");
లో సెటప్ ఫంక్షన్, మేము మీరు అవుట్పుట్ పొందడానికి కోరుకుంటున్న NodeMCU యొక్క PIN ప్రకటిస్తాయి. అప్పుడు, నోడ్ఎంసియును వై-ఫై యాక్సెస్ పాయింట్కు కనెక్ట్ చేయండి.
void setup () { Serial.begin (115200); ఆలస్యం (10); పిన్మోడ్ (LED, OUTPUT); సీరియల్.ప్రింట్ల్న్ (ఎఫ్ ("అడాఫ్రూట్ MQTT డెమో")); // వైఫై యాక్సెస్ పాయింట్కు కనెక్ట్ అవ్వండి. సీరియల్.ప్రింట్ల్న్ (); సీరియల్.ప్రింట్ల్న్ (); సీరియల్.ప్రింట్ ("దీనికి కనెక్ట్ అవుతోంది"); సీరియల్.ప్రింట్ల్న్ (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); (WiFi.status ()! = WL_CONNECTED) while …. …. … లీడ్ ఫీడ్ కోసం MQTT సభ్యత్వాన్ని సెటప్ చేయండి. mqtt.subscribe (& led1); }
లో లూప్ ఫంక్షన్, మేము MQTT సర్వర్కు కనెక్షన్ MQTT_connect () ఉపయోగించి సజీవంగా ఉంది ఉంటారని; ఫంక్షన్.
శూన్య లూప్ () { MQTT_connect ();
ఇప్పుడు, 'లీడ్' ఫీడ్ను చందా చేయండి మరియు MQTT బ్రోకర్ నుండి స్ట్రింగ్ పొందండి మరియు ఈ స్ట్రింగ్ను అటోయి () ఉపయోగించి సంఖ్యకు మార్చండి ; డిజిటల్ రైట్ () ను ఉపయోగించి ఈ సంఖ్యను LED పిన్కు వ్రాయండి ; ఫంక్షన్.
Adafruit_MQTT_ సబ్స్క్రయిబ్ * చందా; అయితే ((చందా = mqtt.readSubscription (20000%)) { if (subscription == & led1) { Serial.print (F ("Got:")); సీరియల్.ప్రింట్ల్న్ ((చార్ *) led1.lastread); int led1_State = atoi ((char *) led1.lastread); డిజిటల్ రైట్ (LED, led1_State); }
ఇప్పుడు, ఉష్ణోగ్రతను వేరియబుల్లో పొందండి మరియు Temperature.publish (t) ఫంక్షన్ను ఉపయోగించి ఈ విలువను ప్రచురించండి.
ఫ్లోట్ t = dht.readTemperature (); … .. if (! Temperature.publish (t)) { Serial.println (F ("Failed")); } else { Serial.println (F ("OK!")); }
ప్రదర్శన వీడియోతో పూర్తి కోడ్ ఈ ట్యుటోరియల్ చివరిలో ఇవ్వబడింది. కోడ్ను నోడ్ఎంసియు బోర్డుకి అప్లోడ్ చేయండి మరియు మీరు స్మార్ట్ఫోన్లో డౌన్లోడ్ చేసిన MQTT డాష్బోర్డ్ అనువర్తనాన్ని తెరవండి.
అడాఫ్రూట్ IO, MQTT.IO వంటి MQTT క్లౌడ్ ఉపయోగించి మీరు ప్రపంచంలో ఎక్కడి నుండైనా రాస్ప్బెర్రీ పై GPIO ని నియంత్రించవచ్చు, వీటిని మేము తదుపరి ట్యుటోరియల్ లో నేర్చుకుంటాము.