কীভাবে স্মার্ট হোম অ্যাকশন তৈরি করতে হয় তা শেখার নতুন গন্তব্য Google হোম ডেভেলপার সেন্টারে স্বাগতম। দ্রষ্টব্য: আপনি অ্যাকশন কনসোলে নির্মাণ কাজ চালিয়ে যাবেন।

রিপোর্ট রাজ্য

সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।

রিপোর্ট স্টেট হল একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা স্মার্ট হোম অ্যাকশনকে ব্যবহারকারীর ডিভাইসের সাম্প্রতিক স্থিতিকে Google-এর হোম গ্রাফে ফিরে আসার জন্য QUERY উদ্দেশ্যের জন্য অপেক্ষা করার পরিবর্তে সক্রিয়ভাবে রিপোর্ট করতে দেয়৷

রিপোর্ট স্টেট তাদের সাথে যুক্ত নির্দিষ্ট agentUserId সহ ব্যবহারকারী ডিভাইসগুলির অবস্থা Google-কে রিপোর্ট করে (মূল SYNC অনুরোধে পাঠানো হয়েছে)। যখন Google সহকারী এমন একটি পদক্ষেপ নিতে চায় যার জন্য একটি ডিভাইসের বর্তমান অবস্থা বোঝার প্রয়োজন হয়, তখন এটি EXECUTE অভিপ্রায় ইস্যু করার আগে বিভিন্ন তৃতীয় পক্ষের ক্লাউডকে একটি QUERY অভিপ্রায় ইস্যু করার পরিবর্তে হোম গ্রাফে রাজ্যের তথ্য দেখতে পারে৷

রিপোর্ট স্টেট ব্যতীত, একটি লিভিং রুমে একাধিক প্রদানকারীর কাছ থেকে আলো দেওয়া, কমান্ড Ok Google, আমার লিভিং রুম উজ্জ্বল করার জন্য একাধিক ক্লাউডে পাঠানো একাধিক QUERY ইন্টেন্টের সমাধান করা প্রয়োজন, যা পূর্বে রিপোর্ট করা হয়েছে তার উপর ভিত্তি করে কেবল বর্তমান উজ্জ্বলতার মানগুলি সন্ধান করার বিপরীতে . সর্বোত্তম ব্যবহারকারীর অভিজ্ঞতার জন্য, ডিভাইসে রাউন্ড-ট্রিপের প্রয়োজন ছাড়াই Google সহকারীর একটি ডিভাইসের বর্তমান অবস্থা থাকতে হবে।

একটি ডিভাইসের জন্য প্রাথমিক SYNC অনুসরণ করে, প্ল্যাটফর্মটি একটি QUERY উদ্দেশ্য পাঠায় যা হোম গ্রাফ তৈরি করতে ডিভাইসের অবস্থা সংগ্রহ করে। সেই পয়েন্টের পরে, হোম গ্রাফ শুধুমাত্র সেই স্টেটকে সঞ্চয় করে যা রিপোর্ট স্টেটের সাথে পাঠানো হয়।

রিপোর্ট স্টেট কল করার সময়, প্রদত্ত বৈশিষ্ট্যের জন্য সম্পূর্ণ রাজ্য ডেটা প্রদান নিশ্চিত করুন। হোম গ্রাফ প্রতি-বৈশিষ্ট্যের ভিত্তিতে রাজ্যগুলিকে আপডেট করে এবং যখন একটি রিপোর্ট রাজ্য কল করা হয় তখন সেই বৈশিষ্ট্যের জন্য সমস্ত ডেটা ওভাররাইট করে৷ উদাহরণস্বরূপ, যদি আপনি স্টার্টস্টপ বৈশিষ্ট্যের জন্য রিপোর্ট করছেন, পেলোডে isRunning এবং isPaused উভয়ের মান অন্তর্ভুক্ত করতে হবে।

এবার শুরু করা যাক

রিপোর্ট স্টেট বাস্তবায়ন করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

Google HomeGraph API সক্ষম করুন

  1. Google ক্লাউড প্ল্যাটফর্ম কনসোলে, HomeGraph API পৃষ্ঠাতে যান।

    HomeGraph API পৃষ্ঠায় যান
  2. আপনার স্মার্ট হোম প্রোজেক্ট আইডির সাথে মেলে এমন প্রজেক্ট নির্বাচন করুন।
  3. ENABLE এ ক্লিক করুন।

একটি পরিষেবা অ্যাকাউন্ট কী তৈরি করুন

GCP কনসোল থেকে একটি পরিষেবা অ্যাকাউন্ট কী তৈরি করতে এই নির্দেশাবলী অনুসরণ করুন:

