TRANXACT.AI সাহায্য

আইওটি মিটার: একটি ডিভাইস নিবন্ধন করা এবং এটি কীভাবে তার পাঠকে চিহ্নিত করে

IoT ডিভাইস: একটি AMI বা IoT এন্ডপয়েন্ট রেজিস্টার করা, এর সিক্রেট কপি করা (একবার দেখানো হবে), নতুন সিক্রেট দিয়ে এটি পরিবর্তন করা, এবং ডিভাইসটি কীভাবে /api/public/utilities/iot/reads-এ প্রতিটি অনুরোধে স্বাক্ষর করে — একটি উদাহরণ অনুরোধ, এর সীমাবদ্ধতা এবং এটি যে সমস্ত উত্তর পেতে পারে, তার সবকিছু সহ।

একটি AMI বা IoT মিটার HTTPS-এর মাধ্যমে TRANXACT এ তার নিজের রিডগুলো পোস্ট করে। প্রতিটি ডিভাইসের একটি কী (key) থাকে যা সার্ভার তৈরি করে (utd_ এর পরে ২৪টি অক্ষর ও সংখ্যা) এবং একটি সিক্রেট থাকে। ডিভাইসটি প্রতিটি অনুরোধে তার পরিচয় প্রমাণ করে, ফলে অন্য কেউ সেই মিটারের জন্য রিড পোস্ট করতে পারে না।

একটি ডিভাইস নিবন্ধন করা

  1. CRM খুলুন › ইউটিলিটিস › ইউটিলিটি মিটারস অ্যান্ড রিডস › আইওটি ডিভাইসেস এবং নিউ চাপুন।
  2. একটি লেবেল লিখুন, এটি যে মিটারটি রিড করবে তা বেছে নিন, এবং সাইনস উইথ (Signs with) হিসেবে বেছে নিন: hmac (প্রতিটি রিকোয়েস্টের একটি HMAC-SHA256 সিগনেচার — যা সুপারিশকৃত), bearer (টোকেন হিসেবে পাঠানো কী এবং সিক্রেট) অথবা উভয়ই।
  3. এই ডিভাইসটির জন্য প্রতি মিনিটে সর্বোচ্চ রিডের সংখ্যা সেট করুন এবং ফার্মওয়্যারটি জানা থাকলে সেটিও সেট করুন।
  4. সংরক্ষণ করুন। উত্তরে কী এবং সিক্রেট দেখানো হয়েছে: “এখনই সিক্রেটটি কপি করুন — এটি আর দেখানো হবে না।” দুটোই ডিভাইসের কনফিগারেশনে রাখুন।

গোপন তথ্যটি একবার দেখানো হয়। এরপর এটি আর কখনও তালিকাভুক্ত করা হয় না, এমনকি প্রশাসকের কাছেও নয়; তালিকায় কেবল এর শেষের চারটি অক্ষর দেখানো হয় (গোপন তথ্য এখানেই শেষ)। যদি এটি হারিয়ে যায়, তবে একটি নতুন গোপন তথ্য দিন।

গোপনীয়তা ঘোরানো

ডিভাইসের সারিতে ‘New secret’ চাপুন এবং নিশ্চিত করুন। নতুন সিক্রেটটি একবার দেখানো হবে এবং সেই মুহূর্তে পুরানোটি কাজ করা বন্ধ করে দেবে, তাই ডিভাইসটিকে সাথে সাথেই নতুনটি দিয়ে দিন। ডিভাইসটিকে ঘোরানো ছাড়াই বন্ধ করতে ‘Status’-কে ‘disabled’-এ সেট করুন, অথবা পরিষেবা থেকে সরিয়ে নিলে ‘retired’-এ সেট করুন।

