IoT میٹرز: کسی آلے کو رجسٹر کرنا اور یہ اس کے پڑھنے پر کیسے دستخط کرتا ہے۔
IoT ڈیوائسز: AMI یا IoT اینڈ پوائنٹ کو رجسٹر کریں، اس کے راز کو کاپی کریں (ایک بار دکھایا جائے گا)، اسے نئے راز کے ساتھ گھمائیں، اور ڈیوائس کس طرح ہر درخواست پر /api/public/utilities/iot/reads پر دستخط کرتا ہے — مثال کے طور پر درخواست، حدود اور ہر جواب کے ساتھ جو اسے مل سکتا ہے۔
AMI یا IoT میٹر HTTPS پر TRANXACT کے لیے اپنے ریڈز پوسٹ کرتا ہے۔ ہر ڈیوائس میں سرور کی طرف سے بنائی گئی ایک کلید ہوتی ہے (utd_ جس کے بعد 24 حروف اور ہندسے ہوتے ہیں) اور ایک راز ہوتا ہے۔ ڈیوائس ہر درخواست پر یہ ثابت کرتی ہے کہ یہ کون ہے، لہذا کوئی اور اس میٹر کے لیے ریڈز پوسٹ نہیں کر سکتا۔
ڈیوائس رجسٹر کرنا
- CRM › یوٹیلٹیز › یوٹیلٹی میٹرز اینڈ ریڈز › IoT ڈیوائسز کھولیں اور نیا دبائیں۔
- ایک لیبل درج کریں، اس کے پڑھنے والے میٹر کا انتخاب کریں، اور اس کے ساتھ نشانات کا انتخاب کریں: hmac (ہر درخواست پر ایک HMAC-SHA256 دستخط — تجویز کردہ)، بردار (کلید اور خفیہ ٹوکن کے طور پر بھیجا گیا) یا دونوں۔
- اس ڈیوائس کے لیے زیادہ سے زیادہ ریڈز فی منٹ سیٹ کریں، اور اگر آپ اسے جانتے ہیں تو فرم ویئر۔
- محفوظ کریں۔ جواب کلید اور راز کو ظاہر کرتا ہے: "اس راز کو ابھی کاپی کریں - اسے دوبارہ نہیں دکھایا جائے گا۔" دونوں کو ڈیوائس کی کنفیگریشن میں ڈالیں۔
راز ایک بار ظاہر ہوتا ہے۔ اسے بعد میں کبھی بھی درج نہیں کیا جاتا، یہاں تک کہ کسی منتظم کو بھی نہیں۔ فہرست صرف اپنے آخری چار حروف دکھاتی ہے (خفیہ سرے)۔ اگر گم ہو جائے تو نیا جاری کریں۔
راز کو گھومنا
ڈیوائس کی قطار پر نیا راز دبائیں اور تصدیق کریں۔ نیا راز ایک بار دکھایا جاتا ہے اور پرانا اس وقت کام کرنا چھوڑ دیتا ہے، اس لیے فوری طور پر نیا راز دے دیں۔ کسی ڈیوائس کو گھمائے بغیر روکنے کے لیے اسٹیٹس کو غیر فعال پر سیٹ کریں، یا سروس سے ہٹائے جانے پر اسے ریٹائر کر دیں۔
ایک آلہ پڑھنے پر کیسے دستخط کرتا ہے۔
- JSON باڈی بنائیں: پڑھنے کی ایک فہرست، ہر ایک read_at (ISO 8601 وقت) اور پڑھنے کے ساتھ۔ بیٹری، سگنل، فرم ویئر اور الارم اختیاری ہیں۔
- موجودہ یونکس وقت کو سیکنڈ میں ٹائم اسٹیمپ کے طور پر لیں۔
- HMAC-SHA256، ڈیوائس سیکرٹ کے تحت، ٹائم اسٹیمپ، ایک فل اسٹاپ، اور باڈی کے عین مطابق بائٹس کی گنتی کریں: "<timestamp>.<body>"۔ اسے 64 لوئر کیس ہیکس حروف کے طور پر لکھیں۔
- X-Utility-Device (key)، X-Utility-Timestamp اور X-Utility-Signature (ہیکس، اختیاری طور پر prefixed sha256=) ہیڈر کے ساتھ باڈی کو /api/public/utilities/iot/reads پر پوسٹ کریں۔
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 کو دوبارہ فارمیٹ کرنا، یا اسے مختلف لائن کے اختتام کے ساتھ بھیجنا، بائٹس کو تبدیل کرتا ہے اور دستخط اب مماثل نہیں رہتے ہیں۔
بیئرر پر سیٹ کردہ ڈیوائس (یا دونوں) اس کے بجائے اجازت بھیج سکتا ہے: بیئرر <utd_DEVICE_KEY>۔<DEVICE_SECRET> اور کوئی دستخطی ہیڈرز نہیں۔ HMAC محفوظ انتخاب ہے: راز کبھی سفر نہیں کرتا اور پکڑی گئی درخواست کو دوبارہ نہیں چلایا جا سکتا۔
حدود
- ٹائم اسٹیمپ سرور کی گھڑی کے 5 منٹ کے اندر ہونا چاہیے: ڈیوائس کی گھڑی کو NTP کے ذریعے سیٹ رکھیں۔
- ایک ہی دستخط شدہ درخواست کو دو بار ری پلے کے طور پر مسترد کر دیا گیا ہے۔ فائل پر پہلے سے پڑھی ہوئی کو ڈپلیکیٹ کے طور پر شمار کیا جاتا ہے اور ایک بار اسٹور کیا جاتا ہے۔
- زیادہ سے زیادہ 64 KB اور 500 ایک درخواست پڑھتے ہیں، زیادہ سے زیادہ ڈیوائس کی اپنی ریڈز فی منٹ، اور 600 ایک ایڈریس سے ایک منٹ کی درخواست کرتی ہے۔
- ڈیوائس کو فعال ہونا چاہیے اور میٹر سے منسلک ہونا چاہیے۔
آلہ واپس کیا ہو جاتا ہے
| جواب دیں۔ | مطلب |
|---|---|
| 201 یا 200 قبول شدہ، نقلیں، مستثنیات، مسترد کردہ، الارم اور مسائل کے ساتھ | درخواست لی گئی۔ ہر پڑھنے کو شمار کیا جاتا ہے۔ مسائل کسی بھی ایسے پڑھنے کا نام دیتے ہیں جو اس کے انڈیکس کے لحاظ سے درست نہیں تھا۔ |
| 401 device_auth | نامعلوم یا غیر فعال کلید، غلط موڈ، یا ایک دستخط جو مماثل نہیں ہے۔ ڈیوائس کی رد شدہ تعداد بڑھ جاتی ہے۔ |
| 401 سٹیل_ٹائم اسٹیمپ | ٹائم اسٹیمپ 5 منٹ سے زیادہ کی چھٹی ہے۔ |
| 409 ری پلے | یہ دستخط شدہ درخواست پہلے ہی موصول ہو چکی تھی۔ |
| 413 بہت_بہت_پڑھے۔ | ایک درخواست میں 500 سے زیادہ پڑھے۔ |
| 422 نمبر_میٹر | ڈیوائس میٹر سے منسلک نہیں ہے۔ |
| 429 شرح_محدود | اپنی حد سے زیادہ تیزی سے بھیج رہا ہے۔ انتظار کریں اور دوبارہ بھیجیں۔ |
| 400 bad_json | جسم JSON نہیں ہے۔ |
| 403 یوٹیلیٹیز_آف | کمپنی کے لیے یوٹیلٹیز بند ہیں۔ |
صحت اور الارم
- ہر درخواست ڈیوائس کی آخری بار دیکھی گئی، بیٹری % اور سگنل ڈی بی ایم کو اپ ڈیٹ کرتی ہے۔ 15% سے کم بیٹری بیٹری_لو الارم اٹھاتی ہے۔
- الارم کی قسمیں جو آلہ بھیج سکتا ہے: بیٹری_لو، چھیڑ چھاڑ، لیک، ریورس_فلو، کوئی_فلو، آف لائن اور دیگر۔ فی آلہ ہر قسم کا ایک کھلا الارم۔
- ڈیوائس الارم ان کی فہرست دیتا ہے۔ کلیئر ایک نوٹ کے ساتھ بند کرتا ہے۔ ایک لیک ایک اعلی ترجیحی لیک تحقیقاتی سروس آرڈر کو خود سے اٹھاتا ہے۔ چھیڑ چھاڑ یا ریورس_فلو الارم سروس آرڈر کو بھی بڑھاتا ہے۔
- ڈیش بورڈ کے IoT میٹرز کی رپورٹنگ (24h) کا اعداد و شمار ان فعال آلات کو شمار کرتا ہے جنہیں گزشتہ دن سے سنا گیا ہے۔