দ্রষ্টব্য : এই পদক্ষেপগুলি সম্পাদন করার সময় আপনি সঠিক GCP প্রকল্প ব্যবহার করছেন তা নিশ্চিত করুন। এটি সেই প্রজেক্ট যা আপনার স্মার্ট হোম প্রোজেক্ট আইডির সাথে মেলে।
  1. GCP কনসোলে, পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠাতে যান।

    পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠায় যান
  2. পরিষেবা অ্যাকাউন্ট তালিকা থেকে, নতুন পরিষেবা অ্যাকাউন্ট নির্বাচন করুন।
  3. পরিষেবা অ্যাকাউন্ট নাম ক্ষেত্রে, একটি নাম লিখুন।
  4. পরিষেবা অ্যাকাউন্ট আইডি ক্ষেত্রে, একটি আইডি লিখুন।
  5. ভূমিকা তালিকা থেকে, পরিষেবা অ্যাকাউন্ট > পরিষেবা অ্যাকাউন্ট টোকেন নির্মাতা নির্বাচন করুন।

  6. কী ধরনের জন্য, JSON বিকল্পটি নির্বাচন করুন।

  7. তৈরি করুন ক্লিক করুন । একটি JSON ফাইল যা আপনার কম্পিউটারে আপনার কী ডাউনলোডগুলি ধারণ করে৷

API কল করুন

নীচের ট্যাব থেকে একটি বিকল্প নির্বাচন করুন:

HTTP

হোম গ্রাফ API একটি HTTP এন্ডপয়েন্ট প্রদান করে

  1. একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
  2. oauth2l ব্যবহার করে https://www.googleapis.com/auth/homegraph স্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId দিয়ে JSON অনুরোধ তৈরি করুন। প্রতিবেদনের অবস্থা এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে:
  5. {
      "requestId": "123ABC",
      "agentUserId": "user-123",
      "payload": {
        "devices": {
          "states": {
            "light-123": {
              "on": true
            }
          }
        }
      }
    }
    
  6. রিপোর্ট স্টেট এবং নোটিফিকেশন JSON এবং আপনার HTTP POST অনুরোধে Google Home Graph এন্ডপয়েন্টে টোকেন একত্রিত করুন। একটি পরীক্ষা হিসাবে curl ব্যবহার করে কমান্ড লাইনে কীভাবে অনুরোধ করা যায় তার একটি উদাহরণ এখানে রয়েছে:
  7. curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d @request-body.json \
      "https://homegraph.googleapis.com/v1/devices:reportStateAndNotification"
    

gRPC

হোম গ্রাফ API একটি gRPC শেষ পয়েন্ট প্রদান করে

  1. হোম গ্রাফ API-এর জন্য প্রোটোকল বাফার পরিষেবা সংজ্ঞা পান।
  2. সমর্থিত ভাষার একটির জন্য ক্লায়েন্ট স্টাব তৈরি করতে gRPC বিকাশকারী ডকুমেন্টেশন অনুসরণ করুন।
  3. ReportStateAndNotification পদ্ধতিতে কল করুন।

Node.js

Google APIs Node.js ক্লায়েন্ট হোম গ্রাফ API-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে google.homegraph পরিষেবা শুরু করুন।
  2. ReportStateAndNotificationRequest সহ reportStateAndNotification পদ্ধতিতে কল করুন। এটি ReportStateAndNotificationResponse- এর সাথে একটি Promise প্রদান করে।
const homegraphClient = homegraph({
  version: 'v1',
  auth: new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/homegraph'
  })
});

const res = await homegraphClient.devices.reportStateAndNotification({
  requestBody: {
    agentUserId: 'PLACEHOLDER-USER-ID',
    requestId: 'PLACEHOLDER-REQUEST-ID',
    payload: {
      devices: {
        states: {
          "PLACEHOLDER-DEVICE-ID": {
            on: true
          }
        }
      }
    }
  }
});
    

জাভা

জাভার জন্য হোমগ্রাফ API ক্লায়েন্ট লাইব্রেরি হোম গ্রাফ API-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে HomeGraphApiService আরম্ভ করুন।
  2. ReportStateAndNotificationRequest সহ reportStateAndNotification পদ্ধতিতে কল করুন। এটি একটি ReportStateAndNotificationResponse
  // Get Application Default credentials.
  GoogleCredentials credentials =
      GoogleCredentials.getApplicationDefault()
          .createScoped(List.of("https://www.googleapis.com/auth/homegraph"));

  // Create Home Graph service client.
  HomeGraphService homegraphService =
      new HomeGraphService.Builder(
              GoogleNetHttpTransport.newTrustedTransport(),
              GsonFactory.getDefaultInstance(),
              new HttpCredentialsAdapter(credentials))
          .setApplicationName("HomeGraphExample/1.0")
          .build();

  // Build device state payload.
  Map<?, ?> states = Map.of("on", true);

  // Report device state.
  ReportStateAndNotificationRequest request =
      new ReportStateAndNotificationRequest()
          .setRequestId("PLACEHOLDER-REQUEST-ID")
          .setAgentUserId("PLACEHOLDER-USER-ID")
          .setPayload(
              new StateAndNotificationPayload()
                  .setDevices(
                      new ReportStateAndNotificationDevice()
                          .setStates(Map.of("PLACEHOLDER-DEVICE-ID", states))));
  homegraphService.devices().reportStateAndNotification(request);
}
    

