Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Teşekkür

Bu entegrasyon, iltekin/vestel-ac-remote-control projesinin üzerine inşa edilerek Home Assistant kullanımına uyarlanmıştır.

Vestel AC — Home Assistant Custom Integration

Vestel Akıllı Yaşam (HomeVSmart) API'si üzerinden Vestel klimaları Home Assistant'a entegre eden custom component.

image image image

Özellikler

  • Hub mimarisi — tek seferinde kurulum, tüm klimalar otomatik keşfedilir
  • Climate entity — mod (soğutma / ısıtma / nem alma), fan hızı, hedef sıcaklık
  • Oda sıcaklığı sensörü — klimadan okunan anlık sıcaklık
  • Aylık enerji tüketimi — 12 aylık kWh ve maliyet geçmişi
  • Günlük enerji tüketimi — mevcut ayın günlük kWh ve maliyet geçmişi
  • Güç switch'i — basit açma/kapama (otomasyonlar için)
  • HM03 ve HM07 wifi kart tipleri desteklenir
  • Optimistic update — komutlar anında UI'ya yansır
  • Token otomatik yenileme (AWS Cognito)

Gereksinimler

  • Home Assistant 2024.1+
  • Vestel Akıllı Yaşam hesabı
  • AWS Cognito OAuth kimlik bilgileri (aşağıya bakın)

Kurulum

Manuel

  1. custom_components/vestel_ac/ klasörünü HA config dizinine kopyala:
    <ha-config>/custom_components/vestel_ac/
    
  2. Home Assistant'ı yeniden başlat
  3. Ayarlar → Cihazlar ve Servisler → Entegrasyon Ekle → "Vestel AC"

HACS (yakında)

HACS desteği planlanmaktadır.

Kimlik Bilgilerini Alma

Entegrasyon kurulumu için 4 değer gereklidir:

Alan Açıklama
OAuth Client ID Vestel Cognito app client ID
OAuth Client Secret Vestel Cognito app client secret
Cognito Username Hesabınızın Cognito username (UUID formatında)
Refresh Token AWS Cognito refresh token

Client ID ve Secret

Vestel Akıllı Yaşam mobil uygulamasının ağ trafiğini bir HTTP proxy (mitmproxy, Charles Proxy vb.) ile yakalayarak cognito-idp.eu-west-1.amazonaws.com adresine giden InitiateAuth isteğinden ClientId değerini alabilirsiniz.

Username ve Refresh Token

Vestel uygulaması SSL pinning kullandığından trafiği yakalamak için root erişimine sahip bir Android ortamı gerekmektedir. Önerilen yöntem:

Adım 1 — Ortam Hazırlama

BlueStacks (Android emülatör) kullanın:

  1. BlueStacks'i indirip kurun
  2. Multi-Instance Manager'dan Android 11, ABI: ARM instance oluşturun
  3. Root access'i config dosyasından aktif edin:
    • BlueStacks'i tamamen kapatın
    • Instance config dosyasını açın:
      C:\ProgramData\BlueStacks_nxt\Engine\<instance_adı>\bluestacks.conf
      
    • Dosyada şu satırı bulun ve değiştirin:
      bst.feature.rooting="0"
      
      bst.feature.rooting="1"
      
    • Dosyayı kaydedin ve BlueStacks'i yeniden başlatın
  4. BlueStacks içinde Play Store'dan Magisk uygulamasını arayın — bulunamazsa APK olarak yükleyin:
    # Magisk APK'yı bilgisayardan BlueStacks'e yükle
    adb connect 127.0.0.1:5555
    adb -s emulator-5554 install magisk.apk

    Magisk APK için: github.com/topjohnwu/Magisk/releases adresinden indirin.

  5. Magisk uygulamasını açın, kurulumu tamamlayın ve BlueStacks'i yeniden başlatın
  6. Bilgisayarınızda mitmproxy kurun: pip install mitmproxy
  7. mitmweb komutunu çalıştırın

Adım 2 — Proxy Ayarı

# BlueStacks'e ADB ile bağlan
adb connect 127.0.0.1:5555

# SELinux'u devre dışı bırak (Frida ve sistem sertifikası için gerekli)
adb -s emulator-5554 shell "su -c 'setenforce 0'"

# Proxy ayarla (bilgisayarınızın IP'si ile)
adb -s emulator-5554 shell settings put global http_proxy 192.168.x.x:8080

Not: BlueStacks her yeniden başlatıldığında SELinux tekrar etkinleşebilir, bu durumda setenforce 0 komutunu tekrar çalıştırın.

Adım 3 — mitmproxy Sertifikasını Sistem Sertifikası Olarak Yükle

# Sertifika hash'ini hesapla
openssl x509 -inform PEM -subject_hash_old -noout -in ~/.mitmproxy/mitmproxy-ca-cert.pem

