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/ne/3-transport/lessons/4-geofences
co-op-translator[bot] 9508c7b48a
🌐 Update translations via Co-op Translator (#545)
4 weeks ago
..
README.md 🌐 Update translations via Co-op Translator (#545) 4 weeks ago
assignment.md 🌐 Update translations via Co-op Translator (#545) 4 weeks ago

README.md

जियोफेन्स

यस पाठको स्केच नोटको अवलोकन

स्केच नोट नित्या नरसिम्हन द्वारा। ठूलो संस्करण हेर्नका लागि तस्बिरमा क्लिक गर्नुहोस्।

यो भिडियोले जियोफेन्स र Azure Maps मा तिनीहरूको प्रयोगबारे अवलोकन दिन्छ, जुन यस पाठमा समेटिने विषयहरू हुन्:

Microsoft Developer IoT शोबाट Azure Maps सँग जियोफेन्सिङ

🎥 माथिको तस्बिरमा क्लिक गरेर भिडियो हेर्नुहोस्

पाठ अघि क्विज

पाठ अघि क्विज

परिचय

अघिल्ला ३ पाठहरूमा, तपाईंले IoT प्रयोग गरेर आफ्नो फार्मबाट प्रशोधन केन्द्रसम्म उत्पादन बोक्ने ट्रकहरूको स्थान पत्ता लगाउनुभयो। तपाईंले GPS डेटा सङ्कलन गर्नुभयो, यसलाई क्लाउडमा पठाउनुभयो, र नक्सामा देखाउनुभयो। अब, तपाईंको आपूर्ति श्रृंखला अझ प्रभावकारी बनाउनको लागि अर्को चरण भनेको ट्रक प्रशोधन केन्द्रमा आइपुग्न लागेको बेला सूचना प्राप्त गर्नु हो, ताकि अनलोड गर्न आवश्यक टोलीले फोर्कलिफ्ट र अन्य उपकरणहरू तयार गर्न सकून्। यसरी, उनीहरूले छिटो अनलोड गर्न सक्छन्, र तपाईंले ट्रक र चालकको प्रतीक्षा समयको लागि भुक्तानी गर्नुपर्दैन।

यस पाठमा, तपाईं जियोफेन्सबारे सिक्नुहुनेछ - जस्तै प्रशोधन केन्द्रको २ किलोमिटरको दूरीभित्रको क्षेत्र जस्तो परिभाषित भौगोलिक क्षेत्र, र GPS निर्देशांकहरू जियोफेन्सभित्र वा बाहिर छन् कि छैनन् भनेर परीक्षण गर्ने तरिका, ताकि तपाईंको GPS सेन्सर क्षेत्रभित्र पुगेको छ वा बाहिर गएको छ भनेर थाहा पाउन सक्नुहुन्छ।

यस पाठमा हामीले समेट्नेछौं:

🗑 यो परियोजनाको अन्तिम पाठ हो, त्यसैले यो पाठ र असाइनमेन्ट पूरा गरेपछि, आफ्नो क्लाउड सेवाहरू सफा गर्न नबिर्सनुहोस्। असाइनमेन्ट पूरा गर्न तपाईंलाई यी सेवाहरू आवश्यक पर्छ, त्यसैले पहिले असाइनमेन्ट पूरा गर्न सुनिश्चित गर्नुहोस्।

आवश्यक परेमा आफ्नो परियोजना सफा गर्ने गाइड हेर्नुहोस्।

जियोफेन्स के हो

जियोफेन्स भनेको वास्तविक भौगोलिक क्षेत्रको लागि एक भर्चुअल परिधि हो। जियोफेन्सहरू सर्कलहरू हुन सक्छन्, जसलाई एउटा बिन्दु र त्रिज्याले परिभाषित गरिएको हुन्छ (उदाहरणका लागि, भवनको वरिपरि १०० मिटर चौडा सर्कल), वा कुनै क्षेत्रलाई समेट्ने बहुभुज जस्तै विद्यालय क्षेत्र, सहरको सीमा, वा विश्वविद्यालय वा कार्यालय क्याम्पस।

जियोफेन्सका केही उदाहरणहरू, जसमा Microsoft कम्पनी स्टोरको वरिपरि सर्कुलर जियोफेन्स र Microsoft पश्चिम क्याम्पसको वरिपरि बहुभुज जियोफेन्स देखाइएको छ

💁 तपाईंले जियोफेन्स पहिले नै प्रयोग गर्नुभएको हुन सक्छ। यदि तपाईंले iOS रिमाइन्डर एप वा Google Keep मा स्थानको आधारमा रिमाइन्डर सेट गर्नुभएको छ भने, तपाईंले जियोफेन्स प्रयोग गर्नुभएको छ। यी एपहरूले दिइएको स्थानको आधारमा जियोफेन्स सेट गर्छन् र तपाईंको फोन जियोफेन्सभित्र प्रवेश गर्दा तपाईंलाई सचेत गराउँछन्।

जियोफेन्सभित्र वा बाहिर सवारी साधन छ कि छैन भनेर थाहा पाउन चाहनुका धेरै कारणहरू छन्:

  • अनलोडको तयारी - सवारी साधन साइटमा आइपुगेको सूचना प्राप्त गर्दा, टोलीलाई सवारी साधन अनलोड गर्न तयार हुन अनुमति दिन्छ, जसले प्रतीक्षा समय घटाउँछ। यसले चालकलाई कम प्रतीक्षा समयका साथ एक दिनमा धेरै डेलिभरी गर्न अनुमति दिन्छ।
  • कर अनुपालन - केही देशहरू, जस्तै न्यूजिल्याण्ड, सार्वजनिक सडकमा मात्र सवारी साधनको तौलको आधारमा डिजेल सवारी साधनहरूको लागि सडक कर लगाउँछन्। जियोफेन्स प्रयोग गरेर सार्वजनिक सडकमा चलाइएको माइलेज ट्र्याक गर्न सकिन्छ, निजी सडकहरू जस्तै फार्म वा काठ काट्ने क्षेत्रहरूमा चलाइएको माइलेजसँग तुलना गर्न।
  • चोरीको निगरानी - यदि सवारी साधनले निश्चित क्षेत्र, जस्तै फार्मभित्र मात्र रहनुपर्छ, र यो जियोफेन्सबाट बाहिर जान्छ भने, यो चोरी भएको हुन सक्छ।
  • स्थान अनुपालन - कार्यस्थल, फार्म वा कारखानाका केही भागहरू निश्चित सवारी साधनहरूको लागि निषेधित हुन सक्छन्, जस्तै कृत्रिम मल र कीटनाशक बोक्ने सवारी साधनहरूलाई जैविक उत्पादन उब्जाउने खेतहरूबाट टाढा राख्नु। यदि जियोफेन्स प्रवेश गरिन्छ भने, सवारी साधन अनुपालन बाहिर छ र चालकलाई सूचित गर्न सकिन्छ।

के तपाईं जियोफेन्सका अन्य प्रयोगहरूको बारेमा सोच्न सक्नुहुन्छ?

Azure Maps, जुन तपाईंले अघिल्लो पाठमा 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 ले दुई मानहरू, अक्षांश र देशान्तर समावेश गरेको थियो, तर Polygon को लागि यो दुई मानहरू, देशान्तर र अक्षांश समावेश गर्ने एरेहरूको एरे हो।

💁 सम्झनुहोस्, GeoJSON ले बिन्दुहरूको लागि देशान्तर, अक्षांश प्रयोग गर्छ, अक्षांश, देशान्तर होइन।

बहुभुजको समन्वय एरेमा बहुभुजका बिन्दुहरूको भन्दा १ बढी प्रविष्टि हुन्छ, अन्तिम प्रविष्टि पहिलोसँग समान हुन्छ, जसले बहुभुजलाई बन्द गर्छ। उदाहरणका लागि, आयतको लागि ५ बिन्दुहरू हुनेछन्।

समन्वय भएको आयत

माथिको तस्बिरमा, एउटा आयत छ। बहुभुजको समन्वय शीर्ष-बायाँ 47,-122 बाट सुरु हुन्छ, त्यसपछि दायाँ 47,-121 मा जान्छ, त्यसपछि तल 46,-121 मा जान्छ, त्यसपछि बायाँ 46,-122 मा जान्छ, र अन्तमा शीर्ष-बायाँ 47,-122 मा फर्कन्छ। यसले बहुभुजलाई ५ बिन्दुहरू दिन्छ - शीर्ष-बायाँ, शीर्ष-दायाँ, तल-दायाँ, तल-बायाँ, र अन्तमा शीर्ष-बायाँ बन्द गर्न।

आफ्नो घर वा विद्यालय वरिपरि GeoJSON बहुभुज सिर्जना गर्न प्रयास गर्नुहोस्। GeoJSON.io जस्तो उपकरण प्रयोग गर्नुहोस्।

कार्य - जियोफेन्स परिभाषित गर्नुहोस्

Azure Maps मा जियोफेन्स प्रयोग गर्न, पहिले यसलाई तपाईंको Azure Maps खातामा अपलोड गर्नुपर्छ। अपलोड गरेपछि, तपाईंले एउटा अद्वितीय ID प्राप्त गर्नुहुनेछ, जसलाई जियोफेन्स विरुद्ध बिन्दु परीक्षण गर्न प्रयोग गर्न सकिन्छ। Azure Maps मा जियोफेन्स अपलोड गर्न, तपाईंले नक्सा वेब API प्रयोग गर्नुपर्छ। तपाईं curl नामक उपकरण प्रयोग गरेर Azure Maps वेब API कल गर्न सक्नुहुन्छ।

🎓 Curl वेब अन्तबिन्दुहरू विरुद्ध अनुरोध गर्न प्रयोग गरिने कमाण्ड लाइन उपकरण हो।

... (अन्य खण्डहरू पनि यसैगरी अनुवाद गरिन्छ) माथिको चित्रमा, माइक्रोसफ्ट क्याम्पसको एक भागमा एउटा जियोफेन्स देखाइएको छ। रातो रेखाले ५२० बाटोमा ट्रकको यात्रा देखाउँछ, जसमा जीपीएस रिडिङहरूलाई घेरा बनाएर देखाइएको छ। यीमध्ये अधिकांश रिडिङहरू सही छन् र ५२० बाटोमै छन्, तर एउटा गलत रिडिङ जियोफेन्सभित्र छ। त्यो रिडिङ सही हुन सक्दैन - ट्रकले अचानक ५२० बाटो छोडेर क्याम्पसमा छिर्ने र फेरि ५२० मा फर्कने कुनै सम्भावना छैन। यो जियोफेन्स जाँच गर्ने कोडले जियोफेन्स परीक्षणको नतिजामा काम गर्नुअघि अघिल्ला रिडिङहरूलाई ध्यानमा राख्नुपर्नेछ।

तपाईलाई कुन अतिरिक्त डाटा चाहिन्छ भनेर जाँच गर्न, जीपीएस रिडिङलाई सही मान्न सकिन्छ कि सकिँदैन?

कार्य - जियोफेन्ससँग बिन्दुहरूको परीक्षण गर्नुहोस्

  1. वेब एपीआई क्वेरीको लागि 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> लाई तपाईं परीक्षण गर्न चाहनुभएको अक्षांश र देशान्तरले प्रतिस्थापन गर्नुहोस्।

    यो URL ले https://atlas.microsoft.com/spatial/geofence/json API प्रयोग गरेर GeoJSON मार्फत परिभाषित जियोफेन्सलाई क्वेरी गर्छ। यो 1.0 एपीआई संस्करणलाई लक्षित गर्छ। deviceId प्यारामिटर आवश्यक छ र यो अक्षांश र देशान्तर आएको उपकरणको नाम हुनुपर्छ।

    डिफल्ट सर्च बफर ५० मिटर हो, र तपाईं यसलाई searchBuffer=<distance> प्यारामिटर थपेर परिवर्तन गर्न सक्नुहुन्छ, <distance> लाई मिटरमा सर्च बफर दूरी सेट गर्दै, देखि ५०० सम्म।

  2. curl प्रयोग गरेर यो URL मा GET अनुरोध गर्नुहोस्:

    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 प्रयोग गरेर बनाइएको जियोफेन्समा परिभाषित प्रत्येक बहुभुजको लागि geometries को सूची समावेश गर्दछ। प्रत्येक ज्यामितिमा ३ महत्त्वपूर्ण क्षेत्रहरू छन्: distance, nearestLatnearestLon

    {
        "geometries": [
            {
                "deviceId": "gps-sensor",
                "udId": "7c3776eb-da87-4c52-ae83-caadf980323a",
                "geometryId": "1",
                "distance": 999.0,
                "nearestLat": 47.645875,
                "nearestLon": -122.142713
            }
        ],
        "expiredGeofenceGeometryId": [],
        "invalidPeriodGeofenceGeometryId": []
    }
    
    • nearestLatnearestLon जियोफेन्सको किनाराको बिन्दुको अक्षांश र देशान्तर हो, जुन परीक्षण गरिरहेको स्थानको सबैभन्दा नजिक छ।

    • distance परीक्षण गरिरहेको स्थानबाट जियोफेन्सको किनाराको सबैभन्दा नजिकको बिन्दुसम्मको दूरी हो। नकारात्मक संख्या जियोफेन्सभित्रको अर्थ दिन्छ, सकारात्मक बाहिर। यो मान ५० (डिफल्ट सर्च बफर) भन्दा कम, वा ९९९ हुनेछ।

  4. जियोफेन्सभित्र र बाहिरका स्थानहरूका साथ यो प्रक्रिया धेरै पटक दोहोर्याउनुहोस्।

सर्भरलेस कोडबाट जियोफेन्स प्रयोग गर्नुहोस्

अब तपाईं आफ्नो Functions एपमा नयाँ ट्रिगर थपेर IoT हब GPS इभेन्ट डाटालाई जियोफेन्ससँग परीक्षण गर्न सक्नुहुन्छ।

उपभोक्ता समूहहरू

जसरी तपाईंले अघिल्ला पाठहरूमा सिक्नुभयो, IoT हबले हबमा प्राप्त भएका तर प्रशोधन नगरिएका इभेन्टहरू पुनःप्ले गर्न अनुमति दिन्छ। तर के हुन्छ यदि धेरै ट्रिगरहरू जडान भए? यसले कुन ट्रिगरले कुन इभेन्ट प्रशोधन गरिसकेको छ भनेर कसरी थाहा पाउँछ?

उत्तर हो, यो सक्दैन! यसको सट्टा तपाईंले इभेन्टहरू पढ्नका लागि धेरै छुट्टाछुट्टै जडानहरू परिभाषित गर्न सक्नुहुन्छ, र प्रत्येकले नपढिएका सन्देशहरूको पुनःप्ले व्यवस्थापन गर्न सक्छ। यीलाई उपभोक्ता समूहहरू भनिन्छ। जब तपाईं अन्तर्क्रियामा जडान गर्नुहुन्छ, तपाईं कुन उपभोक्ता समूहमा जडान गर्न चाहनुहुन्छ भनेर निर्दिष्ट गर्न सक्नुहुन्छ। तपाईंको अनुप्रयोगको प्रत्येक कम्पोनेन्टले फरक उपभोक्ता समूहमा जडान गर्नेछ।

एक IoT हबमा ३ उपभोक्ता समूहहरू, एउटै सन्देशहरू ३ फरक Functions एपहरूमा वितरण गर्दै

सिद्धान्तमा, प्रत्येक उपभोक्ता समूहमा ५ वटा अनुप्रयोगहरू जडान गर्न सक्छन्, र तिनीहरूले सन्देशहरू प्राप्त गर्नेछन् जब तिनीहरू आइपुग्छन्। प्रत्येक उपभोक्ता समूहमा केवल एक अनुप्रयोगले पहुँच गर्ने अभ्यास उत्तम हो, ताकि दोहोरो सन्देश प्रशोधनबाट बच्न सकियोस्, र पुनः सुरु गर्दा सबै पङ्क्तिबद्ध सन्देशहरू सही रूपमा प्रशोधन गरियोस्। उदाहरणका लागि, यदि तपाईंले आफ्नो Functions एपलाई स्थानीय रूपमा सुरु गर्नुभयो भने, साथै क्लाउडमा चलाइरहनुभएको छ भने, तिनीहरूले दुवै सन्देशहरू प्रशोधन गर्नेछन्, जसले भण्डारण खातामा दोहोरो ब्लबहरू सिर्जना गर्नेछ।

यदि तपाईंले अघिल्लो पाठमा सिर्जना गरेको IoT हब ट्रिगरको function.json फाइल समीक्षा गर्नुभयो भने, तपाईंले इभेन्ट हब ट्रिगर बाइन्डिङ सेक्सनमा उपभोक्ता समूह देख्नुहुनेछ:

"consumerGroup": "$Default"

जब तपाईं IoT हब सिर्जना गर्नुहुन्छ, तपाईंलाई डिफल्ट रूपमा $Default उपभोक्ता समूह प्राप्त हुन्छ। यदि तपाईंले थप ट्रिगर थप्न चाहनुहुन्छ भने, तपाईं नयाँ उपभोक्ता समूह प्रयोग गरेर यो थप्न सक्नुहुन्छ।

💁 यस पाठमा, तपाईंले GPS डाटा भण्डारण गर्न प्रयोग गरिएको Functions एपभन्दा फरक कार्य प्रयोग गरेर जियोफेन्स परीक्षण गर्नुभयो। यो उपभोक्ता समूहहरू प्रयोग गर्ने र कोडलाई छुट्याएर पढ्न र बुझ्न सजिलो बनाउने तरिका देखाउन गरिएको हो। उत्पादन अनुप्रयोगमा तपाईंले यसलाई धेरै तरिकामा आर्किटेक्चर गर्न सक्नुहुन्छ - एउटै कार्यमा राखेर, भण्डारण खातामा ट्रिगर प्रयोग गरेर जियोफेन्स जाँच गर्न कार्य चलाएर, वा धेरै कार्यहरू प्रयोग गरेर। 'सही तरिका' भन्ने कुनै कुरा छैन, यो तपाईंको अनुप्रयोग र आवश्यकतामा निर्भर गर्दछ।

कार्य - नयाँ उपभोक्ता समूह सिर्जना गर्नुहोस्

  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 उपभोक्ता समूहमा जडान भयो। यही कारणले गर्दा तपाईं इभेन्ट मनिटर र इभेन्ट ट्रिगर दुवै चलाउन सक्नुहुन्न। यदि तपाईं दुवै चलाउन चाहनुहुन्छ भने, तपाईं आफ्नो सबै Functions एपहरूको लागि अन्य उपभोक्ता समूहहरू प्रयोग गर्न सक्नुहुन्छ, र $Default लाई इभेन्ट मनिटरका लागि राख्न सक्नुहुन्छ।

कार्य - नयाँ IoT हब ट्रिगर सिर्जना गर्नुहोस्

  1. अघिल्लो पाठमा सिर्जना गरिएको gps-trigger Functions एपमा नयाँ IoT हब इभेन्ट ट्रिगर थप्नुहोस्। यस कार्यलाई geofence-trigger नाम दिनुहोस्।

    ⚠️ यदि आवश्यक भएमा परियोजना २, पाठ ५ बाट IoT हब इभेन्ट ट्रिगर सिर्जना गर्ने निर्देशनहरू हेर्न सक्नुहुन्छ

  2. function.json फाइलमा IoT हब जडान स्ट्रिङ कन्फिगर गर्नुहोस्। local.settings.json सबै ट्रिगरहरू बीच साझा हुन्छ।

  3. function.json फाइलमा consumerGroup को मानलाई नयाँ geofence उपभोक्ता समूहलाई सन्दर्भ गर्न अद्यावधिक गर्नुहोस्:

    "consumerGroup": "geofence"
    
  4. तपाईंले यस ट्रिगरमा आफ्नो Azure Maps खाताको सब्सक्रिप्शन कुञ्जी प्रयोग गर्नुपर्नेछ, त्यसैले local.settings.json फाइलमा MAPS_KEY नामक नयाँ प्रविष्टि थप्नुहोस्।

  5. Functions एप चलाउनुहोस् र यो जडान भइरहेको छ र सन्देशहरू प्रशोधन भइरहेको छ भनेर सुनिश्चित गर्नुहोस्। अघिल्लो पाठबाट iot-hub-trigger पनि चल्नेछ र भण्डारणमा ब्लबहरू अपलोड गर्नेछ।

    भण्डारणमा दोहोरो GPS रिडिङहरूबाट बच्न, तपाईं क्लाउडमा चलिरहेको Functions एपलाई रोक्न सक्नुहुन्छ। यो गर्न, निम्न आदेश प्रयोग गर्नुहोस्:

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

    <functions_app_name> लाई तपाईंले आफ्नो Functions एपका लागि प्रयोग गरेको नामले प्रतिस्थापन गर्नुहोस्।

    तपाईं यसलाई पछि निम्न आदेश प्रयोग गरेर पुनः सुरु गर्न सक्नुहुन्छ:

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

    <functions_app_name> लाई तपाईंले आफ्नो Functions एपका लागि प्रयोग गरेको नामले प्रतिस्थापन गर्नुहोस्।

कार्य - ट्रिगरबाट जियोफेन्स परीक्षण गर्नुहोस्

यस पाठको सुरुमा तपाईंले जियोफेन्सलाई क्वेरी गर्न curl प्रयोग गर्नुभयो, ताकि कुनै बिन्दु जियोफेन्सभित्र वा बाहिर छ कि छैन भनेर थाहा पाउन सकियोस्। तपाईं आफ्नो ट्रिगरभित्रबाट यस्तै वेब अनुरोध गर्न सक्नुहुन्छ।

  1. जियोफेन्सलाई क्वेरी गर्न, तपाईंलाई यसको UDID चाहिन्छ। local.settings.json फाइलमा GEOFENCE_UDID नामक नयाँ प्रविष्टि थप्नुहोस्।

  2. नयाँ geofence-trigger ट्रिगरबाट __init__.py फाइल खोल्नुहोस्।

  3. फाइलको माथिल्लो भागमा निम्न आयात थप्नुहोस्:

    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 लूपभित्र, प्रत्येक इभेन्टबाट अक्षांश र देशान्तर प्राप्त गर्न निम्न थप्नुहोस्:

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

    यो कोडले इभेन्ट बडीबाट JSON लाई डिक्सनरीमा रूपान्तरण गर्छ, त्यसपछि gps क्षेत्रबाट latlon निकाल्छ।

  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 मार्फत वेब API कल गर्दा प्रयोग गरेका कुञ्जी मान जोडीहरूसँग मेल खानेछन्।

  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')
    

    यो कोडले १ ज्यामिति मान्छ, र उक्त एकल ज्यामितिबाट दूरी निकाल्छ। त्यसपछि दूरीको आधारमा फरक सन्देशहरू लग गर्छ।

  9. यो कोड चलाउनुहोस्। तपाईंले लगिङ आउटपुटमा GPS निर्देशांकहरू जियोफेन्सभित्र छन् कि बाहिर, ५० मिटरभित्रको दूरीसहित देख्नुहुनेछ। यो कोडलाई आफ्नो GPS सेन्सरको स्थानको आधारमा फरक जियोफेन्सहरूसँग प्रयास गर्नुहोस्, सेन्सरलाई सारेर (उदाहरणका लागि मोबाइल फोनबाट वाइफाइमा टेथर गरेर, वा भर्चुअल IoT उपकरणमा फरक निर्देशांकहरू प्रयोग गरेर) यो परिवर्तन हेर्न प्रयास गर्नुहोस्।

  10. जब तपाईं तयार हुनुहुन्छ, यो कोडलाई क्लाउडमा आफ्नो Functions एपमा डिप्लोय गर्नुहोस्। नयाँ एप्लिकेसन सेटिङहरू डिप्लोय गर्न नबिर्सनुहोस्।

    ⚠️ यदि आवश्यक भएमा परियोजना २, पाठ ५ बाट एप्लिकेसन सेटिङहरू अपलोड गर्ने निर्देशनहरू हेर्न सक्नुहुन्छ

    ⚠️ यदि आवश्यक भएमा परियोजना २, पाठ ५ बाट आफ्नो Functions एपलाई क्लाउडमा डिप्लोय गर्ने निर्देशनहरू हेर्न सक्नुहुन्छ

💁 तपाईं यो कोडलाई code/functions फोल्डरमा फेला पार्न सक्नुहुन्छ।


🚀 चुनौती

यस पाठमा तपाईंले एकल बहुभुज भएको GeoJSON फाइल प्रयोग गरेर एउटा जियोफेन्स थप्नुभयो। तपाईंले फरक geometryId मानहरू भएका बहुभुजहरू GeoJSON फाइलमा एकैपटक अपलोड गर्न सक्नुहुन्छ।

धेरै बहुभुजहरू भएको GeoJSON फाइल अपलोड गर्ने प्रयास गर्नुहोस् र आफ्नो कोडलाई GPS निर्देशांकहरू कुन बहुभुजको नजिक छन् वा भित्र छन् भनेर पत्ता लगाउन समायोजन गर्नुहोस्।

पोस्ट-लेक्चर क्विज

पोस्ट-लेक्चर क्विज

समीक्षा र आत्म अध्ययन

असाइनमेन्ट

Twilio प्रयोग गरेर सूचनाहरू पठाउनुहोस्


अस्वीकरण:
यो दस्तावेज़ AI अनुवाद सेवा Co-op Translator प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।