
تنفيذ Pharo Netatmo API لمنتجات Legrand Netatmo.
المنتجات المدعومة :
لا يمكنك الوصول إلى البيانات مباشرة من الأجهزة: لا توفر Netatmo ذلك في الوقت الحالي. الطريقة الوحيدة للوصول إلى البيانات والأجهزة هي عبر خوادم Netatmo. يجب أن تكون متصلاً بالإنترنت للحصول على البيانات من أجهزتك.
يتطلب الوصول مصادقة OAuth2 للحصول على رمز الوصول. يجب تحديث هذا الرمز المميز في الوقت المناسب مع طلب مصادقة آخر. لمزيد من التفاصيل حول الأمان، راجع الرابط إلى وثائق Netatmo الرسمية في أسفل هذه الصفحة.
تعمل مصادقة OAuth2 في هذا المشروع باستخدام الزنك ويمكن استخدامها لتطبيقات سطح المكتب أو الويب.
عندما يتم استرداد الرمز المميز الخاص بك، استخدم واجهة برمجة التطبيقات معه أثناء فترة صلاحية الرمز المميز.
Metacello new
baseline: ' NetatmoAPI ' ;
repository: ' github://labordep/ PharoNetatmoAPI :main ' ;
onConflictUseIncoming;
ignoreImage;
load.قم بإنشاء وصول للتطبيق باستخدام حساب Netatmo Connect الخاص بك للحصول على بيانات Client_id وclient_secret الخاصة بك. راجع القسم السفلي لاستخدام مصادقة OAuth2 في هذا المشروع.
لمزيد من التفاصيل راجع الإرشادات الرسمية.
يصف هذا القسم كيفية المصادقة والحصول على رمز الوصول. هذه الخطوة ليست إلزامية إذا حصلت على رمز مميز يدويًا، على سبيل المثال مباشرة من خلال موقع ويب حساب Netamo أو مكتبة توفير أخرى. عندما تحصل على رمز مميز، يمكنك استخدام واجهة برمجة التطبيقات (API)، راجع القسم التالي للحصول على بعض الأمثلة.
أولاً، قم بإنشاء NetatmoAPIAuthentificator جديد باستخدام بيانات Client_id وclient_secret الخاصة بك. تحتاج إلى تحديد نطاق البيانات الخاصة بك، على سبيل المثال: درجة حرارة منظم الحرارة والرطوبة وما إلى ذلك. إذا لم تكن متأكدًا أو إذا كنت بحاجة إلى كل البيانات، فاستخدم NetatmoScopeEnum allReadScopes للحصول على جميع البيانات التي يمكن قراءتها.
authenticator := NetatmoAPIAuthentificator
clientId: ' myClientId '
clientSecret: ' myClientSecret '
scopes: ( NetatmoScopeEnum allReadScopes). الآن قم بإنشاء جلسة جديدة لطلب المصادقة. تقوم هذه الطريقة بإرجاع ZnOAuth2Session التي توفر عملية اتصال OAuth2.
session := authenticator createOAuth2Session. إذا كانت هذه هي المحاولة الأولى للحصول على رمز مميز، فلن تكون الجلسة مباشرة. اتصل بطريقة requestUserAuthentication لفتح متصفح الويب الخاص بك والتحقق من صحة المصادقة باستخدام نموذج Netatmo عبر الإنترنت.
session isLive ifFalse: [
authenticator requestUserAuthentication.
].في هذه الخطوة، افتح متصفح الويب الافتراضي الخاص بك نموذج مصادقة Netatmo عبر الإنترنت:

تحقق واقبل إذا كنت موافقًا. يتم عرض صفحة النتائج الأساسية لتأكيد المصادقة الجيدة، أغلق هذه الصفحة عندما تظهر:

