[Modul] Tesla

Hallo @KaiS
sorry hatte wg. Urlaub noch nicht geantwortet.
Mein Kenntnisstand ist der gleiche, die API wird kostenpflichtig.
Da es für TESLA einige APPs gibt, die das gleiche Problem haben/bekommen , werde ich auch dort mal die Entwicklung verfolgen.
Sicher scheint aber zu sein, dass die alte API zum Jahresende abgeschaltet wird!

Hoffentlich wird es eine Lösung geben, die die IPS-Nutzung weiter ermöglicht. Das TESLA-Modul ist mein wichtigstes Modul.

Grüße, Peter

2 „Gefällt mir“

Hier im Tesla Forum les ich mal nichts mit kostenpflichtig.

https://tff-forum.de/t/neue-tesla-fahrzeug-api/307668

@paresy, hast du mittlerweile von Tesla eine Antwort bekommen?

Grüße,
Kai

Bei mir werden seit dem letzten Update bei TeslaDrive nur noch Geschwindigkeit, Leistung, Schaltzustand und Zeitstempel aktualisiert. Die für mich wichtigen Daten, wie z.B. Längen und Breitengrad wurden das letzt Mal am 10.11.23 aktualisiert. Liegt´s bei mir oder hat noch jemand das Problem?

Habe gerade mal nachgeschaut, ist bei mir genauso.

Gruß Torsten

1 „Gefällt mir“

Hallo,
hier muss @KaiS tätig werden:

„For vehicles running firmware versions 2023.38+, location_data is required to fetch vehicle location.“
Hier noch ein Link: https://developer.tesla.com/docs/fleet-api#announcements-amp-api-changelog
https://developer.tesla.com/docs/fleet-api#vehicle_data

Gruß, Peter

2 „Gefällt mir“

Hallo,
ich habe seit 04.12. ca 21:00 keinen Zugriff mehr auf mein Auto.
Kann es sein, dass bei mir schon die alte API deaktiviert wurde?

Wie sieht es bei Euch aus?

Gruß, Peter

das erklärt warum heute die Heizung nicht angegangen ist und ich aufgefordert wurde mein Essen zu bestellen, ob wohl ich nicht auf der Arbeit bin :stuck_out_tongue:

Spass beiseite, bei mir war am 05.12. scheinbar schluss.

Bei mir das gleiche Spiel :frowning:

1 „Gefällt mir“

Bei mir funktioniert es auch nicht mehr.

1 „Gefällt mir“

@KaiS
kannst Du uns helfen?
Es gibt eine ausführliche Beschreibung der neuen API:
https://developer.tesla.com/docs/fleet-api?shell#overview
Ich habe allerdings nicht verstanden, welche Voraussetzungen geschaffen werden müssen.

Gruß, Peter

@KaiS hatte das schon bei mir angeleiert und der OAuth Endpunkt ist schon aktiv.

paresy

Bei mir geht es wieder. Um 20:45 kamen wieder Daten rein.

Habe gerade mal geschaut, bei mir kommen die Daten auch seit 20:48 wieder rein.

Torsten

ja, auch bei mir geht es wieder!
Bleibt nur noch das Problem mit dem Standort. Aber wenn das mit der neuen API wieder da ist, kann ich das aushalten.
Gruß, Peter

Bei mir geht’s auch wieder!

Servus, aus einem anderen Forum habe ich diese Info

Tesla hat eine neue API veröffentlicht, inklusive der Ankündigung, dass die alte „Tesla’s Owner API“ abgeschaltet wird (wohl ab 2024, Quelle) Es gibt allerdings einen Kompatibilitäts-Layer für die alte REST API (als HTTP Proxy). Das Framework ist in GO und auf Github verfügbar: Tesla Vehicle Command SDK Und hier noch der Link zu Teslas Dokumentation: Tesla Fleet API Edits: Link zur Tesla API Doku Link zur Abkündigung der alten API Alte REST API

Vielleicht ist etwas hilfreiches dabei. Es wäre schade, wenn „wir“ kein Teslamodul mehr hätten :confused:

VG

1 „Gefällt mir“

Hi pitty,
könntest du mir bitte mal ein Beispiel geben wie ich über einen z.B. Schiebe Regler das Ladelimit in % verändern kann? bin da nicht so fit der Sache

Dankeschön

Grüße mannoschi

Habe das in Studio gemacht.

und so sieht dann das Skript aus.

<?php

