تنفذ هذه المكتبة الوصول إلى أجهزة Viessmann باستخدام واجهة برمجة التطبيقات الرسمية من Viessmann Developer Portal.
device.circuits
إلى device.burners
و device.compressor
. PyViCare
عامة. استخدم هذه الفئة لتحميل كافة الأجهزة المتوفرة.Device
. يمكنك الآن الوصول إلى جميع الدوائر المتاحة وتكرارها عبر device.circuits
. يتيح ذلك معرفة الخصائص التي تعتمد على الدائرة بسهولة.انظر المثال أدناه لمعرفة كيف يمكنك استخدام ذلك.
raise_exception_on_rate_limit
)raise_exception_on_not_supported_device_feature
)لاستخدام PyViCare، يجب على كل مستخدم التسجيل وإنشاء عميل API الشخصي الخاص به. اتبع الخطوات التالية لإنشاء عميلك:
vicare://oauth-callback/everest
Client ID
لاستخدامه في التعليمات البرمجية الخاصة بك. قم بتمريرها كمعلمة منشئ إلى الجهاز.يرجى ملاحظة أنه ليست كل الخصائص من الإصدارات الأقدم وتطبيق ViCare للجوال متوفرة في واجهة برمجة التطبيقات الجديدة. تمت إزالة الخصائص المفقودة وقد تتم إضافتها لاحقًا إذا كانت متوفرة مرة أخرى.
نحتاج إلى مساعدة في اختبار PyViCare وتحسينه، نظرًا لأن المشرفين لديهم أنواع محددة فقط من أنظمة التدفئة. بالنسبة للأخطاء أو الأسئلة أو طلبات الميزات، انضم إلى قناة PyViCare على Discord أو قم بإنشاء مشكلة في هذا المستودع.
اعتمادًا على الجهاز، لا تتوفر/تدعم بعض الميزات. يؤدي هذا إلى ظهور خطأ PyViCareNotSupportedFeatureError
إذا تم استدعاء الطريقة المخصصة. وهذا على الأرجح ليس خطأً، بل هو قيد على الجهاز نفسه.
نصيحة: يمكنك استخدام Pythons contextlib.suppress للتعامل معها بأمان.
asGazBoiler
لتسخين الغازasHeatPump
حرارية للمضخات الحراريةasFuelCell
الوقود لخلايا الوقودasPelletsBoiler
لتسخين الكرياتasOilBoiler
لتسخين الزيتasHybridDevice
للتسخين الهجين لمضخة الغاز/الحرارة import sys
import logging
from PyViCare . PyViCare import PyViCare
client_id = "INSERT CLIENT ID"
email = "email@domain"
password = "password"
vicare = PyViCare ()
vicare . initWithCredentials ( email , password , client_id , "token.save" )
device = vicare . devices [ 0 ]
print ( device . getModel ())
print ( "Online" if device . isOnline () else "Offline" )
t = device . asAutoDetectDevice ()
print ( t . getDomesticHotWaterConfiguredTemperature ())
print ( t . getDomesticHotWaterStorageTemperature ())
print ( t . getOutsideTemperature ())
print ( t . getRoomTemperature ())
print ( t . getBoilerTemperature ())
print ( t . setDomesticHotWaterTemperature ( 59 ))
circuit = t . circuits [ 0 ] #select heating circuit
print ( circuit . getSupplyTemperature ())
print ( circuit . getHeatingCurveShift ())
print ( circuit . getHeatingCurveSlope ())
print ( circuit . getActiveProgram ())
print ( circuit . getPrograms ())
print ( circuit . getCurrentDesiredTemperature ())
print ( circuit . getDesiredTemperatureForProgram ( "comfort" ))
print ( circuit . getActiveMode ())
print ( circuit . getDesiredTemperatureForProgram ( "comfort" ))
print ( circuit . setProgramTemperature ( "comfort" , 21 ))
print ( circuit . activateProgram ( "comfort" ))
print ( circuit . deactivateComfort ())
burner = t . burners [ 0 ] #select burner
print ( burner . getActive ())
compressor = t . compressors [ 0 ] #select compressor
print ( compressor . getActive ())
اتبع هذه الخطوات للوصول إلى واجهة برمجة التطبيقات في Postman:
قم بإنشاء رمز وصول في علامة التبويب Authorization
بنوع OAuth 2.0
والمدخلات التالية:
PyViCare
Authorization Code (With PKCE)
vicare://oauth-callback/everest
https://iam.viessmann.com/idp/v3/authorize
https://iam.viessmann.com/idp/v3/token
SHA-256
IoT User
Send client credentials in body
.سيتم فتح نافذة منبثقة لتسجيل الدخول. أدخل اسم المستخدم وكلمة المرور الخاصين بـ ViCare.
استخدم عنوان URL هذا للوصول إلى installationId
gatewaySerial
ومعرف deviceId
:
https://api.viessmann.com/iot/v1/equipment/installations?includeGateways=true
installationId
هو data[0].id
gatewaySerial
هو data[0].gateways[0].serial
deviceId
هو data[0].gateways[0].devices[0].id
استخدم البيانات المذكورة أعلاه لاستبدال {installationId}
و {gatewaySerial}
و {deviceId}
في عنوان URL هذا للتحقق من واجهة برمجة تطبيقات Viessmann:
https://api.viessmann.com/iot/v1/features/installations/{installationId}/gateways/{gatewaySerial}/devices/{deviceId}/features
نظرًا للتغييرات الأخيرة في حدود معدل Viessmann API، يمكن الوصول إليها. في هذه الحالة يتم رفع الخطأ PyViCareRateLimitError
. يمكنك القراءة من الخطأ ( limitResetDate
) عند إعادة تعيين حد السعر.
للمساعدة في ضمان تسهيل إنشاء المزيد من حالات الاختبار، يمكنك تشغيل هذا الرمز وتقديم طلب سحب مع إضافة الاختبار الجديد لنوع جهازك. يجب أن يُلتزم الاختبار الخاص بك بالاختبارات/الاستجابة ويُسمى
.
الكود المطلوب تشغيله لتحقيق ذلك موجود أدناه. يؤدي هذا تلقائيًا إلى إزالة المعلومات "الحساسة" مثل معرف التثبيت والأرقام التسلسلية. يمكنك إما استبدال القيم الافتراضية أو استخدام متغيرات البيئة PYVICARE_*
.
import sys
import os
from PyViCare . PyViCare import PyViCare
client_id = os . getenv ( "PYVICARE_CLIENT_ID" , "INSERT CLIENT_ID" )
email = os . getenv ( "PYVICARE_EMAIL" , "email@domain" )
password = os . getenv ( "PYVICARE_PASSWORD" , "password" )
vicare = PyViCare ()
vicare . initWithCredentials ( email , password , client_id , "token.save" )
with open ( f"dump.json" , mode = 'w' ) as output :
output . write ( vicare . devices [ 0 ]. dump_secure ())