|
|
6 months ago | |
|---|---|---|
| .. | ||
| README.md | 6 months ago | |
| assignment.md | 6 months ago | |
| single-board-computer-commands.md | 6 months ago | |
| single-board-computer-mqtt.md | 6 months ago | |
| single-board-computer-telemetry.md | 6 months ago | |
| wio-terminal-commands.md | 6 months ago | |
| wio-terminal-mqtt.md | 6 months ago | |
| wio-terminal-telemetry.md | 6 months ago | |
README.md
మీ పరికరాన్ని ఇంటర్నెట్కు కనెక్ట్ చేయండి
స్కెచ్నోట్ నిత్య నరసింహన్ ద్వారా. పెద్ద వెర్షన్ కోసం చిత్రాన్ని క్లిక్ చేయండి.
ఈ పాఠం హలో IoT సిరీస్లో భాగంగా మైక్రోసాఫ్ట్ రియాక్టర్ నుంచి నేర్పబడింది. ఈ పాఠం 2 వీడియోలుగా ఉంది - 1 గంట పాఠం, మరియు 1 గంట ఆఫీస్ గంట లోతైన భాగాలు మరియు ప్రశ్నలకు సమాధానాలు.
🎥 వీడియోలను చూడడానికి పై చిత్రాలను క్లిక్ చేయండి
ముందస్తు-లెక్చర్ క్విజ్
పరిచయం
IoTలో I అంటే ఇంటర్నెట్ - క్లౌడ్ కనెక్టివిటీ మరియు సేవలు, ఇవి IoT పరికరాల అనేక ఫీచర్లను సులభతరం చేస్తాయి, పరికరానికి కనెక్ట్ చేసిన సెన్సార్ల నుండి కొలతలను సేకరించడం నుండి, యాక్చ్యుయేటర్లను నియంత్రించడానికి సందేశాలు పంపడం వరకు. IoT పరికరాలు సాధారణంగా ఒక స్టాండర్డ్ కమ్యూనికేషన్ ప్రోటోకాల్ ఉపయోగించి ఒక క్లౌడ్ IoT సేవకు కనెక్ట్ అవుతాయి మరియు ఆ సేవ మీ IoT అప్లికేషన్ మిగతా భాగాలకు కనెక్ట్ అవుతుంది, మీ డేటా చుట్టూ స్మార్ట్ నిర్ణయాలు తీసుకునేందుకు AI సేవలు, నియంత్రణ లేదా రిపోర్టింగ్ కొరకు వెబ్ యాప్ల వరకు.
🎓 సెన్సార్ల నుండి సేకరించి క్లౌడ్కు పంపబడిన డేటా టెలిమెట్రీ అని పిలుస్తారు.
IoT పరికరాలు క్లౌడ్ నుండి సందేశాలు అందుకోవచ్చు. సందేశాలు తరచుగా కమాండ్లు ఉంటాయి - అంటే పరికరం లోపల చర్య తీసుకోవడానికి (ఉదాహరణకు రీబూట్ చేయడం లేదా ఫర్మ్వేర్ నవీకరణ) లేదా యాక్చ్యుయేటర్ ఉపయోగించడం (ఉదాహరణకు లైట్ ఆన్ చేయడం) సూచనలు.
ఈ పాఠం IoT పరికరాలు క్లౌడ్కు కనెక్ట్ అవడానికి ఉపయోగించే కొన్ని కమ్యూనికేషన్ ప్రోటోకాల్స్ మరియు వారు పంపగలడిన లేదా స్వీకరించగలడిన డేటా రకాల గురించి పరిచయం చేస్తుంది. మీరు ఈ రెండు వాటితో హ్యాండ్-ఆన్ చేస్తూ మీ నైట్లైట్కు ఇంటర్నెట్ నియంత్రణను జోడిస్తారు, లైట్ నియంత్రణ తర్కాన్ని స్థానికంగా 'సర్వర్' కోడ్గా మార్చుతారు.
ఈ పాఠంలో మనం కవర్ చేసేది:
- కమ్యూనికేషన్ ప్రోటోకాల్స్
- మెసేజ్ క్యూ లవ్యింగ్ టెలిమెట్రీ ట్రాన్స్పోర్ట్ (MQTT)
- టెలిమెట్రీ
- కమాండ్లు
కమ్యూనికేషన్ ప్రోటోకాల్స్
IoT పరికరాలు ఇంటర్నెట్తో కమ్యూనికేట్ చేసేందుకు ఉపయోగించే అనేక ప్రాచుర్యం పొందిన కమ్యూనికేషన్ ప్రోటోకాల్స్ ఉన్నాయి. అతిప్రసిద్ధం పబ్లిష్/సబ్స్క్రైబ్ మెసేజింగ్ broker ఆధారంగా ఉంటుంది. IoT పరికరాలు brokerకు కనెక్ట్ అవుతాయి, టెలిమెట్రీను పబ్లిష్ చేసి కమాండ్లకు సబ్స్క్రైబ్ అవుతాయి. క్లౌడ్ సేవలు కూడా brokerకు కనెక్ట్ అవుతూ అన్ని టెలిమెట్రీ సందేశాలకు సబ్స్క్రైబ్ అవుతాయి మరియు నిర్దిష్ట పరికరాలకు లేదా పరికర సమూహాలకు కమాండ్లు పబ్లిష్ చేస్తాయి.
MQTT IoT పరికరాల కోసం అతిప్రసిద్ధ కమ్యూనికేషన్ ప్రోటోకాల్స్ లో ఒకటి, ఈ పాఠంలో దీనిని చర్చిస్తాము. ఇతర ప్రోటోకాల్స్ AMQP మరియు HTTP/HTTPS ఉన్నాయి.
మెసేజ్ క్యూ లవ్యింగ్ టెలిమెట్రీ ట్రాన్స్పోర్ట్ (MQTT)
MQTT ఒక లైట్వెయిట్, ఓపెన్ స్టాండర్డ్ మెసేజ్ ప్రోటోకాల్, ఇది పరికరాల మధ్య సందేశాలు పంపడానికి ఉపయోగించబడుతుంది. ఇది 1999లో ఫ్యానలై నడిపి మానిటర్ చేయడానికి రూపొందించబడింది, తరువాత 15 సంవత్సరాలు తరువాత IBM ద్వారా ఓపెన్ స్టాండర్డ్ గా విడుదల చేయబడింది.
MQTT ఒక సింగిల్ broker మరియు బహుళ క్లయింట్లు కలిగి ఉంటుంది. అన్ని క్లయింట్లు brokerకు కనెక్ట్ అవుతాయి, broker సందేశాలను సంబంధిత క్లయింట్లకు రూట్ చేస్తుంది. సందేశాలు సాక్షాత్ వ్యక్తిగత క్లయింట్కు పంపకుండా పేరుగల అంశాల (topics) ద్వారా రూట్ చేయబడతాయి. ఒక క్లయింట్ ఒక topicకు ప్రచురించవచ్చు మరియు ఆ topicకు సబ్ స్క్రైబ్ చేసిన అన్ని క్లయింట్లు ఆ సందేశాన్ని అందుకుంటాయి.
✅ కొంత పరిశోధన చేయండి. మీరు ఎక్కువ IoT పరికరాలు ఉంటే, మీ MQTT broker అన్ని సందేశాలను ఎలా హ్యాండిల్ చేయగలదో ఎలా నిర్ధారించవచ్చు?
మీ IoT పరికరాన్ని MQTT కి కనెక్ట్ చేయండి
మీ నైట్లైట్ కోసం ఇంటర్నెట్ నియంత్రణ కలపడం యొక్క మొదటి భాగం MQTT brokerకు కనెక్ట్ కావడమే.
టాస్క్
మీ పరికరాన్ని MQTT brokerకు కనెక్ట్ చేయండి.
ఈ భాగంలో, మీరు మీ IoT నైట్లైట్ను ఇంటర్నెట్కు కనెక్ట్ చేసి దానిని రిమోట్గా నియంత్రించగలుగుతారు. ఈ పాఠం తరువాత, మీ IoT పరికరం MQTT ద్వారా బహిరంగ MQTT brokerకి ఒక టెలిమెట్రీ సందేశం పంపిస్తుంది, ఇందులో లైట్ స్థాయి ఉంటుంది, ఇది మీరు రాసే సర్వర్ కోడ్ ద్వారా పికప్ చేయబడుతుంది. ఈ కోడ్ లైట్ స్థాయిని తనిఖీ చేసి పరికరానికి LED ఆన్ లేదా ఆఫ్ చేయమని కమాండ్ సందేశం పంపుతుంది.
అటువంటి సెటప్ యొక్క వాస్తవ ప్రపంచ వినియోగం అనేక లైట్ సెన్సార్ల నుండి డేటా సేకరించి, స్టేడియంలో అనేక లైట్లున్న ప్రదేశంలో లైట్లను ఆన్ చేయాలా లేదా నిర్ణయించడమై ఉండవచ్చు. ఒకే ఒక సెన్సార్ మాత్రమే మేఘాలు లేదా పక్షితో కవచం అయ్యి ఉంటే కూడా, ఇతర సెన్సార్లు సరిపడా లైట్ గుర్తించగలుగుతారు కాబట్టి లైట్లను అనవసరంగా ఆన్ చేయకుండా జాగ్రత్త ఉంటుంది.
✅ కమాండ్లు పంపేముందు బహుళ సెన్సార్ల నుండి డేటాను అంచనా వేయాల్సిన ఇంకా ఏ పరిస్థితులు ఉండొచ్చు?
ఈ అసైన్మెంట్ లో భాగంగా MQTT broker ఏర్పాటు చేసే క్లిష్టతలను మీరు ఎదుర్కోకుండా ఉండేందుకు, మీరు ఓపెన్-సోర్స్ MQTT broker అయిన Eclipse Mosquitto నడుపుతున్న పబ్లిక్ టెస్ట్ సర్వర్ ఉపయోగించవచ్చు. ఈ టెస్ట్ broker test.mosquitto.org వద్ద అందుబాటులో ఉంది మరియు ఖాతా సెట్ చేయాల్సిన అవసరం లేదు, ఇది MQTT క్లయింట్లు మరియు సర్వర్లను పరీక్షించడానికి గొప్ప సాధనం.
💁 ఈ టెస్ట్ broker పబ్లిక్ మరియు సెక్యూర్ కాదు. మీరు ప్రచురించే విషయాన్ని ఎవరైనా వింటుండవచ్చు, కాబట్టి ఏవైనా గోప్యమైన డేటాతో ఉపయోగించకూడదు
మీ పరికరాన్ని MQTT brokerకు కనెక్ట్ చేయడానికి క్రింది సంబంధిత దశను అనుసరించండి:
MQTT లో లోతైన పరిశీలన
Topics కు హైరార్కీ ఉండవచ్చు, మరియు క్లయింట్లు వణికే వాళ్ కార్డ్స్ (wildcards) ఉపయోగించి హైరార్కీకి భిన్న స్థాయిలకు సబ్స్క్రైబ్ అవుతాయి. ఉదాహరణకు, మీరు /telemetry/temperature టాపిక్కు ఉష్ణోగ్రత టెలిమెట్రీ సందేశాలు పంపించి, /telemetry/humidity టాపిక్కు తేమ సందేశాలు పంపవచ్చు, తర్వాత మీ క్లౌడ్ యాప్ /telemetry/* టాపిక్కు సబ్స్క్రైబ్ అయి రెండింటినీ అందుకుంటుంది.
సందేశాలను QoS (Quality of Service)తో పంపవచ్చు, ఇది సందేశం అందుకున్నదిగా నిర్ధారించే హామీని నిర్ణయిస్తుంది.
- గరిష్టంగా ఒక్కసారి - సందేశం ఒకసారి మాత్రమే పంపబడుతుంది మరియు క్లయింట్, broker డెలివరీను గుర్తించడానికి అదనపు పద్ధతులు తీసుకోరు (ఫైర్ అండ్ ఫర్గెట్).
- కనీసం ఒక్కసారి - పంపినవారు అఫ్యల్మెంట్ పొందేవరకు సందేశాన్ని పలు సార్లు రీ-ట్రై చేస్తారు (అనుమతించబడిన డెలివరీ).
- ఖచ్చితంగా ఒక్కసారి - పంపినవారు, అందుకునేవారు రెండు-స్థాయి హ్యాండ్షేక్ ద్వారా సందేశం ఒక్క నకలగానే అందజేస్తారు (నిర్ధారించబడిన డెలివరీ).
✅ ఫైర్ అండ్ ఫర్గెట్ మెసేజ్ కంటే నిర్ధారించబడిన డెలివరీ మెసేజ్ అవసరమైన పరిస్థితులు ఏవి?
పేరు Message Queueing అయిన MQTT వాస్తవానికి మెసేజ్ క్యూ లను మద్ధతు ఇవ్వదు. అంటే ఒక క్లయింట్ డిస్కనెక్ట్ అయ్యి తిరిగి కనెక్ట్ అయితే, డిస్కనెక్షన్ సమయంలో పంపిన సందేశాలను అందుకోలేదు, తప్ప QoS ప్రక్రియ ద్వారా ఇప్పటికే ప్రాసస్ చేసెల్లి సందేశాలు మాత్రమే. సందేశాలకు రిటెయిన్ ఫ్లాగ్ సెట్ చేయవచ్చు. ఇది సెట్ అయితే, MQTT broker ఆ టాపిక్పై చివరి పంపిన సందేశాన్ని నిల్వ చేస్తుంది, తర్వాత ఆ టాపిక్కు సబ్స్క్రైబ్ అయ్యే క్లయింట్లకు ఆ సందేశాన్ని పంపుతుంది. అందువల్ల, క్లయింట్లు ఎప్పుడూ తాజా సందేశాన్ని పొందుతాయి.
MQTT మESSAGES మధ్య పొడవైన గ్యాప్లలో కనెక్షన్ ఇంకా జివితం ఉందా అని తనిఖీ చేసే కీప్ అలైవ్ ఫంక్షన్ మద్దతు ఇస్తుంది.
🦟 Eclipse Foundation నుండి Mosquitto ఫ్రీ MQTT broker ను మీరు స్వయంగా నడిపి పరీక్షించుకోవచ్చు, అలాగే పబ్లిక్ MQTT broker test.mosquitto.org వద్ద మీ కోడ్ పరీక్షించుకునేందుకు అందుబాటులో ఉంది.
MQTT కనెక్షన్లు పబ్లిక్ మరియు ఓపెన్ కావచ్చు, లేక యూజర్నేమ్ మరియు పాస్వర్డ్లు లేదా సర్టిఫికేట్లతో సంకేతీకృతం చేసి సురక్షితం చేయబడవచ్చు.
💁 MQTT TCP/IP ద్వారా కమ్యూనికేట్ చేస్తుంది, ఇది HTTPకి ఉపయోగించే అదే ఆండర్లైయింగ్ నెట్వర్క్ ప్రోటోకాల్ అయితే, వేర్వేరు పోర్ట్పై ఉంటుంది. మీరు MQTT ని వెబ్సాకెట్లపై ఉపయోగించి బ్రౌజర్లో నడిచే వెబ్ యాప్లతో కమ్యూనికేట్ చేయవచ్చు, లేదా ఫైర్వాల్లు లేదా నెట్వర్క్ నియమాలు సాధారణ MQTT కనెక్షన్లను బ్లాక్ చేసే పరిస్థితుల్లో.
టెలిమెట్రీ
టెలిమెట్రీ అనే పదం దూరంగా కొలవడం అర్థం చేసే గ్రీకు మూలాల నుండి వచ్చింది. టెలిమెట్రీ అంటే సెన్సార్ల నుంచి డేటాను సేకరించి దాన్ని క్లౌడ్కు పంపడం.
💁 1874లో ఫ్రాన్స్లో ఒకట్రు టెలిమెట్రీ పరికరం ఆవిష్కరించబడింది, ఇది మోంట్ బ్లాంక్ నుండి పారిస్కు వాస్తవ కాల వాతావరణం మరియు మంచు గాఢతలను పంపింది. ఆ సమయంలో వైర్లెస్ సాంకేతికతలు అందుబాటులో లేవని, ఇది భౌతిక వైర్లు ఉపయోగించింది.
పాఠం 1 నుండి స్మార్ట్ థర్మోస్టాట్ ఉదాహరణకు తిరిగి చూద్దాం.
థర్మోస్టాట్ టెలిమెట్రీ సేకరించేందుకు ఉష్ణోగ్రత సెన్సార్లు కలిగి ఉంటుంది. సాధారణంగా ఒక అంతర్బాహ్య ఉష్ణోగ్రత సెన్సార్ ఉంటుంది, అలాగే బహుళ బాహ్య టెంపెరేచర్ సెన్సార్లకు బ్లూటూత్ లో ఎనర్జీ (BLE) లాంటి వైర్లెస్ ప్రోటోకాల్ ద్వారా కనెక్ట్ అవ్వవచ్చు.
అది పంపే టెలిమెట్రీ డేటా ఉదాహరణ:
| పేరు | విలువ | వివరణ |
|---|---|---|
thermostat_temperature |
18°C | థర్మోస్టాట్ అంతర్గత ఉష్ణోగ్రత సెన్సార్ కొలిచిన ఉష్ణోగ్రత |
livingroom_temperature |
19°C | లివింగ్ రూమ్ పేరుతో ఉన్న బాహ్య టెంపెరేచర్ సెన్సార్ కొలిచిన ఉష్ణోగ్రత |
bedroom_temperature |
21°C | బెడ్రూమ్ పేరుతో ఉన్న బాహ్య టెంపెరేచర్ సెన్సార్ కొలిచిన ఉష్ణోగ్రత |
అదేప్రకారం క్లౌడ్ సర్వీస్ ఈ టెలిమెట్రీ డేటాను ఉపయోగించి హీటింగ్ నియంత్రణకు కమాండ్లు పంపే నిర్ణయాలు తీసుకోగలదు.
మీ IoT పరికరంనుంచి టెలిమెట్రీ పంపండి
మీ నైట్లైట్కు ఇంటర్నెట్ నియంత్రణ జోడించుటలో తదుపరి భాగం MQTT brokerకి లైట్ స్థాయి టెలిమెట్రీ పంపించడమే.
టాస్క్ - మీ IoT పరికరంనుంచి టెలిమెట్రీ పంపండి
MQTT brokerకి లైట్ స్థాయి టెలిమెట్రీ పంపండి.
డేటాను JSON రూపంలో ఎంకోడ్ చేస్తారు - JavaScript Object Notation కోసం సంక్షిప్తం, ఇది key/value జంటలలో టెక్ట్స్ లో డేటాను రాయడానికి ఒక ప్రమాణం.
✅ మీరు JSON గురించి ఇప్పటివరకు వినకపోతే, దాన్ని JSON.org డాక్యుమెంటేషన్ ద్వారా నేర్చుకోవచ్చు.
మీ పరికరంనుంచి MQTT brokerకి టెలిమెట్రీ పంపించడానికి సంబంధిత దశోపదేశం అనుసరించండి:
MQTT broker నుండి టెలిమెట్రీ స్వీకరించండి
సమాజంలో వినేందుకు అందుబాటులో లేకుంటే టెలిమెట్రీ పంపడం ప్రయోజనం లేదు. లైట్ స్థాయి టెలిమెట్రీ డేటాని ప్రాసెస్ చేయడానికి దాని వినేవారు ఉండాలి. ఈ 'సర్వర్' కోడ్ ఒక పెద్ద IoT అప్లికేషన్ భాగంగా క్లౌడ్ సర్వీస్ కు డిప్లాయ్ చేయబడే విధంగా ఉంటుంది, కానీ ఇక్కడ మీరు ఈ కోడ్ను మీ కంప్యూటర్ లేదా మీరు Raspberry Pi మీద నేరుగా కోడింగ్ చేస్తుంటే అందులో నడపబోతున్నారు. సర్వర్ కోడ్ Python అప్లికేషన్ దీని కోసం MQTT ద్వారా లైట్ స్థాయి టెలిమెట్రీ సందేశాలను వినుతుంది. ఈ పాఠంలో తరువాత ఇది LED ఆన్/ఆఫ్ చేయమని కమాండ్ వాక్యాన్ని జవాబుగా పంపుతుంది.
✅ కొంత పరిశోధన చేయండి: MQTT సందేశాలకు వినేవారు లేకపోతే ఏమవుతుంది?
Python మరియు VS Code ఇన్స్టాల్ చేయండి
మీ దగ్గర Python మరియు VS Code స్థానికంగా లేరని, మీరు సర్వర్ కోడ్ కోడింగ్ కోసం ఈ రెండు ఇన్స్టాల్ చేయాలి. మీరు వర్చువల్ IoT పరికరం ఉపయోగిస్తుంటే, లేదా Raspberry Pi మీద పని చేస్తున్నట్లయితే ఈ దశ తప్పించవచ్చు ఎందుకంటే మీరు ఇప్పటికే ఇవి ఇన్స్టాల్ చేసి ఏర్పాటు చేసుకున్నట్లుంటారు.
టాస్క్ - Python మరియు VS Code ఇన్స్టాల్ చేయండి
Python మరియు VS Code ఇన్స్టాల్ చేయండి.
-
Python ఇన్స్టాల్ చేయండి. తాజా Python వెర్షన్ ఇన్స్టాల్ గురించి సూచనలు కోసం Python డౌన్లోడ్స్ పేజీ చూడండి.
-
Visual Studio Code (VS Code) ఇన్స్టాల్ చేయండి. ఇది మీరు Python లో వర్చువల్ పరికరం కోడ్ రాయడానికి ఉపయోగించే ఎడిటర్. VS Code ఇన్స్టాలేషన్ సూచనల కోసం VS Code డాక్యుమెంటేషన్ చూడండి.
💁 మీరు మీకు ఇష్టమైన Python IDE లేదా ఎడిటర్ వాడుకోవచ్చు, కానీ పాఠాలు VS Code ఆధారంగా సూచనలు ఇస్తాయి.
-
VS Code Pylance విస్తరణ ఇన్స్టాల్ చేయండి. ఇది VS Code కోసం Python భాష మద్దతు ఇస్తుంది. VS Code లో ఈ విస్తరణను ఎలా ఇన్స్టాల్ చేయాలో సూచనల కోసం Pylance విస్తరణ డాక్యుమెంటేషన్ చూడండి.
Python వర్చువల్ ఎన్విరాన్మెంట్ను కాన్ఫిగర్ చేయండి
Python యొక్క శక్తివంతమైన లక్షణాలలో ఒకటి pip ప్యాకేజీలుని ఇన్స్టాల్ చేయగలగుట - ఇవి ఇతరులు రాసిన కోడ్ ప్యాకేజీలు మరియు ఇంటర్నెట్ లో ప్రచురించబడ్డాయి. మీరు ఒక ఆదేశంతో మీ కంప్యూటర్ పై pip ప్యాకేజీని ఇన్స్టాల్ చేసి, ఆ ప్యాకేజీని మీ కోడ్ లో ఉపయోగించుకోవచ్చు. మీరు MQTT ద్వారా కమ్యూనికేట్ చేయడానికి ఒక ప్యాకేజీని ఇన్స్టాల్ చేయడానికి pip ఉపయోగిస్తున్నారు.
సాధారణంగా ప్యాకేజీని ఇన్స్టాల్ చేస్తే అది మీ కంప్యూటర్ మొత్తం అందుబాటులో ఉంటుంది, ఇది ప్యాకేజీ సంస్కరణలతో సమస్యలు ఏర్పడటానికి దారితీస్తుంది - ఉదాహరణకి ఒక అప్లికేషన్ ఒక ప్యాకేజీ యొక్క ఒక సంస్కరణపై ఆధారపడి ఉంటుంది, కానీ కొత్త అప్లికేషన్ కోసం కొత్త సంస్కరణ ఇన్స్టాల్ చేసినప్పుడు అది బద్దలవుతుంది. ఈ సమస్యను పరిష్కరించడానికి, మీరు Python వర్చువల్ ఎన్విరాన్మెంట్ ఉపయోగించవచ్చు, ఇది ప్రత్యేక ఫోల్డర్ లో Python యొక్క నకిలీని కలిగి ఉంటుంది, మరియు pip ప్యాకేజీలు ఇన్స్టాల్ అయినప్పుడు అవి ఆ ఫోల్డర్ లో మాత్రమే ఇన్స్టాల్ అవుతాయి.
పని - Python వర్చువల్ ఎన్విరాన్మెంట్ సెట్ చేయండి
Python వర్చువల్ ఎన్విరాన్మెంట్ సెట్ చేసి MQTT pip ప్యాకేజీలను ఇన్స్టాల్ చేయండి.
-
మీ టర్మినల్ లేదా కమాండ్ లైన్ నుండి, మీరు కోరుకున్న స్థలంలో క్రింది ఆదేశాన్ని నడిపి కొత్త డైరెక్టరీ సృష్టించుకుని అందులోకి వెళ్ళండి:
mkdir nightlight-server cd nightlight-server -
ఇప్పుడు
.venvఫోల్డర్లో వర్చువల్ ఎన్విరాన్మెంట్ సృష్టించడానికి క్రింది ఆదేశాన్ని నడపండి:python3 -m venv .venv💁 మీకు డిఫాల్ట్ గా
python3ని మాత్రమే పిలవాలి, ఎందుకంటే మీ కంప్యూటర్లో Python 2 కూడా ఉంటే అది లేకుండా Python 2 యేవిధంగా సమయంలో ఉపయోగించుకోబడుతుంది (తాజా వర్షన్). మీరు Python2 ఇన్స్టాల్ చేసి ఉంటేpythonని పిలవడం Python 2ని ఉపయోగిస్తుంది Python 3 బదులు. -
వర్చువల్ ఎన్విరాన్మెంట్ యాక్టివేట్ చేయండి:
-
Windows లో:
-
మీరు Command Prompt లేదా Windows Terminal నుండి Command Prompt ఉపయోగిస్తుంటే, ఈ ఆదేశాన్ని నడపండి:
.venv\Scripts\activate.bat -
మీరు PowerShell ఉపయోగిస్తుంటే ఈ ఆదేశాన్ని నడపండి:
.\.venv\Scripts\Activate.ps1
-
-
macOS లేదా Linux లో ఈ ఆదేశాన్ని నడపండి:
source ./.venv/bin/activate
💁 ఈ ఆదేశాలు వర్చువల్ ఎన్విరాన్మెంట్ క్రియేట్ చేసిన అదే స్థలం నుంచి నడపాలి. మీరు ఎప్పుడూ
.venvఫోల్డర్ లోకి వెళ్లాలని లేదు, యాక్టివేట్ ఆదేశం మరియు ప్యాకేజీలు ఇన్స్టాల్ చేసే ఆదేశాలు లేదా కోడ్ తీసుకు వచ్చే ఆదేశాలు మీరు వర్చువల్ ఎన్విరాన్మెంట్ సృష్టించినప్పుడు ఉన్న ఫోల్డర్ నుండి నడపాలి. -
-
వర్చువల్ ఎన్విరాన్మెంట్ యాక్టివేట్ అయిన తర్వాత, డిఫాల్ట్
pythonఆదేశం వర్చువల్ ఎన్విరాన్మెంట్ సృష్టించడానికి ఉపయోగించిన Python సంస్కరణను నడిపిస్తుంది. క్రింది ఆదేశం ద్వారా వర్షన్ తెలుసుకోండి:python --versionరిజల్ట్ ఈ విధంగా ఉండొచ్చు:
(.venv) ➜ nightlight-server python --version Python 3.9.1💁 మీ Python వర్షన్ భిన్నంగా ఉండొచ్చు - ఇది కనీసం 3.6 లేదా అంతకన్నా ఎక్కువ అయితే సరిపోదు. లేలా కాకపోతే ఈ ఫోల్డర్ తొలగించి, తాజా Python వర్షన్ ఇన్స్టాల్ చేసి మళ్లీ ప్రయత్నించండి.
-
Paho-MQTT, ప్రముఖ MQTT లైబ్రరీ కోసం pip ప్యాకేజీ ఇన్స్టాల్ చేయడానికి క్రింది ఆదేశాలు నడపండి.
pip install paho-mqttఈ pip ప్యాకేజీ వర్చువల్ ఎన్విరాన్మెంట్ లో మాత్రమే ఇన్స్టాల్ అవుతుంది, బయట అందుబాటులో ఉండదు.
సర్వర్ కోడ్ వ్రాయండి
ఇప్పుడు సర్వర్ కోడ్ Python లో వ్రాయవచ్చు.
పని - సర్వర్ కోడ్ వ్రాయండి
సర్వర్ కోడ్ వ్రాయండి.
-
మీ టర్మినల్ లేదా కమాండ్ లైన్ నుండి, వర్చువల్ ఎన్విరాన్మెంట్ లో
app.pyఅనే Python ఫైల్ సృష్టించడానికి క్రింది ఆదేశాన్ని నడపండి:-
Windows లో నడపండి:
type nul > app.py -
macOS లేదా Linux లో నడపండి:
touch app.py
-
-
ప్రస్తుత ఫోల్డర్ ని VS Code లో ఓపెన్ చేయండి:
code . -
VS Code ప్రారంభమైనప్పుడు అది Python వర్చువల్ ఎన్విరాన్మెంట్ ను యాక్టివేట్ చేస్తుంది. ఇది దిగువ స్థితి బార్ లో చూపబడుతుంది:
-
VS Code టర్మినల్ ఇప్పటికే పనిచేస్తున్నప్పుడు వర్చువల్ ఎన్విరాన్మెంట్ యాక్టివేట్ కాకుంటే, టర్మినల్ ను Kill the active terminal instance బటన్ తో ముగించండి:
-
టర్మినల్ -> New Terminal ఎంచుకోండి లేదా
CTRL+`నొక్కండి. కొత్త టర్మినల్ వర్చువల్ ఎన్విరాన్మెంట్ లోడ్ అవుతుంది, కమాండ్ ప్రాంప్ట్ లో యాక్టివేట్ కాల్ కనిపిస్తుంది. వర్చువల్ ఎన్విరాన్మెంట్ (.venv) పేరు ప్రాంప్ట్ లో ఉంటుంది:➜ nightlight-server source .venv/bin/activate (.venv) ➜ nightlight -
VS Code ఎక్స్ప్లోరర్ నుండి
app.pyఫైల్ ఓపెన్ చేసి క్రింది కోడ్ జత చేయండి:import json import time import paho.mqtt.client as mqtt id = '<ID>' client_telemetry_topic = id + '/telemetry' client_name = id + 'nightlight_server' mqtt_client = mqtt.Client(client_name) mqtt_client.connect('test.mosquitto.org') mqtt_client.loop_start() def handle_telemetry(client, userdata, message): payload = json.loads(message.payload.decode()) print("Message received:", payload) mqtt_client.subscribe(client_telemetry_topic) mqtt_client.on_message = handle_telemetry while True: time.sleep(2)6వ లైన్ లో
<ID>ని మీ డివైస్ కోడ్ తయారుచేసేటప్పుడు ఉపయోగించిన ప్రత్యేక ID తో మార్చండి.⚠️ ఇది మీరు మీ డివైస్ లో ఉపయోగించిన అదే ID కావాలి, లేకపోతే సర్వర్ కోడ్ సరైన టాపిక్ కి సభ్యత్వం లేదా ప్రచురణ చేయదు.
ఈ కోడ్ ప్రత్యేక పేరుతో MQTT కస్టమర్ సృష్టించి test.mosquitto.org బ్రోకర్ కి కనెక్ట్ అవుతుంది. ఆపై బ్యాక్గ్రౌండ్ థ్రెడ్లో ఒక ప్రాసెసింగ్ లూప్ మొదలెత్తుతుంది, ఇది ఏదైనా సభ్యత్వం ఉన్న టాపిక్ లకు సందేశాలు వినియోగిస్తుంది.
కస్టమర్ టెలిమెట్రీ టాపిక్ పై సందేశాలు సభ్యత్వం పొందుతుంది మరియు సందేశం వచ్చినప్పుడు పిలవబడే ఫంక్షన్ నిర్వచిస్తుంది. టెలిమెట్రీ సందేశం వచ్చినప్పుడు
handle_telemetryఫంక్షన్ పిలవబడుతుంది మరియు అందిన సందేశాన్ని కన్సోల్ లో ప్రింట్ చేస్తుంది.చివరకు అనంత లూప్ అప్లికేషన్ నడుస్తూనే ఉంటుంది. MQTT కస్టమర్ బ్యాక్గ్రౌండ్ థ్రెడ్లో సందేశాలను వినిపిస్తూ ప్రధాన అప్లికేషన్ పనిచేసేంతకాలం తప్పదు.
-
VS Code టర్మినల్ నుండి మీ Python అప్లికేషన్ నడపడానికి క్రింది ఆదేశాన్ని నడపండి:
python app.pyIoT డివైస్ నుండి సందేశాలు వినిపించడానికి అప్లికేషన్ ప్రారంభమవుతుంది.
-
మీ డివైస్ నడుస్తుండి టెలిమెట్రీ సందేశాలు పంపుతున్నాయని నిర్ధారించండి. మీ భౌతిక లేదా వర్చువల్ డివైస్ ద్వారా లైట్ స్థాయిలను సర్దుబాటు చేయండి. అందుతున్న సందేశాలు టర్మినల్లో ప్రింట్ అవుతాయి.
(.venv) ➜ nightlight-server python app.py Message received: {'light': 0} Message received: {'light': 400}ఈ nightlight వర్చువల్ ఎన్విరాన్మెంట్ లోని app.py ఫైల్ నడవాలి తద్వారా nightlight-server వర్చువల్ ఎన్విరాన్మెంట్ లోని app.py అందుతున్న సందేశాలు స్వీకరించగలదు.
💁 మీరు ఈ కోడ్ ని code-server/server ఫోల్డర్ లో కనుగొనవచ్చు.
టెలిమెట్రీ ఎంత తరచూ పంపాలి?
టెలిమెట్రీతో సంబంధించి ఒక ముఖ్యమైన విషయం - డేటా ని ఎంత తరచూ కొలవాలి మరియు పంపాలి? సమాధానం - ఆధారపడుతుంది. తరచుగా కొలవడం అంటే మార్పులను త్వరగా స్పందించగలగడం, కానీ ఎక్కువ పవర్, బ్యాండ్విడ్త్, డేటా ఉత్పత్తి మరియు క్లౌడ్ వనరులు అవసరం. సరిపడా తరచెంటూ కొలవాలి, కానీ ఎక్కువగా కాదు.
థర్మోటాట్ కోసం ఒక నిర్దిష్ట సమయానికి కొలవడం సరిపోలుతుంది, ఎందుకంటే ఉష్ణోగ్రతలు ఎక్కువగా మారవు. రోజుకు ఒక్కసారి కొలుస్తే మధ్యాహ్నంలో వేడి ఉన్నప్పుడు రాత్రి ఉష్ణోగ్రతలకు హీట్ చేయవచ్చు, అయితే ఒక సెకను కంటిన్యూగా కొలువితే వాడుకరి ఇంటర్నెట్ వేగం మరియు బ్యాండ్విడ్త్ పై అధిక ప్రభావం, ఎక్కువ శక్తి వినియోగం (బ్యాటరీ తక్కువ ఉండే సెన్సార్లకు సమస్య), మరియు క్లౌడ్ వనరుల ఖర్చు పెరుగుతుంది.
ఫ్యాక్టరీలో ఒక యంత్రం విఫలం అవ్వడం లక్షల డాలర్ల నష్టం కలిగించే పరిశ్రమ గురించి పరిశీలిస్తే, సెకనుకు పలు సార్లు కొలవడం అవసరం కావచ్చు. బ్యాండ్విడ్త్ వృథా అవ్వటం కంటే, యంత్రం విఫలమవ్వక ముందు నిలిపివేసి మేంట్ చేయడానికి అవసరమయిన సమాచారాన్ని ఎప్పటికైనా సేకరించడం మంచిది.
💁 ఈ సందర్భంలో, మీరు టెలిమెట్రీని ముందుగా ప్రాసెస్ చేసేటటువంటి ఎజ్ డివైస్ ఉపయోగించడం గురించి ఆలోచించవచ్చు, ఇది ఇంటర్నెట్ పై ఆధారపడటం తగ్గిస్తుంది.
కనెక్టివిటీ కోల్పోవడం
ఇంటర్నెట్ కనెక్షన్లు నమ్మదగినవి కాని అవుటేజీలు సాధారణం. ఇలాంటి పరిస్థితుల్లో IoT డివైస్ ఏమి చేయాలి - డేటాను కోల్పోవాలా లేదా కనెక్టివిటీ తిరిగి వచ్చినపుడు నిల్వ చేయాలా? ఇది కూడా సందర్భానుసారంగా ఉంటుంది.
థర్మోటాట్ పరికరానికి కొత్త కొలత తీసుకున్న వెంటనే పాత డేటా కోల్పోవచ్చు. ప్రస్తుతం ఉష్ణోగ్రత ఆధారంగా హీట్ ఆన్/ఆఫ్ నిర్ణయించబడుతుంది.
యంత్రం డేటాను నిల్వ చేయడం మంచిది, ముఖ్యంగా ధ్రువీకరణ కోసం. ఆన్లైన్ అధ్యయనాలు డేటా లోపాలను కన్స్టెంట్ అంతరం లో పరిశీలించి గుర్తిస్తాయి, ఇది భవిష్యత్తు మరమత్తుకు ఉపయోగపడుతుంది. కనుక డివైస్ ఇంటర్నెట్ నిలిపివేత సమయంలో సేకరించబడ్డ అన్ని టెలిమెట్రీని నిల్వ చేసి, తిరిగి కనెక్టయ్యాక పంపుతుండగలదు.
IoT డివైస్ డిజైనర్లు డివైస్ ఇంటర్నెట్ నిలిపివేత కాలంలో కూడా విలువైన నిర్ణయాలు తీసుకోవగలదా అని ఆలోచించాలి. మంచి థర్మోటాట్ ఇలాంటి లోపం ఉంటే కూడా కొన్ని నియంత్రణలు స్వయంగా చేయగలగాలి.
MQTT కనెక్టివిటీ కోల్పోయినప్పుడు సందేశాల డెలివరీకి డివైస్ మరియు సర్వర్ కోడ్ బాధ్యత వహించాలి, ఉదాహరణకి అన్ని సందేశాలు ప్రతిస్పందనతో రిప్లై టాపిక్ లో వస్తున్నాయనీ పరిక్షించి, లేకపోతే వాటిని తర్వాత మళ్లీ ప్లే చేయడానికి క్యూకి ఉంచడం.
ఆదేశాలు (Commands)
క్లౌడ్ నుండి డివైస్ కు పంపే సందేశాలు, ఏదో చేయమని గూర్చి ఆదేశాలు. ఎక్కువ సందర్భాల్లో ఇది యాక్చ్యుయేటర్ ద్వారా అవుట్పుట్ ఇవ్వాలని ఉంటుంది, కానీ డివైస్ యొక్క స్వయం ఆదేశాలు (రీస్టార్ట్, అదనపు టెలిమెట్రీ సేకరణ) కూడా కావచ్చు.
థర్మోటాట్ క్లౌడ్ నుండి హీట్ ఆన్ చేయమని ఆదేశం తీసుకోగలదు. అన్ని సెన్సార్ల టెలిమెట్రీ ఆధారంగా క్లౌడ్ హీట్ ఆన్ చేయాలని నిర్ణయిస్తే, సరైన ఆదేశం పంపుతుంది.
MQTT బ్రోకర్ కి ఆదేశాలు పంపండి
మన ఇంటర్నెట్ నియంత్రిత నైట్లైట్ లో తదుపరి దశ, సర్వర్ కోడ్ IoT డివైస్ కి లైట్ లెవెల్స్ ఆధారంగా కంట్రోలింగ్ కోసం ఆదేశం పంపడం.
-
VS Code లో సర్వర్ కోడ్ ఓపెన్ చేయండి
-
client_telemetry_topicడిక్లరేషన్ తర్వాత క్రింది లైన్ జత చేయండి, ఆదేశాలు పంపాల్సిన టాపిక్ నిర్వచించడానికి:server_command_topic = id + '/commands' -
handle_telemetryఫంక్షన్ చివర క్రింది కోడ్ జత చేయండి:command = { 'led_on' : payload['light'] < 300 } print("Sending message:", command) client.publish(server_command_topic, json.dumps(command))ఇది JSON సందేశాన్ని కమాండ్ టాపిక్ కి పంపుతుంది,
led_onఅనే విలువ నిజం లేక false గా ఉంటుంది, లైట్ 300 కంటే తక్కువ అయితే led_on నిజం. కాంతి తక్కువ అంటే డివైస్ LED ఆన్ చేయమని సూచన. -
కోడ్ ను మునుపటి విధంగా నడపండి
-
మీ ఫిజికల్ లేదా వర్చువల్ డివైస్ ద్వారా లైట్ స్థాయిలను సర్దుబాటు చేయండి. టర్మినల్ లో సందేశాలు అందుతూనే, ఆదేశాలు పంపబడుతున్నాయి:
(.venv) ➜ nightlight-server python app.py Message received: {'light': 0} Sending message: {'led_on': True} Message received: {'light': 400} Sending message: {'led_on': False}
💁 టెలిమెట్రీ మరియు ఆదేశాలు ఒక్కో టాపిక్ పై మాత్రమే పంపబడతాయి. డివైసుల నుండి టెలిమెట్రీలు ఒక్కటే టాపిక్ లో వస్తాయి, మరియు ఆదేశాలు కూడా. ప్రత్యేక డివైస్ కి ఆదేశం పంపాలంటే ప్రతి డివైస్ కి ప్రత్యేక IDతో టాపిక్లు ఉండాలి, ఉదా:
/commands/device1,/commands/device2. ఈ విధంగా డివైస్ తనకైనటి మాత్రమే వినిపించవచ్చు.
💁 ఈ కోడ్ను code-commands/server ఫోల్డర్ లో కనుగొనవచ్చు.
IoT డివైస్ లో ఆదేశాలు హ్యాండిల్ చేయండి
ఇప్పుడు సర్వర్ నుండి ఆదేశాలు పంపడం మొదలైందని, IoT డివైస్ లో కూడా ఆదేశాలను స్వీకరించి LED నియంత్రించేందుకు కోడ్ జత చేయగలరు.
MQTT బ్రోకర్ నుండి ఆదేశాలు వినడానికి క్రింది దశలను అనుసరించండి:
ఈ కోడ్ రాయబెట్టి నడుస్తున్న తర్వాత, లైట్ స్థాయిలను మార్చి ప్రయోగం చేయండి. సర్వర్ మరియు డివైస్ అవుట్పుట్ చూడండి, అలాగే LED ప్రభావాన్ని గమనించండి.
కనెక్టివిటీ కోల్పోవడం
క్లౌడ్ సర్వీస్ ఆఫ్లైన్ IoT డివైస్ కు ఆదేశం పంపాలంటే ఎలా చేయాలనే ప్రశ్నకు సమాధానం కూడా సందర్భానుసారంగా ఉంటుంది.
లేటెస్ట్ ఆదేశం తర్వాత వాడేది ఇంతకు ముందు వచ్చిన ఆదేశాలు అవసరం లేనప్పుడు వాటిని తీసుకోకూడదు. హీట్ ఆన్ ఆదేశం తరువాత హీట్ ఆఫ్ ఆదేశం పంపితే ఆన్ ఆదేశాన్ని మర్చిపోవచ్చు.
ఆదేశాలు క్రమంలో అమలు కావలసినప్పుడు, కనెక్టివిటీ తిరిగి వచ్చిన తరువాతే ఆ ఆదేశాలను క్రమబద్ధంగా పంపాలి.
✅ దీని కోసం డివైస్ లేదా సర్వర్ కోడ్ MQTT లో ఆదేశాలు ఎప్పుడూ క్రమంలో పంపడం మరియు నిర్వహించడం ఎలా నిర్ధారిస్తుంది?
🚀 సవాలు
మునుపటి మూడు పాఠాలలో మీ ఇంటి, పాఠశాల లేదా కార్యాలయంలో ఉన్న ఎన్ని IoT డివైసులు ఉన్నా వాటిని లิส్ట్ చేసి అవి మైక్రోకంట్రోలర్ల పరంగా పునాది, లేదా సింగిల్-బోర్డ్ కమ్యూటర్ పరంగా లేదా విమిక్షముగా ఉన్నాయో తేల్చండి. వాటి సెన్సార్లు మరియు యాక్చ్యుయేటర్లు ఏమిటో ఆలోచించండి.
ఆ డివైసులు ఏ సందేశాలు పంపుతాయో లేదా అందుకుంటాయో ఆలోచించండి. వారు పంపే టెలిమెట్రీ ఏమిటి? వారు తీసుకునే సందేశాలు లేదా ఆదేశాలు ఏమిటి? మీరు వీటిని సురక్షితంగా ఉంటాయనుకుంటున్నారా?
లెక్చర్ తరువాత క్విజ్
సమీక్ష & స్వీయ అధ్యయనం
MQTT వికీపీడియా పేజీ పై MQTT గురించి మరింత చదవండి.
మీరు స్వయంగా Mosquitto ఉపయోగించి MQTT బ్రోకర్ నడపాలని ప్రయత్నించండి మరియు మీ IoT పరికరం మరియు సర్వర్ కోడ్ నుండి దానికి కనెక్ట్ అవ్వండి.
💁 సూచన - డిఫాల్ట్గా Mosquitto అనామక కనెక్షన్లు (అంటే యూజర్నేమ్ మరియు పాస్వర్డ్ లేకుండా కనెక్ట్ కావడం) అనుమతించదు, మరియు అది నడుస్తున్న కంప్యూటర్ వెలుపల నుండి కనెక్షన్లను అనుమతించదు. మీరు దీన్ని క్రింది
mosquitto.confకాన్ఫిగరేషన్ ఫైల్ తో పరిష్కరించవచ్చు:listener 1883 0.0.0.0 allow_anonymous true
అనుసంధానం
MQTT మరియు ఇతర కమ్యూనికేషన్ ప్రోటోకోల్స్ మధ్య తేడాలు మరియు సారూప్యాలను పోల్చండి
వివరణ నోటు: ఈ డాక్యుమెంట్ను AI అనువాద సేవ Co-op Translator ద్వారా అనువదించబడింది. మేము సరిగ్గా అనువదించడానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో తప్పులు లేదా లోపాలు ఉండవచ్చు. మూల ఆంగ్ల డాక్యుమెంట్ను అధికారిక మూలంగా పరిగణించాలి. అత్యవసర సమాచారం కోసం, నిపుణుల చేతుల అనువాదాన్ని సూచిస్తాము. ఈ అనువాదం వలన వచ్చే ఎలాంటి గందరగోళాలకో, అవగాహన లోపాలకు మేము బాధ్యత వహించము.