/* =====================================================================================================
 * 
 * IPSWorkflow Script
 * 
 * Dieses Skript wurde von einem Workflow des IPSStudio erzeugt, bitte nehmen Sie keine Änderungen
 * an dem Skript vor, da dieses beim nächsten Speichervorgang ansonsten wieder überschrieben werden.
 * 
 * Generiert
 *    um: 01.10.2021 23:37:41
 *    von: IPSStudio
 *    ID: 23658
 * 
 * Benutzte Objekte:
 *    10520 - Zuhause - Strase.Fahrzeuge.Tesla Model S (HB IT 321E).Tesla Modul  HB IT 321.TeslaVehicleControl
 *    10418 - Zuhause - Strase.Fahrzeuge.Tesla Model S (HB IT 321E).Eigene Programmierung.Laden.Ladelimt
 * 
 * Generierte Ereignisse:
 *    57746 - Zuhause - Strase.Fahrzeuge.Tesla Model S (HB IT 321E).Eigene Programmierung.Laden.Ladelimit.Bei Änderung M4
 * 
 * ===================================================================================================== */

   $executionID = round(microtime(true)*1000)-(IPS_GetKernelStartTime()*1000);
   SendDebug($_IPS['SELF'], 'S||||'.$executionID, '', 0);

   $M3 = new IPSEntityInstance($_IPS, 10520, true);
   $M1 = new IPSEntityVariable($_IPS, 10418, true, '', true);
   $M2 = new IPSEntityModuleCvtValue2String($_IPS);
   $M4 = new IPSEntityModuleOnChange($_IPS, 57746);

   if ($M1->Evaluate()) {
      SendDebug($_IPS['SELF'], 'M1|GetValue|M4|SetValue|'.$executionID,$M1->GetValue(),0);
      $M4->SetValue($M1->GetValue());
   }
   if ($M4->Evaluate()) {
      SendDebug($_IPS['SELF'], 'M4|GetValue|M2|SetValue|'.$executionID,$M4->GetValue(),0);
      $M2->SetValue($M4->GetValue());
   }
   if ($M2->Evaluate()) {
      SendDebug($_IPS['SELF'], 'M2|GetValue|M3|ChargeLimit|'.$executionID,$M2->GetValue(),0);
      $M3->SetValue('ChargeLimit', $M2->GetValue());
   }
   $M3->Evaluate();


   /* -----------------------------------------------------------------------*/
   function SendDebug($id, $message, $data, $format) {
      if (is_numeric($data)) {
         $data = (string)round($data, 2);
      } else if (is_string($data)) {
         $data = '"'.$data.'"';
      } else  {}
      IPS_SendDebug($id, $message, $data, $format);
   }

   /* -----------------------------------------------------------------------*/
   function GetTypeConvertedValue($variableID, $value) {
      $variableType = IPS_GetVariable($variableID)['VariableType'];
      if ($variableType == 0) return (bool)$value;
      else if ($variableType == 1) return (int)$value;
      else if ($variableType == 2) return (float)$value;
      else return $value;
   }

   /* -----------------------------------------------------------------------*/
   class IPSEntityInstance {
      private $ips;
      private $id;
      private $compareBeforUpdate;

      public function __construct($ips, $id, $compareBeforUpdate) {
         $this->ips = $ips;
         $this->id = $id;
         $this->compareBeforUpdate = $compareBeforUpdate;
      }

      private function GetTypeConvertedValue($ident, $value) {
         return GetTypeConvertedValue(IPS_GetObjectIDByIdent($ident, $this->id), $value);
      }

      public function SetValue($ident, $value) {
         if ($this->compareBeforUpdate && $this->GetValue($ident) === $this->GetTypeConvertedValue($ident, $value)) {
            /* Value already equals to new Value !*/
         } else {
            RequestAction(IPS_GetObjectIDByIdent($ident, $this->id), $this->GetTypeConvertedValue($ident, $value));
         }
      }

      public function GetValue($ident) {
         return GetValue(IPS_GetObjectIDByIdent($ident, $this->id));
      }

      public function Evaluate() {
         return true;
      }
   }

   /* -----------------------------------------------------------------------*/
   class IPSEntityVariable {
      private $ips;
      private $id;
      private $value;
      private $useActionScript;
      private $compareBeforUpdate;
      private $sender;

      public function __construct($ips, $id, $useActionScript, $compareBeforUpdate, $sender) {
         $this->ips                 = $ips;
         $this->id                  = $id;
         $this->useActionScript     = $useActionScript;
         $this->compareBeforUpdate = $compareBeforUpdate;
         $this->sender              = $sender;
      }

      public function SetValue($value) {
         $variable       = IPS_GetVariable($this->id);
         $actionScriptID = $variable['VariableCustomAction'];
         $scriptID       = $this->ips['SELF'];
         if ($this->compareBeforUpdate && $this->GetValue() === GetTypeConvertedValue($this->id, $value)) {
            /* Value already equals to new Value !*/
         } else if ($this->useActionScript && $actionScriptID > 10000 && $scriptID != $actionScriptID) {
            RequestActionEx ($this->id, GetTypeConvertedValue($this->id, $value), $this->sender);            
         } else {
            SetValue($this->id, GetTypeConvertedValue($this->id, $value));
         }
      }

      public function GetValue() {
         return GetValue($this->id);
      }

      public function Evaluate() {
         return true;
      }
   }

   /* -----------------------------------------------------------------------*/
   class IPSEntityModuleCvtValue2String {
      private $ips;
      private $value;
      private $callValue; 
      private $result;

      public function __construct($ips) {
         $this->ips        = $ips;
         $this->value      = null;
         $this->callValue  = false;
         $this->result     = 0;
      }

      public function SetValue($value) {
         $this->value     = $value;
         $this->callValue = true;
      }

      public function GetValue() {
         return $this->result;
      }

      public function Evaluate() {
         if (is_bool($this->value))
            $this->result = $this->value ? 'true' : 'false';
         else if (is_string($this->value))
            $this->result = $this->value;
         else 
            $this->result = strval($this->value);

         return $this->callValue;
      }
   }

   /* -----------------------------------------------------------------------*/
   class IPSEntityModuleOnChange {
      private $ips;
      private $id;
      private $value;
      private $isFired;

      public function __construct($ips, $id) {
         $this->ips = $ips;
         $this->id = $id;
      }

      public function Evaluate() {
         $this->isFired = $this->ips['SENDER'] == 'Variable' && $this->ips['EVENT'] == $this->id;
         return $this->isFired;
      }

      public function SetValue($value) {
         $this->value = $value;
      }

      public function GetValue() {
         return $this->value;
      }

      public function GetFired() {
         return $this->isFired;
      }

      public function GetNotFired() {
         return !$this->isFired;
      }
   }


   SendDebug($_IPS['SELF'], 'F||||'.$executionID, '', 0);

?>


Und hier die Oberfläche dazu

Hi Dustin723,
Danke für die schnelle Hilfe, leider funktioniert das bei mir nicht.
egal welchen wert ich eingebe, es wird nichts übernommenen :man_shrugging: