You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/te/3-transport/lessons/4-geofences
localizeflow[bot] 8671d5c4aa
chore(i18n): sync translations with latest source changes (#571)
6 months ago
..
README.md chore(i18n): sync translations with latest source changes (#571) 6 months ago
assignment.md chore(i18n): sync translations with latest source changes (#571) 6 months ago

README.md

జియోఫెన్సెస్

ఈ పాఠం యొక్క స్కెచ్‌నోట్ అవలోకనం

స్కెచ్‌నోట్ నిత్య నరసింహన్ ద్వారా. పెద్ద వెర్షన్ కోసం చిత్రం క్లిక్ చేయండి.

ఈ వీడియో జియోఫెన్సెస్‌ను మరియు Azure మ్యాప్స్‌లో వాటిని ఎలా ఉపయోగించాలో ఒక అవలోకనం ఇస్తుంది, ఈ పాఠంలో కవర్ చేయబోయే విషయాలు:

Microsoft Developer IoT షో నుంచి Azure మ్యాప్స్‌తో జియోఫెన్సింగ్

🎥 వీడియో చూడద için పై చిత్రం క్లిక్ చేయండి

ప్రీ-లెక్చర్ క్విజ్

ప్రీ-లెక్చర్ క్విజ్

పరిచయం

గత 3 పాఠాలలో, మీరు మీ వ్యవసాయంపై మరలు నుండి ప్రాసెసింగ్ హబ్‌కి దిగువ ప్రయాణిస్తున్న ట్రక్కులను కనుగొనడానికి IoT ఉపయోగించారు. మీరు GPS డేటాను పట్టుకున్నారు, దాన్ని క్లౌడ్‌కు పంపించి నిల్వ చేస్తూ, మ్యాప్‌పై దాన్ని దృష్టాంతరించారు. మీ సరఫరా గొలుసును మరింత సమర్థవంతం చేసే తదుపరి దశ, ఒక ట్రక్ ప్రాసెసింగ్ హబ్‌కు చేరబోతున్నప్పుడు అలర్ట్ పొందడం, తద్వారా అన్‌లోడ్ అవసరమైన టీమ్ ఫోర్క్‌లిఫ్ట్‌లు మరియు ఇతర పరికరాలతో సిద్ధంగా ఉండగలరు. ఈ విధంగా, వారు త్వరగా అన్‌లోడ్ చేయగలరు, మరియు మీరు ట్రక్ మరియు డ్రైవర్ కోసం వేచి ఉండటం తక్కువ చేస్తారు.

ఈ పాఠంలో మీరు జియోఫెన్సులు గురించి నేర్చుకుంటారు - ప్రాసెసింగ్ హబ్‌కి 2 కి.మీ నిమిషాలను డ్రైవ్ చేసే పరిధిలో ఉన్న లొకేషన్లు వంటి నిర్వచించబడిన జియోటోపోగ్రాఫిక్ ప్రాంతాలు, మరియు GPS కోఆర్డినేట్‌లు ఒక జియోఫెన్స్ లోపల లేదా బయట ఉన్నాయో పరీక్షించడం, దీని ద్వారా మీ GPS సెన్సార్ ఏ ప్రాంతం చేరిందో లేదా దాటి పోయిందో చూడవచ్చు.

ఈ పాఠంలో మేము కవర్ చేస్తాము:

🗑 ఇది ఈ ప్రాజెక్ట్‌లో చివరి పాఠం, కాబట్టి ఈ పాఠం మరియు అసైన్‌మెంట్ పూర్తి చేసిన తరువాత, మీ క్లౌడ్ సేవలను శుభ్రం చేయటం మర్చిపోకండి. మీరు అసైన్‌మెంట్ చేయడానికి సేవలు అవసరం, కాబట్టి ముందుగా పూర్తి చేసుకోండి.

దీని కోసం ఎలా చేయాలో గైడ్‌పై సూచనలు కోసం మీ ప్రాజెక్ట్ శుభ్రపరిచే గైడ్ ను చూడండి.

జియోఫెన్సెస్ అంటే ఏమిటి

జియోఫెన్స్ అంటే ఒక వాస్తవ ప్రపంచ భౌగోళిక ప్రాంతానికి వర్చువల్ సరిహద్దు. జియోఫెన్సెస్ సర్కిల్స్ గా ఉండవచ్చు, ఒక పాయింట్ మరియు వ్యాసార్థం ద్వారా నిర్వచించబడతాయి (ఉదాహరణకు, భవనం చుట్టూ 100 మీటర్ల వ్యాసార్థం కలిగిన వృత్తం), లేదా స్కూల్ జోన్, నగరమితులు, విశ్వవిద్యాలయం లేదా కార్యాలయ క్యాంపస్ వంటి ప్రాంతాన్ని కవరిస్తూ ఉన్న పోలీగాన్.

Microsoft కంపెనీ స్టోర్ చుట్టూ ఒక వృత్తాకార జియోఫెన్స్, Microsoft వెస్ట్ క్యాంపస్ చుట్టూ పోలీగాన్ జియోఫెన్స్ చూపు

💁 మీరు తెలియకుండానే జియోఫెన్సును ఉపయోగించకపోవచ్చు. మీరు iOS రిమైండర్స్ యాప్ లేదా Google Keep ద్వారా స్థలంపై ఆధారమై రిమైండర్ సెట్ చేసినట్లయితే, మీరు జియోఫెన్స్ ఉపయోగించారు. ఈ యాప్స్ ఇచ్చిన స్థలాన్ని ఆధారంగా జియోఫెన్స్ సెట్ చేసి, మీ ఫోన్ ఆ జియోఫెన్స్‌లోకి ప్రవేశిస్తున్నప్పుడు అలర్ట్ ఇస్తాయి.

కారు లేదా వాహనం జియోఫెన్స్ లోపల లేదా బయట ఉన్నదాన్ని తెలుసుకోవడం అనేక కారణాలు ఉన్నాయి:

  • అన్‌లోడింగ్‌కి తయారీ - ఒక వాహనం సైట్‌లో చేరిందని సమాచారం అందించడం, అన్‌లోడ్ టీమ్‌ను సిద్ధంగా ఉంచడానికి సహాయం చేస్తుంది, దీనివల్ల వాహనం వేచి ఉండే సమయం తగ్గుతుంది. దీని ద్వారా డ్రైవర్ ఒకరోజుకు ఎక్కువ డెలివరీలు చేయగలుగుతాడు.
  • పన్నుల సమర్థత - కొన్ని దేశాలు, ఉదాహరణకు న్యూజిలాండ్, ప్రజా రహదారులపై మాత్రమే వాహన బరువుపై డీజిల్ వాహనాల కోసం రోడ్డు పన్నులు వేస్తాయి. జియోఫెన్సెస్ ఉపయోగించి మీరు ప్రజా రహదారులపై డ్రైవ్ చేసిన దూరాన్ని ట్రాక్ చేయగలరు, ఫార్మ్లు లేదా లాగింగ్ ప్రాంతాలు వంటి ప్రైవేట్ రహదారులపై కాకుండా.
  • దొంగతనం మానిటరింగ్ - వాహనం ఒక నిర్దిష్ట ప్రాంతంలో మాత్రమే ఉండాలని ఉండగా (ఉదాహరణకు వ్యవసాయంలో), అది జియోఫెన్స్ బయటకు వెళ్ళితే దొంగతనం అయ్యిందని భావించవచ్చు.
  • స్థలం నియంత్రణ - పని స్థలం, వ్యవసాయ భూమి లేదా ఫ్యాక్టరీలో కొన్ని వాహనాలకు అనుమతి లేనిది ఉండవచ్చు, ఉదాహరణకు రసాయన ఎరువులు మరియు పెస్టిసైడ్స్ తీసుకువెళ్లే వాహనాలను ఆర్గానిక్ పంటల ప్రాంతాల నుంచి దూరంగా ఉంచుట. జియోఫెన్స్ లో ప్రవేశిస్తే వాహనం నియమావళి ఉల్లంఘనలో ఉంటుందని తెలుసుకుని డ్రైవర్‌కు తెలియచేయవచ్చు.

మీరు జియోఫెన్సులకు ఇతర ఉపయోగాలను ఎంచుకోగలరా?

Azure మ్యాప్స్, మీరు గత పాఠంలో GPS డేటాను చూడటానికి ఉపయోగించిన సేవ, మీకు జియోఫెన్సులను నిర్వచించడానికి, ఆపై ఒక పాయింట్ జియోఫెన్స్ లోపల లేదా బయట ఉందో పరీక్షించడానికి అనుమతిస్తుంది.

జియోఫెన్స్ నిర్వచించడం

జియోఫెన్సులు GeoJSON ఉపయోగించి నిర్వచించబడతాయి, గత పాఠంలో మ్యాప్‌కి జతచేసిన పాయింట్ల లాంటివే. ఈ సందర్భంలో, ఇది Point విలువల యొక్క FeatureCollection కాకుండా, ఒక Polygon కలిగిన FeatureCollection ఉంటుంది.

{
   "type": "FeatureCollection",
   "features": [
     {
       "type": "Feature",
       "geometry": {
         "type": "Polygon",
         "coordinates": [
           [
             [
               -122.13393688201903,
               47.63829579223815
             ],
             [
               -122.13389128446579,
               47.63782047131512
             ],
             [
               -122.13240802288054,
               47.63783312249837
             ],
             [
               -122.13238388299942,
               47.63829037035086
             ],
             [
               -122.13393688201903,
               47.63829579223815
             ]
           ]
         ]
       },
       "properties": {
         "geometryId": "1"
       }
     }
   ]
}

పోలీగాన్ పై ప్రతి పాయింట్‌ను ఒక అర్రేగా పొడవు, వెడల్పు జంటగా నిర్వచిస్తారు, మరియు ఈ పాయింట్లు coordinates అని పిలిచే అర్రేలో ఉంటాయి. గత పాఠంలో ఒక Point లో coordinates ఒక 2 విలువల అర్రే (వెడల్పు, పొడవు) అయితే, Polygon కు ఇది 2 విలువలను కలిగిన అర్రేలైన అర్రే.

💁 గుర్తుంచుకోండి, GeoJSON లో longitude, latitude ని పాయింట్లకు ఉపయోగిస్తారు, latitude, longitude కాదు

పోలీగాన్ కոఆర్డినేట్స్ అర్రే వద్దకు, పొలిగాన్ పాయింట్ల కంటే ఒకటి ఎక్కువ ఎంట్రీ ఉంటుంది, చివరి ఎంట్రీ మొదటి ఎంట్రీతో సమానంగా ఉంటుంది, ఇది పోలీగాన్‌ను ముగిస్తుంది. ఉదాహరణకు, ఒక చతురస్రానికి 5 పాయింట్లు ఉంటాయి.

ఒక చతురస్రం మరియు దాని కოఆర్డినేట్లతో

పై చిత్రంలో, ఒక చతురస్రం ఉంది. పోలీగాన్ క్ాఆర్డినేట్లు ఎడమ పై నుంచి 47,-122 వద్ద ప్రారంభమవుతాయి, ఆపై కుడివైపు 47,-121కి, ఆపై దిగువ 46,-121కి, ఆపై కుడి వైపు 46,-122కి, ఆపై మళ్లీ పైకి మొదటి పాయింట్ 47,-122కి వెళ్తాయి. ఇది 5 పాయింట్లు కలిగిన పోలీగాన్ - ఎడమ పై, కుడి పై, కుడి క్రింద, ఎడమ క్రింద, ఆపై మూసివేయాలని ఎడమ పై.

మీ ఇంటి లేదా పాఠశాల చుట్టూ ఒక GeoJSON పోలీగాన్ రూపొందించడం ప్రయత్నించండి. GeoJSON.io వంటి టూల్ ఉపయోగించవచ్చు.

టాస్క్ - జియోఫెన్స్ నిర్వచించండి

Azure మ్యాప్స్‌లో జియోఫెన్స్ ఉపయోగించడానికి, మొదట మీరు దాని Azure మ్యాప్స్ ఖాతాకు అప్లోడ్ చేయాలి. అప్లోడ్ చేసిన తరువాత, మీకు వేరే ID లభిస్తుంది, దీన్ని మీరు జియోఫెన్స్‌తో పాయింట్తో పరీక్షించడానికి ఉపయోగించవచ్చు. జియోఫెన్సులను Azure మ్యాప్స్‌లోకి అప్లోడ్ చేసేందుకు మీరు మ్యాప్స్ వెబ్ API ఉపయోగించాలి. మీరు curl అని పిలవబడే టూల్ ఉపయోగించి Azure మ్యాప్స్ వెబ్ API కోల్ చేయవచ్చు.

🎓 కర్ల్ ఒక కమాండ్ లైన్ టూల్, ఇది వెబ్ ఎండ్పాయింట్లపై రిక్వెస్ట్‌లు పంపడానికి ఉపయోగపడుతుంది

  1. మీరు Linux, macOS లేదా Windows 10 తాజా వెర్షన్ ఉపయోగిస్తుంటే, మీకు curl ముందే ఇన్‌స్టాల్ అయి ఉండవచ్చు. తనిఖీ చేసేందుకు మీ టెర్మినల్ లేదా కమాండ్ లైన్ నుండి క్రింది కమాండ్ నిలుపుకోండి:

    curl --version
    

    మీరు కర్ల్ వెర్షన్ సమాచారం కనిపెట్టకపోతే, దాన్ని curl డౌన్లోడ్స్ పేజీ నుండి డౌన్లోడ్ చేసుకోండి.

    💁 మీరు పోస్ట్‌మ్యాన్ లో అనుభవం ఉన్నట్లయితే, మీరు దాన్ని కూడా ఉపయోగించొచ్చు.

  2. పోలీగాన్ కలిగిన GeoJSON ఫైల్ తయారు చేయండి. మీరు GPS సెన్సార్ ద్వారా దీన్ని పరీక్షించబోతున్నారు, కాబట్టి ప్రస్తుత స్థల చుట్టూ పోలీగాన్ చేయండి. మీరు ఎడిట్ చేసిన GeoJSON ఉదాహరణను ఉపయోగించి లేదా GeoJSON.io వంటి టూల్ ఉపయోగించి రూపొందించుకోవచ్చు.

    GeoJSON లో ఒక FeatureCollection ఉండాలి, ఇందులో Feature ఉంటుంది, దాని geometry టైప్ Polygon గా ఉండాలి.

    మీరు తప్పనిసరిగా geometry సమాన లెవెల్లోని properties అంశాన్ని కూడా జోడించాలి, అందులో geometryId ఉండాలి:

    "properties": {
        "geometryId": "1"
    }
    

    మీరు GeoJSON.io ఉపయోగిస్తే, మీరు ఈ అంశాన్ని ఖాళీ ఉండే properties లో మానవీయంగా జోడించాల్సి ఉంటుంది, ఫైల్ డౌన్లోడ్ చేసిన తరువాత లేదా యాప్ లో JSON ఎడిటర్ లో.

    geometryId ఈ ఫైల్‌లో ప్రత్యేకమైనది కావాలి. మీరు ఒకే GeoJSON ఫైలులో బహుళ Features ని పలు జియోఫెన్సులు అప్లోడ్ చేయవచ్చు, ప్రతీ geometryId వేరు ఉండాలి. వివిధ ఫైల్స్ నుండి పలు సార్లు అప్లోడ్ చేసే పోలీగాన్‌లు అదే geometryId కలిగి ఉండొచ్చు.

  3. ఈ ఫైల్‌ను geofence.json గా సేవ్ చేసి, టెర్మినల్ లేదా కన్సోల్‌లో దాని నిల్వ స్థానానికి వెళ్లండి.

  4. ఈ క్రింది curl కమాండ్ రన్ చేసి జియోఫెన్స్ సృష్టించండి:

    curl --request POST 'https://atlas.microsoft.com/mapData/upload?api-version=1.0&dataFormat=geojson&subscription-key=<subscription_key>' \
         --header 'Content-Type: application/json' \
         --include \
         --data @geofence.json
    

    URLలో <subscription_key> ని మీ Azure మ్యాప్స్ ఖాతాకు సంబంధించిన API కీతో మార్చండి.

    URL ద్వారా https://atlas.microsoft.com/mapData/upload API వాడి మ్యాప్ డేటాను అప్లోడ్ చేస్తారు. ఈ కాల్‌లో api-version పారామీటర్ ఉంటుంది, ఇది Azure మ్యాప్స్ API ఎడిషన్‌ను సూచిస్తుంది, API కాలం మారినప్పటికీ వెనుకకు అనుకూలంగా కుదిరేలా ఉంటుంది. అప్లోడ్ డేటా ఫార్మాట్ geojson గా సెట్ చేయబడుతుంది.

    ఇది POST రిక్వెస్ట్‌ను పంపుతుంది మరియు ప్రతిస్పందన హెడ్డర్ల జాబితాను ఇస్తుంది, అందులో ఒక హెడ్డర్ పేరు location ఉంటుంది.

    content-type: application/json
    location: https://us.atlas.microsoft.com/mapData/operations/1560ced6-3a80-46f2-84b2-5b1531820eab?api-version=1.0
    x-ms-azuremaps-region: West US 2
    x-content-type-options: nosniff
    strict-transport-security: max-age=31536000; includeSubDomains
    x-cache: CONFIG_NOCACHE
    date: Sat, 22 May 2021 21:34:57 GMT
    content-length: 0
    

    🎓 మీరు వెబ్ ఎండ్పాయింట్‌ని పిలవటం లో, మీరు ? ద్వారా కీ విలువ జంటలుగా పేరామితులను జతచేయవచ్చు, వాటిని & ద్వారా విడగొట్టండి.

  5. Azure మ్యాప్స్ ఇది వెంటనే ప్రాసెస్ చేయదు, కాబట్టి location హెడ్డర్‌లో ఉన్న URLకి GET రిక్వెస్ట్ చేయండి అప్లోడ్ అయింది లేదా లేదని చూసేందుకు. ఈ URL చివర &subscription-key=<subscription_key> జతచేయండి, <subscription_key> ని మీ API కీతో మార్చండి. క్రింది కమాండ్ నడపండి:

    curl --request GET '<location>&subscription-key=<subscription_key>'
    

    <location> ని location హెడ్డర్ విలువతో, <subscription_key> ని మీ Azure మ్యాప్స్ ఖాతా API కీతో మార్చండి.

  6. ప్రతిస్పందనలో status విలువ చూడండి. అది Succeeded కాకపోతే, ఒక నిమిషం వేచి మళ్లీ ప్రయత్నించండి.

  7. స్టేటస్ Succeeded అయితే, ప్రతిస్పందనలోని resourceLocation ను చూడండి. ఇందులో GeoJSON αντικ/object కి ప్రత్యేక ID (UDID గా పిలువబడుతుంది) ఉందని పేర్కొంటుంది. UDID metadata/ తర్వాత ఉంటుంది, api-version భాగం కాని. ఉదాహరణకు, resourceLocation ఇలాంటిదైతే:

    {
      "resourceLocation": "https://us.atlas.microsoft.com/mapData/metadata/7c3776eb-da87-4c52-ae83-caadf980323a?api-version=1.0"
    }
    

    ఆ UDID 7c3776eb-da87-4c52-ae83-caadf980323a గా ఉంటుంది.

    ఈ UDID ను మీరు జియోఫెన్స్ పరీక్షించుకోవడానికీ ఉంచుకోండి.

జియోఫెన్స్ పై పాయింట్లు పరీక్షించడం

పోలీగాన్ Azure మ్యాప్స్ లో అప్లోడ్ అయిన తర్వాత, మీరు ఒక పాయింట్ జియోఫెన్స్ లోపల లేదా బయట ఉందో తెలుసుకోవచ్చు. మీరు వెబ్ API అభ్యర్థన చేసి, జియోఫెన్స్ UDID మరియు పరీక్షించే పాయింట్ latitude, longitude పంపాలి.

ఈ అభ్యర్థన పుట్టిన సమయంలో మీరు searchBuffer అనే విలువను కూడా పంపవచ్చు. ఇది మ్యాప్స్ APIకి ఎంత ఖచ్చితత్వంతో ఫలితాలు ఇవ్వాలో సూచిస్తుంది. ఎందుకంటే GPS 100% ఖచ్చితంగా ఉండదు, కొన్నిసార్లు స్థలాలు మీటర్ల దూరంలో తప్పు ఉండవచ్చు. searchBuffer కు డిఫాల్ట్ విలువ 50 మీటర్లు, కానీ మీరు 0 నుండి 500 మీటర్లు వరకు సెట్ చేయవచ్చు.

API నుంచి వచ్చే ఫలితాల్లో ఒక భాగం జియోఫెన్స్ సరిహద్దు దగ్గరున్న మీClosest point వరకు దూరం (distance) ఉంటుంది, ఇది పాజిటివ్ అయితే పాయింట్ జియోఫెన్స్ వెలుపల ఉందని, నెగెటివ్ అయితే లోపల ఉందని తెలియజేస్తుంది. ఈ దూరం search buffer కన్నా తక్కువ అయితే నిజమైన మీటర్ల దూరం ఇవ్వబడుతుంది, లేదంటే 999 లేదా -999 విలువ వస్తుంది. 999 అంటే పాయింట్ search buffer కంటే ఎక్కువ దూరం జియోఫెన్స్ వెలుపల ఉంది, -999 అంటే search buffer కంటే ఎక్కువ లోపల ఉంది.

50 మీటర్ల search buffer తో జియోఫెన్స్

పై చిత్రంలో, జియోఫెన్స్ కి 50 మీటర్లు search buffer ఉంది.

  • జియోఫెన్స్ మధ్యలో, search buffer లోపల ఉన్న పాయింట్‌కు -999
  • search buffer వెలుపల ఉన్న పాయింట్‌కు 999
  • జియోఫెన్స్ లోపల మరియు search buffer లోపల ఉండి, జియోఫెన్స్ నుండి 6 మీటర్లు దూరం ఉన్న పాయింట్‌కు 6 మీ
  • జియోఫెన్స్ వెలుపల మరియు search buffer లోపల, 39 మీటర్లు దూరం ఉన్న పాయింట్‌కు 39 మీ

పాయింట్ సరిహద్దు వరకు దూరాన్ని తెలుసుకోవడం ముఖ్యము, దీన్ని ఇతర GPS రీడింగులు, వేగం మరియు రహదారి సమాచారం తో కలిపి వాహన స్థానం ఆధారంగా నిర్ణయాలు తీసేటప్పుడు ఉపయోగిస్తారు.

ఉదాహరణకి, ఒక వాహనం ఒక రహదారిపై ప్రయాణిస్తున్నట్లు GPS రీడింగులు చూపిస్తుంటే, ఆ రహదారి కానివైపు జియోఫెన్స్ ఉంది. ఒక GPS విలువ తప్పుగా వాహనం జియోఫెన్స్ లోపల ఉండటం చూపిస్తే, వాహన ప్రవేశం అనుమతించని ప్రాంతం ఉన్నందున, దాన్ని నిర్లక్ష్యం చేయవచ్చు.

Microsoft క్యాంపస్ పక్కన 520 రహదారిపై వాహనం దొర్లుతున్న GPS ట్రెయిల్, కానీ క్యాంపస్ లో ఒక తప్పు GPS పాయింట్ జియోఫెన్స్ లో ఉంది పై చిత్రంలో, Microsoft కాంపస్ యొక్క భాగంపై ఒక జియోఫెన్స్ ఉంది. ఎరుపు గీత 520 రహదారి మీద ట్రక్ నడుస్తున్నది చూపిస్తుంది, మరియు గుండ్రాలు GPS రీడింగ్లను సూచిస్తాయి. వీటిలో ఎక్కువ భాగం ఖచ్చితంగా 520 దారిలోనే ఉన్నాయి, కానీ ఒక తప్పు రీడింగ్ జియోఫెన్స్లో ఉంది. ఆ రీడింగ్ సరైనదిగా ఉండకూడదు - ట్రక్ 520 నుండి ఆకస్మికంగా కాంపస్ వైపు మళ్ళి, తిరిగి 520కి రావడానికి రోడ్లు లేవు. ఈ జియోఫెన్స్‌ని తనిఖీ చేసే కోడ్, ఫలితాలపై చర్య తీసుకునే ముందు గత రీడింగ్లను పరిగణలోకి తీసుకోవాలి.

GPS రీడింగ్ సరైనదిగా పరిగణించడం కోసం మీరు అదనంగా ఏ డేటాను తనిఖీ చేయాలి?

టాస్క్ - పాయింట్లను జియోఫెన్స్‌కు వ్యతిరేకంగా పరీక్ష చేయండి

  1. వెబ్ API క్వెరీ కోసం URL నిర్మించడం మొదలు పెట్టండి. ఫార్మాట్:

    https://atlas.microsoft.com/spatial/geofence/json?api-version=1.0&deviceId=gps-sensor&subscription-key=<subscription-key>&udid=<UDID>&lat=<lat>&lon=<lon>
    

    <subscription_key>ని మీ Azure Maps ఖాతా API కీతో మార్చండి.

    <UDID>ని గత టాస్క్ నుంచి జియోఫెన్స్ యొక్క UDIDతో మార్చండి.

    <lat> మరియు <lon>ని మీరు పరీక్షించాలనుకున్న అక్షాంశం మరియు dèశాతో మార్చండి.

    ఈ URL https://atlas.microsoft.com/spatial/geofence/json APIని ఉపయోగించి GeoJSON ఉపయోగించి నిర్వచించిన జియోఫెన్స్‌ను క్వెరీ చేస్తుంది. ఇది 1.0 ఎపి వెర్షన్‌ను లక్ష్యంగా పెట్టుకుంది. deviceId పారామీటర్ తప్పనిసరి, ఇది latitude మరియు longitude వచ్చే పరికరం పేరు అయి ఉండాలి.

    డిఫాల్ట్ సెర్చ్ బఫర్ 50 మీటర్లున్నది, ఇందులో మీరు అదనపు searchBuffer=<distance> పారామీటరును జోడించి దీన్ని మార్చవచ్చు, <distance>ను మీటర్లలో 0 నుండి 500 వరకు సెట్ చేయండి.

  2. ఈ URL కి GET అభ్యర్థన చేయడానికి curl ని ఉపయోగించండి:

    curl --request GET '<URL>'
    

    💁 మీరు BadRequest స్పందన కోడ్ పొందితే, లోపం ఇలా ఉంటుంది:

    Invalid GeoJSON: All feature properties should contain a geometryId, which is used for identifying the geofence.
    

    అంటే మీ GeoJSONలో properties విభాగంలో geometryId లేదు. మీరు GeoJSONను సరిచేసి, పై దశలను మళ్లీ చేసి, కొత్త UDIDని పొందాలి.

  3. స్పందనలో జియోమెట్రీల జాబితా ఉంటుంది, GeoJSONలో నిర్వచించిన ప్రతి పొలిగాన్‌కు ఒకటి. ప్రతి జియోమెట్రీకి 3 ప్రధాన ఫీల్డ్స్ ఉంటాయి: distance, nearestLat, మరియు nearestLon.

    {
        "geometries": [
            {
                "deviceId": "gps-sensor",
                "udId": "7c3776eb-da87-4c52-ae83-caadf980323a",
                "geometryId": "1",
                "distance": 999.0,
                "nearestLat": 47.645875,
                "nearestLon": -122.142713
            }
        ],
        "expiredGeofenceGeometryId": [],
        "invalidPeriodGeofenceGeometryId": []
    }
    
    • nearestLat మరియు nearestLon అంటే పరీక్షిస్తున్న ప్రాంతానికి అత్యంత సమీపంలోని జియోఫెన్స్ అంచు పాయింట్ యొక్క అక్షాంశం మరియు dèశా.

    • distance అంటే పరీక్షిస్తున్న స్థానంలో నుండి జియోఫెన్స్ అంచు పాయింట్ వరకు దూరం. నెగెటివ్ సంఖ్యలు అంటే జియోఫెన్స్ లోపల, పాజిటివ్ అంటే వెలుపల. ఈ విలువ 50 (డిఫాల్ట్ సెర్చ్ బఫర్) కన్నా తక్కువ లేదా 999 అవుతుంది.

  4. జియోఫెన్స్ లోపల లేదా బయట ఉన్న స్థలాలతో ఎన్నోసార్లు పరీక్షించండి.

సర్వర్‌లెస్ కోడ్ నుండి జియోఫెన్స్ ఉపయోగించండి

ఇప్పుడు మీరు Functions ఆప్‌కు కొత్త ట్రిగ్గర్ జోడించి IoT హబ్ GPS ఈవెంట్ డేటాను జియోఫెన్స్‌తో పరీక్షించవచ్చు.

కన్స్యూమర్ గ్రూప్స్

మునుపటి పాఠాల నుండి గుర్తుంచుకోండి, IoT హబ్ hub కి వచ్చిన కానీ ప్రాసెస్ కాలేదు ఈవెంట్లను మళ్లీ ప్లే చేయడానికి అనుమతిస్తుంది. కాని ఒకదానికి కాక కొన్ని ట్రిగ్గర్లు కనెక్ట్ అయితే ఏమవుతుంది? ఏది ఈవెంట్లను ప్రాసెస్ చేసిందో ఎలా తెలుసుకుంటుంది?

జవాబు అది సాధ్యం కాదు! మీరు వేర్వేరు కనెక్షన్లను నిర్వచించి ప్రతి కనెక్షన్ అవినీధిగాళ్ళని చదవగలుగుతారు, అవి ఇంకా చదవనిది నుంచి మళ్లీ ప్లే చేయడం నిర్వహించవచ్చు. వీటిని కన్స్యూమర్ గ్రూప్స్ అంటారు. ఎండ్పాయింట్ కు కనెక్ట్ అయినప్పుడు మీరు ఏ కన్స్యూమర్ గ్రూప్ కు కనెక్ట్ కావాలనే చొరవను పేర్కొనగలరు. ప్రతి అప్లికేషన్ భాగం వేరే కన్స్యూమర్ గ్రూప్ కు కనెక్ట్ అవుతుంది.

One IoT Hub with 3 consumer groups distributing the same messages to 3 different functions apps

తత్త్వంతో, ఒక్క కన్స్యూమర్ గ్రూప్ కి గరిష్టం 5 అప్లికేషన్లు కనెక్ట్ అవ్వవచ్చు, అవన్నీ సమయానుకూలంగా సందేశాలు పొందతాయి. అనుకరించే సందేశాల ప్రాసెసింగ్ నివారించడానికి ఒక్క వినియోగదారుడికి ఒక్క కన్స్యూమర్ గ్రూప్ ను పరిమితం చేయడం మంచిది, మళ్ళీ స్టార్ట్ చేసేటప్పుడు సందేశాలు సరైనవిగా ప్రాసెస్ అవ్వాలి. ఉదాహరణకు, మీరు Functions ఆప్ ని లోకల్ మరియు క్లౌడ్ రెండింటిలో అదే సమయంలో నడిపిస్తే, రెడ్uplicated జిపిఎస్ రీడింగ్లు సંગ્રహం ఖాతాలో నిల్వ అవుతాయి.

ముందటి పాఠంలో మీరు సృష్టించిన IoT హబ్ ట్రిగ్గర్ కోసం function.json ఫైల్ లో ఈవెంట్ హబ్ ట్రిగ్గర్ బైండింగ్ విభాగంలో కన్స్యూమర్ గ్రూప్ ఉంది:

"consumerGroup": "$Default"

ఒక IoT హబ్ సృష్టించినపుడు, మున్నుగా $Default కన్స్యూమర్ గ్రూప్ కుదిరిపోయి ఉంటుంది. మీరు కొత్త ట్రిగ్గర్ జోడించాలంటే కొత్త కన్స్యూమర్ గ్రూప్ ఉపయోగించవచ్చు.

💁 ఈ పాఠంలో మీరు GPS డేటా నిల్వ చేయడానికి ఉపయోగించిన ట్రిగ్గర్ కాకుండా వేరే ఫంక్షన్ ఉపయోగించి జియోఫెన్స్ ని పరీక్షిస్తారు. ఇది కన్స్యూమర్ గ్రూప్స్ ఉపయోగించి కోడ్ ను విడగొట్టి సులభంగా పఠించేందుకు చూపించడానికి. ఉత్పత్తిలో మీ ఆర్కిటెక్చర్ అనేక విధాలుగా ఉండొచ్చు - రెండింటినీ ఒక్క ఫంక్షన్ లో పెట్టడం, స్టోరేజి అకౌంట్ మీద ట్రిగ్గర్ పెట్టి జియోఫెన్స్ తనిఖీ చేయడం, లేదా బహుళ ఫంక్షన్స్ ఉపయోగించడం. "తప్పనిసరి స్వరూపం" లేదు, అది మీ అప్లికేషన్ అవసరాలపై ఆధారపడి ఉంటుంది.

టాస్క్ - కొత్త కన్స్యూమర్ గ్రూప్ సృష్టించండి

  1. మీ IoT హబ్ కోసం geofence అని పేరున్న కొత్త కన్స్యూమర్ గ్రూప్ సృష్టించడానికి ఈ కమాండ్ ను అమలు చేయండి:

    az iot hub consumer-group create --name geofence \
                                     --hub-name <hub_name>
    

    <hub_name>ని మీ IoT హబ్ పేరుతో మార్చండి.

  2. IoT హబ్ యొక్క అన్ని కన్స్యూమర్ గ్రూప్లను చూడాలని ఉన్నట్లయితే, ఈ కమాండ్ ను అమలు చేయండి:

    az iot hub consumer-group list --output table \
                                   --hub-name <hub_name>
    

    <hub_name>ని మీ IoT హబ్ పేరుతో మార్చండి. ఇది అన్ని కన్స్యూమర్ గ్రూపులను చూపిస్తుంది.

    Name      ResourceGroup
    --------  ---------------
    $Default  gps-sensor
    geofence  gps-sensor
    

💁 మీరు మునుపటి పాఠంలో IoT హబ్ ఈవెంట్ మానిటర్ నడిపినప్పుడు $Default కన్స్యూమర్ గ్రూప్‌తో కనెక్ట్ అయ్యింది. అందుకే మీరు ఈవెంట్ మానిటర్ మరియు ట్రిగ్గర్ రెండింటినీ అదే సమయంలో నడిపలేరు. రెండింటినీ నడిపాలంటే, ఫంక్షన్ ఆప్స్ కోసం ఇతర కన్స్యూమర్ గ్రూప్స్ ఉపయోగించండి మరియు ఈవెంట్ మానిటర్ కోసం మాత్రమే $Default ఉంచండి.

టాస్క్ - కొత్త IoT హబ్ ట్రిగ్గర్ సృష్టించండి

  1. మీరు మునుపటి పాఠంలో సృష్టించిన gps-trigger ఫంక్షన్ ఆప్‌కు కొత్త IoT హబ్ ఈవెంట్ ట్రిగ్గర్‌ను జోడించండి. ఈ ఫంక్షన్‌ను geofence-trigger అని పిలవండి.

    ⚠️ మీరు ప్రాజెక్ట్ 2, పాఠం 5 నుండి IoT హబ్ ఈవెంట్ ట్రిగ్గర్ సృష్టించడం కోసం సూచనలు అవసరమైతే చూడవచ్చు.

  2. function.json ఫైల్లో IoT హబ్ కనెక్షన్ స్ట్రింగ్ ను కాన్ఫిగర్ చేయండి. local.settings.json ఫలితం Function Appలో అన్ని ట్రిగ్గర్లకు పంచబడుతుంది.

  3. function.jsonలో consumerGroup విలువను కొత్త geofence కన్స్యూమర్ గ్రూప్ ను సూచించేలా మార్చండి:

    "consumerGroup": "geofence"
    
  4. ఈ ట్రిగ్గర్‌లో మీరు Azure Maps ఖాతా కోసం సబ్‌స్క్రిప్షన్ కీ అవసరం అవుతుంది, అందుకని local.settings.json ఫైలులో MAPS_KEY అనే కొత్త ఎంట్రీని జోడించండి.

  5. Functions App నడిపించి కనెక్ట్ అవుతోందో, సందేశాలు ప్రాసెస్ అవుతుండాయో చూసుకోండి. ముందుగా చేసిన iot-hub-trigger కూడా నడిచి blobలను స్టోరేజ్‌కు అప్లోడ్ చేస్తుంది.

    డూప్లికేట్ GPS రీడింగ్లు blob స్టోరేజిలో నిల్వ కాకపోవడానికి, మీరు క్లౌడ్‌లో నడుస్తున్న Functions Appను ఆపవచ్చు. దీని కోసం ఈ క్రింది కమాండ్ ఉపయోగించండి:

    az functionapp stop --resource-group gps-sensor \
                        --name <functions_app_name>
    

    <functions_app_name>ని మీ Functions App పేరుతో మార్చండి.

    తరువాత ఈ క్రింది కమాండ్ తో బాగు చేస్తే మళ్లీ రన్ చేయవచ్చు:

    az functionapp start --resource-group gps-sensor \
                        --name <functions_app_name>
    

    <functions_app_name>ని మీ Functions App పేరుతో మార్చండి.

టాస్క్ - ట్రిగ్గర్ నుంచి జియోఫెన్స్‌ను పరీక్షించండి

ఈ పాఠంలో మీరు curl ఉపయోగించి ఒక పాయింట్ జియోఫెన్స్ లో అచ్చు వెలుపల ఉందో తెలుసుకున్నారు. ఇలాంటి వెబ్ అభ్యర్థనను మీ ట్రిగ్గర్ నుండి కూడా చేయవచ్చు.

  1. జియోఫెన్స్ UDID అవసరం. దీన్ని local.settings.json లో GEOFENCE_UDID అనే కొత్త ఎంట్రీగా జోడించండి.

  2. కొత్త geofence-trigger ట్రిగ్గర్ నుండి __init__.py ఫైల్ ఓపెన్ చేయండి.

  3. ఫైల顶部కు క్రింది import ను జోడించండి:

    import json
    import os
    import requests
    

    requests ప్యాకేజ్ వెబ్ API కాల్స్ చేయడంలో సహాయపడుతుంది. Azure Maps కు Python SDK లేదు, కాబట్టి Python కోడ్ లో దీనిని ఉపయోగించడానికి వెబ్ API కాల్స్ చేయాలి.

  4. main ఫంక్షన్ ప్రారంభంలో క్రింది రెండు పంక్తులు జోడించండి, Maps సబ్బస్క్రిప్షన్ కీ పొందడానికి:

    maps_key = os.environ['MAPS_KEY']
    geofence_udid = os.environ['GEOFENCE_UDID']    
    
  5. for event in events లూప్ లో, ప్రతి ఈవెంట్ నుండి అక్షాంశం, dèశా పొందడానికి క్రింది కోడ్ జోడించండి:

    event_body = json.loads(event.get_body().decode('utf-8'))
    lat = event_body['gps']['lat']
    lon = event_body['gps']['lon']
    

    ఈ కోడ్ ఈవెంట్ బాడీ JSONని డిక్షనరీగా మార్చి, gps ఫీల్డ్ నుంచి lat మరియు lon తీసుకుంటుంది.

  6. requests ఉపయోగిస్తునప్పుడు, మీరు curl లాగా URL బాగా చేర్చకుండా, URL భాగం మాత్రమే వాడి పారామీటర్లను డిక్షనరీగా ఇవ్వవచ్చు. క్రింది కోడ్ ఉపయోగించి URL ని నిర్వచించి పారామీటర్లను సెటప్ చేయండి:

    url = 'https://atlas.microsoft.com/spatial/geofence/json'
    
    params = {
        'api-version': 1.0,
        'deviceId': 'gps-sensor',
        'subscription-key': maps_key,
        'udid' : geofence_udid,
        'lat' : lat,
        'lon' : lon
    }
    

    params డిక్షనరీ లో ఉన్న అంశాలు మీరు curl క్వరీలో ఇచ్చిన కీ-విలువ జంటలకు సరిపోతాయి.

  7. వెబ్ API కాల్ చేయడానికి క్రింది కోడ్ జోడించండి:

    response = requests.get(url, params=params)
    response_body = json.loads(response.text)
    

    ఈ కోడ్ URL తో పారామీటర్లను పాస్ చేసి, స్పందన వస్తుంది.

  8. దీని తరువాత క్రింది కోడ్ జోడించండి:

    distance = response_body['geometries'][0]['distance']
    
    if distance == 999:
        logging.info('Point is outside geofence')
    elif distance > 0:
        logging.info(f'Point is just outside geofence by a distance of {distance}m')
    elif distance == -999:
        logging.info(f'Point is inside geofence')
    else:
        logging.info(f'Point is just inside geofence by a distance of {distance}m')
    

    ఈ కోడ్ ఒకే ఒక జియోమెట్రీ ఆశాంశంతో ఉండాలని అనుకుంటుంది, దానిలోని distance తీసుకుంటుంది. ద్రూరం ఆధారంగా విభిన్న సందేశాలను లాగ్ చేస్తుంది.

  9. ఈ కోడ్ నడపండి. లాగింగ్లో GPS కోఆర్డినేట్లు జియోఫెన్స్‌లో ఉన్నాయో లేరో, ఉంటే దూరం కూడా చూపిస్తుంది. వివిధ జియోఫెన్స్‌తో, మీ GPS సెన్సార్ స్థానం ఆధారంగా దీనిని ప్రయత్నించండి. సెన్సార్‌ని మార్చి (ఉదా: మొబైల్ ఫోనులో WiFi కనెక్షన్ ద్వారా, లేదా వర్చువల్ IoT పరికరంలో వేరు కొఆర్డినేట్లతో) ఈ మార్పును చూడండి.

  10. సిద్ధంగా ఉన్నప్పుడు, ఈ కోడ్‌ను మీ Functions ఆప్‌లో క్లౌడ్‌కు డిప్లాయ్ చేయండి. కొత్త అప్లికేషన్ సెట్టింగ్స్ అప్లోడ్ చేయడం మర్చిపోకండి.

    ⚠️ అవసరమైతే ప్రాజెక్ట్ 2, పాఠం 5 నుండి అప్లికేషన్ సెట్టింగ్స్ ఎక్కింపు సూచనలు చూడండి.

    ⚠️ అవసరమైతే ప్రాజెక్ట్ 2, పాఠం 5 నుండి Functions ఆప్ డిప్లాయ్ సూచనలు చూడండి.

💁 మీరు ఈ కోడ్‌ను code/functions ఫోల్డర్లో కనుగొనవచ్చు.


🚀 సవాలు

ఈ పాఠంలో మీరొకే పొలిగాన్ ఉన్న GeoJSON ఫైల్ తో ఒక జియోఫెన్స్ జోడించారు. మీరు ఒకేసారి అనేక పొలిగాన్లు ఉన్న GeoJSON అందజేయవచ్చు, అవి properties విభాగంలో వేర్వేరు geometryId విలువలు కలిగి ఉండాలి.

ఒకటి కంటే ఎక్కువ పొలిగాన్లు ఉన్న GeoJSON అప్లోడ్ చేసి, GPS కోఆర్డినేట్లు ఎటువంటి పొలిగాన్‌కి అత్యంత సమీపంగా లేదా లోపల ఉన్నాయో కనుగొనడం కోసం మీ కోడ్ సవరించండి.

తరగతి ముగింపు క్విజ్

Post-lecture quiz

రివ్యూ & స్వీయ అధ్యయనం

అసైన్‌మెంట్

Twilio ఉపయోగించి నోటిఫికేషన్లు పంపండి


అస్పృశ్యం:
ఈ దస్త్రాన్ని AI భాషಾಂತರ సర్వీస్ Co-op Translator ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నిస్తాము గానీ, ఆటోమేటెడ్ అనువాదాల్లో లోపాలు లేదా తప్పులు ఉండవచ్చు అని దయచేసి గమనించండి. మౌలిక భాషలో ఉన్న అసలు దస్త్రాన్ని అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారం కోసం, ప్రొఫెషనల్ మానవ భాషాంతరం సిఫారసు చేయబడుతుంది. ఈ అనువాదాన్ని ఉపయోగించడం వలన సంభవించే ఏవైనా అపార్థాలు లేదా తప్పు అర్థం చేసుకోబడిన దోషాలకు మేము బాధ్యత వహించము.