python - Unable to PUT to Nest -


मैं नेटी डेटा जैसे ambient_temperature_f या रीडायरेक्ट फ़ायरबेस यूआरएल को अक्षम करने में असमर्थ हूं। मुझे संदेह है कि नेस्ट के लिए कुछ विशेष है, जिसे मैं फायरबेज मॉड्यूल में उपयोग करने के लिए इस्तेमाल कर रहा हूं। (

से firebase.py :

  @http_connection (60) def make_put_request (url, डेटा, पैरामीटर, हेडर, कनेक्शन): "" "हेल्पर फ़ंक्शन जो दिए गए फायरबसे समापन बिंदु पर एक HTTP PUT अनुरोध करता है। समयबाह्य 60 सेकंड है।` Url`: फ़ायरबसे एंडपॉइंट का पूरा यूआरएल (डीएसएन एडेड।) `डेटा`: जेएसओएन सीरियलाइजेट डिक्ट जिसे रिमोट स्टोरेज में संग्रहित किया जाएगा। 'पैरामीटर': पाइथन डिक्ट को यूआरएल से जोड़ा जाता है, जैसे कि एक क्वेरी स्ट्रिंग। 'हेडर': पायथन डिक्। HTTP अनुरोध हेडर। `कनेक्शन`: पूर्वनिर्धारित HTTP कनेक्शन उदाहरण। यदि नहीं दिया गया है, तो इसे` decorators.http_connection` फ़ंक्शन द्वारा प्रदान किया जाता है। वापसी मूल्य JSON डिकोडर द्वारा deserialized पायथन संकेत है। हालांकि, यदि स्थिति कोड नहीं है 2x या 403, एक अनुरोध। एचटीटीपीएआरआर उठाया है। Connection = connection_pool.get_available_connection () पुनः Sponse = make_put_request ('http: //firebase.localhost/users', '{"1": "ओज़गुर वॅटनसेवर"}, {' X_FIREBASE_SOMETHING ':' हाय '}, कनेक्शन) प्रतिक्रिया = & gt; {'1': 'ओज़गुर वतनसेवर'} या {'त्रुटि': 'अनुमति से वंचित।}} "" टाइमआउट = गेटैट (कनेक्शन,' टाइमआउट ') प्रतिक्रिया = connection.put (url, डेटा = डेटा, पैराम्स = पैरामीटर , Headers = headers, timeout = timeout) प्रिंट ('[make_put_request]: [% s] [% s] [% s] [% s] \ n'% (url, डेटा, पैरामीटर, हेडर)) अगर response.ok या response.status_code == 403: रिटर्न प्रतिक्रिया। जेसन () अगर response.content else कोई नहीं: response.raise_for_status ()  

प्रिंट आउट:

  [मेक-इनपुट_सुकेंस्ट]: [https://developer-api.nest.com/devices/thermostats/DEVICE_ID/ambient_temperature_f.json?auth=VALID_AUTH_TOKEN] [71] [{}} [{}}  

रिटर्न त्रुटि:

  ट्रेसबैक (सबसे हाल ही में कॉल अंतिम): फ़ाइल "सी: \ py \ nest_auth.py", पंक्ति 90, में & lt; मॉड्यूल & gt; put_result = firebase.put (डेटा_उर्लें, फ़ील्ड_नाम, 71) फ़ाइल "C: \ Python34 \ lib \ site-packages \ firebase \ decorators.py", पंक्ति 1 9, लिपटे हुए रिटर्न F (* args, ** kwargs) में फ़ाइल "C: \ Python34 \ lib \ साइट-संकुल \ firebase \ प्राथमिकी फ़ाइल "C: \ Python34 \ lib \ site-packages \ firebase \ decorators.py", पंक्ति 19, लिपटे हुए रिटर्न एफ (* आर्ग्स, ** kwargs) फ़ाइल में "ebase.py", पंक्ति 312, डाल कनेक्शन = कनेक्शन में) फ़ाइल "C: \ Python34 \ lib \ site-packages \ requests \ models.py", पंक्ति: "C: \ Python34 \ lib \ site-packages \ firebase \ firebase.py", पंक्ति 77, make_put_request response.raise_for_status () में " 808, raise_for_status में HTTPError (http_error_msg, प्रतिक्रिया = स्व) अनुरोध। एक्सपैशन.एचटीटीपी त्रुटि: 400 क्लाइंट त्रुटि: खराब अनुरोध  

यह एक लक्ष्य का उपयोग करते समय काम किया, लेकिन काम नहीं कर रहा है नेस्ट के लिए:

  put_result = firebase.put ('/ devices / thermostats / DEVICE_ID /', 'ambient_temperature', 71)  

ambient_temperature_f के अनुसार थ्रेशोस्टैट से रिपोर्ट परिवेश के तापमान का प्रतिनिधित्व करने वाला केवल पढ़ने योग्य फ़ील्ड है यह समझने में कोई मतलब नहीं होगा कि यह एक संवेदक पढ़ने के कारण है।

मुझे लगता है कि आप target_temperature_f पर लिखना चाहते हैं, जो तापमान है थर्मोस्टैट को गर्मी या शांत करना चाहिए ।


Comments