الحصول على الرمز المميز الخاص بك:
token := session liveAccessToken. يجب على Instanciante NetatmoAPI طلب البيانات من واجهة برمجة التطبيقات. استخدم رمزًا مميزًا لإعداد الاتصال.
| api |
api := NetatmoAPI new .
api token: ' yourAccess|tokenHere 'استخدم أساليب فئة "api" لطلب البيانات.
الحصول على جميع الأجهزة، وإرجاع قائمة NetatmoDevice . يمكن أن تتغير القائمة حسب ترخيص الجلسة.
| devices |
devices := api getDevices. احصل على جميع الأجهزة، وقم بإرجاع قائمة بأجهزة NetatmoStation .
| devices |
devices := api getStationDevices. احصل على جهاز محدد من عنوان mac (المعرف)، وقم بإرجاع قائمة بأجهزة NetatmoStation .
| devices |
devices := api getStationDevice:: ' 01:23:45:67:89:ab ' . احصل على جميع الأجهزة، وقم بإرجاع قائمة بأجهزة NetatmoHealthyHomeCoach .
| devices |
devices := api getHealthyHomeCoachDevices. احصل على جهاز محدد من عنوان mac (المعرف)، وقم بإرجاع قائمة بأجهزة NetatmoHealthyHomeCoach .
| devices |
devices := api getHealthyHomeCoachDevice: ' 01:23:45:67:89:ab ' . استخدم واجهة برمجة التطبيقات (API) للحصول على قياس من جهاز، وإرجاع قائمة بمقاييس NetatmoMeasure . يحتوي كل NetatmoMeasure على بيانات (على سبيل المثال 56 )، والنوع (على سبيل المثال 'humidity' )، والوحدة (على سبيل المثال '%' )، ووحدة البيانات (على سبيل المثال Number ) والتاريخ DateTime للقياس. عند طلب إجراء من types: لاختيار نوع البيانات عن طريق تمرير قائمة NetatmoMeasureType .
الحصول على نوع واحد من البيانات من الجهاز.
| measures |
measures := api getMeasures: (device id)
types: NetatmoMeasureType humidity.الحصول على أنواع متعددة من البيانات من الجهاز.
| measures |
measures := api getMeasures: (device id)
types: ( OrderedCollection
with: NetatmoMeasureType temperature
with: NetatmoMeasureType humidity).من الممكن طلب تاريخ وفاصل زمني للقياس، مع مقياس للعينة. مثال: الحصول على درجة الحرارة كل يوم في الوقت الحالي في الأسبوع الماضي.
| measures |
measures := api getMeasures: (device id)
types: NetatmoMeasureType temperature
scale: 1 day
dateTimeBegin: ( DateAndTime now - 7 day)
dateTimeEnd: DateAndTime now. تحتوي الحزمة NetatmoAPI-Examples على بعض أمثلة استخدامات واجهة برمجة التطبيقات (API) مع واجهات المستخدم الأساسية باستخدام Spec و Roassal .
قائمة الأجهزة المتوفرة (مع الأجهزة الفرعية):

قائمة بآخر 7 أيام من تدابير Healthy Home Coach:

لوحة معلومات محطة الطقس:

محطة الطقس تدوم 7 أيام من الرطوبة الداخلية والخارجية:

إلخ.
باستخدام Netatmo Connect APIs سيكون لديك إمكانية الوصول إلى معلومات حساسة للغاية. وينطبق هذا بشكل خاص إذا كان تطبيقك يصل إلى كاميراتنا (البث المباشر أو مقاطع الفيديو). تأكد من احترام خصوصية المستخدم ولديك سياسة خصوصية قوية.
شروط استخدام واجهات برمجة التطبيقات Netatmo Connect
هذه الموارد هي مرجعي لتنفيذ واجهة برمجة التطبيقات هذه. هناك مجموعتان من منتجات واجهة برمجة التطبيقات: Weather/Security/Energy وHomeCoach/Aircare.
وثائق Netatmo العامة
واجهة برمجة تطبيقات أكثر تحديدًا:
وثائق واجهة برمجة تطبيقات Netatmo Aircare
هذا المشروع هو عمل شخصي، وأنا لست منتسباً إلى ليغراند.
هذا المشروع مرخص بموجب ترخيص MIT - راجع ملف الترخيص للحصول على التفاصيل.