Bir Tesla ile diğer araçlar arasındaki farkı soranlara şöyle anlatıyorum. Tesla 4 tekerleği olan bir yazılım, diğer elektrikli araçlar ise elektrik motoru olan bir araba.
Yazılım olmasından sebep Tesla içerisinde API (Application Programming Interface) barındıran bir IoT cihazı aslında. Streaming API dediğimiz özelliği sayesinde araç size kendisi ile ilgili pek çok bilgi veriyor ve siz bunları kaydedip daha sonra inceleyebiliyorsunuz.
Bugün size bu verileri nasıl elde edip kaydedebileceğiniz üzerine bilgi vereceğim. İlk önce alternatiflerden başlayayım.
TeslaFi uzun yıllardır kullanılan ücretli bir çözüm. Arabirimini ben çok beğenmiyorum çok derme çatma yazılmış ve dizayna özen gösterilmemiş. Aracı ilk aldığımda hemen entegrasyonu yaptım ama hem verilerin önemi hem de gizliliği konusu beni rahatsız etti. Araç ile ilgili çok fazla bilgi var ve bu bilginin başka bir firma sunucularında tutulması tercih edeceğim bir durum değil. Eğer araç ile her bilginin başka bir sunucuda tutulması sizi rahatsız etmiyorsa ve aylık 5USD ödemek sizin için problem değilse TeslaFi kullanabilirsiniz. En hızlı entegrasyon burada.
TeslaFi’den sonra ikinci bilinen kısım ise TeslaLogger. Bu yazılım kendi sunucunuzda (ya da raspberry pi) host ettiğiniz bir yazılım. İlk önce kurmak için buna yöneldim ama ama gerek tasarlanma şekli, gerek kullanılan mimari (Mono üzerinde C#? Almayayım) bu iş için doğru seçim olmadığını hissettirdi. Üstelik mevcut anlatım ile ben kurulumu tamamlayamadım, bu konulardan anlamayan birisi için kurulum zaten imkansız. O sebeple TeslaLogger’ı da geçiyorum ve esas anlatmak istediğim yazılıma geliyorum; TeslaMate.
TeslaMate bu işe en uygun kütüphaneler ve diller kullanılarak tasarlanmış. Dil olarak Elixir’de yazılmış bir yazılım. Elixir, Whatsapp’ın da üzerinde çalıştığı ErLang’ın geliştirilmiş hali. Tesla gibi data stream eden IoT cihazları için biçilmiş kaftan. Veritabanı olarak de PostgreSQL kullanıyor. Bu da yine açık kaynak kodlu başarılı RDBMS tipi bir veritabanı. O sebeple henüz daha kurmadan programa yakınlaşıyorum; seçimler doğru yapılmış. Güneş enerjisi santrallerini izlemede kullandığımız Grafana üzerine kullanması ise direkt seçmeme sebep oluyor.
Eğer Github’da 2 farklı yazılım görür ve arada kalırsanız ilk bakacağınız şey istatistikleri olsun. TeslaLogger bugün itibariyle 218 yıldız 77 forka sahipken TeslaMate 2100 yıldız 322 forka sahip. Github kullanıcıları tarafındanda beğenilen bir yazılım.
Peki bu kadar övdük şimdi bunu nasıl kullanacağız?
Öncelikle bu iş için sürekli açık bir bilgisayara ihtiyacınız var. Bu evinizdeki bir raspberry cihaz da olabilir, ofisinizde kullanmadığınız bir laptopda (linux kurulu olmak şartıyla veya WSL2 kullanmak şartıyla) veya benim gibi sunucularla haşır neşir iseniz Contabo’dan bir VPS alabilirsiniz. Ben VPS’i tercih ettim ama VPS beraberinde bazı güvenlik önlemlerini de gerektirecek onlardan blog yazısının en sonunda bahsedeceğim.
İlk olarak linux (tercihen Debian veya türevleri) konsoluna SSH ile bağlandığınızı varsayıyorum. Root yetkilerine sahipsiniz ve kuruluma başlayabilirsiniz. Öncelikle ana aracımız olan Docker ve Docker Compose’u kuralım.
# Repolardaki paketleri güncelle
sudo apt update
sudo apt-get -y dist-upgrade
#Mevcutta kurulu eski dürüm docker varsa kaldır
sudo apt-get remove docker docker-engine docker.io containerd runc
#Gerekli ara paketleri kur
sudo apt-get install ca-certificates curl gnupg lsb-release
Sistemimiz docker kurulumuna geçmeye hazır.
#Docker'ın imzasını sisteme tanıt
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
#Docker repolarını sisteme ekle
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
#Docker'ı kur
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# Docker compose'u kur
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Şuanda elimizde docker kurulmuş bir sistem var. Tabi bu bizim sistemimizin temeli. Bu aşamadan sonra yapılacak olan kurulum TeslaMate’e ait.
Hiç bilmeyenler için kısaca şöyle anlatayım; artık yazılımlar pek çok parçadan oluşan komponentler halinde paketleniyor. Bu paketlere “konteyner” deniyor. Yazılımı sunan firma bize hazır çalışan bir konteyner veriyor ve Docker bu konteynerin kurulumunu ve çalışmasını yönetiyor. Docker kullanmasaydık pek çok yazılımı teker teker kurup elle entegre etmemiz gerekiyordu. Şimdiyse işler çok hızlı. Docker üzerinde çalışan binlerde yazılım var o sebeple yarın birgün docker kullanan başka bir yazılım kullanacaksanız atyapınız hazır. Şimdi gelelim TeslaMate kurmaya.
#Ana klasörümüze gidelim
cd ~
mkdir teslamate
cd teslamate
nano docker-compose.yml
Bu aşamada karşınıza bir metin editörü açılacak. O editörün içerisine aşağıdakileri aynen yapıştırın.
version: "3"
services:
teslamate:
image: teslamate/teslamate:latest
restart: always
environment:
- DATABASE_USER=teslamate
- DATABASE_PASS=secret
- DATABASE_NAME=teslamate
- DATABASE_HOST=database
- MQTT_HOST=mosquitto
ports:
- 4000:4000
volumes:
- ./import:/opt/app/import
cap_drop:
- all
database:
image: postgres:13
restart: always
environment:
- POSTGRES_USER=teslamate
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=teslamate
volumes:
- teslamate-db:/var/lib/postgresql/data
grafana:
image: teslamate/grafana:latest
restart: always
environment:
- DATABASE_USER=teslamate
- DATABASE_PASS=secret
- DATABASE_NAME=teslamate
- DATABASE_HOST=database
ports:
- 3000:3000
volumes:
- teslamate-grafana-data:/var/lib/grafana
mosquitto:
image: eclipse-mosquitto:2
restart: always
command: mosquitto -c /mosquitto-no-auth.conf
ports:
- 1883:1883
volumes:
- mosquitto-conf:/mosquitto/config
- mosquitto-data:/mosquitto/data
volumes:
teslamate-db:
teslamate-grafana-data:
mosquitto-conf:
mosquitto-data:
Yapıştırdıktan sonra kaydedip çıkmakta biraz zorlanabilirsiniz. Ctrl+X yapıp klavyeden Y tuşuna basıp sonra Enter’e basarak çıkabilirsiniz. Ya da bu dosyayı kendi cihazınızda oluşturup SFTP/FTP gibi bir arabirimle de yükleyebilirsiniz o kısmı size kalmış. Şimdi geliyoruz herşeyi çalıştıran kısma
# Haydi çalıştıralım
sudo docker-compose up -d
Bu aşamada yazılım birtakım download yapacak ve yavaş yavaş çalıştırmaya başlayacak. İşlet tamamlandığında şöyle bir görüntü olacak
Daha sonra bir sorun olması ihtimaline karşı kontrol etmek için aşağıdaki komutu kullanın
docker-compose top
Bu komutta da şöyle bir çıktı olacak
Karmaşık gözüktüğüne aldanmayın, sarı ile işaretli yerlerin altında bir veya birkaçtane PID görüyorsanız çalışmış demektir.
Peki yazılımı kurduk şimdi ne yapacağız? Tesla ile entegre edeceğiz. Öncelikle Apple kullanıcıları için Auth for Tesla diye bir uygulama var onu indiriyoruz.
Android kullanmadığım için Android’de böyle bir uygulama varmı bilmiyorum. Daha sonra programı indirip Tesla hesabımıza giriyoruz. Girdiğimizde bizi 2 adet “Token” karşılıyor.
Yukarıda da göreceğiniz üzere 2 adet TOKEN var. Üstteki TeslaFi gibi yerler ile paylaşabileceğiniz “SADECE İZLEME” yetkili token. Bu token’a sahip kişi arabanın bilgilerini uzaktan alabilir. Access token ise araca uzaktan erişime izin verir. Bu tokenları iyi saklayın. Eğer güvenliğinden şüphe ediyorsanız yenileyin eskilerini iptal edin.
Şimdi araçtan veri almamızı sağlayacak token’ı da aldığımıza göre entegrasyona geçebiliriz.
TeslaMate 2 kısımdan oluşan bir yazılım; 4000 portunda Tesla ile entegrasyonu yapan yazılım çalışıyor 3000 portunda da görselleştirmeyi yapan Grafana yazılımı. Biz önce 4000 portunda bağlanıp token bilgilerini gireceğiz daha sonra 3000 portundan aracı izleyeceğiz.
Bu kurulumu yaptığınız cihazın (sunucu, raspberry vs.) IP adresini öğrenmelisiniz. Biliyorsanız ne ala, bilmiyorsanız “ifconfig” komutu size yol gösterebilir. Eğr herşey tamamsa bundan sonrası browser üzerinden devam ediyor.
#Benim IP adresim 192.168.182.132. Sizinki farklıdır.
# Teslamate
http://192.168.182.132:4000/sign_in
# Grafana
http://192.168.182.132:3000
Buraya giriş yaptığınızda sizi şöyle bir ekran bekliyor olacak
Buraya iOS uygulamasından aldığınız tokenleri girip Sign In dediğinizde işlem tamam. Entegrasyonu tamamlamış oluyorsunuz. Peki Grafana’da nasıl gözüküyor?
Burada tüm dashboardlara değinmiyorum ama daha pek çok detay mevcut. Son fotoğrafta en sağda menü açık. Oradan daha hangi dashboardlar olduğu konusunda fikir edinebilirsiniz.
TeslaMate sürekli geliştirilen açık kaynak kodlu bir yazılım. Bir fikriniz bir öneriniz varsa veya bulduğunuz bir problem varsa buradan iletişime geçip paylaşabilirsiniz.
Kendi tesla veri kaydediciniz hayırlı olsun.
Güvenlik İle İlgili Önemli Not
En başında da belirtmiştim, bu kurulumda eğer kurulum yapılan cihaz internete açıksa bu sistemlere internet üzerinden erişilebilir. Eğer böyle kullanacaksanız kesinlikle evinizde/işyerinizde internet üzerinden port yönlendirmesi vb. olmayan bir cihaz kullanın.
Eğer internet üzerinden erişilebilir halde olacaksa (Örneğin contabo sunucusu) o zaman docker-compose dosyasında değişiklikler yapmanız, Traefik/nginx gibi bir sunucu arkasına almanız ve IP/UsernamePassword gibi erişim engelleri koymanız gerekli.
Kaş yapayım derken göz çıkarmayın.
Teslanızla keyifli yolculuklar 🙂
Bir yanıt yazın