একটি ডিভাইস কীভাবে একটি রিডিং সংকেত দেয়

  1. JSON বডি তৈরি করুন: রিডগুলোর একটি তালিকা, যার প্রতিটির সাথে read_at (ISO 8601 সময়) এবং রিডিংয়ের সময় উল্লেখ থাকবে। ব্যাটারি, সিগন্যাল, ফার্মওয়্যার এবং অ্যালার্ম ঐচ্ছিক।
  2. বর্তমান ইউনিক্স সময়কে (সেকেন্ডে) টাইমস্ট্যাম্প হিসেবে নিন।
  3. ডিভাইস সিক্রেটের অধীনে, টাইমস্ট্যাম্প, একটি পূর্ণচ্ছেদ এবং বডির সঠিক বাইটগুলো দিয়ে HMAC-SHA256 গণনা করুন: “<timestamp>.<body>”। এটিকে ৬৪টি ছোট হাতের হেক্স অক্ষর হিসেবে লিখুন।
  4. X-Utility-Device (কী), X-Utility-Timestamp এবং X-Utility-Signature (হেক্স, ঐচ্ছিকভাবে 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-এর ফরম্যাট পরিবর্তন করলে, বা ভিন্ন লাইন এন্ডিং দিয়ে পাঠালে, বাইটগুলো পরিবর্তিত হয়ে যায় এবং স্বাক্ষরটি আর মেলে না।

বেয়ারার (বা উভয়ই) হিসেবে সেট করা একটি ডিভাইস এর পরিবর্তে Authorization: Bearer <utd_DEVICE_KEY>.<DEVICE_SECRET> পাঠাতে পারে এবং কোনো সিগনেচার হেডার নাও পাঠাতে পারে। HMAC হলো অধিকতর নিরাপদ বিকল্প: সিক্রেটটি কখনো স্থানান্তরিত হয় না এবং ক্যাপচার করা কোনো রিকোয়েস্ট পুনরায় চালানো যায় না।

সীমা

  • টাইমস্ট্যাম্পটি অবশ্যই সার্ভারের ঘড়ির সময়ের ৫ মিনিটের মধ্যে হতে হবে: ডিভাইসের ঘড়িটি NTP দ্বারা সেট করে রাখুন।
  • একই স্বাক্ষরিত অনুরোধ দুইবার রিপ্লে হিসেবে প্রত্যাখ্যান করা হয়। ফাইলে আগে থেকে থাকা কোনো রিডকে ডুপ্লিকেট হিসেবে গণ্য করে একবার সংরক্ষণ করা হয়।
  • প্রতি অনুরোধে সর্বোচ্চ ৬৪ কেবি এবং ৫০০ রিড, ডিভাইসটির নিজস্ব রিড সংখ্যা প্রতি মিনিটে সর্বোচ্চ, এবং একটি ঠিকানা থেকে প্রতি মিনিটে ৬০০টি অনুরোধ।
  • ডিভাইসটি অবশ্যই সক্রিয় এবং একটি মিটারের সাথে সংযুক্ত থাকতে হবে।

ডিভাইসটি যা ফেরত পায়

উত্তরঅর্থ
২০১ বা ২০০, যার মধ্যে রয়েছে গৃহীত, সদৃশ, ব্যতিক্রম, প্রত্যাখ্যাত, সতর্কতা এবং সমস্যাসমূহ।অনুরোধটি গ্রহণ করা হয়েছে। প্রতিটি রিড গণনা করা হয়; ইনডেক্স অনুযায়ী যে রিডগুলো বৈধ ছিল না, সেগুলোকে সমস্যার তালিকায় অন্তর্ভুক্ত করা হয়।
৪০১ ডিভাইস_অথঅজানা বা নিষ্ক্রিয় কী, ভুল মোড, অথবা অমিল স্বাক্ষর। ডিভাইসটির ‘প্রত্যাখ্যাত’ সংখ্যার পরিমাণ বেড়ে যায়।
৪০১ বাসি টাইমস্ট্যাম্পটাইমস্ট্যাম্পটি ৫ মিনিটের বেশি ভুল রয়েছে।
৪০৯ রিপ্লেএই স্বাক্ষরিত অনুরোধটি ইতিমধ্যে গৃহীত হয়েছে।
৪১৩টি অনেক বেশি পড়াএকটি অনুরোধেই ৫০০-এর বেশি রিড।
৪২২ নং মিটারডিভাইসটি কোনো মিটারের সাথে সংযুক্ত নয়।
429 রেট_লিমিটেডসীমার চেয়ে দ্রুত পাঠানো হচ্ছে। অপেক্ষা করুন এবং আবার পাঠান।
400 bad_jsonবডিটি JSON নয়।
৪০৩ ইউটিলিটিস_অফকোম্পানির জন্য পরিষেবা বন্ধ করে দেওয়া হয়েছে।

স্বাস্থ্য এবং অ্যালার্ম

  • প্রতিটি অনুরোধ ডিভাইসটির লাস্ট সিন, ব্যাটারি % এবং সিগন্যাল dBm আপডেট করে। ব্যাটারি ১৫%-এর নিচে নেমে গেলে একটি ব্যাটারি_লো অ্যালার্ম বেজে ওঠে।
  • একটি ডিভাইস যে ধরনের অ্যালার্ম পাঠাতে পারে: ব্যাটারি_লো, টেম্পার, লিক, রিভার্স_ফ্লো, নো_ফ্লো, অফলাইন এবং অন্যান্য। প্রতি ডিভাইসে প্রতিটি ধরনের একটি করে ওপেন অ্যালার্ম থাকে।
  • ডিভাইস অ্যালার্ম সেগুলোর তালিকা দেখায়; ক্লিয়ার করলে একটি অ্যালার্ম একটি নোটসহ বন্ধ হয়ে যায়। একটি লিকেজ নিজে থেকেই একটি উচ্চ-অগ্রাধিকারের লিকেজ তদন্ত সার্ভিস অর্ডার তৈরি করে; একটি টেম্পার বা রিভার্স-ফ্লো অ্যালার্মও একটি সার্ভিস অর্ডার তৈরি করে।
  • ড্যাশবোর্ডের আইওটি মিটারের ২৪-ঘণ্টার রিপোর্ট গত দিনে সক্রিয় থাকা ডিভাইসগুলোর সংখ্যা গণনা করে।