आयओटी मीटर्स: डिव्हाइसची नोंदणी आणि ते त्याच्या नोंदींवर कशी स्वाक्षरी करते
आयओटी उपकरणे: एएमआय किंवा आयओटी एंडपॉइंटची नोंदणी करा, त्याचे सिक्रेट कॉपी करा (एकदा दाखवले आहे), नवीन सिक्रेटसह ते बदला, आणि डिव्हाइस /api/public/utilities/iot/reads वर प्रत्येक विनंतीवर कशी स्वाक्षरी करते — एका उदाहरण विनंतीसह, मर्यादा आणि त्याला मिळू शकणारी प्रत्येक उत्तरे.
एएमआय (AMI) किंवा आयओटी (IoT) मीटर स्वतःची रीडिंग्ज HTTPS द्वारे TRANXACT) ला पाठवते. प्रत्येक डिव्हाइसकडे सर्व्हरने तयार केलेली एक की (utd_ नंतर २४ अक्षरे आणि अंक) आणि एक सिक्रेट असते. डिव्हाइस प्रत्येक रिक्वेस्टवर स्वतःची ओळख सिद्ध करते, त्यामुळे इतर कोणीही त्या मीटरची रीडिंग्ज पाठवू शकत नाही.
डिव्हाइसची नोंदणी करणे
- CRM › युटिलिटीज › युटिलिटी मीटर्स आणि रीड्स › IoT डिव्हाइसेस उघडा आणि नवीन दाबा.
- एक लेबल प्रविष्ट करा, ते वाचत असलेले मीटर निवडा आणि यासह स्वाक्षरी करा निवडा: hmac (प्रत्येक विनंतीची HMAC-SHA256 स्वाक्षरी — शिफारस केलेले), bearer (टोकन म्हणून पाठवलेली की आणि सिक्रेट) किंवा दोन्ही.
- या डिव्हाइससाठी प्रति मिनिट वाचनाची कमाल संख्या सेट करा आणि तुम्हाला फर्मवेअर माहित असल्यास तेही सेट करा.
- जतन करा. उत्तरामध्ये की आणि सिक्रेट दाखवले आहे: “आता सिक्रेट कॉपी करा — ते पुन्हा दाखवले जाणार नाही.” दोन्ही डिव्हाइसच्या कॉन्फिगरेशनमध्ये टाका.
गुप्त माहिती एकदाच दाखवली जाते. त्यानंतर ती कधीही यादीत समाविष्ट केली जात नाही, अगदी प्रशासकाला सुद्धा नाही; यादीत फक्त तिची शेवटची चार अक्षरे दिसतात (गुप्त माहिती समाप्त होते). जर ती हरवली, तर नवीन गुप्त माहिती जारी केली जाते.
रहस्य फिरवणे
डिव्हाइसच्या ओळीवर 'नवीन सिक्रेट' (New secret) दाबा आणि पुष्टी करा. नवीन सिक्रेट एकदाच दाखवले जाते आणि त्याच क्षणी जुने काम करणे थांबवते, म्हणून डिव्हाइसला ताबडतोब नवीन सिक्रेट द्या. डिव्हाइसला न फिरवता थांबवण्यासाठी स्टेटस 'अक्षम' (disabled) वर सेट करा, किंवा सेवेतून बाहेर काढल्यावर 'सेवानिवृत्त' (retired) वर सेट करा.
एखादे उपकरण रीडिंगवर सही कशी करते
- JSON बॉडी तयार करा: रीड्सची एक सूची, ज्यामध्ये प्रत्येक रीडची वेळ (ISO 8601 वेळ) आणि रीडिंग नमूद असेल. बॅटरी, सिग्नल, फर्मवेअर आणि अलार्म हे ऐच्छिक आहेत.
- टाइमस्टॅम्प म्हणून सध्याची युनिक्स वेळ सेकंदांमध्ये घ्या.
- डिव्हाइस सिक्रेट अंतर्गत, टाइमस्टॅम्प, पूर्णविराम आणि बॉडीचे अचूक बाइट्स: “<timestamp>.<body>” यांचा HMAC-SHA256 कोड काढा. ते ६४ लोअर-केस हेक्स अक्षरांमध्ये लिहा.
- X-Utility-Device (की), X-Utility-Timestamp आणि X-Utility-Signature (हेक्स, वैकल्पिकरित्या sha256= उपसर्ग) या हेडरसह बॉडी /api/public/utilities/iot/reads वर POST करा.
POST https://<your-tranxact-host>/api/public/utilities/iot/reads
Content-Type: application/json
X-Utility-Device: <utd_DEVICE_KEY>
X-Utility-Timestamp: <1792252800>
X-Utility-Signature: sha256=<64 hex characters>
{"reads":[{"read_at":"<2026-10-17T09:30:00Z>","reading":<48213.4>}],
"battery_pct":<87>,"signal_dbm":<-71>,"firmware":"<2.4.1>",
"alarms":[{"type":"<leak>","detail":"<continuous flow 6 h>"}]}
एखादे डिव्हाइस इन्स्टॉल करण्यापूर्वी त्याची चाचणी घेण्यासाठी, तीच सिग्नेचर शेलमध्ये वापरून पाहिली:
BODY='{"reads":[{"read_at":"<2026-10-17T09:30:00Z>","reading":<48213.4>}]}'
TS=$(date +%s)
SIG=$(printf '%s.%s' "$TS" "$BODY" | openssl dgst -sha256 -hmac "<DEVICE_SECRET>" | sed 's/^.* //')
curl -X POST "https://<your-tranxact-host>/api/public/utilities/iot/reads" \
-H "Content-Type: application/json" \
-H "X-Utility-Device: <utd_DEVICE_KEY>" \
-H "X-Utility-Timestamp: $TS" \
-H "X-Utility-Signature: sha256=$SIG" \
--data-binary "$BODY"
तुम्ही पाठवलेल्या अचूक बाइट्सवर सही करा. सही केल्यानंतर JSON ला पुन्हा फॉरमॅट केल्यास, किंवा वेगळ्या लाइन एंडिंगसह पाठवल्यास, बाइट्स बदलतात आणि सही जुळत नाही.
बेअरर (किंवा दोन्ही) वर सेट केलेले डिव्हाइस त्याऐवजी Authorization: Bearer <utd_DEVICE_KEY>.<DEVICE_SECRET> आणि कोणतेही सिग्नेचर हेडर पाठवू शकते. HMAC हा अधिक सुरक्षित पर्याय आहे: सिक्रेट कधीही प्रवास करत नाही आणि कॅप्चर केलेली रिक्वेस्ट पुन्हा प्ले केली जाऊ शकत नाही.
मर्यादा
- टाइमस्टॅम्प सर्व्हरच्या घड्याळाच्या ५ मिनिटांच्या आत असणे आवश्यक आहे: डिव्हाइसचे घड्याळ NTP द्वारे सेट केलेले ठेवा.
- तीच स्वाक्षरी केलेली विनंती दोनदा केल्यास, ती 'रिप्ले' म्हणून नाकारली जाते. फाईलवर आधीच केलेले वाचन 'डुप्लिकेट' म्हणून गणले जाते आणि एकदाच साठवले जाते.
- एका विनंतीसाठी जास्तीत जास्त ६४ केबी आणि ५०० रीड्स, डिव्हाइसचे स्वतःचे प्रति मिनिट जास्तीत जास्त रीड्स, आणि एका ॲड्रेसवरून प्रति मिनिट ६०० विनंत्या.
- डिव्हाइस सक्रिय असून मीटरला जोडलेले असले पाहिजे.
डिव्हाइसला जे परत मिळते
| उत्तर | अर्थ |
|---|---|
| स्वीकृत, डुप्लिकेट, अपवाद, नाकारलेले, अलार्म आणि समस्यांसह २०१ किंवा २०० | विनंती स्वीकारण्यात आली. प्रत्येक वाचन मोजले जाते; त्याच्या अनुक्रमणिकेनुसार अवैध असलेल्या कोणत्याही वाचनाला 'समस्या' असे नाव दिले जाते. |
| ४०१ डिव्हाइस_ऑथ | अज्ञात किंवा निष्क्रिय की, चुकीचा मोड, किंवा जुळत नसलेली स्वाक्षरी. डिव्हाइसच्या नाकारलेल्या विनंत्यांची संख्या वाढते. |
| ४०१ स्टेल_टाइमस्टॅम्प | टाइमस्टॅम्पमध्ये ५ मिनिटांपेक्षा जास्त फरक आहे. |
| ४०९ रिप्ले | ही स्वाक्षरी केलेली विनंती आधीच प्राप्त झाली आहे. |
| ४१३ खूप जास्त वाचन | एका विनंतीमध्ये ५०० पेक्षा जास्त वाचन. |
| ४२२ नो_मीटर | हे उपकरण मीटरला जोडलेले नाही. |
| ४२९ दर मर्यादित | मर्यादेपेक्षा जास्त वेगाने पाठवत आहे. थांबा आणि पुन्हा पाठवा. |
| ४०० बॅड_जेसन | बॉडी JSON स्वरूपात नाही. |
| ४०३ युटिलिटीज_ऑफ | कंपनीचा वीजपुरवठा बंद करण्यात आला आहे. |
आरोग्य आणि धोक्याची सूचना
- प्रत्येक विनंती डिव्हाइसचे 'शेवटचे पाहिलेले' (Last seen), 'बॅटरी %' (Battery %) आणि 'सिग्नल dBm' (Signal dBm) अद्ययावत करते. बॅटरी १५% पेक्षा कमी झाल्यास 'बॅटरी कमी' (battery_low) अलार्म वाजतो.
- एखादे उपकरण पाठवू शकणारे अलार्मचे प्रकार: बॅटरी कमी, छेडछाड, गळती, उलट प्रवाह, प्रवाह नाही, ऑफलाइन आणि इतर. प्रत्येक उपकरणासाठी प्रत्येक प्रकारचा एकच खुला अलार्म.
- डिव्हाइस अलार्म त्यांची यादी दाखवते; क्लिअर बटण एका टीपेसह अलार्म बंद करते. गळतीमुळे आपोआपच उच्च-प्राधान्य गळती तपासणी सेवा आदेश जारी होतो; छेडछाड किंवा रिव्हर्स-फ्लो अलार्ममुळे देखील सेवा आदेश जारी होतो.
- डॅशबोर्डवरील IoT मीटर्सचा रिपोर्टिंग (24 तास) आकडा, गेल्या २४ तासांत संपर्क आलेल्या सक्रिय उपकरणांची गणना करतो.