हैंडल से जुड़े निर्देश

Google Assistant से मिलने वाले निर्देशों के जवाब में अपने डिवाइस पर कस्टम कोड चलाने के लिए, इन निर्देशों का पालन करें.

सैंपल चलाएं

अब आपने एक trait तय कर लिया है और मॉडल को अपडेट कर दिया है. ऐसे में, पक्का करें कि Google Assistant सही क्वेरी के लिए, 'चालू/बंद' निर्देश भेज रही हो.

googlesamples-assistant-pushtotalk

Enter बटन दबाएं और नीचे दी गई क्वेरी डालकर देखें:

चालू करें.

आपको कंसोल आउटपुट में ये स्टेटमेंट दिखेंगे. अगर नहीं, तो समस्या को हल करने के निर्देश देखें.

INFO:root:Recording audio request.
INFO:root:End of audio request detected
INFO:root:Transcript of user request: "turn on".
INFO:root:Playing assistant response.
INFO:root:Turning device on
INFO:root:Waiting for device executions to complete.
INFO:root:Finished playing assistant response.

आपको पता चलेगा कि सोर्स कोड में ये स्टेटमेंट कहां प्रिंट होते हैं.

सोर्स कोड पाना

अब आप अपना प्रोजेक्ट शुरू करने के लिए तैयार हैं:

git clone https://github.com/googlesamples/assistant-sdk-python

कमांड हैंडलर ढूंढना

सैंपल कोड में मौजूद pushtotalk.py फ़ाइल, अनुरोध भेजने और Google Assistant से जवाब पाने के लिए, SDK टूल का इस्तेमाल करती है.

cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc
nano pushtotalk.py

हैंडलर की इस परिभाषा को खोजें:

device_handler = device_helpers.DeviceRequestHandler(device_id)

@device_handler.command('action.devices.commands.OnOff')
def onoff(on):
    if on:
        logging.info('Turning device on')
    else:
        logging.info('Turning device off')

onoff() में मौजूद कोड action.devices.commands.OnOff निर्देश को हैंडल करता है. यह कमांड, OnOff trait स्कीमा का हिस्सा है.

फ़िलहाल, onoff() परिभाषा लॉग का आउटपुट कंसोल पर. यह रिस्पॉन्स JSON को पार्स करने और आसानी से इस्तेमाल करने के लिए, कमांड पैरामीटर को वैरिएबल में स्टोर करने के लिए, device_helpers.py में हेल्पर फ़ंक्शन का इस्तेमाल करता है. इस कोड में बदलाव करके, प्रोजेक्ट में जो चाहें वह काम करें.

अगर आपके पास एलईडी किट है, तो ऑनऑफ़ निर्देश के जवाब में एलईडी लाइट जलने का तरीक़ा जानने के लिए आगे पढ़ें. अगर आपको यह अनुमति नहीं है, तो अगले सेक्शन को छोड़कर, ज़्यादा Traits और हैंडलर जोड़ने का तरीका जानें.

अगला चरण - Raspबेरी Pi

अब आपको पता है कि आने वाले कमांड को कैसे हैंडल करना है, तो एलईडी लाइट करने के लिए सैंपल कोड में बदलाव करें. अगर आप रैज़बेरी पाई का इस्तेमाल कर रहे हैं, तो इसके लिए कुछ और हार्डवेयर की ज़रूरत होगी.

GPIO पैकेज इंपोर्ट करें

Raspबेरी Pi पर मौजूद सामान्य 'इनपुट/आउटपुट' (GPIO) पिन को आसानी से ऐक्सेस करने के लिए, वर्चुअल एनवायरमेंट में RPi.GPIO पैकेज इंस्टॉल करें.

pip install RPi.GPIO

सैंपल में बदलाव करें

pushtotalk.py फ़ाइल खोलें.

cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc
nano pushtotalk.py

pushtotalk.py फ़ाइल में, RPi.GPIO मॉड्यूल इंपोर्ट करें, ताकि पाई पर GPIO पिन को कंट्रोल किया जा सके. इस स्टेटमेंट को import के अन्य स्टेटमेंट के पास रखें:

import RPi.GPIO as GPIO

कोड में बदलाव करें, ताकि शुरुआत में आउटपुट पिन को लो लॉजिक स्थिति पर सेट किया जा सके. ऑन निर्देश मिलने पर, पिन को हाई लॉजिक स्टेट पर सेट करें. बंद निर्देश मिलने पर, पिन को लो लॉजिक स्टेट पर सेट करें.

device_handler = device_helpers.DeviceRequestHandler(device_id)
GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT, initial=GPIO.LOW)

@device_handler.command('action.devices.commands.OnOff')
def onoff(on):
    if on:
        logging.info('Turning device on')
        GPIO.output(25, 1)
    else:
        logging.info('Turning device off')
        GPIO.output(25, 0)

अपने बदलाव सेव करें और फ़ाइल बंद कर दें.

सैंपल चलाएं

बदला गया सैंपल कोड चलाएं.

python pushtotalk.py

पहले वाली क्वेरी का ही इस्तेमाल करें. एलईडी चालू हो जानी चाहिए.

यह तो बस शुरुआत है. ज़्यादा traits और हैंडलर जोड़ने का तरीका जानें.