# Sertifikayı kopyala (hash değerinizle değiştirin, örn: c8750f0d)
adb -s emulator-5554 shell "su -c 'mkdir -p /data/adb/modules/cert/system/etc/security/cacerts'"
adb -s emulator-5554 push ~/.mitmproxy/mitmproxy-ca-cert.pem /data/local/tmp/<hash>.0
adb -s emulator-5554 shell "su -c 'cp /data/local/tmp/<hash>.0 /data/adb/modules/cert/system/etc/security/cacerts/ && chmod 644 /data/adb/modules/cert/system/etc/security/cacerts/<hash>.0'"

# BlueStacks'i yeniden başlat

Adım 4 — Vestel Uygulamasını Yükle ve Giriş Yap

  1. Play Store'dan Vestel Akıllı Yaşam uygulamasını yükleyin
  2. Proxy aktifken uygulamayı açın ve hesabınızla giriş yapın
  3. mitmweb arayüzünde (http://127.0.0.1:8081) cognito-idp.eu-west-1.amazonaws.com adresine giden InitiateAuth yanıtını bulun:
    • AuthenticationResult.RefreshTokenRefresh Token
  4. Aynı yanıttaki IdTokenjwt.io ile decode edin:
    • cognito:username alanı → Cognito Username

Not: Refresh token genellikle 30+ gün geçerlidir. Süresi dolduğunda Ayarlar → Entegrasyonlar → Vestel AC → Yapılandır üzerinden yenileyebilirsiniz.

Entity'ler

Her klima için şu entity'ler oluşturulur:

Entity Tür Açıklama
climate.<oda> climate Ana kontrol (mod, fan, sıcaklık)
sensor.<oda>_oda_sicakligi sensor Anlık oda sıcaklığı (°C)
sensor.<oda>_aylik_tuketim sensor Bu ayın tüketimi (kWh)
sensor.<oda>_gunluk_tuketim sensor Bugünün tüketimi (kWh)
switch.<oda>_guc switch Güç açma/kapama

Enerji Sensörü Attribute'ları

Aylık tüketim (monthly_history):

[
  {"date": "7.2026", "energy_kwh": 4.38, "cost": 14.19},
  {"date": "6.2026", "energy_kwh": 3.00, "cost": 9.72},
  ...
]

Günlük tüketim (daily_history):

[
  {"date": "15.7.2026", "energy_kwh": 0.0, "cost": 0.0},
  {"date": "14.7.2026", "energy_kwh": 0.068, "cost": 0.22},
  ...
]

Dashboard Grafikleri (ApexCharts Card)

ApexCharts Card ile enerji tüketimini grafik olarak gösterebilirsiniz.

Aylık tüketim grafiği:

type: custom:apexcharts-card
header:
  title: Aylık Tüketim (kWh)
  show: true
graph_span: 13month
span:
  end: month
series:
  - entity: sensor.oda_aylik_tuketim
    name: Tüketim
    type: column
    extend_to: false
    data_generator: |
      return entity.attributes.monthly_history.map(e => {
        const parts = e.date.split('.');
        const d = new Date(parseInt(parts[1]), parseInt(parts[0]) - 1, 1);
        return [d.getTime(), e.energy_kwh];
      });

Günlük tüketim grafiği:

type: custom:apexcharts-card
header:
  title: Günlük Tüketim (kWh)
  show: true
graph_span: 31d
span:
  end: day
series:
  - entity: sensor.oda_gunluk_tuketim
    name: Tüketim
    type: column
    extend_to: false
    data_generator: |
      return entity.attributes.daily_history.map(e => {
        const parts = e.date.split('.');
        const d = new Date(parseInt(parts[2]), parseInt(parts[1]) - 1, parseInt(parts[0]));
        return [d.getTime(), e.energy_kwh];
      });

API Bilgileri

Bu entegrasyon aşağıdaki Vestel/HomeVSmart API endpoint'lerini kullanır:

Endpoint Açıklama
cognito-idp.eu-west-1.amazonaws.com AWS Cognito kimlik doğrulama
sh-native-api.homevsmart.com/v1.0/homes Ev listesi
sh-native-api.homevsmart.com/v1.0/homes/{id}/devices Cihaz listesi
sh-native-api.homevsmart.com/v1.0/homeappliances/legacy/status Cihaz durumu
sh-native-api.homevsmart.com/v1.0/customer/devices/{id}/legacy/command Komut gönderme
sh-native-api.homevsmart.com/v1.0/energymanagement/consumption/month Aylık enerji
sh-native-api.homevsmart.com/v1.0/energymanagement/consumption/day Günlük enerji

Güncelleme Notları

v2.0.0

  • Hub mimarisi: tek config entry, tüm cihazlar otomatik
  • Enerji tüketim sensörleri eklendi (aylık + günlük)
  • HM03/HM07 wifi kart tipi desteği
  • Optimistic update

v1.0.0

  • İlk sürüm: her cihaz ayrı config entry

Lisans

MIT

About

Vestel Akıllı Yaşam (HomeVSmart) API'si üzerinden Vestel klimaları Home Assistant'a entegre eden custom component.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages