Library ini mengimplementasikan akses ke perangkat Viessmann dengan menggunakan API resmi dari Portal Pengembang Viessmann.
device.circuits
ke device.burners
dan device.compressor
. PyViCare
umum. Gunakan kelas ini untuk memuat semua perangkat yang tersedia.Device
. Anda sekarang dapat mengakses dan mengulangi semua sirkuit yang tersedia melalui device.circuits
. Hal ini memungkinkan untuk dengan mudah melihat properti mana yang bergantung pada sirkuit.Lihat contoh di bawah untuk mengetahui bagaimana Anda dapat menggunakannya.
raise_exception_on_rate_limit
)raise_exception_on_not_supported_device_feature
)Untuk menggunakan PyViCare, setiap pengguna harus mendaftar dan membuat klien API pribadinya. Ikuti langkah-langkah berikut untuk membuat klien Anda:
vicare://oauth-callback/everest
Client ID
untuk digunakan dalam kode Anda. Meneruskannya sebagai parameter konstruktor ke perangkat.Harap dicatat bahwa tidak semua properti dari versi lama dan aplikasi seluler ViCare tersedia di API baru. Properti yang hilang telah dihapus dan mungkin ditambahkan nanti jika tersedia kembali.
Kami memerlukan bantuan untuk menguji dan meningkatkan PyViCare, karena pengelola hanya memiliki jenis sistem pemanas tertentu. Untuk bug, pertanyaan, atau permintaan fitur, bergabunglah dengan saluran PyViCare di Discord atau buat masalah di repositori ini.
Tergantung pada perangkatnya, beberapa fitur tidak tersedia/didukung. Hal ini menyebabkan munculnya PyViCareNotSupportedFeatureError
jika metode khusus dipanggil. Ini kemungkinan besar bukan bug, tetapi batasan dari perangkat itu sendiri.
Tip: Anda dapat menggunakan kontekslib.suppress Python untuk menanganinya dengan baik.
asGazBoiler
untuk pemanas gasasHeatPump
untuk pompa panasasFuelCell
untuk sel bahan bakarasPelletsBoiler
untuk pemanasan peletasOilBoiler
untuk pemanas minyakasHybridDevice
untuk pemanas hibrid pompa gas/panas 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 ())
Ikuti langkah-langkah berikut untuk mengakses API di Postman:
Buat token akses di tab Authorization
dengan tipe OAuth 2.0
dan input berikut:
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
.Popup login akan terbuka. Masukkan nama pengguna dan kata sandi ViCare Anda.
Gunakan URL ini untuk installationId
, gatewaySerial
dan deviceId
Anda :
https://api.viessmann.com/iot/v1/equipment/installations?includeGateways=true
installationId
adalah data[0].id
gatewaySerial
adalah data[0].gateways[0].serial
deviceId
adalah data[0].gateways[0].devices[0].id
Gunakan data di atas untuk menggantikan {installationId}
, {gatewaySerial}
dan {deviceId}
di URL ini untuk menyelidiki Viessmann API:
https://api.viessmann.com/iot/v1/features/installations/{installationId}/gateways/{gatewaySerial}/devices/{deviceId}/features
Karena perubahan terbaru pada batas laju API Viessmann dapat tercapai. Dalam hal ini PyViCareRateLimitError
dimunculkan. Anda dapat membaca kesalahan ( limitResetDate
) ketika batas kecepatan disetel ulang.
Untuk membantu memastikan pembuatan lebih banyak kasus pengujian, Anda dapat menjalankan kode ini dan membuat permintaan penarikan dengan menambahkan pengujian baru untuk jenis perangkat Anda. Pengujian Anda harus dimasukkan ke dalam pengujian/respons dan diberi nama
.
Kode yang harus dijalankan untuk mewujudkan hal ini ada di bawah. Ini secara otomatis menghapus informasi "sensitif" seperti id instalasi dan nomor seri. Anda dapat mengganti nilai default atau menggunakan variabel lingkungan 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 ())