টেস্ট রিপোর্ট স্টেট

সার্টিফিকেশনের জন্য আপনার কাজ প্রস্তুত করার জন্য, রিপোর্টের অবস্থা পরীক্ষা করা গুরুত্বপূর্ণ।

পূর্বশর্ত

আপনার ক্রিয়া পরীক্ষা করতে সক্ষম হওয়ার আগে, আপনার পরিষেবা অ্যাকাউন্ট কী এবং আপনার agentUserId প্রয়োজন। আপনার যদি ইতিমধ্যেই আপনার পরিষেবা অ্যাকাউন্ট কী এবং agentUserId থাকে তাহলে রিপোর্ট স্টেট ড্যাশবোর্ড স্থাপন করুন দেখুন।

রিপোর্ট স্টেট ড্যাশবোর্ড স্থাপন করুন

একবার আপনার প্রোজেক্টের জন্য সার্ভিস অ্যাকাউন্ট কী এবং agentUserId হয়ে গেলে, রিপোর্ট স্টেট ড্যাশবোর্ড থেকে সর্বশেষ সংস্করণ ডাউনলোড করুন এবং স্থাপন করুন। আপনি সর্বশেষ সংস্করণটি ডাউনলোড করার পরে, অন্তর্ভুক্ত README.MD ফাইল থেকে নির্দেশাবলী অনুসরণ করুন৷

আপনি রিপোর্ট স্টেট ড্যাশবোর্ড স্থাপন করার পরে, নিম্নলিখিত URL থেকে ড্যাশবোর্ড অ্যাক্সেস করুন (আপনার প্রকল্প আইডি দিয়ে your_project_id প্রতিস্থাপন করুন):

http://<your-project-id>.appspot.com

ড্যাশবোর্ডে, নিম্নলিখিতগুলি করুন:

  • আপনার অ্যাকাউন্ট কী ফাইল নির্বাচন করুন
  • আপনার এজেন্ট ইউজারআইডি যোগ করুন

তারপর, তালিকা ক্লিক করুন.

আপনার ডিভাইস সব তালিকাভুক্ত করা হয়. একবার তালিকাটি জনবহুল হয়ে গেলে, আপনি ডিভাইসের অবস্থা আপডেট করতে রিফ্রেশ বোতামটি ব্যবহার করতে পারেন। ডিভাইসের অবস্থার পরিবর্তন হলে, সারিটি সবুজ রঙে হাইলাইট করা হয়।

ত্রুটি প্রতিক্রিয়া

রিপোর্ট স্টেট কল করার সময় আপনি নিম্নলিখিত ত্রুটি প্রতিক্রিয়াগুলির মধ্যে একটি পেতে পারেন৷ এই প্রতিক্রিয়াগুলি HTTP স্ট্যাটাস কোডের আকারে আসে।

  • 400 Bad Request - অবৈধ সিনট্যাক্সের কারণে সার্ভার ক্লায়েন্টের পাঠানো অনুরোধ প্রক্রিয়া করতে অক্ষম ছিল। সাধারণ কারণগুলির মধ্যে রয়েছে বিকৃত JSON বা স্ট্রিং মানের জন্য "" এর পরিবর্তে null ব্যবহার করা।
  • 404 Not Found - অনুরোধ করা সম্পদ খুঁজে পাওয়া যায়নি কিন্তু ভবিষ্যতে উপলব্ধ হতে পারে. সাধারণত, এর মানে হল যে আমরা অনুরোধ করা ডিভাইসটি খুঁজে পাচ্ছি না। এর মানে এমনও হতে পারে যে ব্যবহারকারীর অ্যাকাউন্টটি Google-এর সাথে লিঙ্ক করা হয়নি বা আমরা একটি অবৈধ agentUserId পেয়েছি। নিশ্চিত করুন যে agentUserId আপনার SYNC প্রতিক্রিয়াতে প্রদত্ত মানের সাথে মেলে এবং আপনি সঠিকভাবে সংযোগ বিচ্ছিন্ন করার উদ্দেশ্য পরিচালনা করছেন৷