TeslaMate ile Tesla’da Datalogger Kullanımı

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.com

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.

TESLALOGGER Image for RaspberryPi 3B (3B+) - EMDS

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.

Auth for Tesla

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.

Tesla Authentication Tokens

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

Teslamate Login Ekranı

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?

Yolculuk detayları. Her P-D vites değiştirme bir yolculuk olarak ayrılıyor.
Yolcuklar ve bilgileri
Verimlilikler

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 🙂


Yazılar eğer ilginizi çekiyorsa aşağıya eposta adresinizi yazarak abone olabilirsiniz

Her yeni makale yayınlandığında size e-posta gönderilecektir.


Yorumlar

“TeslaMate ile Tesla’da Datalogger Kullanımı” için 2 yanıt

  1. Mehmet Salih Olgun avatarı
    Mehmet Salih Olgun

    Merhaba Orçun Bey,

    Siz bu değerli makaleyi 2021 yılında paylaşmışsınız ancak bizler bugünlerde Tesla kullanıcı olmak üzere olduğumuz için henüz okuyoruz yada ilgimizi çekiyor diyelim.
    Ellerinize sağlık çok güzel bir özet olmuş.
    Ancak sizi YouTube’tan da takip ediyorum, bu uygulamayı bugünlerde YouTube’tan anlatsanız emin olun çok kişiye yardımcı olacaksınızdır.
    Keşke vaktiniz olsa şuan yaptıklarınızı bir dizi video ile uygulamalı olarak anlatsanız.
    Şahsen bir makine mühendisi olarak bile, “Data Analytics” in önem kazandığı bu yıllarda, o kadar ilgimi çekiyor ki, anlatamam…

    Katkılarınız için teşekkür ederim, video eklemek gibi bir zaman ayırsanız, izliyor olacağım.

    İyi günler sağlıcakla..

    1. Merhaba, çok güzel fikir. Tabiki anlatacağım.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir